From 73c88cf4c5872119c3a3f15a481e072ca74141c0 Mon Sep 17 00:00:00 2001 From: zaidmukaddam Date: Wed, 7 Aug 2024 18:59:45 +0530 Subject: [PATCH] Initial Commit --- .env.example | 3 + .eslintrc.json | 3 + .gitignore | 36 + app/api/chat/route.ts | 89 + app/favicon.ico | Bin 0 -> 15406 bytes app/globals.css | 88 + app/layout.tsx | 37 + app/opengraph-image.png | Bin 0 -> 24122 bytes app/page.tsx | 438 ++++ app/twitter-image.png | Bin 0 -> 24122 bytes components.json | 17 + components/ui/badge.tsx | 36 + components/ui/button.tsx | 57 + components/ui/card.tsx | 76 + components/ui/hover-card.tsx | 29 + components/ui/input.tsx | 25 + components/ui/scroll-area.tsx | 48 + components/ui/skeleton.tsx | 15 + lib/utils.ts | 6 + next.config.mjs | 4 + package.json | 44 + pnpm-lock.yaml | 3845 +++++++++++++++++++++++++++++++++ postcss.config.mjs | 8 + tailwind.config.ts | 84 + tsconfig.json | 27 + 25 files changed, 5015 insertions(+) create mode 100644 .env.example create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 app/api/chat/route.ts create mode 100644 app/favicon.ico create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/opengraph-image.png create mode 100644 app/page.tsx create mode 100644 app/twitter-image.png create mode 100644 components.json create mode 100644 components/ui/badge.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/card.tsx create mode 100644 components/ui/hover-card.tsx create mode 100644 components/ui/input.tsx create mode 100644 components/ui/scroll-area.tsx create mode 100644 components/ui/skeleton.tsx create mode 100644 lib/utils.ts create mode 100644 next.config.mjs create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.mjs create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..acc5ec7 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +OPENAI_API_KEY=sk-**** +ANTHROPIC_API_KEY=sk-ant-api**** +TAVILY_API_KEY=tvly-**** \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/app/api/chat/route.ts b/app/api/chat/route.ts new file mode 100644 index 0000000..0513c37 --- /dev/null +++ b/app/api/chat/route.ts @@ -0,0 +1,89 @@ +import { openai } from "@ai-sdk/openai"; +import { anthropic } from '@ai-sdk/anthropic' +import { convertToCoreMessages, streamText } from "ai"; +import { z } from "zod"; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages, model } = await req.json(); + + let ansmodel; + + if (model === "claude-3-5-sonnet-20240620") { + ansmodel = anthropic("claude-3-5-sonnet-20240620") + } else { + ansmodel = openai(model) + } + + const result = await streamText({ + model: ansmodel, + messages: convertToCoreMessages(messages), + system: + "You are an AI web search engine that helps users find information on the internet." + + "You use the 'web_search' tool to search for information on the internet." + + "Once you have found the information, you provide the user with the information you found in brief like a news paper detail." + + "The detail should be 3-5 paragraphs in 10-12 sentences, some time pointers, each with citations in the [Text](link) format always!" + + "Citations can be inline of the text like this: Hey there! [Google](https://google.com) is a search engine." + + "The current date is: " + + new Date() + .toLocaleDateString("en-US", { + year: "numeric", + month: "short", + day: "2-digit", + weekday: "short", + }) + .replace(/(\w+), (\w+) (\d+), (\d+)/, "$4-$2-$3 ($1)") + + "Never use the heading format in your response!." + + "You always have to call the 'web_search' tool to get the information, no need to do a chain of thoughts.", + tools: { + web_search: { + description: 'Search the web for information with the given query, max results and search depth.', + parameters: z.object({ + query: z.string() + .describe('The search query to look up on the web.'), + maxResults: z.number() + .describe('The maximum number of results to return. Default to be used is 10.'), + searchDepth: // use basic | advanced + z.enum(['basic', 'advanced']) + .describe('The search depth to use for the search. Default is basic.') + }), + execute: async ({ query, maxResults, searchDepth }: { query: string, maxResults: number, searchDepth: 'basic' | 'advanced' }) => { + const apiKey = process.env.TAVILY_API_KEY + const response = await fetch('https://api.tavily.com/search', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + api_key: apiKey, + query, + max_results: maxResults < 5 ? 5 : maxResults, + search_depth: searchDepth, + include_images: true, + include_answers: true + }) + }) + + const data = await response.json() + + let context = data.results.map((obj: { url: any; content: any; title: any; raw_content: any; }) => { + return { + url: obj.url, + title: obj.title, + content: obj.content, + raw_content: obj.raw_content + } + }) + + return { + results: context + } + } + }, + } + }); + + return result.toAIStreamResponse(); +} diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..250f01d78a562761c082b567e0bd84f7cef80cdd GIT binary patch literal 15406 zcmeI2XJ}PP6vywf3yKDG(clM-#1)HD|?p$u(zL=Y2!4J-X`{v$h=gfa*&dfXKIL>d*?@s>wj+;h1 z34b_F6~}R+qrZR0{^>Y>yLoYO|CYx%PHLp%#JY9dCT@%G`EC-H#8QqCc>DIPJb3Ux zzJC2Gj~_pld-v{1T3VXCd-qP>zkjdqH*emQ+qZAa>({UKn|woGzI>5=`}WE7>C-jk zeZ+_n+8=!m8#YYVtXU&__wJP^Po8*XrakG26DOo=*RHa8^JY19>XeKbGe%y$dZkq+ zO`4=~eEj%Pct3XRn7^sMuUfTAHg4P~W5{-3{a0ePPWQg?d-(NV}d-v`w0|yS&I;J1wtY5#r%$zw>?+6tu zR+JkzZb*E5yu5t*QW(qd;lrhS_wG6-(=J>(fBt;Uo-t#FG;iKq-^Y(1ud?tldh}?S zJ$tt1`+r)sY9)*tTC`}9-u2F(Kd*N)_*br6S?=Gz?{54>!Jjq5e187?Sr#u|EZi;Ety|~u@7ArGoH=tw+P7~nd-m+n z{EYaYJb6-LV`GD`);jQ?GiQ#@GZ_mPF4T3iWy=;V_v6pKy+VZwnx7H>PMtbQpFVx$ z^5x4~FSDPybLUFy)~(a6rOur@>pG&XpZ}*%pQKQsLfU0G{;W5!=f47D3PQ7H&5{x& zN_hL^@ZrM}7Z)d~sj1rB&wtmhUDB~*#|-(iZp^w}vSf+8c=6(gBHX=uSNDIfUcJ0} ztbqm%8tDIqJ9qAAIe4yEu|md;8z<-t^j6!pZH0Ym{y!Z$bVwREZmjE;^*m+D6kSLB zAG2f;un1TLECN3tfsE_|ze+xK64ylQ#Ji8Rll=VkXeF=+SOhEr76FTZMZh9p5wHkY z1pa>nhCmetm3y*p}C>U908PS-pC-U~lBzJj<6a7i^%0uyd|lxzZ~) z^+>VFV+S{R*p;zIVkb9wr0@ws*c7q<)~i=fmMvSRGGmLxHjeLs@>{oV3BCyI&)2VC zS6d}~^XAPf*!hWB2qkd9-iuuqn>RieVkmOu%B6iwm@q+o3HV>&!2>Rlk&%+*##lUk z`ZTo5AAVyO#g-3YFRog(s_fpq+iO#&P95Pfgl)cP(W2^SF?pfsv}x0%cJ104^FkRi z;r{>+<`(-dcoq}ZYhJy2b!pP1iT52;{*2_eBiamK12{Bo+EnM2Ozih9TekGN&93~! z@EAUH)~{bb#hdt^!i5X}C-%l;n8^$6jo+(Hn>K=Prbmw+8u!H7EL*m$`r%AB*_EGt z?%(V9Bk(QMs8K`U>n}6Bf~4Sr4+-576&0m^K72js7W|E6%9PPDnZA&py~h3}Hi`JE zP~NQn(Dh^5o0NDke0;fc=ML-}Gj07TF;GU1f&~le-bJ@E59p)PrAzBvn>NUwCr=)Y z9V2cGziQ2zH8u8&`GSJT507^3+DWZiwX{uke~4+@uwjG7m*ICJMh?Qyi@qpTs+0^J zI@IeP`HK`O;^`mu9OdQ9m-q65$dAvcT)A?pr~H0Qk5RxE_7r;n9f{A9bp+ur-MV$F z`ca9wGZb$9bB>_5&;?Ks`H2H;)ToiJL*tt@JhGDFmnF8ZSg~U2KQnF7r4uJkl;XvU z%hah;O}6@GL-jv%!1+X+B9xi@!~-&iocrice5Bc(1LhImXMq9*1YfTqe1%{HAI=Cv z;qbq5<%;CXmrw5-)XPkMVjyE;V)UG+{`&RnH5QTgtP;HOwWE9d=LdHabToGb&PPL` z^0VI1x18JN?EjJc;KF?b->lj1>@(sWjPKO&$}HvnLObp%UAlBhR~@-n_mr8l2A#(m zVNUQz<69=Sp;@zLdY7UD@W7|cc+hKp-OBig70=snQAN`@kok zoSdw2qv2vR@D(38a6s!^y?Rx6sBa#07yF0!69_zsO*Q4D=t)DwWtcMhg(o=e-@o6> oPjh2wELj9B0u}*_fJML}U=gqgSOhErzcvDHc#tKFK(-P12T>z4Z~y=R literal 0 HcmV?d00001 diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..67ac6d8 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,88 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Instrument+Serif:wght@400&display=swap'); +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --font-serif: "Instrument Serif", serif; + --font-sans: "Inter", sans-serif; +} + +body { + font-family: var(--font-sans), sans-serif; +} + +h1 { + font-family: var(--font-serif); +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --radius: 0.5rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..407bc12 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,37 @@ +import "./globals.css"; +import { Metadata } from "next"; +import { Toaster } from "sonner"; +import { Inter, Instrument_Serif } from 'next/font/google'; +import { Analytics } from "@vercel/analytics/react"; + +export const metadata: Metadata = { + metadataBase: new URL("https://miniperplx.za16.co"), + title: "MiniPerplx", + description: "MiniPerplx is a minimalistic AI-powered search engine that helps you find information on the internet.", +}; + +const inter = Inter({ + weight: "variable", + subsets: ["latin"], +}) + +const instrumentSerif = Instrument_Serif({ + weight: "400", + subsets: ["latin"], +}) + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + + ); +} diff --git a/app/opengraph-image.png b/app/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc45f6fb13cb000a7e842f5e78f78210f27614 GIT binary patch literal 24122 zcmeFY_gB*I|38kJnrYe7%F;BmvNBg@YNlf2*~C$jTSPN4MO@?-N7=NrOuuZ-l zr4*%k;9;BRMT?6dP(`BjhMPDD1nax;@5MWzBFqWa=wQ15yu{{yjp*37`_$n(KW@ba zh^OxGIaLl5xg`=TegSxRrg8Yr1!s{y%tVuCCi@8U=20*GBGbO9ksr;1YemYhuHq12 z-migI%D_yZvkSuDtJ2&?8A% zUpVHcjs2zV&PPS$&uT+ILwX;f8?5bALpEF*!-@6sqa6w-qu4`so?{(No4mzcr49+P zXbuWZ?zg))HsBWtj9mkX?DtInM`ZB&0d}`e(}sdGFv|}#JhHArEIrxSk96I!JA{s@ ziQuixFSDYBeBb!WX!IWv^$MdSQN^&{?`NuWvD!9TVYFZoUQ<>E%)_yY(UvNlBxC9$ zI7_2*3O4gjlMP`6vD)Ln+8etjnoGLO3HqMqN=}NWZ6sP@dfjLE8aY`Cu6uJSU7J3i zs?w^mPFQ7Y_FLAF*VOoD#c>2#0(^KG858_5`sCx$fomVj%9VDz9?&a)7a(O#S_ z3?-Uv){Z3&m%&+wz>&31-5;(c`iixx-E%dW_FXpH{F6A*jnfGcZZOP3oblUENqu^v zY2)x-_AATMxbb+J?whm{qs`dG*JJ}iasTkFzMZ{?guMT&ZT9{mau4qPew(&iVS5(e z5{4ytkjAi?#s_-9=B~-*C-;{@G&OG4f8{GW86RbKi?f3|Wg1kX{<__PCsk*}=NjP} zXAhXuu~Dd3WR%vtwA_yK%dQ#yIFH$x%-A7Sk^jyS8<>MTy~w3UHwjp3lGm?D+;A$K zNm8?hFbU2-7mAeZ|jI&DDWh_ib`$J;uV3V9eSPfNnoaUJowoZVWKSO~6SLrIG?wAo`gpBc&Hu(2UT#NLz0P$!mSgIv zRjO3vAZMhXtYf&lpKDnVkb+5P{<$SN@}!6C=xt)Vy*vi_@tLvDzY=G3TpC6iqlHm# z;@@fQJ4{K+CC&WO6YK1mJ;%LrUwbKka^B+Io7XX@Zcme-tI*zo%Dk_-DN(3Wg@-ft zS?*W85Gb|Cn}0J<#aW|ROuB18r=&56@m663)MFJReh}(i)PsVsz1peI&U+MKz<06@ z&OIGGx^nCz^X9oT!!Kh5GDCJ<5Q>Xx^Z2dbgt0RV{X*cb3L|?TfbA zza0q2498MWoE61s32YD%v#RI9Jn|5{$C@paCWlJd)7cTlSS2Y3rP2a!qu-=E z_{ttK84(#vQNTHcx9Tt%b#n&F~1@VQ05X%c9c9t2Hh%oC$edx^1EBGAr9EEBgDUJL5p0;hVsD z1}#_$lFMhU<4Ig`d#LAW!JiJ5dVP#gz$I+kL(DmjQ$>BulYs8O$T&M1t*-|j;5y#i z4szDmS}EWSS2%s@`ulm8BTIUAo87wNm)bHr+9lcrDP3;c_{zUs+w4@#qN;rSFY*Z& zI=*Ta+qR-XG3dWzyJ}B8jkQ3ynMQDY45@0S&;73pibkwcZ62N?6rEGMm~t3xI?6S2 zK_ZB=&*Kh}K_F*oy>iz_?atd_mz9fE*=6qynyup{Qr`y~h4l7Hf?^BJQcCUmJU)|7M#+DlgK*_2do1MIH&~&dz?R`N#|Y$VK(tnSMy$}GH=f~ayZ*t66C)VxH1>raU6_*JzTGd z+YMNs`*1{Q*7M`dqIrco%eB3X3_;C%fvJvQM0%6Y+m}2w#E4+?OGUH_Fz>E9w+8xx zVhXm|H-9{DuQd$6E!*ChfD&WYGS2o5+3udJA(SuDpxE z0SQE{#MZDK2xU~oE@~>z?n`p~^%%!_Jd&>hlt)`j^S_b+*fYYF=qL#hX#7YT)J9pV zEV;>nnyFIdF;1jac*LK;cUv)fsA-3O zd5n>{)G+(-8i@@;L`oL7MuJL>+!19 zs{Dq)9?d@wy5;XRnM7}HaQf7^X2QN?hdWwpjiZ}NW@+LX?sIoApOwtKphi(EF|Q!3 z57Fy0xG`=vI4A+E%0ENMNMv^R@5gW_LTdQ_CGKYh9=sPmR=gJlOkI{C{|x_dnLBgN zk>?KbjTALtAV7Ter`(^5`S>WsHG$!y77ELZ9lko-n@?SO3cK0C%#f=dcB(3F$Xy5oeKxI z?`&)i`}_On7nw|1k6TnCN}*@h?Ff-k@9hshEebsF#N&?!OIz4Vfp3zl>puTzbdG`7 zRWaHGZ@JagC6e|;jGv2?dmpNEYR+2wfb1jAN+GG>%~a{}uXD6$#ty#~qoHg+*=UL! zYTo)`F3WC3SvAwRZMt2+ieBFqd{ zhio6{)5a*xcrrq&B9%PSoDxz>QAz~(3ehUtWM1IlKI7TLCM0wkFwp6D=c|*^E>Tgu zs7*Y!-N?Phqjxn4eWdCl5QNUMk7b-!)OS2N4JK~dFq=zfVl7Bty$ilY;hpat1Eohq zZ~2_>@gGa+Aqmo7jZ)(0(iKB{KCnR=V>tg{pD{~V-dYRE=nTSm)!1>T%FSyx23qBs6@lwKkI?(Qj~N-}32-d~v5xIFXFxD5UDB_my2_o#z*wf?JelwEJ6r*S&)WpLC+ZG>=Bu)LLq8v0FctP9}{p}Mtj%cj@m zAH>z>vX0)@!F;wh+#d+0yzC-HBdWu?NMJtd`M2fdGkc7FP7%8+Qr&<5Y(|&XXHtu;ALJiQRS_{Vi&r>&2sBkqpA3Lz7vaB^0HF)n8P%D2d(&W1Bo_ za4d>QPFJ}somC1$BFranxlzkWWrIuiNhjIg49X;^mHk)qsw&jj>=Ia6rg8hA5)a4$ zB!x@qw43NIzM|tJ#^8E&Sul0HtU!E*yOXJrfU#tR)ALg=^DeL|u(m1L8?YT&ON3V!=k-I*q)_Cs+y5Ve9+#1=5_+V&hcDbxW1pEJm- z4Pf$p)tXOqt#-mIlkNheazD2w^ZC%#TM}4{T?>77HbZh&t&J+LcGQ|e|OqC`p zu9K;WxfNC@<6yFB$TK}+q6&Yyh72l7`R!dQIFnBlE5@LsETym%EkWnVVGTI`GzMZN z_oPJ5wWVFDzWLxDSC3{#J^RkXu38u|tgcv+?tW{284*8iIMW%JVzW&5^%e)fFc;Kf4B?{?h+yy3^=u!Jn5g|?4* z7PPt7WKFnJ0$uIi!N8^bs{`X55Y8e=<%m$8Fv0C<7 z!`YPd%jkp9%gk|9_%mCv;!l{9U71$RN{b`9=sOwK!J9+wU zxzU8~lyoq0wwQkA;}hpMymOGR75cNLxp{XME3F3nl)BdS1$P$Al;1i!qqDoICS@O~ zcP9JB`-kaqcpG=@ksxBA%g-`j(T;_RAC7!N*;U7c52{2#OfZnqeel*9%y)kMYH0s< zpPbX45`3Io>&%g*!N((aNY^{BZ~zA!(N<73>bzHb{c!BwsFKE8j_-d&y_nH%WI0@I zeMOTLpVq?{MPJ{2_H2V=9b9n$i#B;>npeq$>}UQb4HEWTiG-^z#l>9a6|Ct)#oB;y zv9V4^X4$Po;ACWP(#_O9cX6^-CC1ghZWcExRDFK5`^iYtC{c$gR_l{}Y5PGvuK7#n z>x0hz_*HcXW~}D(TM|V}@8wF@X3x9xWwI*ZjrHUPEaHC330`vkU#1^&GosWWpx6|f zW(U=Fee#vn8AG1E>(jHR<;nSRZkPuhXMkSL&(s#yHEvl)><);BZ8qvnOX)Or;549*BN>^nMmtvz{4ZnEzGz+n{ zM_ErxEEyt{Y3iKEE#a5=Xx7n$Zp~O)RA8w)n3&e?)7DQYdr{Fr9VZ5_@CWRA^}A7U z=2G?|Nh<^PNp zT#bk*$g=5dII~({@YNZ~8ImKs;k`6vnWyyznxPm{iVFr8e|l3w*dXY_;L6 zevF>LFI+0s3FY263w-}D-ooMP zjw%2UJV^L_#Ze-L7~+Og+F%bgr6UotOr)FF1?Gh)i{aY1@)XeGP?6n`p8ISu+aOqC z#0V!V@6KPrdUp4ae0byD{CL}iGnQ%MSl5razw7rA8Iu()>$hM62O3>1#TN7gs36-l zZ;NR-YT8bORIKzG(w8W`Anpb=8)Gx*Jnp44tiIousJA=tAMmhsYQ_FHUQ@`pf7}yG zlJZPl1C|{5|H_WcPz7F z)n3=ilhJ|QiJ_D(LA#PV*RF88MP}ARrH&M;g)7=-9teTV;9T$IBojn-d zwSIU0*A%WW1vr*idkw?dm~{XYbI0zmb}V`nRJ=K)C?d}Y>g*1%??`WHAN+kvoWw{% z9WefIuO#g(JZgQ$x0v{-OS?of*EpZLAZ8iH^G?`rSOCVo{uJE6{`+TYLP^dgY~}D) z&Fa%*4cVSQ*y4DX*T}OQW-8*QPWL7eE+%$BnLq8$9d&0js3Ks0(7~;XA zFKTiB8Cu@&w0W9%eriMw?Z`aZ&I0CJFhQFiQB1T-sHsT+`=boq71^B)as>|qm zWajtgv-*08vwyR+9@~8nY6Sp1W)w$%+ zI3ui6=EU$reS}*OhE4=)iu?ycLv(_WT^~L%l>Qb(2Tep$%-@hd1tSJ^)oQznf^9D% z&fJ?FvepasM!W%Fa=#ES$5XX1{x&#PcV^@JuRYpM0Tc&&46&?or|*SU4iI&3drL;6 z8Aa`ezZsjBR+J7FF z=aNUngPihuPM#Gjq8oX-rD4Q}nSRDG|H#Sx7YNG~Gh>&PW`v*VQ49IAda65d_2vcI zP`lgUf=&vg9RFo;#x`?WXFOk3}rH|I70 zR38Hw8}N73?gFa3RI+hj$nyATuba1Walw8s$Z*psv-sfk$W$j@Zv(~QlMz9jLYmH< zZC$Z$!`UKSrOIe;b+0Fo(hZVWY3@n{8xMI~3;0_Ho6Dk_gfb9hd+cohw&}G25odUI zTYy!C$$nYq!j)%Sz`-oLG=v6FPgmy&VaA%i1z4M%7@Lf|m-~}bF>Lsz# zry%JACBeT9uZawjMJQ@ub?Fgu+<`RZ*NS#hrPd7ZSFTfXi}0bzy{ECr;W zwI(&BTQ1^f4ggk7l4BNC0gS;YxF(z;okwfwRAL|HMLjuTDx!6ga0fbkDrX2VM?X)e z5`{`Db?v4+NSV<+3EPakD&*sFE2q2iw)Cd06S%fhbL2Hz+@9$6eJ~ad7Zf$r7_lDI z&&8llvHfPxwXf=RY3NHpl*#hQsv(MET2b)b5;XOg)5CBKDt(3I%&VlLQ>~>JJKvrF zSe8i)hYKT=ogobAN(=)T_DfsQ4;8U@!d^x&&Ev>w&(M87pBigz4vNuIz#4k*OLgCs zGBc>-b_GEntURQ``tNJ$l|L!K9C72Y0M@K7Vr}j_K6-d~e<y5PC&wY@homB&tS&L88 zfGdu4rZ&er6E&7y_o1&>l#3J1?;6>Zu?0vK7nq6F~*GB56;L)TlDRWxi& z=g{g_skOP0xrgU#J?J0Mtq%2c3mfS^O(d4{rbjHx#hrBkcX3@?qE1u)+s)8BXiqb@ z!4VLEcgFn5qabdI%s`Gd|Jo}u7-k-J#0|IYF4(x%7rVRlN#w@gid7cw{OB;aGaqsI z!{)x`P>i8Lbx&9l;X9j)!DY>0llggv7;TK}sccLNZpz4tpT-idJM=*7NN<5b`W`=BrCMXRQPA?lHD z$o%<%eB*ao(6;=ShP`CbOIsF4mQGP)ot^dNZs9fVTNo%8z#V0IjsR{=eM_#Msk1if z@ECPv7Q4DSK#^|5vtx(saUki`kJSMB`-_DU%cjwH`fKG4F5bA$p6xw&<@=}-inozx z^5&aN$h-2m-KqEHft+&zuB9(l6x^QPTH1_l2>sLg7<@YZ<)}AKL=i6X7)aqhvUUw6 zLAE0oT|G{pxp$%8PUzh^KMgE@SX)r%L2J(RM!I=KIvGbukH`aW{;Q&h?I5LfK{}tq z-f2I0Uc^2j&8~U8zYO@2x6Z(afPe^5Nprk&c{#5jTKtw3^FS)jfi_?gzINa4=+s3* zIS3#VVsj;(h~4IvJO8DA0^Y9TP7n}TioNn)(tBD(x6BkH($)W{#9XSZj3XMdVM% z16L^A?r8TmzVlsy1{(o#&4{xbu*kaT@!x-Njzw!eFUpE#FANn?nwqM3cEAf65ydDt z*^ZG@4y5`fDBMA~ZCQTHlVXQ|BbU$HBZrz!$ymo~eag~3(tNkud#pymeqdvzTZiz{ zrnmLsB7lA)^cVx%hnhrFDdL7b9la%9vzbO)6Q0=GH$Wc+hU_8+mDeGhV0Qt`11+!A zoI?Xa;O*FtURu1EK|%|fM@A7R4z%3JXF`ay3O7vMbVzY z-dJDl^R3MD3kQ%+d|5gs1HTUNY|C5zR1{(3^x>4M?RP`94LMQG{gD?S+w6ba@uyx@ zP}qmlv~GM|TN)+wZEga$bb}Dx6(#ujR3%t{ORb>nZwfFF;*_wC@?d{1fZUh~>vft7 zODcjax60sM@Ag4?!YwZ@=>$F4gNSsOpoYS}Q1>`*;o{Nj^{gi0q^9PNV}Ol)u4qkV zDEVXl!zz@yG}bBKDU23Bjb9TYl3Rr*e?)qFFY+ReeOz(xZRI&H*=J7 zvCIX>G>k{PX!$-Oq+Zw!=`?WI&5A{|2ISk%WST2grZ}Ju0r!|4D%kuAZ0G=Bi1k3Z)^XsR=wMo9+;6!{ z>pd&ATcqBZwT=0!q8)?Vvf2+%eO$J&yES6NU-*{nV80ITF!RX(ZaWNE8CW6##Lnw+ zZH)7XOPjx~?MP_kTM-{)h=et7$WiB_(i5@>&d|5hjluG^yjVsbo)yE~Lj6kEgPBH` z^YukFuO!Bne0}VS!gBz~4Au?EM+^npkA~#^o088+Xr-Rv7p9((UK}NO0(SQV$Zd~0 z9&GMYIInO{)Eqi?qQ=E;0gxdGmsn)L(v=_F_+ez*N>}ra@V(vs9_k6-hj0_wGP@(Q zGFh6c+fws5q7AbTg_(8Pfz{L=cUu1DP^I<1g5OWP6FPJWWjlZ~(+2XATB5`X$v*wV zE^O@4<_ARC;jdrrcSF|dM5PEGb4eFI9Dj`gqF=&5ztzUtfE8YV;lP>pgTNbo4S20z zfV5+Th)DSDRU-Xn3&ZyQ^hLDl~3A5S_k-bH-+VS}Gi`C7XFv8s_RUfzk2 z${ajzpVp#(O}PYJ8Mphs4GNzr-Au*)bG%_;!Ea*i9mGPbriZ+8A!Z;@lhaF1k9V-Y z0Hidp?(3gR3)HQcef)JR!514zat2W;&*thbz@Wn`E$Tt!k?M31b*aehkXh8mD7{zz zKeL_$PT+msV4^)?a|j@RNn#`Ev?zUoruPe1om}MlySrm+H=gM}`NeEIHnLn7d!DgW zbR_n!#RZhSyiYvvMtzxTp@2ge8>-y9&DDi;vW)3ek1#FCVZ9%{Y&MtlBWOvJttOhP zwNQvj0V61*c30X7L_DzO@+~Ui8F|ktO~e+ZTm%84pSP<>Nk-+%^2gv(o$Gq;dCFRk z#oayWJ&hZvB8m~e@GIl)e?73zzuh5N?`2MzDStt(O)p0EkZJfG*lrTC{fm*uyeoa> zqQKy(T=~lqI$+^mqh&D6MbW(6NB0QjKk9%~{L2tfDMhG1lU8*t%G>*|<$-Ve4rf8& zG1yxP!By5eOrSFTK#nSy@pF3X@R|Wsl&O!!hkObX{r9>R$UT`skt2ZT~`asLxeu2#92 zME1Nq71A$)HJo{9s;599CI7ZR;I{6Xv89o6>K>ul8SSb=?E7Pf;j=UUb8CK_-@2MS z%l4AYj~#K=@MrICRC0GMWCh{qZ8>kC{x7W9(WDsJ@>IZPw=w^#K7q)Z{k zsQEvRG3r$-_kV(mgpvl9*40z2n=_c(*Bt06OPi`)!ansGbglzp4E#1A&nz*5)e_ z&oZZ)j>i~EOKSt!j=_%+P(ZKx20t)IcX}5?egTg8``fMN2}JsUx7cIq!)K646`bO% zx!06vaa5YAu7}huFb+uj`@%1#;#2TpOK4-e?@SsPmNE7!T}uC{E<|!5*fDIu)q);O z;iNdchK;3SYB{y2F3n;{ldjnC^%(K}+9&Ad1FW|qmKv(m*B33N*=2XTn*B@Sv1Xfp z-R;~3jCY z0{HHaRsnCZ>_k&u%AU2?{)H(D_C&F+bMhy(3piZMurlHq|6)O7iTFP_4mj{TG~y@W zs?(_9%%#whsgC2qT-RC6@ zk>tz|Bn;gg!zuh!r%iUXIeL%X;LP`{+9EC;k`{LweM;2t>4y^o-|pW6!S*lNTRg-t z8pOhT3V60!LrscuGMrA=2d_r;q1u&{#ztss9QNTe^=@}+xC)f_kl5Cy&evo)^}e0z z7gF>!)H<%VekvpL7C3!?ns0nrxPfsYRU|d53bD<|`~Le#-vdfV?Tq@U5;B(tgeUm^ zod>;gca6PXwfCAT*^9#0`C*H7u~Y0p^RKqp9~KJ6d48hWUr+ov0%*xL2YRox=PR{e zb}>A`wPH;+@~f&dq!TAm4GJeQ-YvafhJFZW+&WS%?}4RZ$n_H_mJwGlQa#4*>a!nH zBPSM&Wk%gA!QkD!7Xlm-dgW8#3NP42gJ+vdsM1 z;5}D&`WBVEeDne+eGe(`*=c%c1wEULIghA!oU_WW{%+fjZ}tMT4i^AM{S&$N>y7Z< zma9?G^ya?KUnZN0bxn6B7XjS6#ey8BmHcz4gJKfi;iHdi#7ERt5fQQ$AC}9?pW_Og&PVVo^ zHbqv_74Md!-NO9Pnb*8KF02cXuju_DDhKUc1_E{r|BBz}+jZZuKsIT{*dbiEBd|=f z>F;cYpD*r3Ci)bn0Np=>I2>557U$t`JzG1)j4G2@<>l^@e9A~at8=peCJH8Crd!4 z=P^cD{0@)m^~`Q3LSHxkB(osbqZfG+LU43Ao?K^lIsU=$SAI`YaW1b=;2t^mHq7a@ zS~j{m_N7_g;OTBpbaDCLoF(pHgX60Gq)JCFMk~NP#Q<9|@p`kUic4z0;Nb(MNJECs zPN+!czHHBAJZpHmraNOIQw7xJuR5Qf+yB+bh>;@F-oM|UFP62DcH*|yKGEsMd#5A+ zX0Jr}E&pX~Ldo+)7*UIFpBg_tTEslIx9KPQKH=AIi;bpoc(B)u$pILHwaskw1Vm*Z*8+!bNha%wIJIA5m^7s@ zo2X=!bhgy}u1qK!33o84oK8wFRr7P0tV%9m=TQFK%u0dKmP^kcK@Y}x=U6Z>RkaTa zS*BGD^u(cu8OYHN5?pKOn-Q+6o`gL$T*X(zo+x2QJ!z;+E>eSVbsVa(t1vL5fxFTr z>^svEY3t6P_E~l02Y63Zslkz18hL{%8HB2~WINiCaxfq=K6ZjDZ`mKF1;gdbTwkpt z5jMSUlq?NE%i4HKCGxkI4}P5(S49O!bX3j972wtmwGYM`aW(csU~U#5Ch9m#c zvr{JKlntsoz4yHhVbDs4Nh+d&H;Y8VhBX+yK&|m-AYI!74!cxuxqY;Y!_Df8S>-h; ze|w3|JFz9UsaKnD-abKX=t3@gs6N#uKC$Q?7-Ef+R!8X=@5n3R!v-NM-2 z`rRj;XgILl{m&=fsgv3oKkun|LUyc;Fsd0x!O{5a@R?GVVa+P}8vfu*lBP5gHEU1b zG|eM&-=M;PEcObMtI0oS5P>Mjm)2fa@G0@jd~YHWL1kIZ{(I+1g#c;{A)2mzPD zTQCp^l;tg2+>-|>fq+uq9$DVfxSs{mD&XV7z}DFRPdz^10Sfl|gGI9updWj;8jZdI zyvGHNt$j3mZVFh@EN?&{E*uqU9{=xmdE4xPisv+dFn~b6)3(&*-lox;k&+f+ z3t2Vvs4>&f->!CxTk`m2;EmRAY2l4QsgD%42FA;|U;v?gy?SNbX^{~i%kqmp1TqKY z<$%<&BF>_~X-nKNu|;}IWu7^@hzB(4%taO9-;QN~)2WG`O^FuUDttj8e>FMVtu&!V zoVH3|M>F#!u>Km+;K;xJT!2g2P6YjZxz&77`dPr|7U8u+wF@!;v?xOvw6xV*)x7Vk zc@Y3xE^D^{!u{S>(H}Z{0{}Ut#_J1na+g$tDnN5bfR+T{`PST*`298PJjaxoM>=rw zxJa`qWcyY_%Kh}M4gKG9;sBzKV1L;UUjo(?v&aUZH|141*Ix6ZTjrUHQv+n4|Mx8R z|Jh6P|MNxnf1GU=O|A!$*X4K}a;;#MfsdYqRc>`^)NfJr+#x&o1UX+)_R#pI^4Q9M z8fvCH-!?^3ngG3Cg75?i%>Nt!0x`H-*ROBY-v!9ef)71O!~B_V--W>L+F&mZ;{}2( z(gx5Vj8|mG*_a8|20WwjO?-fC3Blz#SB31{4X`>jeBknvJ}3ja@9t#)&;_8X9Koel zYH8m(Ah!O`t*%E>LzFfEPti1CmhdQmcS(@T|5`eA6#sLpd*cxjOJ)L!Q^67o?K6EK zmYDl$5>Ov<5M$)%jVYBH#?K8Y^ApW?{~=Aij{Tb>b7o6G=dNr-I=*dgbyL8PH*P@~ zi~{V}w{<@${WJI9DZ>bPWd3sfMEri8geW-g?V1KGl2SjG<^|+@iyMY~&&;a6ssU}t z(_C1`HQw}EuYWHup&O!9Q*PlP^&0>?VYrvjE!mn_9wF}a=nUnuU8v1wZxWuJnclv! z<#=*CeVWpvrz(|@8NB2v)WphT0MiQFizAOK#&{e^Yz+fcTzZT3{9E_hdx$z*hwcI| z&KAc6OLu2=!bX|rI1Vnq7@4;UH0%qR2WzUMsewxp=F>-x!QDIMK>WZ`X1&{VrpT(U zSp2AReS~tFRzNK{bM?A%CRuvgT}Z9GmUxK0OJ?xZXo5Q)y~*tVi0=tZ71+_`I#m;x zk09e_NTVRJ9Ma`u5Ldydtvy+kjuo2Ag<#$}< zKoXFA&stSO*CTK!&k}Sp@UoWp7-4)o>;P7^`7SV8%gqi9hz><*_WfJxHdZ63{xyv+vvaOU|oe*|qB0=)vGbWdCA>zOA&w7(Yf#iveU zRjqcR4s^iLZyN~v05}mBSa-=&YUDPM>mhGf-T0oo1>i79pt(Y|BLdX++9>+bv%}KF`kh|1_v?8$MAM8 zTSzgJT!&^*@NTFQTRugLW24JGcduwHI8>%xajHly1%nA4F9|>qiGRR5`P=kr73QLE zqG{0+4{W2?(=%Fxo^bR)0fq;F;rZ0@2OD_b^Ak-CfEaomSJoNKFr7il((S@#_`cea z;H{c*nx$!`Lm%L-RyM7y0v&0q1-4}F@5UMZdk5X;xa813zvjpa_0b9I0MHE{%i9=N z1-j_;=OPI7m8cbkwMP5~zxN9B9X*5dV1Y4nK#{lFeludL#jO){l3ChNQ_z95%Q(Pu z@Q9E#E81vKf1=dE$6uq-MmV$~{2Ft$bgHNU@G>E5TyvvcmN)o1X2Ls8o$Iaz!S!)# zA~2SR5KV~=!SwzNb1N(jPQ^^V$YHuRnPt+NxTCB#>Lj*}snDNK3Cf&i$S9Ysq3kTo zbY}&5te#=ZQK45ve!@T-^L)qODd#7LB4#ia3MZC@lv4EfoE*k?8hUO7MPVK2Kh95R zQth~dFJ<*|WWEROV(})Inp9ZklnSKx&vP50P)^58?L;!r1wA|Fb^hg);rDC|i;PlM7 zxwlhc*Drhx`nx2yx> z1bCbfOe_NkJR-koqck1l{&ggGn>K@%hqfokE{`#u!l8t|fhV&vXI2PxycJdc+;4(e zkh!v+$IF4CM5QRd-dYce?!E7hW<5dwxavCCf&9;XI!Or-IsMdK#CEy$C9{}oHNp=R z{iK|_mKAE{aHjd@IjHfc5{y~JotTuq{Npb*STp|q*!Wr+hCr7c{0OqMyx)Z}VpRfH3P!E|+?hIO9K~qZj?`^VFH)AtdhFjbl5q`FMnm^n z^YfI7^ilI8UxMxMqaiN=A^oF5q%bk7G1Pl0i93ENBXuCNV=~jwBtC~(#7e0?drfH6 zVT6f}9J(8$&kk2DBVGDH<++t6g5o>tB=j)*EifnQsd;ZX;`a0R^Rtg}B~fUZZS{y9 zN`yNx`WS&A5{Suqy>Qj zkN}VcJb)dEu4b*QTA%x?5^;sFs;_=J(jF8I5L27$jIq0|$nf7kT08+z@a=Fa_pLz+ zcNL(1Cep3n8I@teRMsPJ{^?se)>|rh;NMLxJUY8|bZB{C7bpHX0zVy5mr!to$(X%o zRtWOqcn-5zG%S$72-ZV@GV2^I8#3m^Cn%o611Qx+RuhZ$s2{Ov3Y2?%CU}mQxf-%= z?yFrI5$y{W?lqsZ+o8_V=!nLn_hng_h3x5CNRxOJZ70$sIEJ^%aJZukTYf- z)n36dLD-I@>y`8J=&~iUZ~92A14_nvzLap6FG_ml3B9K}Iav$&mP2Cc?h2#M?V2i@ zJcM$O4g6y+z{p~5RR?_Kn^HRx=jp4&4&LxawmZh&h^`dj-^St%jD|169h~ngAAWuT5$&gDQm=;U3$dlth;3# z43s%EmX|Jh-h#RReGv>{TyJ}=SYJ$IEb!bR)1X6OeSnm{8S0brB{iznFT>jwzQs(K z_YYmnUiiefq#$=4*p=nDf?k-uow>v7X1?izTVYFarVoT#|F{k zneO^(@mTYFN4smrRgbdHyE@U5>*JpCb_l7P4P<7<`NL_7t`_Q)F+-5b`E!n^nhO=S zvm0@=Z=d|ye|^J1^H8jsvQqd_v)_@0CpolDUr6sLfYlnnEkJR29I*}w)F!A3nL2#QNz!$e)C!yT*}n^5kE zLn;f4Q%^bS9oVZ@Lm{`#a_0i!Cxg8uC>5u34elk9zqxjWRbGXs8q73afxDjl*yQMq z4`J)LQ>39CFJY7T(B0p+*ux8xT!jP$0+-zeHD^90`3h?u?NIL;wuyUiUzJk&a4L7Z zf4BDwbL{&kXhFl=skO-B`%^~d>PP6@M)mAQ?B2p+^^>Dq(4)48MVE6&5V#zCNR;P` zophNf-}sumbH6Jt{mfq@&gh#JIYM`g=G~7N%~yXBKL6#~>fu+~(0Bzdn|*o5HJyS* zL7r*msqIQnALk?rdLTnK({}UC=UAa*4TfbiEj#IgXbeoUY=YWdC%nsZq6%eP!oh*My0lNBV%!HU%_Im z9F*?#QTc(gP8qyuawxqH29t%}!0X*}hVDpFNvCPAW+#|Vdsq;szRyLR?EJQ=CO*yQ z{Zy}n!351e+upv52gRR~Dyx&I#fZgTermN%-H{CXD)o*tJ;KIxJS&+NfY#eA9c z_$rd~oD!Kj83HqOZQoW8i@ib*`y&^G0YiCH>A{2ghvw=J94tZ>Tch`s=*S#&r+}k` zo|Y4(FGtjwF7d~9oq7;-f4=8Q_F$J3`*(t; zgB!8I@L$kP*p`eMZetod)79|mhav8B1CQzbpW zYu84h&_)cudX<&GD?Q#wyLC2M`inYHtch@cu4|a-G1`r^KT@&ab$=C)rmR)bG7a-| zBprKr>9^9`w2x@6;PL}h_g?f%J0616^Bq3>FucqB2Zm^v!SRSzCezW`19iL~Mwh<6 zFKW6O(H&82l%2o4O6C|Ht77h$Tv?sHzdF+%h%CC8$GJf?ROTbU$V>%&`B%SrqsSf%!62{4`~D5OG9Mt=GG|)BAwTL9x=EK3=XednwX044;?J`; zhH5O(aaYhz-WvfF5HdlRt&5o&roBUW^V3%Zu#UM*zBdJo*oAhEcrdYc=zY=If5G)e z+z<`HY21~VFZVGg8Y)7r)6VL??@U!$MF%WWJDep2`vJkq^+LJp3r0RKY@q$+Qb`=P> z1p^Tx7b8o8+I0B^Mf5a1d#2N5EmnUlWH@zBspxifN#Bg`7-MRX3T`CO z?ibBrDQe;h#}KYgo6)3$(VdT8teucjs@u^w+sGVt>r@`mTpwSM`FMGFuWK)W9`Lju zSid9@J>I&fh}OgS8vm!AbNxyx{o6R^Xf++2nwjjNrA=0(f``%!(@|^sm6nc}XVg-$ zLOg`WR5YEkQM0BL%oBD%MH5p2MF>q-VThujBA)2yi3E{K#e~#nJM-pw^ZWtNTJ!4O z`^CQ3zVEfy-urufKi9=}_8Ic{{$^MpSAKiOKH?|cz0n6*KFPM%MJpA^oZ`CTlWilH(vwmTGjr2Z0GG1AcAEVV#9 zC#Sp;OWJ+E^UmQf7KkfNe=StVRAVu@8%zqkw12U=%ZoM~tg=w8%%0Ww4i{WT#nTamZ z6q;gVq$%Kba4#Rmq)(EWr^C}>H4X-?I_6p9$ zC!^C#m|rloDCVr7!eS!<)_O9l$yTx|+11>Ww}4O@d3cUL zH{z)s0y#SQ`VhBj^WF>k2Cn8zy_S;bfh&$hrig;_wT{pBiwW;%+0OW-M~+Iks&6*C zW|0Jn+Kvn|AEXOyB^wMhZOg_0ao#ncNiq&LybO6+AM?^g{`&6Ka{5DV^-rEywNfr$ z-Mcq#QnvFdASTWoggUBebmfdk&8ekr1^iOl@$9DWprP+WZ2~wsGlrZT;&)dnu)?SH zdeP{_8y`pq+e4QpaVihXJKe^i$8ix*{J{Pel@!1c3FI==j=^-BtTyxBaaA@ zcu0BPzio=W$yFk}k!cSzp_5k^_NG_Cm0R5Ksw7do`l+W_%U{Lz??YO>CC(UoGpO19 zC$hSce~LVLfkrv!Kj{Z=_)z~MD!inVBKWeY?5X60URb6^lrqt=y-#0uDuBOs zXm)1U8ln5#l=2=m183|XcPp*>$TV*uXYSeTZYPZI`s+jT`aBXAsW~@Row;k%tKEm* z`somZo#l7wA$z*7xZ!g7X`A24lE!@@X1voyH;r!!%`GqSy<)eG^IZdg+>HLi-9FG8 z*HaWm&V7>R$HlJ>H+(ly}AP53Z>@?8b zT~T|tcQ6!&ATM`EK}s7uUdaxs+?@#I?EVF{-=0e4Xxfu`JzTbmY*qJ;{}wlSwE;R} z6UUqcKSc~MD;2Q))0>X^$>8(!SZbK=Qs+l$M(u0GN5Rh#VS!z-TSbaB!Ox!fFOXM< zHFh0YJbf#9j=D@Qh|&PffBpJ7SR!_PofLpP8_>Y|G~upEh-597&nqO&iEeGLR)qAS zp1OTznC{7$YMzI*64Bt!{nk@AVWe)5J;Qc^h_dou#c{d4<8On+>O$E};qo5DN*h)B zeYlp^sLC;)g~~VQv%1Vw2OO*bYjL!@SDHuZE6WO2b{p%ux^)?$%IR1*vghNaZ9mgI zzOriVp{_Ya2UFs+b{t@J$6gr_2B;kwU=?|Mu5s}EBbnlts$2o)i8Q!x&wU3M5{P>o?S^QfQb8$+CA`z2J=h>~j$_#5z2>ULF8%Mtg|M zVoA>^>tByudd6*jGWU%MPc-1Ao4j0}y#Grf8+rhTwszAgb8h0dH&kOoJ@txlX5@L% zNOuY#kIi`o^4-fQx08{X?9Mz)l>9Tl(Zo_7Eqx15r?1F6le!hB297Lr9W44H>fZ6r zH1vI0S?5S77;;g}eKsotOGewVC)rnXCC;Uv2O4X?jNMRr4TYrp*m;#gl8&OUaq7Dk zeo>=eQ3ND;iOisNyplDQ;XDRrENlT?bI9!_YXoR-Jz;nrLV+yK+)2^7SE=6`78tYb z)jR*R*ske&RGit1nuVXgLgUY}J61(Ho0TOpN2)@b`=}*#OXns=_nT!~R2wc>9@Jsc zO?l7q`IXAPFoY3)PO3WY7)U5waTin!00yuD-JkNF{1`lCDceG=P0{uYJWx#QUp&M! z%+*iD*!F~)io6oD!tr|WM4l7!ez`v0r~FPuIF_t%(A(UEa(rp=n5NJcP?xld54S$^ z67QAJ_ru1*P_btKkG$@)VD0uP88mTMh&YE}k)Y3jPFHRjZ2ZGiomlgOaYip|1D$Ss zDn@&(Zl!RAvS1UE3Twu$J<>gzf<|{28am60u9VP3@x8rM9uf%!2G1YDrCpza1up2izJo*Kzl7J4b2Rdw}eZmroy&yq+&6EzWP#tkzIvmaSX z3KEOsdV=pWgug>T+hOf7aVhb^w|P^J6j_^%uKylpXd1pXA=NXKMdK#89EjSzVN%BV z@de~8-EWvWOZ0b{Zi|^^4dPkXx%Exqa8)yz@FbhblU%E9qSA$YC&))kaXcbH zUr7={Lt&iHMZ6XitbTNP)l=OU9%z?AF4}G6Ju|$PSc`COTDmWXHIivMxs>OWCHU>- z^+u52!}(id7;)VSVQp;&=M;7d*>Wv=l)o{Lwa`PtCUkr?;OiEoyfq+{wRhd&R~&!P zF1#pNn9+;4#4l-CE6?~Av)x)>5!M15_K+dnU@{hS&xe>ff?)(i?^KI5VfhE=6o}|R zroFWqeGjaT=dfn^jj8iX)biQ+B8>pal8_mp&1sZ}a6X$)VdkW|^`=gvTU(LCy6V~@ z2Vuot5nfc`l*%Io$B?n*3d>SeGyUY(7>ISo$EuW*nP3TzJQ3`&56}?roPo1DF9y*% zlrL&>%)?)57vk&>fezC1= z_Ax1A%-?0}Yd0H7hDrTt%vKM<1Bs;An3=^|q4WtbjD^=?uq*mh$Ub-|5>&x$Q2g zp=8ii55v#Vjgm)9azqJf<s@< z{EKL;Ob;A!980w&YeGM{lqybQ2llI8I<*PyrHEt=Z$m1CbsXT#dgX5b9I2*6o56zKxEz! zax0<39LM%z-u{6OGrq6X@f=HK3&0r%0< z#BJp~YOw>@0%i&j!=PwTT_)l4Lo>mHrAGJI(lDS_xU^z??Qb?GE&E{)*w8b*($KyA zSZ%VnCtU%M#uIZu0Mw8MddJ@@HQ#v#NR&hV-UW6L0!ewM`hWcPceZHLNm5F_0V-Tx z4M`mT0003Is6Y+$-;7pN-OiA8GUyyCIQD%`HJ7GZXFD}b%Kq6^NC5I`{z3V&!hQbO zTFH~k!1Ulx5K4OII`9Jmm0e$J)C9&fzz+fp0Os?*Gfe+I{dYJ1uYB8opN;=d&&EnB YJ|X_pZOmWmfyJQnXD^*0I|ily5Am@3&j0`b literal 0 HcmV?d00001 diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..c1108c0 --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,438 @@ +/* eslint-disable @next/next/no-img-element */ +"use client"; + +import React, { useRef, useCallback, useState, useEffect, ReactNode } from 'react'; +import { useChat } from 'ai/react'; +import { ToolInvocation } from 'ai'; +import { toast } from 'sonner'; +import { motion, AnimatePresence } from 'framer-motion'; +import { + SearchIcon, + LinkIcon, + Check, + Loader2, + ChevronDown, + ChevronUp, + FastForward, + Sparkles, + ArrowRight +} from 'lucide-react'; +import { + HoverCard, + HoverCardContent, + HoverCardTrigger, +} from "@/components/ui/hover-card"; +import { Input } from '@/components/ui/input'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { ScrollArea } from '@/components/ui/scroll-area'; + +export default function Home() { + const inputRef = useRef(null); + const [lastSubmittedQuery, setLastSubmittedQuery] = useState(""); + const [hasSubmitted, setHasSubmitted] = useState(false); + const bottomRef = useRef(null); + const [showToolResults, setShowToolResults] = useState<{ [key: number]: boolean }>({}); + const [isModelSelectorOpen, setIsModelSelectorOpen] = useState(false); + const [selectedModel, setSelectedModel] = useState('Speed'); + + const { isLoading, input, messages, setInput, append, handleSubmit, setMessages } = useChat({ + api: '/api/chat', + body: { + model: selectedModel === 'Speed' ? 'gpt-4o-mini' : selectedModel === 'Quality (GPT)' ? 'gpt-4o' : 'claude-3-5-sonnet-20240620', + }, + maxToolRoundtrips: 1, + onError: (error) => { + console.error("Chat error:", error); + toast.error("An error occurred. Please try again."); + }, + }); + + const models = [ + { name: 'Speed', description: 'High speed, but lower quality.', details: '(OpenAI/GPT-4o-mini)', icon: FastForward }, + { name: 'Quality (GPT)', description: 'Speed and quality, balanced.', details: '(OpenAI/GPT | Optimized)', icon: Sparkles }, + { name: 'Quality (Claude)', description: 'High quality generation.', details: '(Anthropic/Claude-3.5-Sonnet)', icon: Sparkles }, + ]; + + + + const renderToolInvocation = (toolInvocation: ToolInvocation, index: number) => { + const args = JSON.parse(JSON.stringify(toolInvocation.args)); + const result = 'result' in toolInvocation ? JSON.parse(JSON.stringify(toolInvocation.result)) : null; + + return ( + + + +
+ {result ? : } + {result ? 'Used' : 'Using'} {toolInvocation.toolName === 'web_search' ? 'Web Search' : toolInvocation.toolName} +
+ +
+
+ + {args?.query && ( + + + {args.query} + + )} + + {showToolResults[index] && result && ( + + {result.results.map((item: any, itemIndex: number) => ( +
+

{item.title}

+

{item.content}

+ + + {item.url} + +
+ ))} +
+ )} +
+
+ ); + }; + + const renderCitation = (citationText: string, citationLink: string, index: number) => { + const faviconUrl = `https://www.google.com/s2/favicons?domain=${new URL(citationLink).hostname}`; + + return ( + + + + {citationText} + [{index + 1}] + + + + Favicon + + {citationLink} + + + + ); + }; + + const renderMarkdown = (content: string) => { + const citationRegex = /\[([^\]]+)\]\(([^)]+)\)/g; + const boldRegex = /\*\*(.*?)\*\*/g; // Bold + const italicRegex = /\*(.*?)\*/g; // Italic + const unorderedListRegex = /^-\s+(.*)$/gm; // Unordered list + const orderedListRegex = /^\d+\.\s+(.*)$/gm; // Ordered list + const headingRegex = /^(#{1,6})\s+(.*)$/gm; // Headings + const parts: (string | ReactNode)[] = []; + let lastIndex = 0; + let match; + + // Replace bold and italic + content = content + .replace(boldRegex, '$1') + .replace(italicRegex, '$1'); + + // Replace unordered and ordered lists + content = content + .replace(unorderedListRegex, '
  • $1
  • ') + .replace(orderedListRegex, '
  • $1
  • '); + + // Replace headings + content = content.replace(headingRegex, (match, hashes, headingText) => { + const level = hashes.length; // Determine heading level + return `${headingText}`; + }); + + // Add list wrapping + const wrappedContent = content.split(/()/g).map((item, index) => { + if (item.startsWith('${item}`; + } + return item; + }).join(''); + + // Parse citations and add to parts + while ((match = citationRegex.exec(wrappedContent)) !== null) { + // Add text before the citation + if (match.index > lastIndex) { + parts.push(wrappedContent.slice(lastIndex, match.index)); + } + + const citationText = match[1]; + const citationLink = match[2]; + parts.push(renderCitation(citationText, citationLink, parts.length)); // Adjusting index for key + + lastIndex = match.index + match[0].length; + } + + // Add any remaining text after the last citation + if (lastIndex < wrappedContent.length) { + parts.push(wrappedContent.slice(lastIndex)); + } + + return ( + + {parts.map((part, index) => { + if (typeof part === 'string') { + const lines = part.split('\n'); + return lines.map((line, lineIndex) => ( + + + {lineIndex < lines.length - 1 &&
    } +
    + )); + } + return {part}; // Render citations + })} +
    + ); + }; + + + useEffect(() => { + if (bottomRef.current) { + bottomRef.current.scrollIntoView({ behavior: "smooth" }); + } + }, [messages]); + + const handleExampleClick = useCallback(async (query: string) => { + setLastSubmittedQuery(query.trim()); + setHasSubmitted(true); + await append({ + content: query.trim(), + role: 'user' + }); + }, [append]); + + const handleFormSubmit = useCallback((e: React.FormEvent) => { + e.preventDefault(); + if (input.trim()) { + setMessages([]); + setLastSubmittedQuery(input.trim()); + handleSubmit(e); + setHasSubmitted(true); + setShowToolResults({}); + } else { + toast.error("Please enter a search query."); + } + }, [input, setMessages, handleSubmit]); + + const exampleQueries = [ + "Best programming languages in 2024", + "How to build a responsive website", + "Latest trends in AI technology", + "OpenAI GPT-4o mini" + ]; + + return ( +
    +
    + +

    MiniPerplx

    + {!hasSubmitted && +

    + A minimalistic AI-powered search engine that helps you find information on the internet. +

    + } +
    + + + {!hasSubmitted && ( + +
    + + {isModelSelectorOpen && ( +
    + {models.map((model) => ( + + ))} +
    + )} +
    + +
    +
    + setInput(e.target.value)} + disabled={isLoading} + className="w-full h-10 py-3 px-4 bg-gray-100 rounded-full pr-12 focus:outline-none focus:ring-2 focus:ring-green-500 text-sm sm:text-base" + /> + +
    +
    + +
    + {exampleQueries.map((query, index) => ( + + ))} +
    +
    + )} +
    + + + + {hasSubmitted && ( + +

    {lastSubmittedQuery}

    + + {selectedModel === 'Speed' && } + {selectedModel === 'Quality (GPT)' && } + {selectedModel === 'Quality (Claude)' && } + {selectedModel} + +
    + )} +
    + + {messages.length > 0 && ( +
    + {messages.map((message, index) => ( + + {message.role === 'assistant' && message.content && ( + + +

    Answer

    +
    + {renderMarkdown(message.content)} +
    +
    +
    + )} + {message.toolInvocations?.map((toolInvocation: ToolInvocation, toolIndex: number) => ( + + {renderToolInvocation(toolInvocation, toolIndex)} + + ))} +
    + ))} +
    +
    + )} +
    + + + {hasSubmitted && ( + +
    +
    + setInput(e.target.value)} + disabled={isLoading} + className="w-full h-10 py-3 px-4 bg-gray-100 rounded-full pr-12 focus:outline-none focus:ring-2 focus:ring-green-500 text-sm" + /> + +
    +
    +
    + )} +
    +
    + ); +} \ No newline at end of file diff --git a/app/twitter-image.png b/app/twitter-image.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc45f6fb13cb000a7e842f5e78f78210f27614 GIT binary patch literal 24122 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 YJ|X_pZOmWmfyJQnXD^*0I|ily5Am@3&j0`b literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..31a3947 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/(preview)/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/components/ui/badge.tsx b/components/ui/badge.tsx new file mode 100644 index 0000000..e87d62b --- /dev/null +++ b/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
    + ) +} + +export { Badge, badgeVariants } diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 0000000..0270f64 --- /dev/null +++ b/components/ui/button.tsx @@ -0,0 +1,57 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/components/ui/card.tsx b/components/ui/card.tsx new file mode 100644 index 0000000..77e9fb7 --- /dev/null +++ b/components/ui/card.tsx @@ -0,0 +1,76 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/components/ui/hover-card.tsx b/components/ui/hover-card.tsx new file mode 100644 index 0000000..e54d91c --- /dev/null +++ b/components/ui/hover-card.tsx @@ -0,0 +1,29 @@ +"use client" + +import * as React from "react" +import * as HoverCardPrimitive from "@radix-ui/react-hover-card" + +import { cn } from "@/lib/utils" + +const HoverCard = HoverCardPrimitive.Root + +const HoverCardTrigger = HoverCardPrimitive.Trigger + +const HoverCardContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( + +)) +HoverCardContent.displayName = HoverCardPrimitive.Content.displayName + +export { HoverCard, HoverCardTrigger, HoverCardContent } diff --git a/components/ui/input.tsx b/components/ui/input.tsx new file mode 100644 index 0000000..a92b8e0 --- /dev/null +++ b/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/components/ui/scroll-area.tsx b/components/ui/scroll-area.tsx new file mode 100644 index 0000000..0b4a48d --- /dev/null +++ b/components/ui/scroll-area.tsx @@ -0,0 +1,48 @@ +"use client" + +import * as React from "react" +import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" + +import { cn } from "@/lib/utils" + +const ScrollArea = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + {children} + + + + +)) +ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName + +const ScrollBar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, orientation = "vertical", ...props }, ref) => ( + + + +)) +ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName + +export { ScrollArea, ScrollBar } diff --git a/components/ui/skeleton.tsx b/components/ui/skeleton.tsx new file mode 100644 index 0000000..d7e45f7 --- /dev/null +++ b/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
    + ) +} + +export { Skeleton } diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..d084cca --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/package.json b/package.json new file mode 100644 index 0000000..678195b --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "miniperplx", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@ai-sdk/anthropic": "^0.0.37", + "@ai-sdk/openai": "^0.0.40", + "@radix-ui/react-hover-card": "^1.1.1", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-slot": "^1.1.0", + "@tailwindcss/typography": "^0.5.13", + "@vercel/analytics": "^1.3.1", + "ai": "latest", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "framer-motion": "^11.3.19", + "lucide-react": "^0.424.0", + "next": "14.2.5", + "react": "^18", + "react-dom": "^18", + "sonner": "^1.5.0", + "tailwind-merge": "^2.4.0", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.5", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5dfcb48 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3845 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@ai-sdk/anthropic': + specifier: ^0.0.37 + version: 0.0.37(zod@3.23.8) + '@ai-sdk/openai': + specifier: ^0.0.40 + version: 0.0.40(zod@3.23.8) + '@radix-ui/react-hover-card': + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.0(react@18.3.1) + '@radix-ui/react-scroll-area': + specifier: ^1.1.0 + version: 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': + specifier: ^1.1.0 + version: 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@tailwindcss/typography': + specifier: ^0.5.13 + version: 0.5.13(tailwindcss@3.4.7) + '@vercel/analytics': + specifier: ^1.3.1 + version: 1.3.1(next@14.2.5)(react@18.3.1) + ai: + specifier: latest + version: 3.3.2(react@18.3.1)(svelte@4.2.18)(vue@3.4.35)(zod@3.23.8) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + date-fns: + specifier: ^3.6.0 + version: 3.6.0 + framer-motion: + specifier: ^11.3.19 + version: 11.3.20(react-dom@18.3.1)(react@18.3.1) + lucide-react: + specifier: ^0.424.0 + version: 0.424.0(react@18.3.1) + next: + specifier: 14.2.5 + version: 14.2.5(react-dom@18.3.1)(react@18.3.1) + react: + specifier: ^18 + version: 18.3.1 + react-dom: + specifier: ^18 + version: 18.3.1(react@18.3.1) + sonner: + specifier: ^1.5.0 + version: 1.5.0(react-dom@18.3.1)(react@18.3.1) + tailwind-merge: + specifier: ^2.4.0 + version: 2.4.0 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.7) + zod: + specifier: ^3.23.8 + version: 3.23.8 + +devDependencies: + '@types/node': + specifier: ^20 + version: 20.14.13 + '@types/react': + specifier: ^18 + version: 18.3.3 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + eslint: + specifier: ^8 + version: 8.57.0 + eslint-config-next: + specifier: 14.2.5 + version: 14.2.5(eslint@8.57.0)(typescript@5.5.4) + postcss: + specifier: ^8 + version: 8.4.40 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.7 + typescript: + specifier: ^5 + version: 5.5.4 + +packages: + + /@ai-sdk/anthropic@0.0.37(zod@3.23.8): + resolution: {integrity: sha512-RkFtA+dg5BSptuK3T08JDmFWCDaXehtnRjK/gy8VFWuWT5T44wqoP0Ca9AJksmsEDdYdTXUrLQOS5QmAgifc8w==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + dependencies: + '@ai-sdk/provider': 0.0.15 + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + zod: 3.23.8 + dev: false + + /@ai-sdk/openai@0.0.40(zod@3.23.8): + resolution: {integrity: sha512-9Iq1UaBHA5ZzNv6j3govuKGXrbrjuWvZIgWNJv4xzXlDMHu9P9hnqlBr/Aiay54WwCuTVNhTzAUTfFgnTs2kbQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + dependencies: + '@ai-sdk/provider': 0.0.14 + '@ai-sdk/provider-utils': 1.0.5(zod@3.23.8) + zod: 3.23.8 + dev: false + + /@ai-sdk/provider-utils@1.0.5(zod@3.23.8): + resolution: {integrity: sha512-XfOawxk95X3S43arn2iQIFyWGMi0DTxsf9ETc6t7bh91RPWOOPYN1tsmS5MTKD33OGJeaDQ/gnVRzXUCRBrckQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@ai-sdk/provider': 0.0.14 + eventsource-parser: 1.1.2 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + zod: 3.23.8 + dev: false + + /@ai-sdk/provider-utils@1.0.7(zod@3.23.8): + resolution: {integrity: sha512-xIDpinTnuInH16wBgKAVdN6pmrpjlJF+5f+f/8ahYMQlYzpe4Vj1qw8OL+rUGdCePcRSrFmjk8G/wdX5+J8dIw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@ai-sdk/provider': 0.0.15 + eventsource-parser: 1.1.2 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + zod: 3.23.8 + dev: false + + /@ai-sdk/provider@0.0.14: + resolution: {integrity: sha512-gaQ5Y033nro9iX1YUjEDFDRhmMcEiCk56LJdIUbX5ozEiCNCfpiBpEqrjSp/Gp5RzBS2W0BVxfG7UGW6Ezcrzg==} + engines: {node: '>=18'} + dependencies: + json-schema: 0.4.0 + dev: false + + /@ai-sdk/provider@0.0.15: + resolution: {integrity: sha512-phX/YdwKd8q8/uZ7MsUytcHuN5KvT+wgM+y78eu6E+VyFE3GRwelctBFnaaA96uRL6xnKNmb0e7e+2fDOYuBoA==} + engines: {node: '>=18'} + dependencies: + json-schema: 0.4.0 + dev: false + + /@ai-sdk/react@0.0.38(react@18.3.1)(zod@3.23.8): + resolution: {integrity: sha512-TH8uubORsHBNfZQvHnvivOgKR/xWnMl0SZiGEj+MYgDGu6xpPW+gHlwYXZM8Fey6V/lvqhe1rNfV7D7E6xJn8A==} + engines: {node: '>=18'} + peerDependencies: + react: ^18 || ^19 + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + zod: + optional: true + dependencies: + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.26(zod@3.23.8) + react: 18.3.1 + swr: 2.2.5(react@18.3.1) + zod: 3.23.8 + dev: false + + /@ai-sdk/solid@0.0.29(zod@3.23.8): + resolution: {integrity: sha512-usf7yZPdx5HcTdLrs4rI2cfAqz4V0H61uTJ6SrFmbjObUF8wCGZVMNvUB3zXxrIrlVeHJKEueGd1QNPSG06qBA==} + engines: {node: '>=18'} + peerDependencies: + solid-js: ^1.7.7 + peerDependenciesMeta: + solid-js: + optional: true + dependencies: + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.26(zod@3.23.8) + transitivePeerDependencies: + - zod + dev: false + + /@ai-sdk/svelte@0.0.31(svelte@4.2.18)(zod@3.23.8): + resolution: {integrity: sha512-hXPc+g0NgxEHGtGCa3OSC8I4mGw41Bi2jYmkzHpoUiHciUv29LPB08r0s2e139nMUDIDf8iYg4faxxdrTcKs7g==} + engines: {node: '>=18'} + peerDependencies: + svelte: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.26(zod@3.23.8) + sswr: 2.1.0(svelte@4.2.18) + svelte: 4.2.18 + transitivePeerDependencies: + - zod + dev: false + + /@ai-sdk/ui-utils@0.0.26(zod@3.23.8): + resolution: {integrity: sha512-d+16/dcKJM4m4KFgaz8AtJFvJhUNEdqGVFczY6jtFyyBqXz42pQtAASRATtgOatdSuOeEzOSkTzBAr49/qN3Wg==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@ai-sdk/provider': 0.0.15 + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + secure-json-parse: 2.7.0 + zod: 3.23.8 + dev: false + + /@ai-sdk/vue@0.0.30(vue@3.4.35)(zod@3.23.8): + resolution: {integrity: sha512-FC0/5CpMkYS0RTlTs5E6xw0nM0kNvFWkB2FqxkWvx0R7AKJBjZlXXTtq8aEAXlOg/ce+XSTAG/aTswmjWy6C4A==} + engines: {node: '>=18'} + peerDependencies: + vue: ^3.3.4 + peerDependenciesMeta: + vue: + optional: true + dependencies: + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.26(zod@3.23.8) + swrv: 1.0.4(vue@3.4.35) + vue: 3.4.35(typescript@5.5.4) + transitivePeerDependencies: + - zod + dev: false + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 + dev: false + + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.6.6: + resolution: {integrity: sha512-Vkvsw6EcpMHjvZZdMkSY+djMGFbt7CRssW99Ne8tar2WLnZ/l3dbxeTShbLQj+/s35h+Qb4cmnob+EzwtjrXGQ==} + dependencies: + '@floating-ui/utils': 0.2.6 + dev: false + + /@floating-ui/dom@1.6.9: + resolution: {integrity: sha512-zB1PcI350t4tkm3rvUhSRKa9sT7vH5CrAbQxW+VaPYJXKAO0gsg4CTueL+6Ajp7XzAQC8CW4Jj1Wgqc0sB6oUQ==} + dependencies: + '@floating-ui/core': 1.6.6 + '@floating-ui/utils': 0.2.6 + dev: false + + /@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.9 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@floating-ui/utils@0.2.6: + resolution: {integrity: sha512-0KI3zGxIUs1KDR/pjQPdJH4Z8nGBm0yJ5WRoRfdw1Kzeh45jkIfA0rmD0kBF6fKHH+xaH7g8y4jIXyAV5MGK3g==} + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + /@next/env@14.2.5: + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + dev: false + + /@next/eslint-plugin-next@14.2.5: + resolution: {integrity: sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/swc-darwin-arm64@14.2.5: + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.2.5: + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.2.5: + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.2.5: + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.2.5: + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.2.5: + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.2.5: + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.2.5: + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.2.5: + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + /@opentelemetry/api@1.9.0: + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@radix-ui/number@1.1.0: + resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} + dev: false + + /@radix-ui/primitive@1.1.0: + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + dev: false + + /@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-hover-card@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-IwzAOP97hQpDADYVKrEEHUH/b2LA+9MgB0LgdmnbFO2u/3M5hmEofjjr2M6CyzUblaAqJdFm6B7oFtU72DPXrA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-icons@1.3.0(react@18.3.1): + resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x + dependencies: + react: 18.3.1 + dev: false + + /@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/rect': 1.1.0 + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-scroll-area@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/number': 1.1.0 + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/rect': 1.1.0 + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1): + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@types/react': 18.3.3 + react: 18.3.1 + dev: false + + /@radix-ui/rect@1.1.0: + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + dev: false + + /@rushstack/eslint-patch@1.10.4: + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + dev: true + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.6.3 + dev: false + + /@tailwindcss/typography@0.5.13(tailwindcss@3.4.7): + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.7 + dev: false + + /@types/diff-match-patch@1.0.36: + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + dev: false + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/node@20.14.13: + resolution: {integrity: sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + dependencies: + '@types/react': 18.3.3 + + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 + eslint: 8.57.0 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@7.2.0: + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + dev: true + + /@typescript-eslint/types@7.2.0: + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.5.4): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys@7.2.0: + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vercel/analytics@1.3.1(next@14.2.5)(react@18.3.1): + resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} + peerDependencies: + next: '>= 13' + react: ^18 || ^19 + peerDependenciesMeta: + next: + optional: true + react: + optional: true + dependencies: + next: 14.2.5(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + server-only: 0.0.1 + dev: false + + /@vue/compiler-core@3.4.35: + resolution: {integrity: sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==} + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.35 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: false + + /@vue/compiler-dom@3.4.35: + resolution: {integrity: sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==} + dependencies: + '@vue/compiler-core': 3.4.35 + '@vue/shared': 3.4.35 + dev: false + + /@vue/compiler-sfc@3.4.35: + resolution: {integrity: sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==} + dependencies: + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.4.35 + '@vue/compiler-dom': 3.4.35 + '@vue/compiler-ssr': 3.4.35 + '@vue/shared': 3.4.35 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.40 + source-map-js: 1.2.0 + dev: false + + /@vue/compiler-ssr@3.4.35: + resolution: {integrity: sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==} + dependencies: + '@vue/compiler-dom': 3.4.35 + '@vue/shared': 3.4.35 + dev: false + + /@vue/reactivity@3.4.35: + resolution: {integrity: sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==} + dependencies: + '@vue/shared': 3.4.35 + dev: false + + /@vue/runtime-core@3.4.35: + resolution: {integrity: sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==} + dependencies: + '@vue/reactivity': 3.4.35 + '@vue/shared': 3.4.35 + dev: false + + /@vue/runtime-dom@3.4.35: + resolution: {integrity: sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==} + dependencies: + '@vue/reactivity': 3.4.35 + '@vue/runtime-core': 3.4.35 + '@vue/shared': 3.4.35 + csstype: 3.1.3 + dev: false + + /@vue/server-renderer@3.4.35(vue@3.4.35): + resolution: {integrity: sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==} + peerDependencies: + vue: 3.4.35 + dependencies: + '@vue/compiler-ssr': 3.4.35 + '@vue/shared': 3.4.35 + vue: 3.4.35(typescript@5.5.4) + dev: false + + /@vue/shared@3.4.35: + resolution: {integrity: sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==} + dev: false + + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: true + + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + /ai@3.3.2(react@18.3.1)(svelte@4.2.18)(vue@3.4.35)(zod@3.23.8): + resolution: {integrity: sha512-oQF9L75J8kyfYKFNOCFrzmJOeZyj2kWED3x2hl+ZnR93TD1mhtA5XBvukTXK8UjthutRPinSBZaFH2GFn3qAWQ==} + engines: {node: '>=18'} + peerDependencies: + openai: ^4.42.0 + react: ^18 || ^19 + sswr: ^2.1.0 + svelte: ^3.0.0 || ^4.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + openai: + optional: true + react: + optional: true + sswr: + optional: true + svelte: + optional: true + zod: + optional: true + dependencies: + '@ai-sdk/provider': 0.0.15 + '@ai-sdk/provider-utils': 1.0.7(zod@3.23.8) + '@ai-sdk/react': 0.0.38(react@18.3.1)(zod@3.23.8) + '@ai-sdk/solid': 0.0.29(zod@3.23.8) + '@ai-sdk/svelte': 0.0.31(svelte@4.2.18)(zod@3.23.8) + '@ai-sdk/ui-utils': 0.0.26(zod@3.23.8) + '@ai-sdk/vue': 0.0.30(vue@3.4.35)(zod@3.23.8) + '@opentelemetry/api': 1.9.0 + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + nanoid: 3.3.6 + react: 18.3.1 + secure-json-parse: 2.7.0 + svelte: 4.2.18 + zod: 3.23.8 + zod-to-json-schema: 3.22.5(zod@3.23.8) + transitivePeerDependencies: + - solid-js + - vue + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: false + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: true + + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + dependencies: + deep-equal: 2.2.3 + dev: true + + /axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + /caniuse-lite@1.0.30001646: + resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==} + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + dependencies: + clsx: 2.0.0 + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false + + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@types/estree': 1.0.5 + acorn: 8.12.1 + estree-walker: 3.0.3 + periscopic: 3.1.0 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + /diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-next@14.2.5(eslint@8.57.0)(typescript@5.5.4): + resolution: {integrity: sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.2.5 + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) + eslint-plugin-react: 7.35.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + typescript: 5.5.4 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.15.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.6 + enhanced-resolve: 5.17.1 + eslint: 8.57.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.6 + is-core-module: 2.15.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.4) + debug: 3.2.7 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.5.4) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.15.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + aria-query: 5.1.3 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.10.0 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 + dev: true + + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-react@7.35.0(eslint@8.57.0): + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eventsource-parser@1.1.2: + resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} + engines: {node: '>=14.18'} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + /framer-motion@11.3.20(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-xRPHtcrSjCdQ7gIttxcnSXOPq+P0AiU7tU82fWE3Tco7EmQQmu5AIgwkdcI6ebZolm+rz9ehSzECVSdZONSj+Q==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.6.3 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.2.1 + jackspeak: 2.3.6 + minimatch: 9.0.5 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: true + + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: false + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /jsondiffpatch@0.6.0: + resolution: {integrity: sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + '@types/diff-match-patch': 1.0.36 + chalk: 5.3.0 + diff-match-patch: 1.0.5 + dev: false + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + dev: true + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + dependencies: + language-subtag-registry: 0.3.23 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: false + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + /lucide-react@0.424.0(react@18.3.1): + resolution: {integrity: sha512-x2Nj2aytk1iOyHqt4hKenfVlySq0rYxNeEf8hE0o+Yh0iE36Rqz0rkngVdv2uQtjZ70LAE73eeplhhptYt9x4Q==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + dependencies: + react: 18.3.1 + dev: false + + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: false + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /next@14.2.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + dependencies: + '@next/env': 14.2.5 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001646 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: true + + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: false + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-import@15.1.0(postcss@8.4.40): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.40 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + /postcss-js@4.0.1(postcss@8.4.40): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.40 + + /postcss-load-config@4.0.2(postcss@8.4.40): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.2 + postcss: 8.4.40 + yaml: 2.5.0 + + /postcss-nested@6.2.0(postcss@8.4.40): + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.40 + postcss-selector-parser: 6.1.1 + + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: false + + /postcss@8.4.40: + resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true + + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 + dev: true + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + dev: false + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /sonner@1.5.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + /sswr@2.1.0(svelte@4.2.18): + resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + dependencies: + svelte: 4.2.18 + swrev: 4.0.0 + dev: false + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.7 + dev: true + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + dev: true + + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: true + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /styled-jsx@5.1.1(react@18.3.1): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.3.1 + dev: false + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svelte@4.2.18: + resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + '@types/estree': 1.0.5 + acorn: 8.12.1 + aria-query: 5.3.0 + axobject-query: 4.1.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.11 + periscopic: 3.1.0 + dev: false + + /swr@2.2.5(react@18.3.1): + resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + client-only: 0.0.1 + react: 18.3.1 + use-sync-external-store: 1.2.2(react@18.3.1) + dev: false + + /swrev@4.0.0: + resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} + dev: false + + /swrv@1.0.4(vue@3.4.35): + resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} + peerDependencies: + vue: '>=3.2.26 < 4' + dependencies: + vue: 3.4.35(typescript@5.5.4) + dev: false + + /tailwind-merge@2.4.0: + resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} + dev: false + + /tailwindcss-animate@1.0.7(tailwindcss@3.4.7): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + tailwindcss: 3.4.7 + dev: false + + /tailwindcss@3.4.7: + resolution: {integrity: sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.40 + postcss-import: 15.1.0(postcss@8.4.40) + postcss-js: 4.0.1(postcss@8.4.40) + postcss-load-config: 4.0.2(postcss@8.4.40) + postcss-nested: 6.2.0(postcss@8.4.40) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /ts-api-utils@1.3.0(typescript@5.5.4): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.5.4 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /use-sync-external-store@1.2.2(react@18.3.1): + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.3.1 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /vue@3.4.35(typescript@5.5.4): + resolution: {integrity: sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.35 + '@vue/compiler-sfc': 3.4.35 + '@vue/runtime-dom': 3.4.35 + '@vue/server-renderer': 3.4.35(vue@3.4.35) + '@vue/shared': 3.4.35 + typescript: 5.5.4 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zod-to-json-schema@3.22.5(zod@3.23.8): + resolution: {integrity: sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q==} + peerDependencies: + zod: ^3.22.4 + dependencies: + zod: 3.23.8 + dev: false + + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + dev: false diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..1a69fd2 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..a5e4a13 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,84 @@ +import type { Config } from "tailwindcss" + +const config = { + darkMode: ["class"], + content: [ + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}', + ], + prefix: "", + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + fontFamily: { + sans: ['Inter', 'sans-serif'], + serif: ['var(--font-serif)', 'serif'], + }, + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate"), require("@tailwindcss/typography")], +} satisfies Config + +export default config \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..88730b6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}