From 0a8444700e46a1db4151db31cfd998d974d20a38 Mon Sep 17 00:00:00 2001 From: Space-Banane Date: Sun, 19 Apr 2026 00:12:16 +0200 Subject: [PATCH] Full UI 180 & Overall improvements --- .gitea/workflows/dev.yml | 32 - .gitea/workflows/manual-build.yml | 57 - .github/copilot-instructions.md | 45 - App.js | 1 + README.md | 10 +- app.json | 10 +- assets/adaptive-icon.png | Bin 32288 -> 0 bytes assets/alert.mp3 | Bin 141600 -> 0 bytes assets/icon.png | Bin 32288 -> 0 bytes assets/image.png | Bin 0 -> 31442 bytes assets/splash-icon.png | Bin 32288 -> 0 bytes global.css | 2 + metro.config.js | 9 + package.json | 16 +- pnpm-lock.yaml | 7212 +++++++++++++++++++++++++++++ src/AppRoot.js | 347 +- src/components/AppDialogModal.js | 33 +- src/components/BottomTab.js | 15 +- src/components/ChipGroup.js | 7 +- src/components/DatePickerModal.js | 48 +- src/components/Field.js | 10 +- src/components/ItemCard.js | 85 +- src/components/TripPicker.js | 95 +- src/modals/BackupModal.js | 157 +- src/modals/CheckupFixModal.js | 51 +- src/modals/CheckupFlowModal.js | 147 +- src/modals/ItemModal.js | 437 +- src/styles.js | 921 +--- src/tabs/CheckupTab.js | 59 +- src/tabs/HistoryTab.js | 72 +- src/tabs/ItemsTab.js | 131 +- src/tabs/TripsTab.js | 285 +- src/uniwind-types.d.ts | 10 + src/utils/backup.js | 76 + src/utils/backup.test.js | 90 + src/utils/cn.js | 3 + src/utils/cn.test.js | 15 + src/utils/date.test.js | 78 + src/utils/items.js | 27 + src/utils/items.test.js | 33 + src/utils/labels.js | 60 + src/utils/labels.test.js | 72 + src/utils/trips.js | 34 + src/utils/trips.test.js | 57 + vitest.config.js | 9 + 45 files changed, 9468 insertions(+), 1390 deletions(-) delete mode 100644 .gitea/workflows/dev.yml delete mode 100644 .gitea/workflows/manual-build.yml delete mode 100644 .github/copilot-instructions.md delete mode 100644 assets/adaptive-icon.png delete mode 100644 assets/alert.mp3 delete mode 100644 assets/icon.png create mode 100644 assets/image.png delete mode 100644 assets/splash-icon.png create mode 100644 global.css create mode 100644 metro.config.js create mode 100644 pnpm-lock.yaml create mode 100644 src/uniwind-types.d.ts create mode 100644 src/utils/backup.js create mode 100644 src/utils/backup.test.js create mode 100644 src/utils/cn.js create mode 100644 src/utils/cn.test.js create mode 100644 src/utils/date.test.js create mode 100644 src/utils/items.js create mode 100644 src/utils/items.test.js create mode 100644 src/utils/labels.test.js create mode 100644 src/utils/trips.js create mode 100644 src/utils/trips.test.js create mode 100644 vitest.config.js diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml deleted file mode 100644 index 3f63f4c..0000000 --- a/.gitea/workflows/dev.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Luggage List Dev Branch Check -on: - push: - branches-ignore: - - main - paths: - - '**/*.js' - - '**/*.json' - - '.gitea/workflows/**' - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - name: 🏗 Setup repo - uses: actions/checkout@v2 - - - name: 🏗 Setup Node - uses: actions/setup-node@v2 - with: - node-version: 22 - - - name: 🏗 Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: latest - - - name: 📦 Install dependencies - run: pnpm install - - - name: 🧪 Web export smoke check - run: npx expo export --platform web diff --git a/.gitea/workflows/manual-build.yml b/.gitea/workflows/manual-build.yml deleted file mode 100644 index 697a779..0000000 --- a/.gitea/workflows/manual-build.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Luggage List Manual APK Build -on: - workflow_dispatch: - -jobs: - build-android: - runs-on: ubuntu-latest - steps: - - name: 🏗 Setup repo - uses: actions/checkout@v2 - - - name: 🏗 Setup Node - uses: actions/setup-node@v2 - with: - node-version: 22 - - - name: 🏗 Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: latest - - - name: 🏗 Setup Java - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - - - name: 🏗 Setup Android SDK - uses: android-actions/setup-android@v3 - - - name: 🏗 Setup Expo and EAS - uses: expo/expo-github-action@v8 - with: - token: ${{ secrets.EXPO_TOKEN }} - eas-version: latest - packager: pnpm - - - name: 📦 Install dependencies - run: pnpm install - - - name: 👷 Build app - run: | - eas build --local \ - --non-interactive \ - --output=./app-build \ - --platform=android \ - --profile=preview - - - name: 📝 Rename build to APK - run: mv app-build luggage-list-manual.apk - - - name: 📤 Upload build artifact - uses: actions/upload-artifact@v3 - with: - name: luggage-list-manual-apk-build - path: luggage-list-manual.apk - if-no-files-found: error diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md deleted file mode 100644 index 66097bb..0000000 --- a/.github/copilot-instructions.md +++ /dev/null @@ -1,45 +0,0 @@ -# Project Guidelines - -## Code Style -- Keep components as functional React components and use hooks-based state. -- Follow existing naming and structure in `src/screens` and `src/components`: - - Screen files: `*Screen.js` - - Shared UI pieces: `src/components/*.js` -- Keep styling centralized in `src/styles.js` via `createStyles()` and use theme-driven inline color overrides in screens/components. -- Reuse `getTheme(darkMode, pinkMode)` from `src/theme.js` for color values; do not hardcode alternate palettes in individual screens. - -## Architecture -- Root orchestration lives in `App.js`: - - App-level state includes current screen, focus mode, theme toggles, and timer/countdown state. - - Screen switching is controlled by the `screen` state (`home`, `timeuntil`, `timer`). -- Screen responsibilities: - - `HomeScreen`: mode selection and top controls. - - `TimeUntilScreen`: target clock-time countdown flow. - - `TimerScreen`: duration countdown flow. - - `FocusScreen`: minimal fullscreen countdown UI. -- Shared presentational components: - - `TopControls`: dark/pink/fullscreen/focus controls. - - `CountdownRow`: reusable HH:MM:SS display. - -## Build And Run -- Install dependencies: `npm install` -- Start dev server: `npm start` -- Run on Android: `npm run android` -- Run on iOS: `npm run ios` -- Run on web: `npm run web` -- EAS builds use `eas.json` profiles (`development`, `preview`, `production`). - -## Conventions -- Keep timer/countdown behavior in `App.js` unless intentionally refactoring architecture. -- Preserve current time behavior: - - `now` updates every second with `setInterval`. - - Time-until target is based on local device time and rolls to next day when target time has passed. -- Maintain platform guards: - - Web-only fullscreen uses `document.fullscreenElement` APIs. - - Android hardware back behavior is handled in `App.js` and should keep focus/screen fallback behavior. -- For countdown display, continue using `CountdownRow` and 2-digit padded units for consistency. - -## Pitfalls -- This project has no test scripts configured; do not claim tests were run unless you add and run them. -- Be careful with web-only globals (`document`) and keep `Platform.OS` guards. -- Avoid introducing timezone assumptions without explicit product requirements; current logic is local-time based. \ No newline at end of file diff --git a/App.js b/App.js index 5d83b63..3b08c34 100644 --- a/App.js +++ b/App.js @@ -1,3 +1,4 @@ +import './global.css'; import AppRoot from './src/AppRoot'; export default AppRoot; diff --git a/README.md b/README.md index e1279fa..b26b5f6 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,4 @@ Minimal local-first luggage management app built with Expo. ```bash npm install npm run start -``` - -## Build / CI - -Gitea workflows are in `.gitea/workflows`: - -- `dev.yml`: smoke check via `expo export --platform web` on non-main branches -- `ci.yml`: Android APK build via `eas build --local`, web bundle export, release tag/artifacts on `main` -- `manual-build.yml`: manual Android APK build via `eas build --local` +``` \ No newline at end of file diff --git a/app.json b/app.json index eb8cebb..467db93 100644 --- a/app.json +++ b/app.json @@ -2,12 +2,12 @@ "expo": { "name": "Luggage List", "slug": "luggage-list", - "version": "1.0.0", + "version": "2.0.0", "orientation": "default", - "icon": "./assets/icon.png", + "icon": "./assets/image.png", "userInterfaceStyle": "automatic", "splash": { - "image": "./assets/splash-icon.png", + "image": "./assets/image.png", "resizeMode": "contain", "backgroundColor": "#f5f5f7" }, @@ -19,12 +19,12 @@ "android": { "package": "dev.reversed.luggagelist", "adaptiveIcon": { - "foregroundImage": "./assets/icon.png", + "foregroundImage": "./assets/image.png", "backgroundColor": "#f5f5f7" } }, "web": { - "favicon": "./assets/icon.png", + "favicon": "./assets/image.png", "name": "Luggage List", "themeColor": "#f5f5f7", "backgroundColor": "#f5f5f7" diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png deleted file mode 100644 index decb7d7cd9c224be81e4023c103fd62d2fe0ef04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32288 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 AasU7T diff --git a/assets/alert.mp3 b/assets/alert.mp3 deleted file mode 100644 index 6a02b918c9bc6850f55abdd4aeb289d16554564a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141600 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 diff --git a/assets/icon.png b/assets/icon.png deleted file mode 100644 index decb7d7cd9c224be81e4023c103fd62d2fe0ef04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32288 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 AasU7T diff --git a/assets/image.png b/assets/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a95b5dd0e9ae6e9adddd9db82616c93e48ff1211 GIT binary patch literal 31442 zcmeFZcU05q*Dv~I7-dEjMiEgF&~Yq?f`}Ap!JmaO2xt%xDM1jB-irhXGY+C4#1bhA z1jT^TBE1tpih^|MB!M73Bt#$yq@5?ujQ2g~zjN=pf1Gt**Fumybw9iB&-TF;GvjSr z_HKb7XxpXV&m$n{NATm1&`+DeH?)GvUGPmT5MlfusIY6_yyzphv!-Vus0bs;ySWMc z`)9x3Z2}=k>b>Yotj+h$EeHyCyLA5SwJ--7NdjvZ8p)m{hL^cqqL+_dLy)wZ4zcZobh?OKe3E182?P;0XWy=f5fN-xT<73jFU=ptOdMfal<`bhvWC z@5=nM@OdQ!9QM0%T^hmzt{ijig5C?Ib1=AaH3WR+1;GaF z)Sx$qMO2ez1(t36lc$Qnd;F2slp7|H`2Oi;)qPik+}ZFm@P^hR>4@NoBtd zr!g$x#&WO^;J3Qfh01uY1zgW$-|v^!hUJyj?4oxij;&PKq8 zWMRXi8M!psz6Xb-GG1Std#{YAw@8OWP;}y43bv1e)$x0>_a);sR`o)+x>5(>p zi?xaGGq!-eRANqpISO^=qVG;kh)dmR3lVC>Dnx|si<;Z7yjfGoI3S_8L!2f5i+xQ< zr$KA(Tp6~nl`3HfK}NTr;Qq>nH&mcZUh539+)7Mknqj%`yxcVto9qy~$I*!8ese-s-4ZCnT7)NxQ zCsW^O)o?9DoGbk>PpwL;m8@Z?xLZs0BE>+9PE_&yq?g1Gl(}dc=Pu*g{5dw;BqrP7 zbk=f8in_ZM*x<-TipJr@Gt`thtnRcTN_N#(8Ltwr#1j$l;{|0rGD*krSRS86QuC?& zn%&fhW{L^)G#9$mnGNrXn9C`~ffCVuwjEtt!~B}h`G3yL3cwJzY}|pnyE5-8K~Uzw zs*>hLgiY|`;E681Dc)`r<6Ms>@JiSUsmv8iIPR1_6dr@qc&CN@A=2NqUX<`4wg1`dyyE+Qj{z&4kuAF1`{e zyoUGwGs@X{_f zT!_!Zs+st@P)0af7$lN|aLN*X4=9DE*|7SqnIKr|=NiaPFs#Y^>EY zohzfx>3YG5G8hBpRucCLeWE_CSj@5M&805r%1CE;nAz64o44sj*UzHU5eo=jvgoV_ z=Q0q_EvQCs^QCl`AMFmF6_2^QP8H_`?1eeK5;Jnqbf)Hq1&w2M7@t-GG4Ho*++rfZ zyy(PRVGqRd#R~%^p?2W{S&{Hm-Q^lQ+a}@6kXN#3o0Vq0M*3cy91uPZB`b+@893BF zs~*(99POfv*M{#q{%qh6uF~#Ma#-lYn$U;~Za>@-ZvYb5a?m*kt26O5w(terE@OPm5Ti+C>BC7F!v-abymz52W)abXbSPUZC zE}ZP*&s_^`HK>rnOrA4t`Ji`^=zQ>AVxq*ogaqSO!@U?oPRdS;Vxa>2`sKZRzlZXM zhWE%}Zu>%4{j1t+Wg`#ZgMR<}m|1&L5u-NL%(v9dET!FTN`e1L)B5sIX9Zir9=6HJ zP?*I9pS6o1A41p#kPrFyo{?)y%}LvHS4v^0ea$ugW3+DpxF(${VIWdrK~C^_`9o4^ zKy6AW5m1T*b{uzLr(exs=e;W&y8@|NFNC^S}_O`7i%A5D0URiU*LJ=CSY;VWgF9AW0$?*ud@G8|2o|_Yu ziU`l=G;Ra-LOA~fQ4PbdX6=x$L>R1w!`;up-v%=8$^*tg4jsgwE?fV>qea3Rae{pj zK3|3HGi;Ie0K3CGRMWJ8twbJ@Dt>)~_6*zCuZ$OKk#+^2k!@HZ(Y@fn$|B2!fPvTO z<+<+ypIlR}IXPimd&o%hI_oMLos8IP!^;F3B2#z7_6J2XW&Sz%{PYe9CxmTz$-1+k z9FH|S8ubns$)13_2)GFXj(&mIaCjiD;qIFhsoRo_fSYGyyHun6L_;=;^YSU_i15Ss z)nsKnAqOicS@-@y4Ucv37U-1c4?P!Z>)F?EqJ1#I3)ojC$%VajD9jwW4t2o=UC3Fq zyb^*6rLe+}))e?ARVuj*R0Yl+t8X)SWn1A>MX)?OqOy*s8?$zA0K?A(morn2RK>3f zuzj4F?I5U%4(ZXv2i<_rvt}xO{$!$j!bG{iRJq`iasgb~+dGPD#1xxQTpTH}wu@W~ zRu84~QZzk%Y&tUx)LgsL6s+xoP3eozY(kcWEi+>oq*&20lvMqZ?F(~R5^c42rqP&^ znNHhZ4jLyWI@E0qF%ox4UfvsIJc#vNHa}At{JG z94#h3^)@FX-otB*6(rik0`Bh2On)P8om{Er65MZEu@lX0{~DvlbKbg7=OlZrowm}6 z0n7pIJujSLd&?<7^dbRYqB-e=`7S9fO4vc_+7R2$!lF5kK);_LUois?<05XvY7eTb zdf6PQoVQ3I7QJHlTg~_iW+c@e8=}XDR7!}xQC?upp8cCkTcJk^LG`TB4Ae^JeQO8z zh5O|(|fn* zr`y(>qswoKe#*4p^MB>Qr5A`%D=OrN0YU*UF6Z+2+h^O@_|UgCt#XTE8c4Lu(BJh!1^)~3wRRh z49Q_xZ)t!HSl#Fu4Rrq#u?fjeOoGoLy18uz;<3=~O?+<0XGjPpwu&O>$vYak# z-y3Y-U)a9S*uGk9-*||JE8HDOoUh3~z=eSGTM8=3ik^dB_hnTEu>-l5i%#ob2mDt$ zzj5KxWo3Ra-2Ecl-RuGPTD+-=a$Sw+G*cLu;b6hoP8I9I&PW)gaBZ=o`O8PluBeMG z;P~}pyx|mks-V4J_EoSqd%(TmK9Zp4EId>GeYU<~XmPHm<R6C>LO?Vj6OaH1)tY`f%HCZIPvHjY6-+PHt_jIY~Q09jZm;F zT=x_{2$%=<3$_1PM?@cZYq${rpD)7pJ!nCH6a&WJn>d5<<=%cE{_~}^F}WArKYdUg z{~5SQj_J<{GsH9a)qn?gB`ziOD!s-Q!j;!lqjrE*_fn$2JrXQg=lY}1VSF9@YNh0+ zA0VT)06?j?J0yO3vX_X#V^wb(ivI*e^ol)*o?c@O9jKW`h_-nO0-gn2o?Wm@V68QR zG2A@@J}+@dYV&WwwZJyrNJZ$r<9q}<{S9&?hUoel8+DbsA50Wk&q8e9%@*^$fI$5D zWW=PB>{hfv@kyu2 zjr;4K2WJW&q}1q!bUDcC6)Pf@^agz~3NJF^6y$N(RWlc~`SXs=(Zjr;<|MaY%MIm= z_%WR6=bg;npE1o@$qtIMQo5&DivxOWcFD8wvh{*+Iloi;T?aSv%X-;{Pb?pf3nxu znBYSSK!@566G4c2Jn9KhN~6e-YM(p@CfboeR_DF$p9;)6%m{}G(`XIExlCb!gm6T- z%VE7+sq}XbQn7}3h_o0i%qjSIE$g0+M?=FnWoj2|9@}@e#as)Vl>3p)Mk75PRvFD= z63rSz(g_NIRDBM`85|_P%A~gN-$X>;9MT6-klhb_2SUOQPU2j%k zW9z5%d@+huM2aPggzeL8G1mo4jV)#%!fTt=mSl$t0+V+Kf8E0* zeO%dMy+)bJ6U5vVKI=V=Ha%T1ve)#*SBXPUM$2gjHO$m^DUYl3G?Qc59_be=Z5mE>5NF(NOgSBZRXQofPbL{)D++M0rGQ4p-E1cKjl$B zm8fKYeFUsgFWlr=$3W&z7Hfz_6}g%mucBwqkqS_B20DhXk3UW1Tmsr^n7e_;W}IM} zgkP{%pG)CXJSb7oTY`CtxT#+Gxt75*y}3u%^jwC14&l9P42MD6RGwBfboHa( z$!v;BLOi$O-2zE@nn5H2?g{4wIE09#XU&?tTOA!qJ35;shzedNo_ao05SMLfYqy5X zeHs#ZejoVK zLBaB8A&DUHWi1e|#kR2IsJ4>0`|*johuO7P&YE@(DFM-871MsOQ%mCDYxApv={ufw z>%g1@qwQvVwXG1~%*Udg3zn^-JG+}>=}K~>nxIYt*tH(u#>ei2odF9JEaqeT*e1OH zI9Ro@DKG(D5UWC5KwE`O3ti;x*O9qX#gab=xYTKX($D7tx}{}Tv#@=`)FVekrw;P? zI4>mWh9;`#WZ3Jhq1`kIf^MXOsb|HE)Y0Dt%tve>JuR35LuuV8XtD1QTmP!79s;hm z6Lwa#vm40XRqr4^Odi5rh;Hf;Ww3YfzNd(d%MXyv9SaKwF$u{)iN9GL5a!dmkB{Ag9_`Jf=|aToHHVVO zeu4Bmul@vfJm@U*=}y3|y2Z$H^bM*U(_pa1w&Hr!d>PP?mdpio$eM7Vw=_In%*Z1; zW`MBE8}P5aj$`~Oj>-7cy38eUM{ZYEFYZ0 z?=im?#UwUC?@m2Wy2TKNuA$#vjXTlZ+->E3f5h7U1*-l{CPo%^70~R&5DZ^h(5yCr z$~Va|Q`f555H_t9IfuxK8%<6LwRS_VH+!^Y=WIFH;G3wJjOu!m*`0&k*aZ_MDo7Q#X;PZ#)!HL!C1GRxQJn;J(8GYTF*_wAm^kyJWi z9Z_S+ZLwg)b(_9Wh^%3MF!05W3<3A?-&KFZuTJkEMl*`ea#``PO6O~9NW5zDth9N8P#blYH&m=yv-yuBNMOXSM8GWdTrg#f;|_`y zX%TSxovcp+75wR3&PQPSZ>I+St$vmbLRgKlEz*iMzo_T5i#awvzkP!t1F@`P#D(77 zvQkMx@7`igmc)^k)eb^p;AVyG2Gv0y`TCw!GSa#_iu%G=VZsmU%(ANZsexeI&~({} zhtbcE>)B2blM5a&k+Rr^KWBC>%!yeU?3J29oawA~!Ktq4W@ zIN|Vi8NNQ~CP`?jM{)T6)Bcv|-)uXB+YiLHRFBc`6T0ndJ--ZZc+mxUksXR?m`%~k zlRC0OUOUZA89)CIt?fp6Rbwrp$BmbU9V4fey#i^q$ z(~&K{p(lU%e6eUfHOyrx>H3|1?<$;4YF!fI2GHdovr+o#*`cU))jX9%ox@Iz)w`r1 zso@)0BncrUGQ#q5J*RlQJGZxHp;Bgx+?G%E5+gRhv{01FyhnnMIM`HZT2UfUbT>;^ zkj$`>`&(|Dp*JfbIF^u)&vW{8NA63MnF3xiQU6%IzGu|r|g`qs|Iq&+uVqfBTcTUzI!J5#t|4I6$ ziEwD?Thi3ysaU322YFF&7oRsp@9+M^_tFi|*%xs;!kPS}Y0r)piuMx!`{vgtr|9MS z@=8&T5kU)|mDwfpbHR*JO~o2o92l!-5+N)N)c^-D@;(K9zB!U7q@W@!$Nfk5RN>-7 zg1_r+{R8VB+g z%Ug3__;&Cw=K>25`Kr5~djS_YS{2ETcZlR(m{qk8tSEY3sOSHCZ9VhtaB7{)t7bL= zb>usRpV^ZHdhy9^ok!B2a8s`#hI~lQ%gVDY&q57$vM<|g&vNyB__#!?)VD;tHL`!G zd0SR?>!U!zeM2s*n?#524d^+`oVJmS_{~w?4O}65^cM7{g!(bGMb7P0{QHfiWNs?f zwwoL|wXxm8X|atcLtHPrFU=!na~g!G64#ARf^qG#HY{Pg#!ySNxO4|e5TNIWi=>j? zGcdy&`4wWNH$`#%8`I6vx+)pr2MjgWi^jXN#;ZZJV=et+H-q1#!mL-T+r?OK>d+kF z5_#dZ3?+vIrb)($t-D&-S!v-Ri@V|r>t6cxo)S;ZJ(heM~Jvv(>0h6#`l z8h=~FViR{TxP6Pv45HA*l-)?6-7ioQhNOjd+E;O}`Z#yj_zlHC_7a($-=FL1NDHkv zqsHw#efFx)texg*!_|RwCYkn(wL^kb_BkFIQRb(oltMHJg|#oy`@4=uc>F1rx%6M= z|1t1FzPxQv@7{Ej;`HaY7CDs*^q*s_2N!QbAAFp(tS*x{dR1J6kM_1Rhn%>ecA)hM z+yN^42wgFDk+Aa3rzpON1&n_OYcbnpPaQ=m6}}LgFhC0fCV!35DCb4d>#<|o&Y5XJ zrT*VZ*$!Q~1JX|2-&fiL9qWdASl>nEsJPKI$VM6d%P0yi&>MX~zweKnwH12i2Hoa< z7X++W=GU!|Hx3v_NF+jur=V*Y;HuyG_3Gy6b`7XB^8dpj29AL;2<9^hIvLoZ^o4Fx z^*MD_A=xh6~Fg=5P+r0_Q_Uaz)O^J-adC~<)?dzMR+QA^xyujAPS z^@Mz9k$lR% z-+npbZS-h6M2zA6xgeE654V_g{T!bTZSr!OP3(^0CU z1M{(pyM+2e{~Te(x$ld44Yi3G%Axh60#@mR2H$iy@T^^tcM>o{&z$c^yP*Z~{6?Nv z3ir8*?F{Y8JUE4uJHEDn*88qa`nR}=d7%sqwSzEnaEGvAdd&3^M{SV~q_Yw${g?8c6cjoHqQ2mMX^w~Ej zOODKS-~}%HP6}yvXDXRk>8=se|6TR8(TJ^BRAq$sL*m4%x!y8cy4%3^YWiOXn9t6{ zZ@K$BlWpw%;$MC{+iu7Z7^@7nI49fh;fJ%@`L%n?X!)^Y=4TA*PoZv3Hr;Qb$d!E; z)Xm5AAOXml6bT0Ps40JNXQNyb2LFg;KTu9~*bcj1J*pzq#QwW@BXG8NN;MermrEB_H{!!D0b!CoHMoVy)mP@o4kUw_?MCPzOz@_&ata4b+yn(b>FX?;mAxa z^EYOr?yXs|;)LtQin1NPwVHwz=Cc@2rCaPW4sf!*U)*oRc(R2xJ2hQqOJ%p3-Tzt6 zVTatlJ3;$G8^mJn&XY+s#zS4{fv_=FVPK9~Z;5RMi2u#^X*xQlY0TZPWapPmk=O~N z!PP?6Y~2F#{lBNuHHtZ~ALS`ZLbz>;2x))FNkAF5$Y_u6=vN~iJM0i-b2;~AF?&s| zn%)|=K<84OWt0+>42xWc&I*B}D3PoOA2%K_`Qto$0__f?Xsc7lUrG(E<)plNt-c~_M zMUjtch^Ru_WGM~F?F&C2F*|vOS@58QYAbV$_A-@OU_8@Wu}d}H_e8{h5aMe~7doco zSCX33R0y3Q@=6skE$h!*iD)qcRLh#Ng51!)V6SO~J6?8ytN#9-%p-7*cZGU_=E{vq z8R{@!`qO`%1YH_65pj#7+DYj5+%ggM-^uNUejB(Udh}t*tGjype>Dy*M zh)2J^(E&b(P=AOSAqu`}kh%tF|Jy;4Ptf4t2tB&y`MQJ*8+U=jd?R<7Xyulq{Q_zOIm!j-WOIvJ0L4HkJbDQx) z48}ZdhZ2tS=Jn%?Tep~^6I{(E}b?C zMYqm@6zjoq{ey2GkFxA)tNc;r-toHWjWxqb( zRhW>SV1A*$^~fR3D@E(`VJ@Vk>%lADqBvE=+TRHBIrm?w{H@I6ABlo46+Hh(=NKXK zT)|M0@A>Heuc4r_XI1V6UAOoSvum%q5G`Zn}}SELqs{9T=2=GS(` zaA!Wt9xeD7y0oz}mZ8EE#tRh^u7@lu+Gac$7VrugW2{+8=MRgE71QGCFn`eg z?pYS!Lr^lpCZ+TZ%U;BFnzu=^6Ggl_(v5&?{1e@}&xvLFEmuvCG@V8DXCIk@DIxbD zpO@_ydDNTq$YofSvTR=*}F8nK79)NNK#fM#|35i3{%#M!u()4_(vK(zoHPM@95u z=LXA6=v7${>t7(MU;dLFxCcm2^x&6R%1<$}yC3AlZo}MkOOrL09*2b@kIiS+b6ZW% znW^rZ5VRcZpOP@o9|?AC9CQn;c&VtekE4y7T=tDmYQa6k?JFs)J*;ZDkuukxWlRU& zoyZFJOBozLY#-zv;rDr%voYQhQ=+!zoRPTHQOh#!ei#?+CegoGVcb9J-COGFdAfkS z!!%FJxIZr6w71mD;wK~z<$2N3Lj8^5ap#v04FSl-`X9!5zYVI9b}Z@d zhUvLn{8amOL8lZ+9AENH2oGIUWa9#(cpo{jQ@}cF;uMiYf`{D2rv=@up}W*Dq0&TH zp)UQe@kpP7V)gxc=l0A0umx7KdC!$&3)X~XZKY*`r{OTN>dw#~t5i^ta5O#L=_vqM zuR3KL7CNsWq>CK<0_N9I*IQxB9`6<^03?8W5K~4LWbp#FX+ku^=uU?!hmffP{~kl` zj1Qaq#(1bO#=5+uLT+cF?7QjIaqqn8Exyk{o};$>rY&#&uUJVpot>1nx`92h3W{op zVf&+MogzV;>TIk6JM2+dp}6WsSSGGT!?=3t+Fb5x(%lUzQ7`x!D4@VHs&!`4&^D{e zzCUtYRtAK6a{nadPJ;B?1iC{*lxgzq7ay(&0a0=*BXJLL@iR;J&V?Gk$3#F9b8Dab zniWzB0-)LGL*znG98+I^)j_4~QdLQ->%Bj8jWh5Ength*7SxzccRNhtKz`4mMNNR} zgIaiH%>K5d<|pxmiBlWWpZK&FV;~U*0E@4%2+Th@(bLV)m9Umba1gHZk>&>yirAV0 z?~w*_q*I3iyV=CE;xjK5yrlsBE+|+(e15u$+c#(*$a}yXI3pQqf4!)Ash}f7i9?|5 zGR-SL-`}^b_cXCcdLzE0>&N?5dDN1Fhnt%#`%A}(C{{H#qPR3xVx3>NmI$g5<TtxRjb~zl%n!G$ujD zEmC-w{ji<9$OuA%CVgcv0ySHmQ>YU4A5l#qqgnyl zLU0smi{Qq-CNXE`QeI5ro=P-t`e6UBln zq#crlRR==HJl=Ym>!?Rnd%Q2KIEJlM@+Q$IzXV#iwG?rc9@W&9Awo8{)G%s@^<6)F zP^Gh*TW>#4u4^MUPdUVhOjnQLLI89$ZG*T}#rgcD&B>8sST$y4vbH#)0knJ2(7=+( zcyhT9TUJh02d|I|PjOZR$&3^8zZ0tZJ6uI8$>}hK2wFD@2J$0F|=%q3{7>(?56ifj*c?puI_h zO>Hz;O7;!Pp+xbB-&cI>l(9F?csx2CdpPcZ~;?d-)-^qo)o>?f6> zAKd+$qWOWytS1|6y22Q}HfI?gg4*|?b;fPVEl;a;Jg=~WR1R;KqIK)ty7KVMT7F6- z8DGU1p^KE(W&IUirBjc(dZrs;eCX}#c#Pp;knb$B@6I?{`;~YTb^1hyl)ywk+cHGt zuH04%)`WJFg+x%iz3VR%SdlYcY>hRCEkEMC*E2T$WG_?X7&#gJ#oJRr6!OI}%_r{W z!4~&(*{;@PUxMVQi;(QAb_1l!gW&Y?XSO(yqgxn}Yhf#;$`$#Y6QC@|n-Z8`S6zzc zb6-#&)pNhpJ5+5uGdIDBOvNop6q|lw4y!9TY?qV?IDBJxr-6_xr_~$G?+PEZ*pAc=}+M0cUx9=tPeA#%h8b zeb0!YFYbespaiq7;!k8*jZoe;i3Nr%rzu?Swv|`w4*ONW?Tumj%DA-+DWxe2by!85 zSanP*g(Uo)xAf+tX8-I((?qq0QNPunc7;c{jDP0LGBv2MBi#u&!}8xi&fjS$GCabB zX7_G#Oix=s(3>f<1H=vN&qEL}u$*}ypo{IE0TnrE#TLWK$Z+pT*$;4Or;=ieQK3h3 zbFSLfu*S#6ZE8baKFRFjwx^6^c6v974g+;cLJ=NA7=G(!bJ{=^qa&kT%CY3`(9b!z zWN!8JXQDM@IK1s$IZ(okb#$?*v_O*ZRgN4`tQDmje2Ld_PGgF2(d?l#DFm5cNvjT< zTV0{v1K4N)ebB#0LmTa@qeSbxVH+0tVlsLOo7;Vig&B3!caf}wMu4nSme{vbPATfv zcyN=lIzP?CX>6dPRf%#&SHNtXXD(d|6s(|k6;!|F{0yKu!>9!xi1RUSO?|C+!LZFx z@Ar|g0n-@q{DsZY+n7~XpT0t}6{`sLX0rgrEjO;+8S91xUExKH z_QiFl9gU#O6g#%~C}Sq@@HE+(=?KRBRy}@=D0w zMafP&Z}p@xDGB7LRfgv&HO4}IANnAA5>ZkO_YOAMC|~R+Ck9>(C4lcWTSF}{aM)5 zDC7k*mmZWj^W0~@(4Xcm06;5K8E@EP4vaxV#@|~+1N>#l^%~9RGX$S9Yhftyt8h&s zr)~K_&MX~s<8!wKd<6mL$KgOs93ATVZ3l5FNWR<{xM~F<140_(9E-EjKK$1IeQ(<= zJ^lth*#Zub5din~5;z*Z-O!b@o1-@acp>in^MZnqNusDM7IE8ks{#G>IR8o>D<0eT z=eHWWCMZCi7B||o2iofe9R=M6>d##(cwh@AmekEK%aA{4u6r<4snmMIAMTETzcpdX z008qNx4#bsEW5SPmfIaw=24_LQdZ=f+dG!+(x?w)0ZfmuV^btlr&Gv-c}maf?*!ft==- z5=wjPKo*ijv|4y?D2nvSsbZObZiTj;hVsY9k127J`3fBJ`xPq7*_QnZovs&}cvo6q zrwhjYvq?-S6KLIh&*glwl8 zVUWMC;*NjAsyOg|1h8_R(%;YG2o0~^I$c0fG&LD43xkGj006^MA4TdJ_x8EOl^%wv zo)Pw?Xt}%QBg^0V{ZbdstiE1$+nba`5_s(#UT&VbUghWgu+}XoEr|EAH_tjRWBc-e z2&HHq060>0bM%%|(CH><`P%6MpLJuQY~cnBZ6D$ODa*fIOk&z6P&0UO^n{u2scRPO&7vn$U7e`nVdA2n0{Wo^mF+luZa)z#e>p@yV?{Y z|E^g^zI`RU9pwNdEpE3+4P2Q8(zyz%>mY@jBW(L~joBihm>>$2Kmvbp%njG1GU=I2 z3-?7c{|LxRPTzLYcl4DG|4V%69=I)>n&Vd}mYj%Spe-qm$|hh(-IdGSPAz0R)A2z^Cd-Ephq*X?(2(o&@$ zI24bz=mC>Kxx$!}yuz!!St#~6yWmd&Fb+mc8AU*^Ti@vQdF315xvz7DC2dBmUbHcN z3>K=_QD9CW`!jmDTa?zUBOp7ok;W*NTe8}9g%ZV78JUabaW^YSGS3X4yBbL4m8jh}QLD^fwz~H?l%j-5L?7RE8F@`d{yv;sS}jzRL02d_li%{oB69!n4vC` zCt2LmqlC?v?xkI*~6a}goUf6a}QdD69#`lAKnPP{ii zyAY4m`;7|wwuubDurGxlfFzLj2JkM$Xo$5(a?gbbOG*wE)={g+hjKGv=E}jxqNpN@ z0k!iF#W0ZFJFU>Mc5k=It|Kbmj#FPxFhAV2coj-81f4aml;4%pZFtQhnScDvaINV>z=>PW3#=#@ccL$Z-D#C6 zq82Zh8Fw2B7)^m{#}*s3<$nT&;Sx4KbRIz(+vZVqP)hIDU1mtT!PH*>Tr0;sLpD|+ zAdJ3<9jQRTt#`thqSprCiv8jZikqX)*yIJcP#Cz&_I+Q)9LH9Q4sywsqcb_7>0&1d zpp8N;8>T3k$NQ;)PO6q8cQ|xCTh=~K+P9);`^%Aiwn%H9T7@F0ng&}tAP3pMa@}Sw zrz(LD){dz003N@UdIaEN=k5cc`Mg`)h%E~8ydchqtwi+9T|RA=$W>pS`6SDn`83U( zc?iB%r&2Xv>AJU zgY)bD!d`89vKD3D%g-CJ^( zuU&kX_tw05(ITmJQCcn0`tb3G$!%))liRw~Ry!nST1~QMn?0Rp+N6yyV?e(f?pwU% zMi>qud2f#&YD=V@7I>&IHBM9j8uVf>FqdrxNU;u}V&pwUsc#c=Tzaxiq!0W@E?9r5 zzj$!KmlEYKG?1n-WwsYHhIsDr)Q1+`pCSS9?k3#*+J8Cs;0qN4|X zDcW8#w9}y%z4Z7Hv;CYTHQ9NlMeSl&B62HEmblxnWF1ZEyKi5o?-auG;(WRu8WNn- ztuz{ndCVn4|$&<5ltHqj$pbH8jTf_xqB0? zRTPq_?Iwg{wM|H#!BItM*JW){%D5;L3iZXgBQ2(}(p{1K&|FboXxK)MzL9FV za@`X@>H!T`MtEM1a102dkDp;{wkva^TrewlL69$wVzg{Q63s!y|3s*K`_kM&jB@R! ziS$BoM{tnnK@e+Xh6BA_oHvJdW5!j2B6`&rD(}+XZ#lS&K>V&TKoGM%92EBjJ{xH| zEAP%$jal1Obfr(#XPL(_#@GC6PX(CKGwb^t_Gli7(v7&NAKAFgKa3F>Agrern=5jL z-xY0N8M0hk@#q{4fOcyKM9{mFZ6|MRGtrW(cT@LWB71*K;&6L0=W#v*k;ToKO-ICz ze`5uCb-)UB(vS_;UYEklep1K(;C$+oc6c`=HyLw+g~7c zu7cUUPfjV|yd8Q@U7i1Wh5B?T;r`IY&V*!JV1dTgI+`@aW?H2gsk<08U&>Q-zohNH zLsMopD7&>#;|t@=DcXi)FT*)i!Jbmfsh={z6at| zFK1d>MYf-#yyTFafW7u0-nosxGS$hQl_e99OPhr4OUVb_IdXSfgfMRJ28YV`Y8U+MW#Tk{U z&QulZv!5lW_#(`<*QJIs)>CVVl+*2_}%pU0Lw<2skh!EZsZjPpv3b&bG?Eh-8kLR`r zVx@@f|AzcphzAyM!4(?jX9#H%#55e{f1T?C=5niZ`UR9xhux6FUiF$~b+j5LO@=^w zyS-$p%wO`?Zv~2KE!%ghqU4l*z~H7ToaY%})|RxT5=2hk^Fxc2@)If*ZJetz0qFYi z!ZTkh?_ZD)jjVNMM&4f97ET`WsiF@y<&ipO3E^Xd zYNXxH_b?s&^?;hM_Zyir2{Y4S#y)-|B$Q}3RTWZ&PkNob}l{%2H)us(} zlgkro&sbG7vIF`pwcEaEsNGkzubJ^NJ_C9ck#>RWW&ZC6)*0{Vz#=|Nwv&wocv{hY zOqB5yxN_%Ztm*DpMuZ@O$OKDZ*7?}pee2v^vnL~5e|JIvx!ka zbR29!LyXlXpdE9g`sdbT?h1S<>wXced)z4lIm!+TGyNl~dbh9a8$?mY`AMZi;fL_6 zYuG;Ep}T_2lDTqv3Sz;McMG_-A_rn#%<(;_CR7)Fy(`Q=wKrKF`wjLG+paCHU3BJ7y66W&sFsFCbSW7?cJaz_CfS?hrz_p!ZO<|_r~W74*c%$ z7h?Ns{(}z56^7Cyesic?&erjqXsqJ?_I5^;It1;5>z#5teuOgbiul$PB&#+mJ&*x*CLKfOpk=cgwOBgAqZ;{L#M+SW-OecRPhN8UbG(1Pq%7#-T@%>6W&~ zxF3j!Iu|I+ol|&MNXz1qBbg`sJ%r+c>~jeFWc!oLt5hMd&^;WHHL?JFwIHkp>hQMx zT8@BGcn1m#Zh93K`MH)uCRsQM-pXC*R<#dcpGBNo6+VZlXIe1PpiAVoorubB#rAW_ z1>;X@5-gwD>-!DH4Xdv+n~b>z0o0MIG1a$|8=x`a9Tt&H6`lk;rigab5N{wj@R4I* zt%YuchoJZD;wO6rijsy#s}d@l9%AA#T#rLk6F4wnGEW1@_@;p_s3#7DRcueeD2LLv ztL8mh64k+ z{L@mRQveM=2|~?s{~`9fX7A$_G(p>+Wy}G8iz(hY%mBN8SpFX+@`9(?i|qA>|v2=b-ywJD6F63&% zi}?R%Pg9`z=7onu(KxI`0bI)%6oEvbKvGxI=K_;tolGQ7hxO>r>qitDMc%@@Tloxh|Qh9`Rh1=Q)al0X4UObDKeO z#@X+ct4-b8A$jEt}yRsAR6ZrXs+A9)&egCU(gXx|Jh@6}@c9 z5xT)DlnhV7?xp*A(6y{=yM64ZIOils zpD?U*?ya+KMHVV5;clp_3L>Tp+rDtKrQ>Zv?e-3(2ixuQZ-_df`#$>(E*qP@Q`q(c z=m`e7;LH#Os5nnZAnh`ZA1t3+{U7apdpMNa-}f!Q%-*}wk#s=){3Hn}A~Iv|_D)eK zXnp!z}=%U2R9DZ;c}MoLgkDe{!H_q)$%= zpK&CtGD4l6Hp*l&Jq~qwbcglKBb(`M)fRXIUcw&94eFV_P-bYr(cx-Hb1yNrXiK}v z=PS-;sNN8r>^|O77UlW!jBy3U++Z_yN+|DpSvnMBz`vrI#=X1ZO`YU5y2m|;+nWC8 zm)0-lVkpZO3J!$rLOUut>SR?3U7u{L7g6gO)GyBmMY7npCEWM(a8PZrmU8834i4`{ z2?c8n3oe?Lh!hdvg5Amn4CNwE;L3YhQozTN^)7)TE|ngY_#xZ6*F+|K={eEo_Y*A9 zHl-S@v6i>^3D-r{6c_f;$rBEnNs{R$=H2ik9t8QA`~w6w<-*?^#w**eU<<( zRLGvg(!oF%`zTDbR@#y72R^qt8X9HIOGjS*j6%+MP1qteb8w!4Th05ghs&Ork%r4; z9rnk_g8CvIX*geUR(^?mv~T+Ml?Wke9@5&1xN5bp+@`Q!P^3RF-`>hCR+a{9fdpOI z>3=~HLlW7Sw*AMgc&tUt-~+{S$w zG7?9|Vj)jGh}dN}Rm)p^uuO{AJ`mz5`ooo5EidY2IGl|FLjVUp$q?12!@BHSD7PwN zf+T?ruq5XP|wAi{DF0{SL>SZE6dK@5dFzQqd-G0X4Cj$<>9hK~>uU7Ph%xi$9j@$+{vH?ho& zNTafms&kd12drgG9O>6CtL^}E6$2zwc>shCA2J-{$-QdJmRqVf-7B0GsSV~4e3A)t zk1g6g&2k>y*V~65-oHU#<9_R@p)!77hd^(zQyS&jKdNKR;K`b8WcZC!&5FOyMY0l2 z8=yr?Hi)WUzB0Z|5#3T6=V_-8#>!s8$VQ*;IEcLmTJRj^&V z`1hZu&qJJRjSKvd8%#aMm$#RS{NL^=Zrg8T{wy@^_obAT>M22vUF&2O7#UqOJTxE+ zI3XilpZ?n`5Nt8$d3eyr$3>lg{EQYFQQD%C>^zj`rl9nMu0Pic0^!7lWo$icwGzC~ z(8`d!Xd=Ei%>96g{2k#PsJ!2lW10noM;`B|ssEvZ?9&N-0`Vo5cD)dJjwimSe7Oc9 z=^5Qy2)Wm_cjM)ikdn`7u3EYsx9I$EegF(&;~j~p;+a8nWvnK4N`J7!{+zNjfN4w; z(%g^@wa6WphiNd0LJ?S!at#LKtwZpIr->Ot+)9WIEi^W2k;|nr(sX9G`qts@0Q+LE zLJ7#>tD@aYgA1uCc{(w;EnN@7`A69@$~@$YEmFM^$#fX-fyE(=->9R0DP1GyO;pEE zQ;i&1AgIkKe;&!p*q2h4L_G_uhw)k-IT{^K_?*q#fV8^{k4NL2Hf#)AFg^R;DMUXS z`XyS&5)Tl(()h!_|3=d>`Le0ucjMtY;PD0Of|5op1iET4v|O%J-yx2?A7zbzz{U&N zfMhZ@A^Q>ma72A%0G#na?4n>ZSO;j0#Tm#NF3Xi6ccuW=Kp%=$n1+(0+Dc8s0)+pnSAO3S!7sO_)VY^RwzJsqVgJbGn z-w$ClN}jL8QW&jrrNtg|GwWsa+%}CE{hgm-t#*N|t9p%&>qbdP9>(8#@uL^AcB`6J zC5b3z6iM&B491V84m9RR>{36uGcx!~k+B3q`7@2DY7D-ATij7>yK<+%Vy15_4rl^E6x9F*r@h zPYy5Mrl7ijOEc3V20Xvua6*iRPD|a_V4@R%?~sRc3}261f)~CW=8L&W<@bVm%ZvQp z#8e2}mNB=8Si(;iF|Nly%3RUP!{g*{VP|B34CQ=zh5-GLo6fwkK%EqMpo?c!;3y)& zKz{dmyMZq&suT+OTI!c@?l+jF*;mk^@Awvs)K_wygIum91_)|DWdwwOFoG zUHzi4=MUi*?=|I?Ntfct<_2rRl3h{4-puyjl zVZFU7!x5`Oar$tQYzEUE`8$3c7eoANEs+ixO9P$6lh3FJ-~F-a;CP)@rEafc%ueH! zrGr%+DopcUhVawpApX1bFCx1m=%O+++%VBJ+Y9(e;;xdgRk(>*)?@t_;};3YhfxNH5*@WWk$OGv{U8xwz7i)q*O7dH_QU0(giAi|!6 zk6P<4BXPNBtMuda+)R5JBWDrLdx>x)OHeJWY?3l%f zAH&|99vZvH@%BPAV+TzmDrcI}jebx~)Zuzo!K@ZJx?h3h)$r4(JZHXg{6(@}_K3zT zw3aw?+RR1plm$2u^_@XflXfx9(dN8ji`M3NsxE{pqu|AI*Pi}D9-fU zjR1c$I9ww>-rrW6|8lGC|C0vA86d}NVfTdXb|K_M-?q0*7ABghx@F7MMCQm-Z~3x0 zWY%HC&TZygwu_pN405gK?~3u9TyYuY_Ic|OV<>)tU5RMBQ9sl@QoW$RTX?rli8%O27NtB%qE3?keOgDVXhDvg z0Lskoy9Zj1WS8HOK5wMjYi4_Z-tFN6N^Rv-xyL@+B9AqF>T3g9m0!{|G*_F1J@n6S z*%KyThWe6#7gsXfyt|3&*X(q>EAg!3XR0cKHIIZG8U(=wwf(0x$nilE_QTOm&`{U~Zi*&Vz}==`$9EjJdY^iZ66(W_@*FfOtZY_GQDdiW z)hCWtpB6sX7z>e%UYR{zVmH=$9nUVAV3_n?hU|*k{_Ob3N>FB=Y)0%}Nm#K^sC3x2 z+5eC?BJTAJ;fATJsoB~xwy=zcFXh(t`xTb>Z0nvYTmNCb$~cDnu{B zlth4Qj$>p{Wr@inHnF&E-;s=!fr0H|oPHEVs_L_UQ)ASVknh>_%DeI`n1*zihP{z| zu`>0bF!&=~X{hBG=s;cKn2jU}3NR;3+>Sb8*jD>7s%#4iS-;`Y~AUY^QZ zYS_rr!>SuSC@P^9NBE!0lWUgCeb+O+4-$xbIZGMlgpudxt7N;JRo-0%qUmE@Y-h)| z*4g8%7U90FX8z&uI$uU>t-)-wLN+qOe+ABq(nTF60jnunMf_ znv<&4Xc)-<|6V#w02e5jewPNwCdn-GH3vs-wV&!ygW>-|O*=AiT`U){%u5|395YJx z1QvStF-Kj(1YfJN-XY-Pv`LZ!oXPEF>=e2w7Q|J>ZG{<%P(<8nAg&2#Hx-g}(4GF< zn#cin$SP~`i^3{}@gcXO@B;*cVpUB=6L#*9#b&b*kBS~QOi=}ghd+l6_SNauTM3iDoh4tP`Xbdis-xwVS#U~CO{T;*Z}um9kEp4c)1i>a za9JBMU(zzB-x3-@Ju!i!7AQo|9^}?~J}Bo)1oa(nf=wr?&!F$RB)D!OG)6MrzpcFE zJG6Dz^5@{4-9pPd!#&^RG}gw>H>ve~HRY2vSynU}gVa}$bn#0)-;}NbbJi)+* z1$F7psVFQRa`8i)idJKdeS^n&t($Sz)E3noW?x zvP}?iUG>g)bdbXx)y;U0nSa4si|soj-;gghoSt%1lTJW)KPWOP+`it)v7!xe__eXb z2vq<|?-ZUU_@B($FzXQIr$C_QcOUbNFbtQ;6H0j`(b(BG$H-)ztVB#SRv|hMD4>VG zZZek_gBviOlf=kdezJY%S!yjW#jUFiA>c6{6%Vp#@{j2q8fCaQ&P$qaZ}<-^ZYlKC zqwk%;n~|+L_BJP0S}@*;t3`_e)UWeK9<`r)R<0lAmFTu_WKNoTOtpKReo$v|l^VYJ z-XJn`OwcALiAIV%vLk!OxoMT*4rlM4<^bM73RX`t$-A`d~2wU zc6zQRv0sPE0u;Ywj-Gzx>jV1(vaf$l5qeH1H0WE4IgSn)s^L2#y*WcQ`U*v& zqe!i*baQm!^{8JxCV!NZmHO{~#2k(<@*mAL@L@{NlDl;n!|w?ms0-!KmgPe_v>4hO z=Y2&j_$M!J&Mp4_18%&8o_69aW#$dEl}2nO^4~8UqZX-ne7HB%h`7i)x8$w%Xba&t zfGs3uzRe}=B)5f*Y7xJ5DT$uT3&`6NW!YQJvujhg9(cgyvOUSXf5mH@`M1nhf-nnr*o zS5O6(WJ}dkM|VUX9pS+CfBnL+{t}xBHWeeKZ-TN-lkeBrAN>YQWgnO8le`jB-Eosm z`P_*u)Pvpx7gEfbw}rZ9kKOXHw>CeOIwJwYj-D2T!xo!=@IOIlJ|(_gBP|}Hu*Ju_ z>fttmMA=k?=J%uL;{lf1imack(# z@{*snqlJG;B=IQZVHxq_O1-SV~0*fqI4`Szh%r)xKx&hZFC zYiTaJUlYUjw+Ri_n#6^VGEbRDR6U>`i>KJSx=5?!r30sx(KEH!g`KU7 zm_IliAe0sNz0l!mwHnERToU#G8|$Zm!#VQoc1Lqrh}2t`B(wj*t;CcmIYEqLon!#vKF$1i#NUDsoRe883+%nY4EQD50MTCpx; z(~&nh`Eot9IMr6FL{rfvEXuGm%f}^Go8-~H2Q3%=9e1ZvuJ4_Kbmb@4rcg`O6{N`K zJ|WL?DR>4r`glLwG>d>=64>1%eja4`eHURuysi4RG>HcOdrIkqSb%<1Ng#g_j=UWE zch94BD>IehW{E+S(GQ#COg|byrZQu(I=%s%C+F<7q9q8sA6JC(8jMD;T?yfWxUh<( zN*nDIrOT=F>{R5H4|!t_Emb_Q7-C}Rz*B94f8<7jKXD!Dar*_d3i@}~M=RVrO_tdHxZF*jk&f`0*~S3hby${}Uw#TXyXS$he|jkHF65N=P!UC3Bb z;!V^zD5C${0jHE3=vjVmo$KU2F}J1a9!>7fqq#^NFvO=%N~%piYo`m+(fm_0_kArE zJDRdhk&Jrl9;T3-{Y$4l0BP(cr!ZiJ8fjzXfk@wm1mUMoRmaEoD;`d8U&{f} zVW{mhh;(rJ{M!2i8)m$|B~7x|D#YFjZ>v4LmT#R77|x8gwe@SK9|eDVkRUj4lC0lD z?c3;=zcw?wTu*x|Dm)2R{g2A^Z)SDDVE^&gJiFuDdUlpKT#y4R4k#?Bn#8Vsagcz2 zYil+KcB_jC4O+MA=T>9QJLAANF$*ks{%*5FQtGnHQ76lu!7ssE{IT0QF?EzR9x6Un zGhXCDGb{Qs_mpU_RldE|puJT++_(d4w2f82t-Te6XpLXTkM(n&=woRps1kmiYkJ&n zrTg!#6tnTpZE0aN)-*5!hTVIP<3XU9*|3kZ8K_%-_dw>B-Xvi~!J|BR*$I2)a=4kK z^3nO;eNFA!W85y#DgwtoMfA*T@+FWhIA-}thbYyfwTlXWC(j(Nx?(Wb&G8Bqu0CJ& zXlKa5k8lai#NB=+qmYK7aG$2~X=O#TZobS)J8m6gQ^c#{_rzH*4KM<7#v0Zlea0}d z;mHO>EIqxjSbhPDdB&R{k%!+4ov@!jqEvaX;Jg9=Mg$#Bf;nD^fa9DJKlyP}Fj#;3 zR^E5cHbC0(k=~P6^Y>b@^@CPSwp_uC$IkN%2(OastN=`#SEs&EUDp%=3=hR?$}E$x z3n)%lJruPSgzEGOE>d19U;`gK~sIJr@qb+Y=n2gfL z&Oxf2k787GCaFXy4Ih0L5)436-e3;2Z#NXGTR~Y?p9If8vL%lgOw}}^#iklnF;9<< zEdvUHWB7Z1HfA*nhN>P#rt7WGZwks2GxiI3#~40+4>(#t3-Jk1h&DHabh2wv;oV1i zCS9YT24XEjQMfv10n~@%zZ9JLv!|eB!jqAL8;%Bb5~BdrdM!0hH_R5s{0ppcljS_> zC*e{C-JlgU1EUf_+=M4h|G*GUSccOP{U=&r%cKTIPki|6FBu|{{{1&zuuEIR+;5>! zBp4`zN$%I?3?}SdZqM1Au%9;4!HJ)9t{n4#DFO8IhsQ#cdpV6|jy_DBUm20nq3W%O zH53@>^ij3bx!*dsCggYY#*4xdE>mR**Xg zdqxKLw^YSaEMQ!eRgjvHT~_`2R_*b510Rd+4-h_I;fpm2D@4{MN~_G~tfJeLS+YKF zhV2Yu2h>d&Qc`e5QH!DUfk{uN6za7)|%8@&Hj*=ugF>(6tNDfsY`m*N#UoY|!N=Z{o$z zuPf0(OD*BDOLPudnXL{}b2G6DxwAZTp+YoSPu0E%{VzRisc&RgnXI(&Tt!ox-o-RU z-**wf3tc*Wo7WK-*=&`od#Cn7yJ~&eQBxJWo7)#%QxCr%=z;6Ka)Q_L`c*#nN-nuF z&aq>qXt?bj{+SGnwD<8-kH}ksUB4S=a^HTQnj3d&6FCm1z#>1jq6ZrkN(8xg`SdYf zEYoSsuB)v3wzW+i%KQnSjPS=#$7(RlG&ybaEyb?OqGY+k=Na3}HNDk9Mbd5PBO~&g zKDBXaA8al$og|l+-)Fj*-3@#zuGR%7)1K}GD1TMmb`OtClsJi53E}+#>KCpUtD=~J zVIUjJ7miZ70Uvf>s(-W`Z!#+5R-|#a<&VSx?5Ld2D_Q@>^uceS#X7KgE?hVE0)hAo z-eJ{WXeHk0N-%#WxX@^e)i}nOx?VKcLucnE(@G0Q>nDd=bp)a7)|>sn+Z*ZqaR))! zA~t9CWvczf=jZ2MSn^(06;X9R`3%PTd)mPiMRI4Rpu1a`8&L*pEtaPrZLh;5IGWFG+nQR2Uy z=q-PrF+Uzy1Fs}w*>8K3ak{Xu`8p7Cvu=VTes*`BpR&IWL*r;)SwaKGs$FlVYCayA zp-XUk(5YU7&C3eKzhluQtI`dh2yLF^f{It>%z3(VzzJ@Th+3Q8lrP)~>`LEvAXFxU zi}+Iq5jb7TIA-rE^9t23!K}$EAHLQURHG*j+sxq~)oreastSPRB4E~H?tM+i4wK&gpj#q$f zc$n2gOMYC=!VCyoXAbZhAAz6x$$z67%AEiZ4eXxW@`0kqw+@I%Dt&Rgw86bLkJrJ2 z#6c%Wr1_rI8UdCCyJsWO=YkHy)qqyw&u#9KD69TF&I;!=MNmKP(3UvHh*m!&ia-<> z&c}ztj`XkIj07x{AUdDw(fim&6~;N0UX-j2>%f9KVXu7*P)>=UNABOIo!)p+c26F$ z(AZM^zn6KTw<+=Gd}a-}YNsb^r=O}YeqiI4w0Fv5OtOwayXs3Fx@N~{5tk%IZCwYl z9+Rc%3E0bfrLveS)kvEL*_UBXYcUz-SV0#ijSejx<)tS`v%X09Vd)7| zOGtdh|Ij@=CY4Wpsq@Aia$GL68MC+=r&+KUr<9=I@=0wtDApHoxZl;&J-_ E022}F`2YX_ literal 0 HcmV?d00001 diff --git a/assets/splash-icon.png b/assets/splash-icon.png deleted file mode 100644 index decb7d7cd9c224be81e4023c103fd62d2fe0ef04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32288 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 AasU7T diff --git a/global.css b/global.css new file mode 100644 index 0000000..ae108db --- /dev/null +++ b/global.css @@ -0,0 +1,2 @@ +@import 'tailwindcss'; +@import 'uniwind'; diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..271e04a --- /dev/null +++ b/metro.config.js @@ -0,0 +1,9 @@ +const { getDefaultConfig } = require('expo/metro-config'); +const { withUniwindConfig } = require('uniwind/metro'); + +const config = getDefaultConfig(__dirname); + +module.exports = withUniwindConfig(config, { + cssEntryFile: './global.css', + dtsFile: './src/uniwind-types.d.ts', +}); diff --git a/package.json b/package.json index 6d14160..2ac2fe7 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,27 @@ "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", - "web": "expo start --web" + "web": "expo start --web", + "test": "vitest run", + "test:watch": "vitest" }, "dependencies": { "@react-native-async-storage/async-storage": "2.2.0", "expo": "~54.0.33", + "expo-document-picker": "~14.0.7", + "expo-file-system": "~19.0.11", "expo-image-picker": "~17.0.8", + "expo-sharing": "~14.0.7", "expo-status-bar": "~3.0.9", "react": "19.1.0", "react-dom": "19.1.0", "react-native": "0.81.5", - "react-native-web": "^0.21.0" + "react-native-web": "^0.21.0", + "tailwindcss": "^4.0.0", + "uniwind": "latest" }, - "private": true + "private": true, + "devDependencies": { + "vitest": "^1.6.1" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7796f80 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7212 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@react-native-async-storage/async-storage': + specifier: 2.2.0 + version: 2.2.0(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + expo: + specifier: ~54.0.33 + version: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-document-picker: + specifier: ~14.0.7 + version: 14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + expo-file-system: + specifier: ~19.0.11 + version: 19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + expo-image-picker: + specifier: ~17.0.8 + version: 17.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + expo-sharing: + specifier: ~14.0.7 + version: 14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + expo-status-bar: + specifier: ~3.0.9 + version: 3.0.9(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + react: + specifier: 19.1.0 + version: 19.1.0 + react-dom: + specifier: 19.1.0 + version: 19.1.0(react@19.1.0) + react-native: + specifier: 0.81.5 + version: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + react-native-web: + specifier: ^0.21.0 + version: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tailwindcss: + specifier: ^4.0.0 + version: 4.2.2 + uniwind: + specifier: latest + version: 1.6.2(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.2) + devDependencies: + vitest: + specifier: ^1.6.1 + version: 1.6.1(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + +packages: + + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@babel/code-frame@7.10.4': + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.28.5': + resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.28.6': + resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.29.0': + resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.27.1': + resolution: {integrity: sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.28.6': + resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.28.6': + resolution: {integrity: sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.28.6': + resolution: {integrity: sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.0': + resolution: {integrity: sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.28.6': + resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.28.6': + resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.28.6': + resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.28.6': + resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.28.6': + resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.28.6': + resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.28.5': + resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6': + resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.28.6': + resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0': + resolution: {integrity: sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': + resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.28.6': + resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.28.6': + resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.28.6': + resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.28.6': + resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.28.6': + resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.28.6': + resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.28.0': + resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.0': + resolution: {integrity: sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.29.0': + resolution: {integrity: sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.28.6': + resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-react@7.28.5': + resolution: {integrity: sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@expo/cli@54.0.23': + resolution: {integrity: sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==} + hasBin: true + peerDependencies: + expo: '*' + expo-router: '*' + react-native: '*' + peerDependenciesMeta: + expo-router: + optional: true + react-native: + optional: true + + '@expo/code-signing-certificates@0.0.6': + resolution: {integrity: sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==} + + '@expo/config-plugins@54.0.4': + resolution: {integrity: sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==} + + '@expo/config-types@54.0.10': + resolution: {integrity: sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==} + + '@expo/config@12.0.13': + resolution: {integrity: sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==} + + '@expo/devcert@1.2.1': + resolution: {integrity: sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==} + + '@expo/devtools@0.1.8': + resolution: {integrity: sha512-SVLxbuanDjJPgc0sy3EfXUMLb/tXzp6XIHkhtPVmTWJAp+FOr6+5SeiCfJrCzZFet0Ifyke2vX3sFcKwEvCXwQ==} + peerDependencies: + react: '*' + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + + '@expo/env@2.0.11': + resolution: {integrity: sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==} + + '@expo/fingerprint@0.15.4': + resolution: {integrity: sha512-eYlxcrGdR2/j2M6pEDXo9zU9KXXF1vhP+V+Tl+lyY+bU8lnzrN6c637mz6Ye3em2ANy8hhUR03Raf8VsT9Ogng==} + hasBin: true + + '@expo/image-utils@0.8.13': + resolution: {integrity: sha512-1I//yBQeTY6p0u1ihqGNDAr35EbSG8uFEupFrIF0jd++h9EWH33521yZJU1yE+mwGlzCb61g3ehu78siMhXBlA==} + + '@expo/json-file@10.0.13': + resolution: {integrity: sha512-pX/XjQn7tgNw6zuuV2ikmegmwe/S7uiwhrs2wXrANMkq7ozrA+JcZwgW9Q/8WZgciBzfAhNp5hnackHcrmapQA==} + + '@expo/metro-config@54.0.14': + resolution: {integrity: sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==} + peerDependencies: + expo: '*' + peerDependenciesMeta: + expo: + optional: true + + '@expo/metro@54.2.0': + resolution: {integrity: sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==} + + '@expo/osascript@2.4.2': + resolution: {integrity: sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==} + engines: {node: '>=12'} + + '@expo/package-manager@1.10.4': + resolution: {integrity: sha512-y9Mr4Kmpk4abAVZrNNPCdzOZr8nLLyi18p1SXr0RCVA8IfzqZX/eY4H+50a0HTmXqIsPZrQdcdb4I3ekMS9GvQ==} + + '@expo/plist@0.4.8': + resolution: {integrity: sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==} + + '@expo/prebuild-config@54.0.8': + resolution: {integrity: sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==} + peerDependencies: + expo: '*' + + '@expo/require-utils@55.0.4': + resolution: {integrity: sha512-JAANvXqV7MOysWeVWgaiDzikoyDjJWOV/ulOW60Zb3kXJfrx2oZOtGtDXDFKD1mXuahQgoM5QOjuZhF7gFRNjA==} + peerDependencies: + typescript: ^5.0.0 || ^5.0.0-0 + peerDependenciesMeta: + typescript: + optional: true + + '@expo/schema-utils@0.1.8': + resolution: {integrity: sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==} + + '@expo/sdk-runtime-versions@1.0.0': + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + + '@expo/spawn-async@1.7.2': + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} + + '@expo/sudo-prompt@9.3.2': + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + + '@expo/vector-icons@15.1.1': + resolution: {integrity: sha512-Iu2VkcoI5vygbtYngm7jb4ifxElNVXQYdDrYkT7UCEIiKLeWnQY0wf2ZhHZ+Wro6Sc5TaumpKUOqDRpLi5rkvw==} + peerDependencies: + expo-font: '>=14.0.4' + react: '*' + react-native: '*' + + '@expo/ws-tunnel@1.0.6': + resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} + + '@expo/xcpretty@4.4.3': + resolution: {integrity: sha512-wC562eD3gS6vO2tWHToFhlFnmHKfKHgF1oyvojeSkLK/ZYop1bMU+7cOMiF9Sq70CzcsLy/EMRy/uRc76QmNRw==} + hasBin: true + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} + engines: {node: '>=8'} + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@react-native-async-storage/async-storage@2.2.0': + resolution: {integrity: sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==} + peerDependencies: + react-native: ^0.0.0-0 || >=0.65 <1.0 + + '@react-native/assets-registry@0.81.5': + resolution: {integrity: sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==} + engines: {node: '>= 20.19.4'} + + '@react-native/babel-plugin-codegen@0.81.5': + resolution: {integrity: sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==} + engines: {node: '>= 20.19.4'} + + '@react-native/babel-preset@0.81.5': + resolution: {integrity: sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.81.5': + resolution: {integrity: sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@babel/core': '*' + + '@react-native/community-cli-plugin@0.81.5': + resolution: {integrity: sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@react-native-community/cli': '*' + '@react-native/metro-config': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + '@react-native/metro-config': + optional: true + + '@react-native/debugger-frontend@0.81.5': + resolution: {integrity: sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==} + engines: {node: '>= 20.19.4'} + + '@react-native/dev-middleware@0.81.5': + resolution: {integrity: sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==} + engines: {node: '>= 20.19.4'} + + '@react-native/gradle-plugin@0.81.5': + resolution: {integrity: sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==} + engines: {node: '>= 20.19.4'} + + '@react-native/js-polyfills@0.81.5': + resolution: {integrity: sha512-fB7M1CMOCIUudTRuj7kzxIBTVw2KXnsgbQ6+4cbqSxo8NmRRhA0Ul4ZUzZj3rFd3VznTL4Brmocv1oiN0bWZ8w==} + engines: {node: '>= 20.19.4'} + + '@react-native/normalize-colors@0.74.89': + resolution: {integrity: sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==} + + '@react-native/normalize-colors@0.81.5': + resolution: {integrity: sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==} + + '@react-native/virtualized-lists@0.81.5': + resolution: {integrity: sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==} + engines: {node: '>= 20.19.4'} + peerDependencies: + '@types/react': ^19.1.0 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@rollup/rollup-android-arm-eabi@4.60.2': + resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.2': + resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.2': + resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.2': + resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.2': + resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.2': + resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.2': + resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.60.2': + resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.60.2': + resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.60.2': + resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.60.2': + resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.60.2': + resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.60.2': + resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.60.2': + resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.60.2': + resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.60.2': + resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.60.2': + resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.60.2': + resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.60.2': + resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.60.2': + resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.2': + resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.2': + resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.2': + resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.2': + resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.2': + resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} + cpu: [x64] + os: [win32] + + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@tailwindcss/node@4.2.1': + resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} + + '@tailwindcss/oxide-android-arm64@4.2.1': + resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.2.1': + resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.2.1': + resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.2.1': + resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': + resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': + resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': + resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': + resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.2.1': + resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.2.1': + resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': + resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': + resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.2.1': + resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==} + engines: {node: '>= 20'} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@urql/core@5.2.0': + resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} + + '@urql/exchange-retry@1.3.2': + resolution: {integrity: sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==} + peerDependencies: + '@urql/core': ^5.0.0 + + '@vitest/expect@1.6.1': + resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} + + '@vitest/runner@1.6.1': + resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} + + '@vitest/snapshot@1.6.1': + resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} + + '@vitest/spy@1.6.1': + resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} + + '@vitest/utils@1.6.1': + resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + + '@xmldom/xmldom@0.8.13': + resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} + engines: {node: '>=10.0.0'} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} + engines: {node: '>=0.4.0'} + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + 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'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + + babel-plugin-react-native-web@0.21.2: + resolution: {integrity: sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==} + + babel-plugin-syntax-hermes-parser@0.29.1: + resolution: {integrity: sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==} + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-expo@54.0.10: + resolution: {integrity: sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==} + peerDependencies: + '@babel/runtime': ^7.20.0 + expo: '*' + react-refresh: '>=0.14.0 <1.0.0' + peerDependenciesMeta: + '@babel/runtime': + optional: true + expo: + optional: true + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.20: + resolution: {integrity: sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + + bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} + + bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + + culori@4.0.2: + resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.340: + resolution: {integrity: sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} + engines: {node: '>=10.13.0'} + + env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expo-asset@12.0.12: + resolution: {integrity: sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + + expo-constants@18.0.13: + resolution: {integrity: sha512-FnZn12E1dRYKDHlAdIyNFhBurKTS3F9CrfrBDJI5m3D7U17KBHMQ6JEfYlSj7LG7t+Ulr+IKaj58L1k5gBwTcQ==} + peerDependencies: + expo: '*' + react-native: '*' + + expo-document-picker@14.0.8: + resolution: {integrity: sha512-3tyQKpPqWWFlI8p9RiMX1+T1Zge5mEKeBuXWp1h8PEItFMUDSiOJbQ112sfdC6Hxt8wSxreV9bCRl/NgBdt+fA==} + peerDependencies: + expo: '*' + + expo-file-system@19.0.21: + resolution: {integrity: sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==} + peerDependencies: + expo: '*' + react-native: '*' + + expo-font@14.0.11: + resolution: {integrity: sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + + expo-image-loader@6.0.0: + resolution: {integrity: sha512-nKs/xnOGw6ACb4g26xceBD57FKLFkSwEUTDXEDF3Gtcu3MqF3ZIYd3YM+sSb1/z9AKV1dYT7rMSGVNgsveXLIQ==} + peerDependencies: + expo: '*' + + expo-image-picker@17.0.10: + resolution: {integrity: sha512-a2xrowp2trmvXyUWgX3O6Q2rZaa2C59AqivKI7+bm+wLvMfTEbZgldLX4rEJJhM8xtmEDTNU+lzjtObwzBRGaw==} + peerDependencies: + expo: '*' + + expo-keep-awake@15.0.8: + resolution: {integrity: sha512-YK9M1VrnoH1vLJiQzChZgzDvVimVoriibiDIFLbQMpjYBnvyfUeHJcin/Gx1a+XgupNXy92EQJLgI/9ZuXajYQ==} + peerDependencies: + expo: '*' + react: '*' + + expo-modules-autolinking@3.0.24: + resolution: {integrity: sha512-TP+6HTwhL7orDvsz2VzauyQlXJcAWyU3ANsZ7JGL4DQu8XaZv/A41ZchbtAYLfozNA2Ya1Hzmhx65hXryBMjaQ==} + hasBin: true + + expo-modules-core@3.0.29: + resolution: {integrity: sha512-LzipcjGqk8gvkrOUf7O2mejNWugPkf3lmd9GkqL9WuNyeN2fRwU0Dn77e3ZUKI3k6sI+DNwjkq4Nu9fNN9WS7Q==} + peerDependencies: + react: '*' + react-native: '*' + + expo-server@1.0.5: + resolution: {integrity: sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==} + engines: {node: '>=20.16.0'} + + expo-sharing@14.0.8: + resolution: {integrity: sha512-A1pPr2iBrxypFDCWVAESk532HK+db7MFXbvO2sCV9ienaFXAk7lIBm6bkqgE6vzRd9O3RGdEGzYx80cYlc089Q==} + peerDependencies: + expo: '*' + + expo-status-bar@3.0.9: + resolution: {integrity: sha512-xyYyVg6V1/SSOZWh4Ni3U129XHCnFHBTcUo0dhWtFDrZbNp/duw5AGsQfb2sVeU0gxWHXSY1+5F0jnKYC7WuOw==} + peerDependencies: + react: '*' + react-native: '*' + + expo@54.0.33: + resolution: {integrity: sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==} + hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true + + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + + fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + + freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + getenv@2.0.0: + resolution: {integrity: sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==} + engines: {node: '>=6'} + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + hermes-estree@0.29.1: + resolution: {integrity: sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==} + + hermes-estree@0.32.0: + resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} + + hermes-estree@0.35.0: + resolution: {integrity: sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==} + + hermes-parser@0.29.1: + resolution: {integrity: sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==} + + hermes-parser@0.32.0: + resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} + + hermes-parser@0.35.0: + resolution: {integrity: sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + engines: {node: '>=16.x'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + 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. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-prefixer@7.0.1: + resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lan-network@0.1.7: + resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + engines: {node: '>= 12.0.0'} + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + metro-babel-transformer@0.83.3: + resolution: {integrity: sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==} + engines: {node: '>=20.19.4'} + + metro-babel-transformer@0.83.6: + resolution: {integrity: sha512-1AnuazBpzY3meRMr04WUw14kRBkV0W3Ez+AA75FAeNpRyWNN5S3M3PHLUbZw7IXq7ZeOzceyRsHStaFrnWd+8w==} + engines: {node: '>=20.19.4'} + + metro-cache-key@0.83.3: + resolution: {integrity: sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==} + engines: {node: '>=20.19.4'} + + metro-cache-key@0.83.6: + resolution: {integrity: sha512-5gdK4PVpgNOHi7xCGrgesNP1AuOA2TiPqpcirGXZi4RLLzX1VMowpkgTVtBfpQQCqWoosQF9yrSo9/KDQg1eBg==} + engines: {node: '>=20.19.4'} + + metro-cache@0.83.3: + resolution: {integrity: sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==} + engines: {node: '>=20.19.4'} + + metro-cache@0.83.6: + resolution: {integrity: sha512-DpvZE32feNkqfZkI4Fic7YI/Kw8QP9wdl1rC4YKPrA77wQbI9vXbxjmfkCT/EGwBTFOPKqvIXo+H3BNe93YyiQ==} + engines: {node: '>=20.19.4'} + + metro-config@0.83.3: + resolution: {integrity: sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==} + engines: {node: '>=20.19.4'} + + metro-config@0.83.6: + resolution: {integrity: sha512-G5622400uNtnAMlppEA5zkFAZltEf7DSGhOu09BkisCxOlVMWfdosD/oPyh4f2YVQsc1MBYyp4w6OzbExTYarg==} + engines: {node: '>=20.19.4'} + + metro-core@0.83.3: + resolution: {integrity: sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==} + engines: {node: '>=20.19.4'} + + metro-core@0.83.6: + resolution: {integrity: sha512-l+yQ2fuIgR//wszUlMrrAa9+Z+kbKazd0QOh0VQY7jC4ghb7yZBBSla/UMYRBZZ6fPg9IM+wD3+h+37a5f9etw==} + engines: {node: '>=20.19.4'} + + metro-file-map@0.83.3: + resolution: {integrity: sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==} + engines: {node: '>=20.19.4'} + + metro-file-map@0.83.6: + resolution: {integrity: sha512-Jg3oN604C7GWbQwFAUXt8KsbMXeKfsxbZ5HFy4XFM3ggTS+ja9QgUmq9B613kgXv3G4M6rwiI6cvh9TRly4x3w==} + engines: {node: '>=20.19.4'} + + metro-minify-terser@0.83.3: + resolution: {integrity: sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==} + engines: {node: '>=20.19.4'} + + metro-minify-terser@0.83.6: + resolution: {integrity: sha512-Vx3/Ne9Q+EIEDLfKzZUOtn/rxSNa/QjlYxc42nvK4Mg8mB6XUgd3LXX5ZZVq7lzQgehgEqLrbgShJPGfeF8PnQ==} + engines: {node: '>=20.19.4'} + + metro-resolver@0.83.3: + resolution: {integrity: sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==} + engines: {node: '>=20.19.4'} + + metro-resolver@0.83.6: + resolution: {integrity: sha512-lAwR/FsT1uJ5iCt4AIsN3boKfJ88aN8bjvDT5FwBS0tKeKw4/sbdSTWlFxc7W/MUTN5RekJ3nQkJRIWsvs28tA==} + engines: {node: '>=20.19.4'} + + metro-runtime@0.83.3: + resolution: {integrity: sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==} + engines: {node: '>=20.19.4'} + + metro-runtime@0.83.6: + resolution: {integrity: sha512-WQPua1G2VgYbwRn6vSKxOhTX7CFbSf/JdUu6Nd8bZnPXckOf7HQ2y51NXNQHoEsiuawathrkzL8pBhv+zgZFmg==} + engines: {node: '>=20.19.4'} + + metro-source-map@0.83.3: + resolution: {integrity: sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==} + engines: {node: '>=20.19.4'} + + metro-source-map@0.83.6: + resolution: {integrity: sha512-AqJbOMMpeyyM4iNI91pchqDIszzNuuHApEhg6OABqZ+9mjLEqzcIEQ/fboZ7x74fNU5DBd2K36FdUQYPqlGClA==} + engines: {node: '>=20.19.4'} + + metro-symbolicate@0.83.3: + resolution: {integrity: sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==} + engines: {node: '>=20.19.4'} + hasBin: true + + metro-symbolicate@0.83.6: + resolution: {integrity: sha512-4nvkmv9T7ozhprlPwk/+xm0SVPsxly5kYyMHdNaOlFemFz4df9BanvD46Ac6OISu/4Idinzfk2KVb++6OfzPAQ==} + engines: {node: '>=20.19.4'} + hasBin: true + + metro-transform-plugins@0.83.3: + resolution: {integrity: sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==} + engines: {node: '>=20.19.4'} + + metro-transform-plugins@0.83.6: + resolution: {integrity: sha512-V+zoY2Ul0v0BW6IokJkTud3raXmDdbdwkUQ/5eiSoy0jKuKMhrDjdH+H5buCS5iiJdNbykOn69Eip+Sqymkodg==} + engines: {node: '>=20.19.4'} + + metro-transform-worker@0.83.3: + resolution: {integrity: sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==} + engines: {node: '>=20.19.4'} + + metro-transform-worker@0.83.6: + resolution: {integrity: sha512-G5kDJ/P0ZTIf57t3iyAd5qIXbj2Wb1j7WtIDh82uTFQHe2Mq2SO9aXG9j1wI+kxZlIe58Z22XEXIKMl89z0ibQ==} + engines: {node: '>=20.19.4'} + + metro@0.83.3: + resolution: {integrity: sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==} + engines: {node: '>=20.19.4'} + hasBin: true + + metro@0.83.6: + resolution: {integrity: sha512-pbdndsAZ2F/ceopDdhVbttpa/hfLzXPJ/husc+QvQ33R0D9UXJKzTn5+OzOXx4bpQNtAKF2bY88cCI3Zl44xDQ==} + engines: {node: '>=20.19.4'} + hasBin: true + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} + engines: {node: '>= 6.13.0'} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + ob1@0.83.3: + resolution: {integrity: sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==} + engines: {node: '>=20.19.4'} + + ob1@0.83.6: + resolution: {integrity: sha512-m/xZYkwcjo6UqLMrUICEB3iHk7Bjt3RSR7KXMi6Y1MO/kGkPhoRmfUDF6KAan3rLAZ7ABRqnQyKUTwaqZgUV4w==} + engines: {node: '>=20.19.4'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@3.0.2: + resolution: {integrity: sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==} + engines: {node: '>=10'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-devtools-core@6.1.5: + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-native-is-edge-to-edge@1.3.1: + resolution: {integrity: sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-web@0.21.2: + resolution: {integrity: sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + react-native@0.81.5: + resolution: {integrity: sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==} + engines: {node: '>= 20.19.4'} + hasBin: true + peerDependencies: + '@types/react': ^19.1.0 + react: ^19.1.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-workspace-root@2.0.1: + resolution: {integrity: sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.60.2: + resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + engines: {node: '>=11.0.0'} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} + engines: {node: '>= 0.8.0'} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} + engines: {node: '>= 0.8.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slugify@1.6.9: + resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} + engines: {node: '>=8.0.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + + styleq@0.1.3: + resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@4.2.1: + resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} + + tailwindcss@4.2.2: + resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==} + + tapable@2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} + engines: {node: '>=6'} + + tar@7.5.13: + resolution: {integrity: sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==} + engines: {node: '>=18'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + ua-parser-js@1.0.41: + resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} + hasBin: true + + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + + undici@6.25.0: + resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} + engines: {node: '>=18.17'} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + engines: {node: '>=4'} + + uniwind@1.6.2: + resolution: {integrity: sha512-skT0I/PFGajygQPGJ20sYbqc3HxmcOMkfQWy51Ha6eXXJWRJh6vYiy7jUJvLFwdzWlfX1g+Z8oC/SpxgRB5R+g==} + peerDependencies: + react: '>=19.0.0' + react-native: '>=0.81.0' + tailwindcss: '>=4' + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-node@1.6.1: + resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite@5.4.21: + resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.1: + resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.1 + '@vitest/ui': 1.6.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-url-without-unicode@8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wonka@6.3.6: + resolution: {integrity: sha512-MXH+6mDHAZ2GuMpgKS055FR6v0xVP3XwquxIMYXgiW+FejHQlMGlvVRZT4qMCxR+bEo/FCtIdKxwej9WV3YQag==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} + + xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + +snapshots: + + '@0no-co/graphql.web@1.2.0': {} + + '@babel/code-frame@7.10.4': + dependencies: + '@babel/highlight': 7.25.9 + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.29.0 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-export-default-from@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/template': 7.28.6 + + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0) + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-runtime@7.29.0(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/preset-react@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@expo/cli@54.0.23(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))': + dependencies: + '@0no-co/graphql.web': 1.2.0 + '@expo/code-signing-certificates': 0.0.6 + '@expo/config': 12.0.13 + '@expo/config-plugins': 54.0.4 + '@expo/devcert': 1.2.1 + '@expo/env': 2.0.11 + '@expo/image-utils': 0.8.13 + '@expo/json-file': 10.0.13 + '@expo/metro': 54.2.0 + '@expo/metro-config': 54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + '@expo/osascript': 2.4.2 + '@expo/package-manager': 1.10.4 + '@expo/plist': 0.4.8 + '@expo/prebuild-config': 54.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + '@expo/schema-utils': 0.1.8 + '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.4.3 + '@react-native/dev-middleware': 0.81.5 + '@urql/core': 5.2.0 + '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0) + accepts: 1.3.8 + arg: 5.0.2 + better-opn: 3.0.2 + bplist-creator: 0.1.0 + bplist-parser: 0.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + compression: 1.8.1 + connect: 3.7.0 + debug: 4.4.3 + env-editor: 0.4.2 + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-server: 1.0.5 + freeport-async: 2.0.0 + getenv: 2.0.0 + glob: 13.0.6 + lan-network: 0.1.7 + minimatch: 9.0.9 + node-forge: 1.4.0 + npm-package-arg: 11.0.3 + ora: 3.4.0 + picomatch: 3.0.2 + pretty-bytes: 5.6.0 + pretty-format: 29.7.0 + progress: 2.0.3 + prompts: 2.4.2 + qrcode-terminal: 0.11.0 + require-from-string: 2.0.2 + requireg: 0.2.2 + resolve: 1.22.12 + resolve-from: 5.0.0 + resolve.exports: 2.0.3 + semver: 7.7.4 + send: 0.19.2 + slugify: 1.6.9 + source-map-support: 0.5.21 + stacktrace-parser: 0.1.11 + structured-headers: 0.4.1 + tar: 7.5.13 + terminal-link: 2.1.1 + undici: 6.25.0 + wrap-ansi: 7.0.0 + ws: 8.20.0 + optionalDependencies: + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + transitivePeerDependencies: + - bufferutil + - graphql + - supports-color + - typescript + - utf-8-validate + + '@expo/code-signing-certificates@0.0.6': + dependencies: + node-forge: 1.4.0 + + '@expo/config-plugins@54.0.4': + dependencies: + '@expo/config-types': 54.0.10 + '@expo/json-file': 10.0.13 + '@expo/plist': 0.4.8 + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + resolve-from: 5.0.0 + semver: 7.7.4 + slash: 3.0.0 + slugify: 1.6.9 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + + '@expo/config-types@54.0.10': {} + + '@expo/config@12.0.13': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 54.0.4 + '@expo/config-types': 54.0.10 + '@expo/json-file': 10.0.13 + deepmerge: 4.3.1 + getenv: 2.0.0 + glob: 13.0.6 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + resolve-workspace-root: 2.0.1 + semver: 7.7.4 + slugify: 1.6.9 + sucrase: 3.35.1 + transitivePeerDependencies: + - supports-color + + '@expo/devcert@1.2.1': + dependencies: + '@expo/sudo-prompt': 9.3.2 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + + '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)': + dependencies: + chalk: 4.1.2 + optionalDependencies: + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + '@expo/env@2.0.11': + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 2.0.0 + transitivePeerDependencies: + - supports-color + + '@expo/fingerprint@0.15.4': + dependencies: + '@expo/spawn-async': 1.7.2 + arg: 5.0.2 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + ignore: 5.3.2 + minimatch: 9.0.9 + p-limit: 3.1.0 + resolve-from: 5.0.0 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + '@expo/image-utils@0.8.13': + dependencies: + '@expo/require-utils': 55.0.4 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + getenv: 2.0.0 + jimp-compact: 0.16.1 + parse-png: 2.1.0 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@expo/json-file@10.0.13': + dependencies: + '@babel/code-frame': 7.29.0 + json5: 2.2.3 + + '@expo/metro-config@54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@expo/config': 12.0.13 + '@expo/env': 2.0.11 + '@expo/json-file': 10.0.13 + '@expo/metro': 54.2.0 + '@expo/spawn-async': 1.7.2 + browserslist: 4.28.2 + chalk: 4.1.2 + debug: 4.4.3 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 2.0.0 + glob: 13.0.6 + hermes-parser: 0.29.1 + jsc-safe-url: 0.2.4 + lightningcss: 1.32.0 + minimatch: 9.0.9 + postcss: 8.4.49 + resolve-from: 5.0.0 + optionalDependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@expo/metro@54.2.0': + dependencies: + metro: 0.83.3 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + metro-file-map: 0.83.3 + metro-minify-terser: 0.83.3 + metro-resolver: 0.83.3 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + metro-symbolicate: 0.83.3 + metro-transform-plugins: 0.83.3 + metro-transform-worker: 0.83.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@expo/osascript@2.4.2': + dependencies: + '@expo/spawn-async': 1.7.2 + + '@expo/package-manager@1.10.4': + dependencies: + '@expo/json-file': 10.0.13 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + npm-package-arg: 11.0.3 + ora: 3.4.0 + resolve-workspace-root: 2.0.1 + + '@expo/plist@0.4.8': + dependencies: + '@xmldom/xmldom': 0.8.13 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + '@expo/prebuild-config@54.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))': + dependencies: + '@expo/config': 12.0.13 + '@expo/config-plugins': 54.0.4 + '@expo/config-types': 54.0.10 + '@expo/image-utils': 0.8.13 + '@expo/json-file': 10.0.13 + '@react-native/normalize-colors': 0.81.5 + debug: 4.4.3 + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + resolve-from: 5.0.0 + semver: 7.7.4 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@expo/require-utils@55.0.4': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + '@expo/schema-utils@0.1.8': {} + + '@expo/sdk-runtime-versions@1.0.0': {} + + '@expo/spawn-async@1.7.2': + dependencies: + cross-spawn: 7.0.6 + + '@expo/sudo-prompt@9.3.2': {} + + '@expo/vector-icons@15.1.1(expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)': + dependencies: + expo-font: 14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + '@expo/ws-tunnel@1.0.6': {} + + '@expo/xcpretty@4.4.3': + dependencies: + '@babel/code-frame': 7.29.0 + chalk: 4.1.2 + js-yaml: 4.1.1 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@isaacs/ttlcache@1.4.1': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.6': {} + + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.6.0 + jest-mock: 29.7.0 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 25.6.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.10 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.29.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.6.0 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@react-native-async-storage/async-storage@2.2.0(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))': + dependencies: + merge-options: 3.0.4 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + '@react-native/assets-registry@0.81.5': {} + + '@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.29.0)': + dependencies: + '@babel/traverse': 7.29.0 + '@react-native/codegen': 0.81.5(@babel/core@7.29.0) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + '@react-native/babel-preset@0.81.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) + '@babel/template': 7.28.6 + '@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.29.0) + babel-plugin-syntax-hermes-parser: 0.29.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0) + react-refresh: 0.14.2 + transitivePeerDependencies: + - supports-color + + '@react-native/codegen@0.81.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + glob: 7.2.3 + hermes-parser: 0.29.1 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + + '@react-native/community-cli-plugin@0.81.5': + dependencies: + '@react-native/dev-middleware': 0.81.5 + debug: 4.4.3 + invariant: 2.2.4 + metro: 0.83.6 + metro-config: 0.83.6 + metro-core: 0.83.6 + semver: 7.7.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/debugger-frontend@0.81.5': {} + + '@react-native/dev-middleware@0.81.5': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.81.5 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 4.4.3 + invariant: 2.2.4 + nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.3 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/gradle-plugin@0.81.5': {} + + '@react-native/js-polyfills@0.81.5': {} + + '@react-native/normalize-colors@0.74.89': {} + + '@react-native/normalize-colors@0.81.5': {} + + '@react-native/virtualized-lists@0.81.5(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + '@rollup/rollup-android-arm-eabi@4.60.2': + optional: true + + '@rollup/rollup-android-arm64@4.60.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.2': + optional: true + + '@rollup/rollup-darwin-x64@4.60.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.2': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.2': + optional: true + + '@sinclair/typebox@0.27.10': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@tailwindcss/node@4.2.1': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.20.1 + jiti: 2.6.1 + lightningcss: 1.31.1 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.1 + + '@tailwindcss/oxide-android-arm64@4.2.1': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.2.1': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.2.1': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.2.1': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.2.1': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.2.1': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': + optional: true + + '@tailwindcss/oxide@4.2.1': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-x64': 4.2.1 + '@tailwindcss/oxide-freebsd-x64': 4.2.1 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.1 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-x64-musl': 4.2.1 + '@tailwindcss/oxide-wasm32-wasi': 4.2.1 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/estree@1.0.8': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 25.6.0 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + + '@types/stack-utils@2.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@ungap/structured-clone@1.3.0': {} + + '@urql/core@5.2.0': + dependencies: + '@0no-co/graphql.web': 1.2.0 + wonka: 6.3.6 + transitivePeerDependencies: + - graphql + + '@urql/exchange-retry@1.3.2(@urql/core@5.2.0)': + dependencies: + '@urql/core': 5.2.0 + wonka: 6.3.6 + + '@vitest/expect@1.6.1': + dependencies: + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + chai: 4.5.0 + + '@vitest/runner@1.6.1': + dependencies: + '@vitest/utils': 1.6.1 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.1': + dependencies: + magic-string: 0.30.21 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.1': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.1': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@xmldom/xmldom@0.8.13': {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.2 + negotiator: 1.0.0 + + acorn-walk@8.3.5: + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + agent-base@7.1.4: {} + + anser@1.4.10: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + async-limiter@1.0.1: {} + + babel-jest@29.7.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.29.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.28.6 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.29.0 + + babel-plugin-react-native-web@0.21.2: {} + + babel-plugin-syntax-hermes-parser@0.29.1: + dependencies: + hermes-parser: 0.29.1 + + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.29.0): + dependencies: + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0) + transitivePeerDependencies: + - '@babel/core' + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-expo@54.0.10(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-refresh@0.14.2): + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-export-default-from': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) + '@babel/preset-react': 7.28.5(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) + '@react-native/babel-preset': 0.81.5(@babel/core@7.29.0) + babel-plugin-react-compiler: 1.0.0 + babel-plugin-react-native-web: 0.21.2 + babel-plugin-syntax-hermes-parser: 0.29.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.29.0) + debug: 4.4.3 + react-refresh: 0.14.2 + resolve-from: 5.0.0 + optionalDependencies: + '@babel/runtime': 7.29.2 + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + babel-preset-jest@29.6.3(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.20: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + big-integer@1.6.52: {} + + bplist-creator@0.1.0: + dependencies: + stream-buffers: 2.2.0 + + bplist-parser@0.3.1: + dependencies: + big-integer: 1.6.52 + + bplist-parser@0.3.2: + dependencies: + big-integer: 1.6.52 + + brace-expansion@1.1.14: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.5: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.20 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.340 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + cac@6.7.14: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001788: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chownr@3.0.0: {} + + chrome-launcher@0.15.2: + dependencies: + '@types/node': 25.6.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-edge-launcher@0.2.0: + dependencies: + '@types/node': 25.6.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-spinners@2.9.2: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + convert-source-map@2.0.0: {} + + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.2 + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-in-js-utils@3.1.0: + dependencies: + hyphenate-style-name: 1.1.0 + + culori@4.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-extend@0.6.0: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-lazy-prop@2.0.0: {} + + depd@2.0.0: {} + + destroy@1.2.0: {} + + detect-libc@2.1.2: {} + + diff-sequences@29.6.3: {} + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.4.7 + + dotenv@16.4.7: {} + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.340: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + enhanced-resolve@5.20.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.2 + + env-editor@0.4.2: {} + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-errors@1.3.0: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + esprima@4.0.1: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + expo-asset@12.0.12(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + '@expo/image-utils': 0.8.13 + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + transitivePeerDependencies: + - supports-color + - typescript + + expo-constants@18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)): + dependencies: + '@expo/config': 12.0.13 + '@expo/env': 2.0.11 + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + transitivePeerDependencies: + - supports-color + + expo-document-picker@14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + + expo-file-system@19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + fontfaceobserver: 2.3.0 + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + expo-image-loader@6.0.0(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + + expo-image-picker@17.0.10(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-image-loader: 6.0.0(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + + expo-keep-awake@15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react@19.1.0): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + react: 19.1.0 + + expo-modules-autolinking@3.0.24: + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + commander: 7.2.0 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + + expo-modules-core@3.0.29(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + invariant: 2.2.4 + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + expo-server@1.0.5: {} + + expo-sharing@14.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)): + dependencies: + expo: 54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + + expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + + expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/runtime': 7.29.2 + '@expo/cli': 54.0.23(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + '@expo/config': 12.0.13 + '@expo/config-plugins': 54.0.4 + '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + '@expo/fingerprint': 0.15.4 + '@expo/metro': 54.2.0 + '@expo/metro-config': 54.0.14(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)) + '@expo/vector-icons': 15.1.1(expo-font@14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + '@ungap/structured-clone': 1.3.0 + babel-preset-expo: 54.0.10(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-refresh@0.14.2) + expo-asset: 12.0.12(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.13(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + expo-file-system: 19.0.21(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0)) + expo-font: 14.0.11(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + expo-keep-awake: 15.0.8(expo@54.0.33(@babel/core@7.29.0)(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0))(react@19.1.0) + expo-modules-autolinking: 3.0.24 + expo-modules-core: 3.0.29(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + pretty-format: 29.7.0 + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + react-refresh: 0.14.2 + whatwg-url-without-unicode: 8.0.0-3 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - expo-router + - graphql + - supports-color + - typescript + - utf-8-validate + + exponential-backoff@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbjs-css-vars@1.0.2: {} + + fbjs@3.0.5: + dependencies: + cross-fetch: 3.2.0 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.41 + transitivePeerDependencies: + - encoding + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + flow-enums-runtime@0.0.6: {} + + fontfaceobserver@2.3.0: {} + + freeport-async@2.0.0: {} + + fresh@0.5.2: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-package-type@0.1.0: {} + + get-stream@8.0.1: {} + + getenv@2.0.0: {} + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + graceful-fs@4.2.11: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + hermes-estree@0.29.1: {} + + hermes-estree@0.32.0: {} + + hermes-estree@0.35.0: {} + + hermes-parser@0.29.1: + dependencies: + hermes-estree: 0.29.1 + + hermes-parser@0.32.0: + dependencies: + hermes-estree: 0.32.0 + + hermes-parser@0.35.0: + dependencies: + hermes-estree: 0.35.0 + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@5.0.0: {} + + hyphenate-style-name@1.1.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@1.2.1: + dependencies: + queue: 6.0.2 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-prefixer@7.0.1: + dependencies: + css-in-js-utils: 3.1.0 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.3 + + is-docker@2.2.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-stream@3.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.6.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 25.6.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.29.0 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 25.6.0 + jest-util: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 25.6.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.2 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-worker@29.7.0: + dependencies: + '@types/node': 25.6.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jimp-compact@0.16.1: {} + + jiti@2.6.1: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsc-safe-url@0.2.4: {} + + jsesc@3.1.0: {} + + json5@2.2.3: {} + + kleur@3.0.3: {} + + lan-network@0.1.7: {} + + leven@3.1.0: {} + + lighthouse-logger@1.4.2: + dependencies: + debug: 2.6.9 + marky: 1.3.0 + transitivePeerDependencies: + - supports-color + + lightningcss-android-arm64@1.31.1: + optional: true + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-arm64@1.31.1: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.31.1: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.31.1: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.31.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.31.1: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.31.1: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.31.1: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.31.1: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.31.1: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.31.1: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + lightningcss@1.31.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lines-and-columns@1.2.4: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.8.2 + pkg-types: 1.3.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.debounce@4.0.8: {} + + lodash.throttle@4.1.1: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + lru-cache@11.3.5: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + marky@1.3.0: {} + + memoize-one@5.2.1: {} + + memoize-one@6.0.0: {} + + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + + merge-stream@2.0.0: {} + + metro-babel-transformer@0.83.3: + dependencies: + '@babel/core': 7.29.0 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.32.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-babel-transformer@0.83.6: + dependencies: + '@babel/core': 7.29.0 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.35.0 + metro-cache-key: 0.83.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-cache-key@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-cache@0.83.3: + dependencies: + exponential-backoff: 3.1.3 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.83.3 + transitivePeerDependencies: + - supports-color + + metro-cache@0.83.6: + dependencies: + exponential-backoff: 3.1.3 + flow-enums-runtime: 0.0.6 + https-proxy-agent: 7.0.6 + metro-core: 0.83.6 + transitivePeerDependencies: + - supports-color + + metro-config@0.83.3: + dependencies: + connect: 3.7.0 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.83.3 + metro-cache: 0.83.3 + metro-core: 0.83.3 + metro-runtime: 0.83.3 + yaml: 2.8.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-config@0.83.6: + dependencies: + connect: 3.7.0 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.83.6 + metro-cache: 0.83.6 + metro-core: 0.83.6 + metro-runtime: 0.83.6 + yaml: 2.8.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-core@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.83.3 + + metro-core@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.83.6 + + metro-file-map@0.83.3: + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + + metro-file-map@0.83.6: + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + + metro-minify-terser@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.46.1 + + metro-minify-terser@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.46.1 + + metro-resolver@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-resolver@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-runtime@0.83.3: + dependencies: + '@babel/runtime': 7.29.2 + flow-enums-runtime: 0.0.6 + + metro-runtime@0.83.6: + dependencies: + '@babel/runtime': 7.29.2 + flow-enums-runtime: 0.0.6 + + metro-source-map@0.83.3: + dependencies: + '@babel/traverse': 7.29.0 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.29.0' + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.83.3 + nullthrows: 1.1.1 + ob1: 0.83.3 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-source-map@0.83.6: + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.83.6 + nullthrows: 1.1.1 + ob1: 0.83.6 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-symbolicate@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.83.3 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-symbolicate@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.83.6 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.83.3: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.83.6: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-worker@0.83.3: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + metro: 0.83.3 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-minify-terser: 0.83.3 + metro-source-map: 0.83.3 + metro-transform-plugins: 0.83.3 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-transform-worker@0.83.6: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + flow-enums-runtime: 0.0.6 + metro: 0.83.6 + metro-babel-transformer: 0.83.6 + metro-cache: 0.83.6 + metro-cache-key: 0.83.6 + metro-minify-terser: 0.83.6 + metro-source-map: 0.83.6 + metro-transform-plugins: 0.83.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro@0.83.3: + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.32.0 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + metro-file-map: 0.83.3 + metro-resolver: 0.83.3 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + metro-symbolicate: 0.83.3 + metro-transform-plugins: 0.83.3 + metro-transform-worker: 0.83.3 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro@0.83.6: + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + accepts: 2.0.0 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 4.4.3 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.35.0 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.83.6 + metro-cache: 0.83.6 + metro-cache-key: 0.83.6 + metro-config: 0.83.6 + metro-core: 0.83.6 + metro-file-map: 0.83.6 + metro-resolver: 0.83.6 + metro-runtime: 0.83.6 + metro-source-map: 0.83.6 + metro-symbolicate: 0.83.6 + metro-transform-plugins: 0.83.6 + metro-transform-worker: 0.83.6 + mime-types: 3.0.2 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + mime@1.6.0: {} + + mimic-fn@1.2.0: {} + + mimic-fn@4.0.0: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.14 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.0 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mkdirp@1.0.4: {} + + mlly@1.8.2: + dependencies: + acorn: 8.16.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.3 + + ms@2.0.0: {} + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.11: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + negotiator@1.0.0: {} + + nested-error-stacks@2.0.1: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-forge@1.4.0: {} + + node-int64@0.4.0: {} + + node-releases@2.0.37: {} + + normalize-path@3.0.0: {} + + npm-package-arg@11.0.3: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.7.4 + validate-npm-package-name: 5.0.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nullthrows@1.1.1: {} + + ob1@0.83.3: + dependencies: + flow-enums-runtime: 0.0.6 + + ob1@0.83.6: + dependencies: + flow-enums-runtime: 0.0.6 + + object-assign@4.1.1: {} + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + ora@3.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + parse-png@2.1.0: + dependencies: + pngjs: 3.4.0 + + parseurl@1.3.3: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.5 + minipass: 7.1.3 + + pathe@1.1.2: {} + + pathe@2.0.3: {} + + pathval@1.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@3.0.2: {} + + picomatch@4.0.4: {} + + pirates@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.13 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + pngjs@3.4.0: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-bytes@5.6.0: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + proc-log@4.2.0: {} + + progress@2.0.3: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + punycode@2.3.1: {} + + qrcode-terminal@0.11.0: {} + + queue@6.0.2: + dependencies: + inherits: 2.0.4 + + range-parser@1.2.1: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-devtools-core@6.1.5: + dependencies: + shell-quote: 1.8.3 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-is@18.3.1: {} + + react-native-is-edge-to-edge@1.3.1(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + + react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/runtime': 7.29.2 + '@react-native/normalize-colors': 0.74.89 + fbjs: 3.0.5 + inline-style-prefixer: 7.0.1 + memoize-one: 6.0.0 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styleq: 0.1.3 + transitivePeerDependencies: + - encoding + + react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.81.5 + '@react-native/codegen': 0.81.5(@babel/core@7.29.0) + '@react-native/community-cli-plugin': 0.81.5 + '@react-native/gradle-plugin': 0.81.5 + '@react-native/js-polyfills': 0.81.5 + '@react-native/normalize-colors': 0.81.5 + '@react-native/virtualized-lists': 0.81.5(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.29.0) + babel-plugin-syntax-hermes-parser: 0.29.1 + base64-js: 1.5.1 + commander: 12.1.0 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.83.6 + metro-source-map: 0.83.6 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 19.1.0 + react-devtools-core: 6.1.5 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.26.0 + semver: 7.7.4 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - '@react-native/metro-config' + - bufferutil + - supports-color + - utf-8-validate + + react-refresh@0.14.2: {} + + react@19.1.0: {} + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.1: + dependencies: + jsesc: 3.1.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requireg@0.2.2: + dependencies: + nested-error-stacks: 2.0.1 + rc: 1.2.8 + resolve: 1.7.1 + + resolve-from@5.0.0: {} + + resolve-workspace-root@2.0.1: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.7.1: + dependencies: + path-parse: 1.0.7 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.60.2: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.2 + '@rollup/rollup-android-arm64': 4.60.2 + '@rollup/rollup-darwin-arm64': 4.60.2 + '@rollup/rollup-darwin-x64': 4.60.2 + '@rollup/rollup-freebsd-arm64': 4.60.2 + '@rollup/rollup-freebsd-x64': 4.60.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.2 + '@rollup/rollup-linux-arm-musleabihf': 4.60.2 + '@rollup/rollup-linux-arm64-gnu': 4.60.2 + '@rollup/rollup-linux-arm64-musl': 4.60.2 + '@rollup/rollup-linux-loong64-gnu': 4.60.2 + '@rollup/rollup-linux-loong64-musl': 4.60.2 + '@rollup/rollup-linux-ppc64-gnu': 4.60.2 + '@rollup/rollup-linux-ppc64-musl': 4.60.2 + '@rollup/rollup-linux-riscv64-gnu': 4.60.2 + '@rollup/rollup-linux-riscv64-musl': 4.60.2 + '@rollup/rollup-linux-s390x-gnu': 4.60.2 + '@rollup/rollup-linux-x64-gnu': 4.60.2 + '@rollup/rollup-linux-x64-musl': 4.60.2 + '@rollup/rollup-openbsd-x64': 4.60.2 + '@rollup/rollup-openharmony-arm64': 4.60.2 + '@rollup/rollup-win32-arm64-msvc': 4.60.2 + '@rollup/rollup-win32-ia32-msvc': 4.60.2 + '@rollup/rollup-win32-x64-gnu': 4.60.2 + '@rollup/rollup-win32-x64-msvc': 4.60.2 + fsevents: 2.3.3 + + safe-buffer@5.2.1: {} + + sax@1.6.0: {} + + scheduler@0.26.0: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + send@0.19.2: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.1 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serialize-error@2.1.0: {} + + serve-static@1.16.3: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.2 + transitivePeerDependencies: + - supports-color + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.3: {} + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-plist@1.3.1: + dependencies: + bplist-creator: 0.1.0 + bplist-parser: 0.3.1 + plist: 3.1.0 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slugify@1.6.9: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + stackframe@1.3.4: {} + + stacktrace-parser@0.1.11: + dependencies: + type-fest: 0.7.1 + + statuses@1.5.0: {} + + statuses@2.0.2: {} + + std-env@3.10.0: {} + + stream-buffers@2.2.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-final-newline@3.0.0: {} + + strip-json-comments@2.0.1: {} + + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + structured-headers@0.4.1: {} + + styleq@0.1.3: {} + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.16 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@4.2.1: {} + + tailwindcss@4.2.2: {} + + tapable@2.3.2: {} + + tar@7.5.13: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.46.1: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.16.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.6 + glob: 7.2.3 + minimatch: 3.1.5 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throat@5.0.0: {} + + tinybench@2.9.0: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + ts-interface-checker@0.1.13: {} + + type-detect@4.0.8: {} + + type-detect@4.1.0: {} + + type-fest@0.21.3: {} + + type-fest@0.7.1: {} + + ua-parser-js@1.0.41: {} + + ufo@1.6.3: {} + + undici-types@7.19.2: {} + + undici@6.25.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + uniwind@1.6.2(react-native@0.81.5(@babel/core@7.29.0)(react@19.1.0))(react@19.1.0)(tailwindcss@4.2.2): + dependencies: + '@tailwindcss/node': 4.2.1 + '@tailwindcss/oxide': 4.2.1 + culori: 4.0.2 + lightningcss: 1.30.1 + react: 19.1.0 + react-native: 0.81.5(@babel/core@7.29.0)(react@19.1.0) + tailwindcss: 4.2.2 + + unpipe@1.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + utils-merge@1.0.1: {} + + uuid@7.0.3: {} + + validate-npm-package-name@5.0.1: {} + + vary@1.1.2: {} + + vite-node@1.6.1(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.60.2 + optionalDependencies: + '@types/node': 25.6.0 + fsevents: 2.3.3 + lightningcss: 1.32.0 + terser: 5.46.1 + + vitest@1.6.1(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1): + dependencies: + '@vitest/expect': 1.6.1 + '@vitest/runner': 1.6.1 + '@vitest/snapshot': 1.6.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + acorn-walk: 8.3.5 + chai: 4.5.0 + debug: 4.4.3 + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.21 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.10.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + vite-node: 1.6.1(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.6.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vlq@1.0.1: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webidl-conversions@3.0.1: {} + + webidl-conversions@5.0.0: {} + + whatwg-fetch@3.6.20: {} + + whatwg-url-without-unicode@8.0.0-3: + dependencies: + buffer: 5.7.1 + punycode: 2.3.1 + webidl-conversions: 5.0.0 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wonka@6.3.6: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@6.2.3: + dependencies: + async-limiter: 1.0.1 + + ws@7.5.10: {} + + ws@8.20.0: {} + + xcode@3.0.1: + dependencies: + simple-plist: 1.3.1 + uuid: 7.0.3 + + xml2js@0.6.0: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlbuilder@15.1.1: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yaml@2.8.3: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.2: {} diff --git a/src/AppRoot.js b/src/AppRoot.js index 59d345d..1ae3eae 100644 --- a/src/AppRoot.js +++ b/src/AppRoot.js @@ -2,6 +2,9 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'; import { KeyboardAvoidingView, Platform, SafeAreaView, ScrollView, StatusBar as RNStatusBar, Text, View } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import * as ImagePicker from 'expo-image-picker'; +import * as DocumentPicker from 'expo-document-picker'; +import * as FileSystem from 'expo-file-system'; +import * as Sharing from 'expo-sharing'; import { StatusBar } from 'expo-status-bar'; import BottomTab from './components/BottomTab'; import TripPicker from './components/TripPicker'; @@ -15,7 +18,11 @@ import ItemsTab from './tabs/ItemsTab'; import CheckupTab from './tabs/CheckupTab'; import HistoryTab from './tabs/HistoryTab'; import { emptyData, ITEM_PLACEMENTS, STORAGE_KEY } from './constants'; -import { findBestTripId, makeId, parseYMD, todayYMD } from './utils/date'; +import { findBestTripId, makeId, todayYMD } from './utils/date'; +import { normalizeItemRecord, normalizePayloadShape, parseBackupText, stringifyBackupData } from './utils/backup'; +import { resolvePlacementValue, toPlacementFormState, withPlacementCustomFallback } from './utils/items'; +import { extractLegacyQuantityFromName, normalizeNameAndQuantity, normalizeQuantity } from './utils/labels'; +import { validateTripDraft } from './utils/trips'; import { styles } from './styles'; const emptyTripForm = () => ({ @@ -30,6 +37,7 @@ const emptyTripForm = () => ({ const emptyItemForm = () => ({ id: null, name: '', + quantity: 1, description: '', category: '', status: 'unpacked', @@ -50,18 +58,22 @@ const emptyCheckupNoForm = () => ({ }); function buildCheckupSession(items) { - return items.map((item) => ({ - itemId: item.id, - name: item.name, - category: item.category, - current: { - status: item.status, - placement: item.placement, - lentTo: item.lentTo || '', - }, - confirmed: false, - result: 'pending', - })); + return items.map((item) => { + const normalized = normalizeNameAndQuantity(item.name, item.quantity); + return { + itemId: item.id, + name: normalized.name, + quantity: normalized.quantity, + category: item.category, + current: { + status: item.status, + placement: item.placement, + lentTo: item.lentTo || '', + }, + confirmed: false, + result: 'pending', + }; + }); } export default function AppRoot() { @@ -92,7 +104,7 @@ export default function AppRoot() { const [backupImportText, setBackupImportText] = useState(''); const topInset = Platform.OS === 'android' ? (RNStatusBar.currentHeight || 0) + 10 : 0; - const fakeLoadTotalMs = useMemo(() => 1200 + Math.floor(Math.random() * 2801), []); + const fakeLoadTotalMs = useMemo(() => 700 + Math.floor(Math.random() * 701), []); const appReady = loaded && fakeLoadDone; const visibleTrips = useMemo(() => data.trips.filter((trip) => !trip.archived), [data.trips]); @@ -104,6 +116,11 @@ export default function AppRoot() { return data.itemsByTrip[selectedTripId] || []; }, [data.itemsByTrip, selectedTripId]); + const selectedTripPackedCount = useMemo( + () => selectedTripItems.filter((item) => item.status === 'packed').length, + [selectedTripItems] + ); + const selectedTripCheckups = useMemo(() => { if (!selectedTripId) return []; return (data.checkupsByTrip[selectedTripId] || []).slice().sort((a, b) => b.createdAt - a.createdAt); @@ -138,6 +155,51 @@ export default function AppRoot() { return collected; }, [data.itemsByTrip, selectedTripId]); + const lastUsedItemDefaults = useMemo(() => { + const buckets = []; + if (selectedTripId) { + buckets.push(data.itemsByTrip[selectedTripId] || []); + } + + Object.entries(data.itemsByTrip).forEach(([tripId, items]) => { + if (tripId === selectedTripId) return; + buckets.push(items || []); + }); + + for (const bucket of buckets) { + const recent = bucket + .slice() + .sort((a, b) => (b.updatedAt || b.createdAt || 0) - (a.updatedAt || a.createdAt || 0)) + .find((item) => item?.category?.trim() || item?.placement?.trim()); + + if (!recent) continue; + + const category = recent.category?.trim() || ''; + const rawPlacement = recent.placement?.trim() || ''; + + if (!rawPlacement) { + return { + category, + placement: 'suitcase', + placementCustom: '', + }; + } + + const hasPresetPlacement = ITEM_PLACEMENTS.includes(rawPlacement); + return { + category, + placement: hasPresetPlacement ? rawPlacement : 'other', + placementCustom: hasPresetPlacement ? '' : rawPlacement, + }; + } + + return { + category: '', + placement: 'suitcase', + placementCustom: '', + }; + }, [data.itemsByTrip, selectedTripId]); + const templateTrip = useMemo( () => data.trips.find((trip) => trip.id === data.defaultTemplateTripId) || null, [data.trips, data.defaultTemplateTripId] @@ -195,7 +257,7 @@ export default function AppRoot() { const raw = await AsyncStorage.getItem(STORAGE_KEY); if (raw) { const parsed = JSON.parse(raw); - setData({ ...emptyData, ...parsed }); + setData(normalizePayloadShape({ ...emptyData, ...parsed })); } } catch { showAlert('Error', 'Could not load local data.'); @@ -207,21 +269,25 @@ export default function AppRoot() { useEffect(() => { const startedAt = Date.now(); + let rafId = null; - const interval = setInterval(() => { + const tick = () => { const elapsed = Date.now() - startedAt; - setFakeLoadProgress(Math.min(1, elapsed / fakeLoadTotalMs)); - }, 60); + const linear = Math.min(1, elapsed / fakeLoadTotalMs); + const eased = 1 - Math.pow(1 - linear, 2.2); + setFakeLoadProgress(eased); - const timeout = setTimeout(() => { - setFakeLoadProgress(1); - setFakeLoadDone(true); - clearInterval(interval); - }, fakeLoadTotalMs); + if (linear < 1) { + rafId = requestAnimationFrame(tick); + } else { + setFakeLoadDone(true); + } + }; + + rafId = requestAnimationFrame(tick); return () => { - clearInterval(interval); - clearTimeout(timeout); + if (rafId) cancelAnimationFrame(rafId); }; }, [fakeLoadTotalMs]); @@ -232,6 +298,11 @@ export default function AppRoot() { }); }, [data, loaded]); + useEffect(() => { + if (!loaded) return; + setData((prev) => normalizePayloadShape(prev)); + }, [loaded]); + useEffect(() => { if (!loaded) return; if (!visibleTrips.length) { @@ -264,7 +335,7 @@ export default function AppRoot() { return { ...prev, placement: value, - placementCustom: prev.placementCustom?.trim() ? prev.placementCustom : fallbackLocation, + placementCustom: withPlacementCustomFallback(prev.placementCustom, fallbackLocation), }; } @@ -317,21 +388,9 @@ export default function AppRoot() { } function createTrip() { - if (!tripForm.name.trim()) { - showAlert('Missing name', 'Trip name is required.'); - return false; - } - - const start = parseYMD(tripForm.startDate); - const end = parseYMD(tripForm.endDate); - - if (!start || !end) { - showAlert('Invalid dates', 'Please select valid trip dates.'); - return false; - } - - if (start > end) { - showAlert('Invalid dates', 'Start date cannot be after end date.'); + const tripValidation = validateTripDraft(tripForm); + if (!tripValidation.valid) { + showAlert(tripValidation.title, tripValidation.message); return false; } @@ -362,7 +421,7 @@ export default function AppRoot() { if (tripForm.copyDefaultTemplate && prev.defaultTemplateTripId) { const templateItems = prev.itemsByTrip[prev.defaultTemplateTripId] || []; next.itemsByTrip[tripId] = templateItems.map((item) => ({ - ...item, + ...normalizeItemRecord(item), id: makeId('item'), createdAt: now, updatedAt: now, @@ -386,21 +445,9 @@ export default function AppRoot() { } function saveTripEdits(tripId, patch) { - if (!patch.name.trim()) { - showAlert('Missing name', 'Trip name is required.'); - return false; - } - - const start = parseYMD(patch.startDate); - const end = parseYMD(patch.endDate); - - if (!start || !end) { - showAlert('Invalid dates', 'Please select valid trip dates.'); - return false; - } - - if (start > end) { - showAlert('Invalid dates', 'Start date cannot be after end date.'); + const tripValidation = validateTripDraft(patch); + if (!tripValidation.valid) { + showAlert(tripValidation.title, tripValidation.message); return false; } @@ -467,22 +514,28 @@ export default function AppRoot() { } function openAddItemModal() { - setItemForm(emptyItemForm()); + setItemForm({ + ...emptyItemForm(), + category: lastUsedItemDefaults.category, + placement: lastUsedItemDefaults.placement, + placementCustom: lastUsedItemDefaults.placementCustom, + }); setItemModalVisible(true); } function openEditItemModal(item) { - const existingPlacement = item.placement || 'suitcase'; - const hasPresetPlacement = ITEM_PLACEMENTS.includes(existingPlacement); + const normalized = normalizeNameAndQuantity(item.name || '', item.quantity); + const placementState = toPlacementFormState(item.placement || 'suitcase'); setItemForm({ id: item.id, - name: item.name || '', + name: normalized.name, + quantity: normalized.quantity, description: item.description || '', category: item.category || '', status: item.status || 'unpacked', - placement: hasPresetPlacement ? existingPlacement : 'other', - placementCustom: hasPresetPlacement || existingPlacement === 'other' ? '' : existingPlacement, + placement: placementState.placement, + placementCustom: placementState.placementCustom, lentTo: item.lentTo || '', imageUri: item.imageUri || '', imageQuality: item.imageQuality || 'balanced', @@ -497,12 +550,17 @@ export default function AppRoot() { return; } - if (!itemForm.name.trim()) { + const legacyQuantity = extractLegacyQuantityFromName(itemForm.name.trim()); + const requestedQuantity = normalizeQuantity(itemForm.quantity, 1); + const resolvedQuantity = legacyQuantity.matched && requestedQuantity === 1 ? legacyQuantity.quantity : requestedQuantity; + const resolvedName = legacyQuantity.matched ? legacyQuantity.name : itemForm.name.trim(); + + if (!resolvedName) { showAlert('Missing name', 'Item name is required.'); return; } - const resolvedPlacement = itemForm.placement === 'other' ? itemForm.placementCustom.trim() : itemForm.placement; + const resolvedPlacement = resolvePlacementValue(itemForm.placement, itemForm.placementCustom); if (!resolvedPlacement) { showAlert('Missing location', 'Please enter a custom location for "other".'); return; @@ -515,7 +573,8 @@ export default function AppRoot() { const existingCreatedAt = items.find((item) => item.id === itemForm.id)?.createdAt || now; const nextItem = { id: itemForm.id || makeId('item'), - name: itemForm.name.trim(), + name: resolvedName, + quantity: resolvedQuantity, description: itemForm.description.trim(), category: itemForm.category.trim(), status: itemForm.status, @@ -703,13 +762,12 @@ export default function AppRoot() { const entry = checkupCurrentEntry; if (!entry) return; - const existingPlacement = entry.current.placement || 'suitcase'; - const hasPresetPlacement = ITEM_PLACEMENTS.includes(existingPlacement); + const placementState = toPlacementFormState(entry.current.placement || 'suitcase'); setCheckupNoForm({ status: entry.current.status || 'unpacked', - placement: hasPresetPlacement ? existingPlacement : 'other', - placementCustom: hasPresetPlacement || existingPlacement === 'other' ? '' : existingPlacement, + placement: placementState.placement, + placementCustom: placementState.placementCustom, lentTo: entry.current.lentTo || '', updateMasterList: false, }); @@ -720,7 +778,7 @@ export default function AppRoot() { const entry = checkupCurrentEntry; if (!entry) return; - const resolvedPlacement = checkupNoForm.placement === 'other' ? checkupNoForm.placementCustom.trim() : checkupNoForm.placement; + const resolvedPlacement = resolvePlacementValue(checkupNoForm.placement, checkupNoForm.placementCustom); if (!resolvedPlacement) { showAlert('Missing location', 'Please enter a custom location for "other".'); return; @@ -791,6 +849,7 @@ export default function AppRoot() { const snapshot = sessionToSave.map((entry) => ({ itemId: entry.itemId, name: entry.name, + quantity: normalizeQuantity(entry.quantity, 1), category: entry.category, status: entry.current.status, placement: entry.current.placement, @@ -852,15 +911,91 @@ export default function AppRoot() { } function buildBackupJson() { - return JSON.stringify( - { - version: 2, - exportedAt: new Date().toISOString(), - data, - }, - null, - 2 - ); + return stringifyBackupData(data); + } + + async function exportBackupFile() { + const backupJson = buildBackupJson(); + const stamp = new Date().toISOString().replace(/[:.]/g, '-'); + const fileName = `luggage-list-backup-${stamp}.json`; + + if (Platform.OS === 'web' && typeof document !== 'undefined') { + try { + const blob = new Blob([backupJson], { type: 'application/json' }); + const objectUrl = URL.createObjectURL(blob); + const anchor = document.createElement('a'); + anchor.href = objectUrl; + anchor.download = fileName; + anchor.click(); + URL.revokeObjectURL(objectUrl); + } catch { + showAlert('Export failed', 'Could not download backup file on web.'); + } + return; + } + + try { + const baseDir = FileSystem.cacheDirectory || FileSystem.documentDirectory; + if (!baseDir) { + showAlert('Export failed', 'No writable folder is available on this device.'); + return; + } + + const fileUri = `${baseDir}${fileName}`; + await FileSystem.writeAsStringAsync(fileUri, backupJson, { encoding: FileSystem.EncodingType.UTF8 }); + + if (await Sharing.isAvailableAsync()) { + await Sharing.shareAsync(fileUri, { + mimeType: 'application/json', + dialogTitle: 'Export backup file', + UTI: 'public.json', + }); + return; + } + + showAlert('Exported', 'Backup file saved to app storage.'); + } catch { + showAlert('Export failed', 'Could not create backup file.'); + } + } + + async function pickBackupImportFile() { + try { + const picked = await DocumentPicker.getDocumentAsync({ + type: ['application/json', 'text/json', 'text/plain'], + copyToCacheDirectory: true, + multiple: false, + }); + + if (picked.canceled) return; + + const asset = picked.assets?.[0]; + if (!asset?.uri) { + showAlert('Import failed', 'Selected file could not be read.'); + return; + } + + let content = ''; + try { + content = await FileSystem.readAsStringAsync(asset.uri, { encoding: FileSystem.EncodingType.UTF8 }); + } catch { + if (Platform.OS === 'web' && asset.file) { + content = await asset.file.text(); + } else { + throw new Error('read-failed'); + } + } + + if (!content.trim()) { + showAlert('Empty file', 'Selected backup file has no content.'); + return; + } + + setBackupImportText(content); + showAlert('Loaded', `${asset.name || 'Backup file'} loaded. Review and tap Import & Replace.`); + } catch { + showAlert('Import failed', 'Could not open backup file.'); + } } function openBackupModal() { @@ -869,33 +1004,36 @@ export default function AppRoot() { } function applyBackupImport() { - if (!backupImportText.trim()) { - showAlert('Missing backup', 'Paste backup JSON first.'); - return; - } + const parsedBackup = parseBackupText(backupImportText); + if (!parsedBackup.ok) { + if (parsedBackup.error === 'missing-backup') { + showAlert('Missing backup', 'Paste backup JSON first.'); + return; + } - let parsed; - try { - parsed = JSON.parse(backupImportText); - } catch { - showAlert('Invalid JSON', 'Backup JSON could not be parsed.'); - return; - } + if (parsedBackup.error === 'invalid-json') { + showAlert('Invalid JSON', 'Backup JSON could not be parsed.'); + return; + } - const payload = parsed?.data && typeof parsed.data === 'object' ? parsed.data : parsed; + if (parsedBackup.error === 'invalid-backup') { + showAlert('Invalid backup', 'Backup format is not supported.'); + return; + } - if (!payload || typeof payload !== 'object' || !Array.isArray(payload.trips) || !payload.itemsByTrip || !payload.checkupsByTrip) { showAlert('Invalid backup', 'Backup format is not supported.'); return; } + const payload = parsedBackup.payload; + showConfirm({ title: 'Import backup?', message: 'This will replace all current local data.', confirmText: 'Import', tone: 'danger', onConfirm: () => { - setData({ ...emptyData, ...payload }); + setData(normalizePayloadShape({ ...emptyData, ...payload })); setBackupModalVisible(false); setBackupImportText(''); showAlert('Imported', 'Backup data was restored.'); @@ -905,25 +1043,25 @@ export default function AppRoot() { if (!appReady) { return ( - + - - 🧳 - Packing your list... - - + + 🧳 + Packing your list... + + - {Math.round(fakeLoadProgress * 100)}% + {Math.round(fakeLoadProgress * 100)}% ); } return ( - + - + @@ -1030,6 +1169,8 @@ export default function AppRoot() { exportJson={buildBackupJson()} importJson={backupImportText} setImportJson={setBackupImportText} + exportFile={exportBackupFile} + importFile={pickBackupImportFile} applyImport={applyBackupImport} /> diff --git a/src/components/AppDialogModal.js b/src/components/AppDialogModal.js index 1546945..34b20fe 100644 --- a/src/components/AppDialogModal.js +++ b/src/components/AppDialogModal.js @@ -1,6 +1,8 @@ import React from 'react'; import { Modal, Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; export default function AppDialogModal({ visible, title, message, buttons = [], onClose }) { if (!visible) return null; @@ -8,27 +10,34 @@ export default function AppDialogModal({ visible, title, message, buttons = [], const safeButtons = buttons.length ? buttons : [{ text: 'OK' }]; return ( - - - - {title || 'Notice'} - {!!message ? {message} : null} + + + + + + {title || 'Notice'} + + {!!message ? {message} : null} - + {safeButtons.map((button, idx) => { const tone = button.tone || (button.style === 'destructive' ? 'danger' : button.style === 'cancel' ? 'neutral' : 'primary'); + const icon = tone === 'danger' ? 'warning-outline' : tone === 'neutral' ? 'close-outline' : 'checkmark-outline'; return ( - {button.text || 'OK'} + + + {button.text || 'OK'} + ); })} diff --git a/src/components/BottomTab.js b/src/components/BottomTab.js index 45ff03d..9494988 100644 --- a/src/components/BottomTab.js +++ b/src/components/BottomTab.js @@ -2,13 +2,14 @@ import React from 'react'; import { Pressable, Text, View } from 'react-native'; import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; function TabBtn({ tab, current, onChange }) { const active = current === tab.key; return ( - onChange(tab.key)} style={styles.tabItem}> + onChange(tab.key)} className={styles.tabItem}> - {tab.label} + {tab.label} ); } @@ -25,23 +26,23 @@ export default function BottomTab({ current, onChange, onAddItem, canAddItem }) ]; return ( - - - + + + {leftTabs.map((tab) => ( ))} - + {rightTabs.map((tab) => ( ))} diff --git a/src/components/ChipGroup.js b/src/components/ChipGroup.js index 328686c..5f4a91e 100644 --- a/src/components/ChipGroup.js +++ b/src/components/ChipGroup.js @@ -1,15 +1,16 @@ import React from 'react'; import { Pressable, Text, View } from 'react-native'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; export default function ChipGroup({ options, value, onChange }) { return ( - + {options.map((option) => { const active = value === option; return ( - onChange(option)}> - {option} + onChange(option)}> + {option} ); })} diff --git a/src/components/DatePickerModal.js b/src/components/DatePickerModal.js index e19fb65..583d6c1 100644 --- a/src/components/DatePickerModal.js +++ b/src/components/DatePickerModal.js @@ -1,6 +1,8 @@ import React, { useMemo, useState } from 'react'; import { Modal, Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; import { todayYMD } from '../utils/date'; const WEEKDAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; @@ -48,40 +50,48 @@ export default function DatePickerModal({ visible, value, onClose, onSelect, tit }; return ( - - - - - {title} - - Close + + + + + + + + + {title} + + + + + Close + - - goMonth(-1)}> - + + goMonth(-1)}> + - {monthLabel(viewDate)} - goMonth(1)}> - + {monthLabel(viewDate)} + goMonth(1)}> + - + {WEEKDAYS.map((w) => ( - {w} + {w} ))} - + {grid.map((cell, idx) => { - if (!cell) return ; + if (!cell) return ; const ymd = toYMD(cell); const isSelected = ymd === selected; return ( - onSelect(ymd)}> - {cell.getDate()} + onSelect(ymd)}> + {cell.getDate()} ); })} diff --git a/src/components/Field.js b/src/components/Field.js index 7f27813..bfca5fc 100644 --- a/src/components/Field.js +++ b/src/components/Field.js @@ -1,11 +1,15 @@ import React from 'react'; import { Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; -export default function Field({ label, children }) { +export default function Field({ label, icon, children }) { return ( - - {label} + + + {icon ? : null} + {label} + {children} ); diff --git a/src/components/ItemCard.js b/src/components/ItemCard.js index 9a219a7..0e984de 100644 --- a/src/components/ItemCard.js +++ b/src/components/ItemCard.js @@ -1,8 +1,10 @@ import React from 'react'; import { Image, Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { STATUS_COLORS } from '../constants'; import { styles } from '../styles'; -import { formatStatusLabel } from '../utils/labels'; +import { cn } from '../utils/cn'; +import { formatStatusLabel, normalizeQuantity } from '../utils/labels'; function statusAccent(status) { return STATUS_COLORS[status] || '#64748b'; @@ -11,48 +13,81 @@ function statusAccent(status) { export default function ItemCard({ item, onEdit, onDelete, onQuickPack, onQuickUnpack, onOpenImage }) { const isPacked = item.status === 'packed'; const isUnpacked = item.status === 'unpacked'; + const quantity = normalizeQuantity(item.quantity, 1); return ( - - + + - + {item.imageUri ? ( onOpenImage?.(item.imageUri)}> - + ) : ( - - 🧳 + + )} - - - - {item.name} - {item.category || 'uncategorized'} · {formatStatusLabel(item.status, item.lentTo)} - Location: {item.placement} - {item.status === 'lent-to' && !!item.lentTo ? Borrower: {item.lentTo} : null} - {!!item.description ? {item.description} : null} + + + + {item.name} + + + Qty: {quantity} + + + + {item.category || 'uncategorized'} · {formatStatusLabel(item.status, item.lentTo)} + + + + Location: {item.placement} + + {item.status === 'lent-to' && !!item.lentTo ? ( + + + Borrower: {item.lentTo} + + ) : null} + {!!item.description ? ( + + + {item.description} + + ) : null} - - onEdit(item)}> - Edit + + onEdit(item)}> + + + Edit + - onDelete(item.id)}> - Delete + onDelete(item.id)}> + + + Delete + - - - Packed + + + + + Packed + - - Unpacked + + + + Unpacked + diff --git a/src/components/TripPicker.js b/src/components/TripPicker.js index 19ec7bd..dec6ec3 100644 --- a/src/components/TripPicker.js +++ b/src/components/TripPicker.js @@ -1,28 +1,91 @@ import React from 'react'; -import { Pressable, ScrollView, Text, View } from 'react-native'; +import { Pressable, ScrollView, Text, View, useWindowDimensions } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; export default function TripPicker({ trips, selectedTripId, onChooseTrip }) { + const { width } = useWindowDimensions(); + const sortedTrips = trips.slice().sort((a, b) => b.startDate.localeCompare(a.startDate)); + const useHorizontalScroll = sortedTrips.length > 2; + const extraTripCount = Math.max(0, sortedTrips.length - 2); + const scrollCardWidth = Math.max(152, Math.floor((width - 32) * 0.46)); + return ( - - - {trips.length ? ( - trips - .slice() - .sort((a, b) => b.startDate.localeCompare(a.startDate)) - .map((trip) => { + + + + + Choose Trip + + {useHorizontalScroll ? +{extraTripCount} more : null} + + + {trips.length ? ( + useHorizontalScroll ? ( + <> + + {sortedTrips.map((trip) => { + const active = selectedTripId === trip.id; + return ( + onChooseTrip(trip.id)} + > + + + + {trip.name} + + {active ? : null} + + {trip.startDate} + + ); + })} + + + + + Swipe to see {extraTripCount} more + + + ) : ( + + {sortedTrips.map((trip) => { const active = selectedTripId === trip.id; return ( - onChooseTrip(trip.id)}> - {trip.name} - {trip.startDate} + onChooseTrip(trip.id)} + > + + + + {trip.name} + + {active ? : null} + + {trip.startDate} ); - }) - ) : ( - Create your first trip to start. - )} - + })} + + ) + ) : ( + + Create your first trip to start. + + )} ); } diff --git a/src/modals/BackupModal.js b/src/modals/BackupModal.js index 62cdfe2..c6220ac 100644 --- a/src/modals/BackupModal.js +++ b/src/modals/BackupModal.js @@ -1,6 +1,8 @@ -import React from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import { KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, Text, TextInput, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; export default function BackupModal({ visible, @@ -8,42 +10,149 @@ export default function BackupModal({ exportJson, importJson, setImportJson, + exportFile, + importFile, applyImport, }) { + const exportInputRef = useRef(null); + const [showExportJson, setShowExportJson] = useState(false); + const [copyState, setCopyState] = useState('idle'); + + useEffect(() => { + if (!visible) return; + setShowExportJson(false); + setCopyState('idle'); + }, [visible]); + + useEffect(() => { + if (copyState !== 'copied') return undefined; + const timeout = setTimeout(() => setCopyState('idle'), 1400); + return () => clearTimeout(timeout); + }, [copyState]); + + async function handleCopyData() { + if (Platform.OS === 'web' && typeof navigator !== 'undefined' && navigator.clipboard?.writeText) { + try { + await navigator.clipboard.writeText(exportJson); + setCopyState('copied'); + return; + } catch { + // fall through to manual copy fallback + } + } + + setShowExportJson(true); + setCopyState('manual'); + + if (Platform.OS === 'android') { + return; + } + + requestAnimationFrame(() => { + exportInputRef.current?.focus?.(); + if (exportInputRef.current?.setNativeProps) { + exportInputRef.current.setNativeProps({ + selection: { start: 0, end: exportJson.length }, + }); + } + }); + } + return ( - - - - - - Backup & Restore - - Close + + + + + + + + + + Backup & Restore + + + + + Close + - - Export JSON - Copy this JSON and store it safely. - - Import JSON - Paste a previous backup. This will replace current data. + + + + Export JSON + + Use Show JSON or Copy Data. + + + setShowExportJson((prev) => !prev)}> + + + {showExportJson ? 'Hide JSON' : 'Show JSON'} + + + + + + + {copyState === 'copied' ? 'Copied' : 'Copy Data'} + + + + + + + + Export File + + + + {copyState === 'manual' ? ( + Direct clipboard is unavailable here. JSON is shown for manual copy. + ) : null} + + {showExportJson ? ( + Platform.OS === 'android' ? ( + + {exportJson} + + ) : ( + + ) + ) : null} + + + + Import JSON + + Paste a previous backup. This will replace current data. + + + + Pick Backup File + + - - Import & Replace + + + + Import & Replace + diff --git a/src/modals/CheckupFixModal.js b/src/modals/CheckupFixModal.js index bde1c59..6d86616 100644 --- a/src/modals/CheckupFixModal.js +++ b/src/modals/CheckupFixModal.js @@ -1,5 +1,6 @@ import React from 'react'; import { KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, Text, TextInput, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { ITEM_PLACEMENTS, ITEM_STATUSES } from '../constants'; import ChipGroup from '../components/ChipGroup'; import Field from '../components/Field'; @@ -14,23 +15,31 @@ export default function CheckupFixModal({ }) { return ( - - - - - Update for this Check-Up - setCheckupFixModalVisible(false)}> - Close + + + + + + + + + Update for this Check-Up + + setCheckupFixModalVisible(false)}> + + + Close + - + - + {checkupFixForm.status === 'lent-to' ? ( - + setCheckupFixForm((prev) => ({ ...prev, lentTo: v }))} placeholder="Person name" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" /> ) : null} setCheckupFixForm((prev) => ({ ...prev, updateMasterList: !prev.updateMasterList }))} > - - {checkupFixForm.updateMasterList ? '☑' : '☐'} Also update item in trip list - + + + Also update item in trip list + - - Save + + + + Save + diff --git a/src/modals/CheckupFlowModal.js b/src/modals/CheckupFlowModal.js index 0616c25..160089d 100644 --- a/src/modals/CheckupFlowModal.js +++ b/src/modals/CheckupFlowModal.js @@ -1,10 +1,12 @@ import React from 'react'; import { KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, Text, TextInput, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { ITEM_PLACEMENTS, ITEM_STATUSES } from '../constants'; import ChipGroup from '../components/ChipGroup'; import Field from '../components/Field'; import { styles } from '../styles'; -import { formatStatusLabel } from '../utils/labels'; +import { cn } from '../utils/cn'; +import { formatItemLabel, formatStatusLabel } from '../utils/labels'; export default function CheckupFlowModal({ visible, @@ -26,26 +28,40 @@ export default function CheckupFlowModal({ return ( - - - - - Check-Up - - Close + + + + + + + + + Check-Up + + + + + Close + {finished ? ( - - Done. Save this snapshot? - All {total} items were checked. - - - Back + + Done. Save this snapshot? + All {total} items were checked. + + + + + Back + - - Save Snapshot + + + + Save Snapshot + @@ -53,41 +69,59 @@ export default function CheckupFlowModal({ - + Item {stepIndex + 1} / {total} - - + + + + {formatItemLabel(entry.name, entry.quantity)} + + + {entry.category || 'uncategorized'} + + + + + Current: {formatStatusLabel(entry.current.status, entry.current.lentTo)} · {entry.current.placement} + - {entry.name} - {entry.category || 'uncategorized'} - - Current: {formatStatusLabel(entry.current.status, entry.current.lentTo)} · {entry.current.placement} - {mode === 'question' ? ( - - - - Back + + + + + + Back + - - Skip + + + + Skip + - - Yes, correct + + + + Yes, correct + - - No, update + + + + No, update + ) : ( - - + + - + {noForm.placement === 'other' ? ( - + setNoForm((prev) => ({ ...prev, placementCustom: v }))} placeholder="bath-kit" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" /> ) : null} {noForm.status === 'lent-to' ? ( - + setNoForm((prev) => ({ ...prev, lentTo: v }))} placeholder="Person name" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" /> ) : null} setNoForm((prev) => ({ ...prev, updateMasterList: !prev.updateMasterList }))} > - - {noForm.updateMasterList ? '☑' : '☐'} Also update item in trip list - + + + Also update item in trip list + - - - Back + + + + + Back + - - Save + Next + + + + Save + Next + diff --git a/src/modals/ItemModal.js b/src/modals/ItemModal.js index 1284457..1b627b1 100644 --- a/src/modals/ItemModal.js +++ b/src/modals/ItemModal.js @@ -1,9 +1,72 @@ -import React from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import { Image, KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, Text, TextInput, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { ITEM_PLACEMENTS, ITEM_STATUSES } from '../constants'; -import ChipGroup from '../components/ChipGroup'; import Field from '../components/Field'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; + +const CATEGORY_OPTIONS = ['toiletries', 'electronics', 'documents', 'outfits', 'accessories', 'other']; +const PRESET_CATEGORIES = CATEGORY_OPTIONS.filter((option) => option !== 'other'); +const IMAGE_QUALITY_OPTIONS = ['low', 'balanced', 'high']; + +function normalizeValue(value) { + return (value || '').trim().toLowerCase(); +} + +function optionLabel(value) { + return (value || '').replace(/-/g, ' '); +} + +function SelectField({ value, placeholder, onPress }) { + return ( + + {value ? optionLabel(value) : placeholder} + + + ); +} + +function SelectPopupModal({ visible, title, options, value, onSelect, onClose }) { + if (!visible) return null; + + return ( + + + + + + + {title} + + + + Close + + + + + + {options.map((option, index) => { + const active = value === option; + const isLast = index === options.length - 1; + return ( + onSelect(option)} + > + {optionLabel(option)} + + + ); + })} + + + + + ); +} function qualityValue(level) { if (level === 'high') return 0.95; @@ -21,131 +84,343 @@ export default function ItemModal({ takeItemImage, saveItemFromModal, }) { + const [categoryCustomMode, setCategoryCustomMode] = useState(false); + const [placementCustomMode, setPlacementCustomMode] = useState(false); + const [openPicker, setOpenPicker] = useState(null); + const nameInputRef = useRef(null); + const quantityInputRef = useRef(null); + const descriptionInputRef = useRef(null); + const lentToInputRef = useRef(null); + + useEffect(() => { + if (!visible) { + setOpenPicker(null); + return; + } + + const normalizedCategory = normalizeValue(itemForm.category); + const customCategory = !!normalizedCategory && !PRESET_CATEGORIES.includes(normalizedCategory); + setCategoryCustomMode(customCategory); + setPlacementCustomMode(itemForm.placement === 'other'); + setOpenPicker(null); + }, [visible, itemForm.id]); + + useEffect(() => { + if (!visible || itemForm.id) return undefined; + + const timeout = setTimeout(() => { + nameInputRef.current?.focus?.(); + }, 80); + + return () => clearTimeout(timeout); + }, [visible, itemForm.id]); + const mediaOptions = { quality: qualityValue(itemForm.imageQuality), allowCrop: !!itemForm.imageAllowCrop, }; + const normalizedCategory = normalizeValue(itemForm.category); + const categorySelectValue = PRESET_CATEGORIES.includes(normalizedCategory) ? normalizedCategory : ''; + const savedPlacementOptions = (previousCustomPlacements || []).slice(0, 6); + const savedPlacementValue = savedPlacementOptions.includes(itemForm.placementCustom) ? itemForm.placementCustom : ''; + + const pickerConfig = { + category: { + title: 'Select category', + options: CATEGORY_OPTIONS, + value: categorySelectValue, + onSelect: chooseCategory, + }, + status: { + title: 'Select status', + options: ITEM_STATUSES, + value: itemForm.status, + onSelect: chooseStatus, + }, + placement: { + title: 'Select placement', + options: ITEM_PLACEMENTS, + value: itemForm.placement, + onSelect: choosePlacement, + }, + savedPlacement: { + title: 'Saved custom locations', + options: savedPlacementOptions, + value: savedPlacementValue, + onSelect: chooseSavedPlacement, + }, + imageQuality: { + title: 'Image quality', + options: IMAGE_QUALITY_OPTIONS, + value: itemForm.imageQuality, + onSelect: chooseImageQuality, + }, + }; + + const activePicker = openPicker ? pickerConfig[openPicker] : null; + + function chooseCategory(value) { + if (value === 'other') { + setCategoryCustomMode(true); + if (PRESET_CATEGORIES.includes(normalizedCategory)) { + updateItemForm('category', ''); + } + setOpenPicker(null); + return; + } + + setCategoryCustomMode(false); + updateItemForm('category', value); + setOpenPicker(null); + } + + function chooseStatus(value) { + updateItemForm('status', value); + setOpenPicker(null); + } + + function choosePlacement(value) { + if (value === 'other') { + setPlacementCustomMode(true); + updateItemForm('placement', 'other'); + setOpenPicker(null); + return; + } + + setPlacementCustomMode(false); + updateItemForm('placement', value); + setOpenPicker(null); + } + + function chooseSavedPlacement(value) { + updateItemForm('placementCustom', value); + setOpenPicker(null); + } + + function chooseImageQuality(value) { + updateItemForm('imageQuality', value); + setOpenPicker(null); + } + + function resetCategorySelector() { + setCategoryCustomMode(false); + updateItemForm('category', ''); + setOpenPicker(null); + } + + function resetPlacementSelector() { + setPlacementCustomMode(false); + updateItemForm('placement', ITEM_PLACEMENTS[0] || 'suitcase'); + setOpenPicker(null); + } + return ( - - - - - - {itemForm.id ? 'Update Item' : 'Add Item'} - setItemModalVisible(false)}> - Close + + + + + + + + + + {itemForm.id ? 'Update Item' : 'Add Item'} + + setItemModalVisible(false)}> + + + Close + - + updateItemForm('name', v)} placeholder="Toothbrush" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" + returnKeyType="next" + blurOnSubmit={false} + onSubmitEditing={() => quantityInputRef.current?.focus?.()} /> - + { + const numeric = (v || '').replace(/[^0-9]/g, ''); + updateItemForm('quantity', numeric ? Math.max(1, Number.parseInt(numeric, 10)) : 1); + }} + placeholder="1" + placeholderTextColor="#71717a" + keyboardType="number-pad" + returnKeyType="next" + blurOnSubmit={false} + onSubmitEditing={() => descriptionInputRef.current?.focus?.()} + /> + + + + updateItemForm('description', v)} placeholder="Optional" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" + returnKeyType={itemForm.status === 'lent-to' ? 'next' : 'done'} + onSubmitEditing={() => { + if (itemForm.status === 'lent-to') { + lentToInputRef.current?.focus?.(); + } + }} /> - - updateItemForm('category', v)} - placeholder="toiletries" - placeholderTextColor="#6b7280" - /> - - - - updateItemForm('status', v)} /> - - - - updateItemForm('placement', v)} /> - - - {itemForm.placement === 'other' ? ( - - updateItemForm('placementCustom', v)} - placeholder="bath-kit" - placeholderTextColor="#6b7280" + + {categoryCustomMode ? ( + + updateItemForm('category', v)} + placeholder="Custom category" + placeholderTextColor="#71717a" + /> + + + + + ) : ( + setOpenPicker('category')} /> - {previousCustomPlacements?.length ? ( - - {previousCustomPlacements.slice(0, 6).map((location) => ( - updateItemForm('placementCustom', location)}> - {location} - - ))} + )} + + + + setOpenPicker('status')} + /> + + + + {placementCustomMode ? ( + + + updateItemForm('placementCustom', v)} + placeholder="bath-kit" + placeholderTextColor="#71717a" + /> + + + - ) : null} - - ) : null} + Custom location + + {savedPlacementOptions.length ? ( + setOpenPicker('savedPlacement')} + /> + ) : null} + + ) : ( + setOpenPicker('placement')} + /> + )} + {itemForm.status === 'lent-to' ? ( - + updateItemForm('lentTo', v)} placeholder="Person name" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" + returnKeyType="done" /> ) : null} - - - {['low', 'balanced', 'high'].map((level) => { - const active = itemForm.imageQuality === level; - return ( - updateItemForm('imageQuality', level)}> - {level} - - ); - })} - - - - updateItemForm('imageAllowCrop', !itemForm.imageAllowCrop)}> - {itemForm.imageAllowCrop ? '☑' : '☐'} Enable optional crop before save - - - - takeItemImage(mediaOptions)}> - Take photo + + takeItemImage(mediaOptions)}> + + + Take photo + - pickItemImage(mediaOptions)}> - {itemForm.imageUri ? 'From gallery (change)' : 'From gallery'} + pickItemImage(mediaOptions)}> + + + {itemForm.imageUri ? 'From gallery (change)' : 'From gallery'} + - {!!itemForm.imageUri && } - - {itemForm.id ? 'Save Changes' : 'Add Item'} + {!!itemForm.imageUri ? ( + <> + + + + setOpenPicker('imageQuality')} + /> + + + updateItemForm('imageAllowCrop', !itemForm.imageAllowCrop)}> + + + Enable optional crop before save + + + + ) : null} + + + + + {itemForm.id ? 'Save Changes' : 'Add Item'} + + + activePicker?.onSelect?.(value)} + onClose={() => setOpenPicker(null)} + /> diff --git a/src/styles.js b/src/styles.js index aadf4bd..76201d3 100644 --- a/src/styles.js +++ b/src/styles.js @@ -1,755 +1,244 @@ -import { Platform, StyleSheet } from 'react-native'; +import { Platform } from 'react-native'; import { TAB_BAR_HEIGHT } from './constants'; -export const styles = StyleSheet.create({ - safe: { - flex: 1, - backgroundColor: '#090d12', - }, - flex: { - flex: 1, - }, +export const styles = { + safe: 'flex-1 bg-[#09090b]', + flex: 'flex-1', content: { - paddingHorizontal: 14, - paddingTop: 10, - paddingBottom: TAB_BAR_HEIGHT + 20, - gap: 10, - }, - statusSpacer: { - height: Platform.OS === 'android' ? 8 : 0, - }, - center: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - }, - muted: { - color: '#8793a5', - }, - loadingEmoji: { - fontSize: 52, - marginBottom: 8, - }, - loadingTitle: { - color: '#f8fafc', - fontWeight: '700', - fontSize: 17, - marginBottom: 10, - }, - loadingBarTrack: { - width: 220, - height: 10, - borderRadius: 999, - backgroundColor: '#1e293b', - overflow: 'hidden', - marginBottom: 8, - }, - loadingBarFill: { - height: '100%', - backgroundColor: '#2563eb', + paddingHorizontal: 16, + paddingTop: 14, + paddingBottom: TAB_BAR_HEIGHT + 24, + gap: 18, }, + statusSpacer: Platform.OS === 'android' ? 'h-2' : 'h-0', + center: 'flex-1 items-center justify-center', + muted: 'text-[#a1a1aa] text-sm leading-5', + loadingEmoji: 'text-[56px] mb-3', + loadingTitle: 'text-[#fafafa] font-black text-[22px] mb-3', + loadingBarTrack: 'w-[178px] h-[8px] rounded-full bg-[#1f1f23] border border-[#2f2f35] overflow-hidden mb-2', + loadingBarFill: 'h-full rounded-full bg-[#3b82f6]', + loadingPercent: 'text-[#a1a1aa] text-xs font-semibold tracking-[0.4px]', - tripPickerWrap: { - marginBottom: 6, - }, - tripChipScroll: { - gap: 8, - paddingRight: 12, - }, - tripChip: { - paddingHorizontal: 12, - paddingVertical: 9, - borderRadius: 12, - backgroundColor: '#121923', - borderWidth: 1, - borderColor: '#1f2937', - minWidth: 120, - }, - tripChipActive: { - backgroundColor: '#1d2a3a', - borderColor: '#60a5fa', - }, - tripChipText: { - color: '#e2e8f0', - fontWeight: '700', - }, - tripChipTextActive: { - color: '#bfdbfe', - }, - tripChipSub: { - color: '#64748b', - fontSize: 12, - marginTop: 2, - }, - tripChipSubActive: { - color: '#93c5fd', - }, + screenHero: 'rounded-xl bg-[#18181b] border border-[#27272a] p-5 gap-2 shadow-md', + screenHeroTop: 'flex-row items-center justify-between gap-3', + screenHeroTitle: 'text-[#fafafa] text-[26px] leading-[30px] font-black tracking-tight', + screenHeroSubtitle: 'text-[#a1a1aa] text-[13px] leading-[18px]', + screenHeroBadge: 'px-3 py-1.5 rounded-lg bg-[#27272a]', + screenHeroBadgeText: 'text-[#d4d4d8] text-xs font-semibold', - section: { - gap: 10, - }, - sectionTitle: { - color: '#f1f5f9', - fontSize: 18, - fontWeight: '700', - }, - sectionRow: { + sectionHeader: 'flex-row items-center justify-between gap-3', + sectionHeaderLeft: 'flex-row items-center gap-2', + sectionHeaderIconWrap: 'w-7 h-7 rounded-lg bg-[#27272a] items-center justify-center', + sectionSubtle: 'text-[#a1a1aa] text-sm leading-5', + + tripPickerWrap: 'gap-2', + tripPickerTitle: 'text-[#d4d4d8] text-sm font-semibold', + tripPickerMoreBadge: 'text-[#93c5fd] text-xs font-semibold px-2 py-1 rounded-lg bg-[#172338] border border-[#1e3a5f]', + tripPickerGrid: { flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', + flexWrap: 'wrap', gap: 10, }, - - card: { - backgroundColor: '#111827', - borderRadius: 16, - borderWidth: 1, - borderColor: '#1f2937', - padding: 10, - gap: 6, + tripPickerScrollRow: { + gap: 10, + paddingRight: 4, }, - cardActive: { - borderColor: '#60a5fa', + tripPickerMoreHintRow: 'flex-row items-center gap-1.5 px-1', + tripPickerMoreHintText: 'text-[#94a3b8] text-xs font-medium', + tripChipGridItem: { + width: '48.5%', }, - cardArchived: { - opacity: 0.72, - borderColor: '#374151', - }, - cardSoft: { - backgroundColor: '#0f172a', - borderRadius: 16, - borderWidth: 1, - borderColor: '#1e293b', - padding: 10, - gap: 8, - }, - cardRow: { - flexDirection: 'row', - gap: 8, - }, - cardTitle: { - color: '#f8fafc', - fontWeight: '700', - fontSize: 15, - }, - cardMeta: { - color: '#94a3b8', - marginTop: 2, - fontSize: 12, - }, - tripHistoryLabel: { - color: '#93c5fd', - fontSize: 13, - marginTop: -2, - marginBottom: 2, - }, - tripHeroCard: { - backgroundColor: '#0f172a', - borderRadius: 18, - borderWidth: 1, - borderColor: '#334155', - padding: 10, - gap: 6, - }, - tripHeroImage: { + tripChipSingle: { width: '100%', - height: 180, - borderRadius: 12, - backgroundColor: '#111827', - }, - tripHeroTitle: { - color: '#f8fafc', - fontWeight: '800', - fontSize: 20, - }, - tripListTitle: { - color: '#cbd5e1', - fontWeight: '700', - fontSize: 13, - letterSpacing: 0.4, - textTransform: 'uppercase', }, + tripChip: 'px-3.5 py-3.5 rounded-xl bg-[#18181b] border border-[#27272a] gap-1 shadow-md', + tripChipActive: 'bg-[#1e293b] border-[#60a5fa]', + tripChipText: 'text-[#f4f4f5] font-semibold text-base', + tripChipTextActive: 'text-[#f8fafc]', + tripChipSub: 'text-[#a1a1aa] text-xs', + tripChipSubActive: 'text-[#cbd5e1]', - fieldWrap: { - gap: 6, - }, - label: { - color: '#cbd5e1', - fontWeight: '600', - }, - input: { - borderWidth: 1, - borderColor: '#243244', - borderRadius: 10, - backgroundColor: '#0b1220', - color: '#e5e7eb', - paddingHorizontal: 10, - paddingVertical: 11, - }, + section: 'gap-5', + sectionTitle: 'text-[#f4f4f5] text-[22px] leading-7 font-black tracking-tight', + sectionRow: 'flex-row justify-between items-center gap-3', + + card: 'bg-[#18181b] rounded-xl border border-[#27272a] p-4 gap-3 shadow-md', + cardActive: 'border-[#60a5fa]', + cardArchived: 'opacity-[0.7] border-[#3f3f46]', + cardSoft: 'bg-[#111114] rounded-xl border border-[#27272a] p-4 gap-3 shadow-md', + cardRow: 'flex-row gap-3 items-start', + cardTitle: 'text-[#fafafa] font-bold text-[17px] leading-6', + cardMeta: 'text-[#a1a1aa] text-[13px] leading-[18px]', + tripHistoryLabel: 'text-[#93c5fd] text-sm font-medium', + tripHeroCard: 'bg-[#18181b] rounded-xl border border-[#27272a] p-5 gap-2 shadow-md', + tripHeroImage: 'w-full h-[180px] rounded-xl bg-[#111114]', + tripHeroTitle: 'text-[#fafafa] font-black text-[22px] leading-7', + tripListTitle: 'text-[#d4d4d8] font-semibold text-sm tracking-[0.5px] uppercase', + + fieldWrap: 'gap-1.5', + labelRow: 'flex-row items-center gap-2', + label: 'text-[#d4d4d8] font-medium text-sm', + input: 'border border-[#3f3f46] rounded-xl bg-[#111114] text-[#f4f4f5] px-3.5 py-3', + selectCustomRow: 'flex-row items-center gap-2', + selectCustomResetBtn: 'w-11 h-11 rounded-xl bg-[#27272a] border border-[#3f3f46] items-center justify-center', inputMultiline: { borderWidth: 1, - borderColor: '#243244', - borderRadius: 10, - backgroundColor: '#0b1220', - color: '#e5e7eb', - paddingHorizontal: 10, + borderColor: '#3f3f46', + borderRadius: 12, + backgroundColor: '#111114', + color: '#f4f4f5', + paddingHorizontal: 12, paddingVertical: 10, minHeight: 150, textAlignVertical: 'top', - fontSize: 12, + fontSize: 13, fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', }, - dateInput: { + exportJsonBlock: { borderWidth: 1, - borderColor: '#29415e', - borderRadius: 10, - backgroundColor: '#0b1220', + borderColor: '#3f3f46', + borderRadius: 12, + backgroundColor: '#111114', paddingHorizontal: 12, - paddingVertical: 12, + paddingVertical: 10, + minHeight: 150, }, - dateInputText: { - color: '#dbeafe', - fontWeight: '600', + exportJsonText: { + color: '#f4f4f5', + fontSize: 13, + lineHeight: 18, + fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace', }, + dateInput: 'border border-[#3f3f46] rounded-xl bg-[#111114] px-3.5 py-3', + dateInputText: 'text-[#e4e4e7] font-medium', - chipGroup: { - flexDirection: 'row', - flexWrap: 'wrap', - gap: 7, - }, - chip: { - borderRadius: 999, - paddingHorizontal: 11, - paddingVertical: 7, - borderWidth: 1, - borderColor: '#273449', - backgroundColor: '#0b1220', - }, - chipActive: { - borderColor: '#60a5fa', - backgroundColor: '#172338', - }, - chipText: { - color: '#cbd5e1', - fontWeight: '600', - fontSize: 12, - }, - chipTextActive: { - color: '#bfdbfe', - }, + chipGroup: 'flex-row flex-wrap gap-2', + chip: 'rounded-xl px-3 py-2 border border-[#3f3f46] bg-[#111114]', + chipActive: 'border-[#60a5fa] bg-[#172338]', + chipText: 'text-[#d4d4d8] font-medium text-xs', + chipTextActive: 'text-[#e0f2fe]', + selectTrigger: 'rounded-xl border border-[#3f3f46] bg-[#111114] px-3.5 py-3 flex-row items-center justify-between', + selectTriggerText: 'text-[#e4e4e7] text-sm font-medium', + selectTriggerPlaceholder: 'text-[#71717a] font-normal', + selectModalBackdrop: 'absolute inset-0 justify-center px-5', + selectModalBackdropHit: 'absolute inset-0 bg-[rgba(9,9,11,0.76)]', + selectModalCard: 'bg-[#18181b] rounded-xl border border-[#27272a] p-4 gap-3 shadow-md', + selectMenu: 'rounded-xl border border-[#3f3f46] bg-[#111114] overflow-hidden', + selectMenuItem: 'px-3.5 py-3 flex-row items-center justify-between border-b border-[#27272a]', + selectMenuItemLast: 'border-b-0', + selectMenuItemActive: 'bg-[#172338]', + selectMenuItemText: 'text-[#d4d4d8] text-sm font-medium', + selectMenuItemTextActive: 'text-[#e0f2fe]', - primaryBtn: { - marginTop: 4, - borderRadius: 10, - backgroundColor: '#2563eb', - alignItems: 'center', - paddingVertical: 11, - paddingHorizontal: 12, - }, - primaryBtnTight: { - borderRadius: 10, - backgroundColor: '#2563eb', - alignItems: 'center', - paddingVertical: 8, - paddingHorizontal: 12, - }, - primaryBtnText: { - color: '#fff', - fontWeight: '700', - }, - secondaryBtn: { - marginTop: 4, - borderRadius: 10, - backgroundColor: '#1f2937', - alignItems: 'center', - paddingVertical: 11, - paddingHorizontal: 12, - }, - secondaryBtnTight: { - borderRadius: 10, - backgroundColor: '#1f2937', - alignItems: 'center', - paddingVertical: 8, - paddingHorizontal: 12, - }, - secondaryBtnText: { - color: '#dbeafe', - fontWeight: '700', - }, - actionRow: { - flexDirection: 'row', - gap: 8, - marginTop: 4, - }, + primaryBtn: 'mt-2 rounded-xl bg-[#2563eb] items-center justify-center py-3 px-3.5 w-full', + primaryBtnTight: 'rounded-xl bg-[#2563eb] items-center justify-center py-2.5 px-3.5', + primaryBtnText: 'text-white font-semibold text-sm', + secondaryBtn: 'mt-2 rounded-xl bg-[#27272a] border border-[#3f3f46] items-center justify-center py-3 px-3.5 w-full', + secondaryBtnTight: 'rounded-xl bg-[#27272a] border border-[#3f3f46] items-center justify-center py-2.5 px-3.5', + secondaryBtnText: 'text-[#f4f4f5] font-semibold text-sm', + actionRow: 'flex-row gap-2 mt-2', + actionRowInline: 'flex-row gap-2', + buttonContent: 'flex-row items-center justify-center gap-2', - inlineToggle: { - marginTop: 2, - }, - inlineToggleText: { - color: '#cbd5e1', - }, + inlineToggle: 'mt-1 rounded-xl bg-[#111114] border border-[#3f3f46] px-3.5 py-2.5', + inlineToggleText: 'text-[#d4d4d8] text-sm', - stackButtons: { - gap: 6, - }, - miniBtn: { - backgroundColor: '#1e293b', - borderRadius: 8, - paddingVertical: 6, - paddingHorizontal: 9, - }, - miniBtnDanger: { - backgroundColor: '#3b1d22', - borderRadius: 8, - paddingVertical: 6, - paddingHorizontal: 9, - }, - miniBtnText: { - color: '#e2e8f0', - fontWeight: '700', - fontSize: 12, - }, + stackButtons: 'gap-2', + miniBtn: 'bg-[#27272a] border border-[#3f3f46] rounded-xl py-2 px-2.5', + miniBtnDanger: 'bg-[#3f1d1d] border border-[#7f1d1d] rounded-xl py-2 px-2.5', + miniBtnText: 'text-[#f4f4f5] font-semibold text-xs', - itemCard: { - borderRadius: 16, - backgroundColor: '#111827', - borderWidth: 1, - borderColor: '#1f2937', - overflow: 'hidden', - flexDirection: 'row', - alignItems: 'flex-start', - }, - itemAccent: { - width: 5, - alignSelf: 'stretch', - }, - itemThumbWrap: { - paddingTop: 8, - paddingLeft: 8, - }, - itemThumbSmall: { - width: 42, - height: 42, - borderRadius: 8, - backgroundColor: '#0b1220', - }, - itemThumbPlaceholder: { - width: 42, - height: 42, - borderRadius: 8, - backgroundColor: '#0b1220', - alignItems: 'center', - justifyContent: 'center', - borderWidth: 1, - borderColor: '#243244', - }, - itemThumbPlaceholderText: { - fontSize: 16, - }, - itemMain: { - flex: 1, - padding: 8, - gap: 6, - }, - itemTitle: { - color: '#f8fafc', - fontWeight: '700', - fontSize: 15, - }, - itemMeta: { - color: '#94a3b8', - marginTop: 1, - fontSize: 12, - }, - quickStatusRow: { - flexDirection: 'row', - gap: 6, - marginTop: 1, - }, - quickStatusBtn: { - paddingVertical: 5, - paddingHorizontal: 10, - borderRadius: 999, - borderWidth: 1, - borderColor: '#334155', - backgroundColor: '#0b1220', - }, - quickStatusBtnActive: { - borderColor: '#60a5fa', - backgroundColor: '#1d2a3a', - }, - quickStatusBtnText: { - color: '#cbd5e1', - fontWeight: '700', - fontSize: 11, - }, - quickStatusBtnTextActive: { - color: '#dbeafe', - }, + itemCard: 'rounded-xl bg-[#18181b] border border-[#27272a] overflow-hidden flex-row items-start shadow-md', + itemAccent: 'w-[4px] self-stretch', + itemThumbWrap: 'pt-4 pl-3.5', + itemThumbSmall: 'w-[46px] h-[46px] rounded-xl bg-[#111114]', + itemThumbPlaceholder: 'w-[46px] h-[46px] rounded-xl bg-[#111114] items-center justify-center border border-[#3f3f46]', + itemThumbPlaceholderText: 'text-xl', + itemMain: 'flex-1 p-4 gap-2', + itemTitle: 'text-[#fafafa] font-semibold text-base', + itemMeta: 'text-[#a1a1aa] text-[13px] leading-[18px]', + quickStatusRow: 'flex-row gap-2 mt-1', + quickStatusBtn: 'py-1.5 px-2.5 rounded-xl border border-[#3f3f46] bg-[#111114]', + quickStatusBtnActive: 'border-[#60a5fa] bg-[#1e293b]', + quickStatusBtnText: 'text-[#d4d4d8] font-semibold text-xs', + quickStatusBtnTextActive: 'text-[#e0f2fe]', - answerRow: { - marginTop: 8, - flexDirection: 'row', - alignItems: 'center', - gap: 8, - }, - answerYes: { - backgroundColor: '#163223', - borderWidth: 1, - borderColor: '#1f7a4e', - borderRadius: 9, - paddingHorizontal: 16, - paddingVertical: 8, - }, - answerNo: { - backgroundColor: '#3b1d22', - borderWidth: 1, - borderColor: '#7f1d1d', - borderRadius: 9, - paddingHorizontal: 16, - paddingVertical: 8, - }, - answerText: { - color: '#f8fafc', - fontWeight: '700', - }, - answerRowWide: { - marginTop: 14, - gap: 10, - }, - checkupProgressTrack: { - width: '100%', - height: 8, - borderRadius: 999, - backgroundColor: '#1e293b', - overflow: 'hidden', - marginTop: 4, - marginBottom: 8, - }, - checkupProgressFill: { - height: '100%', - backgroundColor: '#2563eb', - }, - answerYesWide: { - backgroundColor: '#163223', - borderWidth: 1, - borderColor: '#1f7a4e', - borderRadius: 10, - paddingHorizontal: 16, - paddingVertical: 11, - alignItems: 'center', - }, - answerNoWide: { - backgroundColor: '#3b1d22', - borderWidth: 1, - borderColor: '#7f1d1d', - borderRadius: 10, - paddingHorizontal: 16, - paddingVertical: 11, - alignItems: 'center', - }, - answerStateDot: { - width: 10, - height: 10, - borderRadius: 99, - backgroundColor: '#475569', - }, - answerStateDotOn: { - backgroundColor: '#22c55e', - }, - answerStateDotBad: { - backgroundColor: '#ef4444', - }, + answerRow: 'mt-3 flex-row items-center gap-3', + answerYes: 'bg-[#14532d] border border-[#166534] rounded-xl px-4 py-3', + answerNo: 'bg-[#3f1d1d] border border-[#7f1d1d] rounded-xl px-4 py-3', + answerText: 'text-[#f8fafc] font-semibold', + answerRowWide: 'mt-4 gap-3', + checkupProgressTrack: 'w-full h-2 rounded-full bg-[#27272a] overflow-hidden mt-2 mb-3', + checkupProgressFill: 'h-full bg-[#2563eb]', + answerYesWide: 'bg-[#14532d] border border-[#166534] rounded-xl px-4 py-3.5 items-center', + answerNoWide: 'bg-[#3f1d1d] border border-[#7f1d1d] rounded-xl px-4 py-3.5 items-center', + answerStateDot: 'w-[10px] h-[10px] rounded-full bg-[#475569]', + answerStateDotOn: 'bg-[#22c55e]', + answerStateDotBad: 'bg-[#ef4444]', - statsRow: { - flexDirection: 'row', - gap: 8, - flexWrap: 'wrap', - }, - statPill: { - borderRadius: 999, - paddingVertical: 7, - paddingHorizontal: 11, - borderWidth: 1, - }, - statPillCorrect: { - backgroundColor: '#163223', - borderColor: '#1f7a4e', - }, - statPillBad: { - backgroundColor: '#3b1d22', - borderColor: '#7f1d1d', - }, - statPillPending: { - backgroundColor: '#1f2937', - borderColor: '#334155', - }, - statPillText: { - color: '#e2e8f0', - fontWeight: '700', - fontSize: 12, - }, + statsRow: 'flex-row gap-2 flex-wrap mt-1', + statPill: 'rounded-xl py-1.5 px-2.5 border', + statPillCorrect: 'bg-[#14532d] border-[#166534]', + statPillBad: 'bg-[#3f1d1d] border-[#7f1d1d]', + statPillPending: 'bg-[#27272a] border-[#3f3f46]', + statPillText: 'text-[#f4f4f5] font-semibold text-xs', + packProgressLabel: 'text-[#d4d4d8] text-sm font-medium', + packProgressMeta: 'text-[#a1a1aa] text-xs font-semibold', + packProgressTrack: 'w-full h-2 rounded-full bg-[#27272a] overflow-hidden', + packProgressFill: 'h-full bg-[#22c55e]', - snapshotWrap: { - marginTop: 8, - borderTopWidth: 1, - borderTopColor: '#1e293b', - paddingTop: 8, - gap: 7, - }, - snapshotRow: { - paddingVertical: 3, - }, - snapshotTitle: { - color: '#e2e8f0', - fontWeight: '600', - }, + snapshotWrap: 'mt-3 border-t border-t-[#27272a] pt-3 gap-2', + snapshotRow: 'py-1.5', + snapshotTitle: 'text-[#f4f4f5] font-medium text-sm', - previewImage: { - width: '100%', - height: 150, - borderRadius: 10, - backgroundColor: '#111827', - }, - previewImageSmall: { - width: '100%', - height: 120, - borderRadius: 10, - backgroundColor: '#111827', - }, - imagePreviewBackdrop: { - flex: 1, - backgroundColor: 'rgba(2,6,23,0.88)', - alignItems: 'center', - justifyContent: 'center', - paddingHorizontal: 14, - }, - imagePreviewCard: { - width: '100%', - maxWidth: 460, - borderRadius: 14, - borderWidth: 1, - borderColor: '#334155', - backgroundColor: '#0f172a', - padding: 10, - gap: 8, - }, - imagePreviewImage: { - width: '100%', - height: 360, - borderRadius: 10, - backgroundColor: '#0b1220', - }, - imagePreviewHint: { - color: '#93c5fd', - textAlign: 'center', - fontSize: 12, - fontWeight: '600', - }, + previewImage: 'w-full h-[160px] rounded-xl bg-[#111114]', + previewImageSmall: 'w-full h-[132px] rounded-xl bg-[#111114]', + imagePreviewBackdrop: 'flex-1 bg-[rgba(9,9,11,0.88)] items-center justify-center px-5', + imagePreviewCard: 'w-full max-w-[460px] rounded-xl border border-[#3f3f46] bg-[#18181b] p-5 gap-3 shadow-md', + imagePreviewImage: 'w-full h-[360px] rounded-xl bg-[#111114]', + imagePreviewHint: 'text-[#a1a1aa] text-center text-xs font-medium', - tabBarWrap: { - position: 'absolute', - bottom: 6, - left: 0, - right: 0, - paddingHorizontal: 10, - paddingBottom: Platform.OS === 'ios' ? 14 : 8, - backgroundColor: 'transparent', - }, - tabBar: { - height: TAB_BAR_HEIGHT, - borderRadius: 16, - backgroundColor: '#0b1220', - borderWidth: 1, - borderColor: '#1f2937', - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - paddingHorizontal: 8, - }, - tabGroupSide: { - flexDirection: 'row', - width: '42%', - justifyContent: 'space-around', - alignItems: 'center', - }, - tabItem: { - alignItems: 'center', - justifyContent: 'center', - gap: 3, - minWidth: 56, - }, - tabAddBtn: { - width: 54, - height: 54, - borderRadius: 999, - alignItems: 'center', - justifyContent: 'center', - backgroundColor: '#2563eb', - marginTop: -24, - borderWidth: 2, - borderColor: '#0b1220', - }, - tabAddBtnDisabled: { - opacity: 0.45, - }, - tabLabel: { - color: '#94a3b8', - fontSize: 11, - fontWeight: '600', - }, - tabLabelActive: { - color: '#dbeafe', - }, + tabBarWrap: Platform.OS === 'ios' + ? 'absolute bottom-[6px] left-0 right-0 px-[10px] pb-[14px]' + : 'absolute bottom-[6px] left-0 right-0 px-[10px] pb-2', + tabBar: 'h-[72px] rounded-2xl bg-[#0b1220] border border-[#1f2937] flex-row items-center justify-between px-2', + tabGroupSide: 'flex-row w-[42%] justify-around items-center', + tabItem: 'items-center justify-center gap-[3px] min-w-[56px]', + tabAddBtn: 'w-[54px] h-[54px] rounded-full items-center justify-center bg-[#2563eb] -mt-6 border-2 border-[#0b1220]', + tabAddBtnDisabled: 'opacity-[0.45]', + tabLabel: 'text-[#94a3b8] text-[11px] font-semibold', + tabLabelActive: 'text-[#dbeafe]', - modalBackdrop: { - flex: 1, - backgroundColor: 'rgba(2,6,23,0.72)', - paddingHorizontal: 12, - }, - dialogBackdrop: { - flex: 1, - backgroundColor: 'rgba(2,6,23,0.72)', - alignItems: 'center', - justifyContent: 'center', - paddingHorizontal: 18, - }, - dialogCard: { - width: '100%', - backgroundColor: '#0f172a', - borderRadius: 16, - borderWidth: 1, - borderColor: '#1e293b', - padding: 14, + modalBackdrop: 'flex-1 bg-[rgba(9,9,11,0.8)] px-5', + dialogBackdrop: 'flex-1 bg-[rgba(9,9,11,0.8)] items-center justify-center px-6', + dialogCard: 'w-full bg-[#18181b] rounded-xl border border-[#27272a] p-6 gap-5 shadow-md', + dialogTitle: 'text-[#fafafa] font-bold text-lg', + dialogMessage: 'text-[#d4d4d8] leading-6 text-sm', + dialogButtonsRow: 'flex-row gap-3 justify-end flex-wrap', + dialogBtn: 'rounded-xl py-2.5 px-3.5 border min-w-[92px] items-center', + dialogBtnPrimary: 'bg-[#2563eb] border-[#2563eb]', + dialogBtnDanger: 'bg-[#7f1d1d] border-[#991b1b]', + dialogBtnNeutral: 'bg-[#27272a] border-[#3f3f46]', + dialogBtnText: 'text-[#f8fafc] font-semibold text-sm', + modalKeyboardWrap: 'flex-1 w-full items-center justify-center', + modalCard: 'w-[96%] max-h-[92%] bg-[#18181b] rounded-xl border border-[#27272a] p-6 gap-4 shadow-md', + modalScrollContent: { + paddingBottom: 20, gap: 12, }, - dialogTitle: { - color: '#f8fafc', - fontWeight: '700', - fontSize: 17, - }, - dialogMessage: { - color: '#cbd5e1', - lineHeight: 20, - }, - dialogButtonsRow: { - flexDirection: 'row', - gap: 8, - justifyContent: 'flex-end', - flexWrap: 'wrap', - }, - dialogBtn: { - borderRadius: 10, - paddingVertical: 9, - paddingHorizontal: 14, - borderWidth: 1, - }, - dialogBtnPrimary: { - backgroundColor: '#2563eb', - borderColor: '#2563eb', - }, - dialogBtnDanger: { - backgroundColor: '#7f1d1d', - borderColor: '#991b1b', - }, - dialogBtnNeutral: { - backgroundColor: '#1e293b', - borderColor: '#334155', - }, - dialogBtnText: { - color: '#f8fafc', - fontWeight: '700', - }, - modalKeyboardWrap: { - flex: 1, - width: '100%', - alignItems: 'center', - justifyContent: 'center', - }, - modalCard: { - width: '96%', - maxHeight: '90%', - backgroundColor: '#0f172a', - borderRadius: 20, - borderWidth: 1, - borderColor: '#1e293b', - padding: 14, - gap: 8, - }, - closeText: { - color: '#93c5fd', - fontWeight: '700', - }, + closeText: 'text-[#d4d4d8] font-semibold text-sm', - dateModalBackdrop: { - flex: 1, - backgroundColor: 'rgba(2,6,23,0.75)', - justifyContent: 'center', - paddingHorizontal: 16, - }, - dateModalCard: { - backgroundColor: '#0f172a', - borderRadius: 16, - borderWidth: 1, - borderColor: '#1e293b', - padding: 14, - gap: 10, - }, - calendarHeader: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - }, - calendarNavBtn: { - width: 34, - height: 34, - alignItems: 'center', - justifyContent: 'center', - borderRadius: 10, - backgroundColor: '#1e293b', - }, - calendarNavText: { - color: '#dbeafe', - fontSize: 20, - fontWeight: '700', - lineHeight: 22, - }, - calendarMonthText: { - color: '#f8fafc', - fontWeight: '700', - fontSize: 15, - }, - calendarWeekRow: { - flexDirection: 'row', - justifyContent: 'space-between', - }, - calendarWeekday: { - color: '#94a3b8', - width: '14.2%', - textAlign: 'center', - fontSize: 12, - }, - calendarGrid: { - flexDirection: 'row', - flexWrap: 'wrap', - }, - calendarCell: { - width: '14.2%', - height: 38, - alignItems: 'center', - justifyContent: 'center', - borderRadius: 10, - marginVertical: 2, - }, - calendarCellActive: { - backgroundColor: '#2563eb', - }, - calendarCellText: { - color: '#cbd5e1', - fontWeight: '600', - }, - calendarCellTextActive: { - color: '#fff', - fontWeight: '700', - }, -}); + dateModalBackdrop: 'flex-1 bg-[rgba(9,9,11,0.82)] justify-center px-5', + dateModalCard: 'bg-[#18181b] rounded-xl border border-[#27272a] p-6 gap-4 shadow-md', + calendarHeader: 'flex-row items-center justify-between', + calendarNavBtn: 'w-9 h-9 items-center justify-center rounded-xl bg-[#27272a]', + calendarNavText: 'text-[#e4e4e7] text-[20px] font-bold leading-[22px]', + calendarMonthText: 'text-[#fafafa] font-bold text-base', + calendarWeekRow: 'flex-row justify-between', + calendarWeekday: 'text-[#a1a1aa] w-[14.2%] text-center text-xs', + calendarGrid: 'flex-row flex-wrap', + calendarCell: 'w-[14.2%] h-[38px] items-center justify-center rounded-xl my-0.5', + calendarCellActive: 'bg-[#2563eb]', + calendarCellText: 'text-[#d4d4d8] font-medium', + calendarCellTextActive: 'text-white font-semibold', +}; diff --git a/src/tabs/CheckupTab.js b/src/tabs/CheckupTab.js index 0d3cd7e..0bbb8a4 100644 --- a/src/tabs/CheckupTab.js +++ b/src/tabs/CheckupTab.js @@ -1,34 +1,61 @@ import React from 'react'; import { Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; export default function CheckupTab({ selectedTrip, selectedTripItems, checkupStats, startCheckupFlow }) { return ( - - Check-Up + + + + + + Check-Up Session + - {!selectedTrip ? Select a trip first. : null} - {selectedTrip && selectedTripItems.length === 0 ? No items for this trip yet. : null} + {!selectedTrip ? ( + + Select a trip first. + + ) : null} + {selectedTrip && selectedTripItems.length === 0 ? ( + + No items for this trip yet. + + ) : null} {selectedTrip && selectedTripItems.length > 0 ? ( - - Run a check-up for {selectedTrip.name} - {selectedTripItems.length} items will be checked one by one. + + Run a check-up for {selectedTrip.name} + {selectedTripItems.length} items will be checked one by one. - - - Correct: {checkupStats.correct} + + + + + Correct: {checkupStats.correct} + - - Bad: {checkupStats.bad} + + + + Bad: {checkupStats.bad} + - - Pending: {checkupStats.pending} + + + + Pending: {checkupStats.pending} + - - Start Check-Up + + + + Start Check-Up + ) : null} diff --git a/src/tabs/HistoryTab.js b/src/tabs/HistoryTab.js index fd2fb46..634069a 100644 --- a/src/tabs/HistoryTab.js +++ b/src/tabs/HistoryTab.js @@ -1,40 +1,74 @@ import React from 'react'; import { Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import { styles } from '../styles'; -import { formatStatusLabel } from '../utils/labels'; +import { formatItemLabel, formatStatusLabel } from '../utils/labels'; export default function HistoryTab({ selectedTrip, selectedTripCheckups, selectedCheckupId, setSelectedCheckupId, onDeleteCheckup }) { return ( - - History + + + + + + Check-Up History + - {!selectedTrip ? Select a trip first. : null} - {selectedTrip ? Check-ups for: {selectedTrip.name} : null} - {selectedTrip && selectedTripCheckups.length === 0 ? No check-ups saved yet. : null} + {!selectedTrip ? ( + + Select a trip first. + + ) : null} + {selectedTrip ? ( + + + Check-ups for: {selectedTrip.name} + + ) : null} + {selectedTrip && selectedTripCheckups.length === 0 ? ( + + No check-ups saved yet. + + ) : null} {selectedTripCheckups.map((checkup) => ( - + setSelectedCheckupId((prev) => (prev === checkup.id ? null : checkup.id))} onLongPress={() => onDeleteCheckup(checkup.id)} delayLongPress={280} > - {new Date(checkup.createdAt).toLocaleString()} - - {checkup.snapshot.length} items · correct: {checkup.stats?.correct ?? checkup.snapshot.filter((x) => x.result === 'correct').length} · bad:{' '} - {checkup.stats?.bad ?? checkup.snapshot.filter((x) => x.result === 'bad').length} - - {selectedCheckupId === checkup.id ? 'Tap to collapse' : 'Tap to open'} · long hold to delete + + + + {new Date(checkup.createdAt).toLocaleString()} + + + + + + + {checkup.snapshot.length} items · correct: {checkup.stats?.correct ?? checkup.snapshot.filter((x) => x.result === 'correct').length} · bad:{' '} + {checkup.stats?.bad ?? checkup.snapshot.filter((x) => x.result === 'bad').length} + + + {selectedCheckupId === checkup.id ? 'Tap to collapse' : 'Tap to open'} · long hold to delete {selectedCheckupId === checkup.id ? ( - + {checkup.snapshot.map((entry) => ( - - {entry.name} - - {formatStatusLabel(entry.status, entry.lentTo)} · {entry.placement} - + + + + {formatItemLabel(entry.name, entry.quantity)} + + + + + {formatStatusLabel(entry.status, entry.lentTo)} · {entry.placement} + + ))} diff --git a/src/tabs/ItemsTab.js b/src/tabs/ItemsTab.js index f4ff341..86342ab 100644 --- a/src/tabs/ItemsTab.js +++ b/src/tabs/ItemsTab.js @@ -1,8 +1,10 @@ import React, { useMemo, useState } from 'react'; import { Image, Modal, Pressable, Text, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import ItemCard from '../components/ItemCard'; import { ITEM_STATUSES } from '../constants'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; import { formatFilterLabel, formatStatusLabel } from '../utils/labels'; export default function ItemsTab({ @@ -42,71 +44,130 @@ export default function ItemsTab({ [selectedTripItems, statusFilter, categoryFilter, locationFilter] ); + const packedItemCount = useMemo( + () => selectedTripItems.filter((item) => item.status === 'packed').length, + [selectedTripItems] + ); + const packProgress = selectedTripItems.length ? packedItemCount / selectedTripItems.length : 0; + const filterStatusOptions = ['all', ...ITEM_STATUSES]; const filterCategoryOptions = ['all', ...categories]; const filterLocationOptions = ['all', ...locations]; return ( - - - Luggage Items - - + Add + + + + + + + Packing List + + + + + Add + - {!selectedTrip ? Select a trip first. : null} - {selectedTripItems.length === 0 && selectedTrip ? No items yet. : null} + {!selectedTrip ? ( + + Select a trip first. + + ) : null} + {selectedTripItems.length === 0 && selectedTrip ? ( + + No items yet. + + ) : null} + + {selectedTrip && selectedTripItems.length > 0 ? ( + + + + + Progress + + {Math.round(packProgress * 100)}% + + {packedItemCount}/{selectedTripItems.length} items packed + + + + + ) : null} {selectedTrip ? ( - - Quick actions - - bulkSetItemStatus(filteredItems.map((x) => x.id), 'packed')}> - Pack All ({filteredItems.length}) + + + + Quick Actions + + + bulkSetItemStatus(filteredItems.map((x) => x.id), 'packed')}> + + + Pack All ({filteredItems.length}) + - bulkSetItemStatus(filteredItems.map((x) => x.id), 'unpacked')}> - Unpack All ({filteredItems.length}) + bulkSetItemStatus(filteredItems.map((x) => x.id), 'unpacked')}> + + + Unpack All ({filteredItems.length}) + ) : null} {selectedTripItems.length > 0 ? ( - - Filters + + + + Filters + - Status - + + + Status + + {filterStatusOptions.map((status) => { const active = statusFilter === status; return ( - setStatusFilter(status)}> - {status === 'all' ? formatFilterLabel(status) : formatStatusLabel(status)} + setStatusFilter(status)}> + {status === 'all' ? formatFilterLabel(status) : formatStatusLabel(status)} ); })} - Category - + + + Category + + {filterCategoryOptions.map((category) => { const active = categoryFilter === category; return ( - setCategoryFilter(category)}> - {formatFilterLabel(category)} + setCategoryFilter(category)}> + {formatFilterLabel(category)} ); })} - Location - + + + Location + + {filterLocationOptions.map((location) => { const active = locationFilter === location; return ( - setLocationFilter(location)}> - {formatFilterLabel(location)} + setLocationFilter(location)}> + {formatFilterLabel(location)} ); })} @@ -126,13 +187,17 @@ export default function ItemsTab({ /> ))} - {selectedTripItems.length > 0 && filteredItems.length === 0 ? No items match the current filters. : null} + {selectedTripItems.length > 0 && filteredItems.length === 0 ? ( + + No items match the current filters. + + ) : null} - setImagePreviewUri('')}> - {}}> - {imagePreviewUri ? : null} - Tap outside to close + setImagePreviewUri('')}> + {}}> + {imagePreviewUri ? : null} + Tap outside to close diff --git a/src/tabs/TripsTab.js b/src/tabs/TripsTab.js index 479d809..4ddf5ad 100644 --- a/src/tabs/TripsTab.js +++ b/src/tabs/TripsTab.js @@ -1,14 +1,19 @@ import React, { useMemo, useState } from 'react'; import { KeyboardAvoidingView, Modal, Platform, Pressable, ScrollView, Text, TextInput, View } from 'react-native'; +import Ionicons from '@expo/vector-icons/Ionicons'; import DatePickerModal from '../components/DatePickerModal'; import Field from '../components/Field'; import { styles } from '../styles'; +import { cn } from '../utils/cn'; function DateField({ label, value, onPress }) { return ( - - - {value} + + + + {value} + + ); @@ -36,6 +41,7 @@ export default function TripsTab({ defaultTemplateTripId, openDatePicker, activeTripItemCount, + activeTripPackedCount, activeTripCheckupCount, openBackupModal, }) { @@ -102,45 +108,84 @@ export default function TripsTab({ } return ( - - - Trips - - - Backup - - setCreateModalVisible(true)}> - + New Trip - + + + + + Trip Planner + + + + + + + Backup + + + setCreateModalVisible(true)}> + + + New Trip + + {activeTrip ? ( - - {activeTrip.name} - {activeTrip.location || 'No location'} · {activeTrip.startDate} → {activeTrip.endDate} - {activeTripItemCount} items · {activeTripCheckupCount} check-ups + + + + {activeTrip.name} + + {activeTrip.location || 'No location'} · {activeTrip.startDate} → {activeTrip.endDate} + + + {activeTripItemCount} items · {activeTripCheckupCount} check-ups + + + + + {activeTripPackedCount}/{activeTripItemCount} items packed + + {activeTripItemCount ? Math.round((activeTripPackedCount / activeTripItemCount) * 100) : 0}% + + + + ) : ( - No active trips. Unarchive or create one. + + No active trips. Unarchive one or create a new trip. + )} - Active Trips + Active Trips {activeTrips .slice() .sort((a, b) => b.startDate.localeCompare(a.startDate)) .map((trip) => ( - - - - {trip.name} - {trip.location || 'No location'} · {trip.startDate} → {trip.endDate} - {defaultTemplateTripId === trip.id ? Default template : null} + + + + {trip.name} + {trip.location || 'No location'} · {trip.startDate} → {trip.endDate} + {defaultTemplateTripId === trip.id ? ( + + + Default template + + ) : null} - - openView(trip.id)}> - View + + openView(trip.id)}> + + + View + @@ -149,21 +194,27 @@ export default function TripsTab({ {archivedTrips.length > 0 ? ( <> - Archived Trips + Archived Trips {archivedTrips .slice() .sort((a, b) => b.startDate.localeCompare(a.startDate)) .map((trip) => ( - - - - {trip.name} - {trip.location || 'No location'} · {trip.startDate} → {trip.endDate} - Archived + + + + {trip.name} + {trip.location || 'No location'} · {trip.startDate} → {trip.endDate} + + + Archived + - - openView(trip.id)}> - View + + openView(trip.id)}> + + + View + @@ -173,40 +224,48 @@ export default function TripsTab({ ) : null} - - - - - Create Trip - setCreateModalVisible(false)}> - Close + + + + + + + + + Create Trip + + setCreateModalVisible(false)}> + + + Close + - + updateTripForm('name', v)} placeholder="Summer Weekend" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" onFocus={onInputFocus} /> - + updateTripForm('location', v)} placeholder="Berlin" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" onFocus={onInputFocus} /> @@ -215,19 +274,26 @@ export default function TripsTab({ openDatePicker('endDate')} /> {templateTrip ? ( - updateTripForm('copyDefaultTemplate', !tripForm.copyDefaultTemplate)}> - - {tripForm.copyDefaultTemplate ? '☑' : '☐'} Copy items from template ({templateTrip.name}) - + updateTripForm('copyDefaultTemplate', !tripForm.copyDefaultTemplate)}> + + + Copy items from template ({templateTrip.name}) + ) : null} - updateTripForm('setAsDefaultTemplate', !tripForm.setAsDefaultTemplate)}> - {tripForm.setAsDefaultTemplate ? '☑' : '☐'} Set as default template + updateTripForm('setAsDefaultTemplate', !tripForm.setAsDefaultTemplate)}> + + + Set as default template + - - Create Trip + + + + Create Trip + @@ -236,18 +302,27 @@ export default function TripsTab({ - - - - - Trip View + + + + + + + + + Trip Details + { setViewTripId(null); setEditMode(false); }} > - Close + + + Close + @@ -255,53 +330,77 @@ export default function TripsTab({ {!editMode ? ( <> - {viewingTrip.name} - {viewingTrip.location || 'No location'} - {viewingTrip.startDate} → {viewingTrip.endDate} - {defaultTemplateTripId === viewingTrip.id ? 'Default template trip' : 'Not default template'} - {viewingTrip.archived ? 'Archived' : 'Active'} + {viewingTrip.name} + + + {viewingTrip.location || 'No location'} + + + + {viewingTrip.startDate} → {viewingTrip.endDate} + + + + {defaultTemplateTripId === viewingTrip.id ? 'Default template trip' : 'Not default template'} + + + + {viewingTrip.archived ? 'Archived' : 'Active'} + - setEditMode(true)}> - Edit Trip + setEditMode(true)}> + + + Edit Trip + - - Set as Template + + + + Set as Template + - - {viewingTrip.archived ? 'Unarchive Trip' : 'Archive Trip'} + + + + {viewingTrip.archived ? 'Unarchive Trip' : 'Archive Trip'} + - - Delete Trip + + + + Delete Trip + ) : ( <> - + updateEditForm('name', v)} placeholder="Trip name" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" onFocus={onInputFocus} /> - + updateEditForm('location', v)} placeholder="Location" - placeholderTextColor="#6b7280" + placeholderTextColor="#71717a" onFocus={onInputFocus} /> @@ -309,11 +408,17 @@ export default function TripsTab({ setViewDatePicker({ visible: true, field: 'startDate' })} /> setViewDatePicker({ visible: true, field: 'endDate' })} /> - - Save Trip + + + + Save Trip + - setEditMode(false)}> - Cancel Edit + setEditMode(false)}> + + + Cancel Edit + )} diff --git a/src/uniwind-types.d.ts b/src/uniwind-types.d.ts new file mode 100644 index 0000000..cc09941 --- /dev/null +++ b/src/uniwind-types.d.ts @@ -0,0 +1,10 @@ +// NOTE: This file is generated by uniwind and it should not be edited manually. +/// + +declare module 'uniwind' { + export interface UniwindConfig { + themes: readonly ['light', 'dark'] + } +} + +export {} diff --git a/src/utils/backup.js b/src/utils/backup.js new file mode 100644 index 0000000..b452fd0 --- /dev/null +++ b/src/utils/backup.js @@ -0,0 +1,76 @@ +import { normalizeNameAndQuantity } from './labels'; + +export function normalizeItemRecord(item = {}) { + const normalized = normalizeNameAndQuantity(item.name, item.quantity); + return { + ...item, + name: normalized.name, + quantity: normalized.quantity, + }; +} + +export function normalizeSnapshotRecord(entry = {}) { + const normalized = normalizeNameAndQuantity(entry.name, entry.quantity); + return { + ...entry, + name: normalized.name, + quantity: normalized.quantity, + }; +} + +export function normalizePayloadShape(payload = {}) { + const itemsByTrip = {}; + Object.entries(payload.itemsByTrip || {}).forEach(([tripId, items]) => { + itemsByTrip[tripId] = (Array.isArray(items) ? items : []).map(normalizeItemRecord); + }); + + const checkupsByTrip = {}; + Object.entries(payload.checkupsByTrip || {}).forEach(([tripId, checkups]) => { + checkupsByTrip[tripId] = (Array.isArray(checkups) ? checkups : []).map((checkup) => ({ + ...checkup, + snapshot: (Array.isArray(checkup?.snapshot) ? checkup.snapshot : []).map(normalizeSnapshotRecord), + })); + }); + + return { + ...payload, + itemsByTrip, + checkupsByTrip, + }; +} + +export function stringifyBackupData(data) { + return JSON.stringify( + { + version: 2, + exportedAt: new Date().toISOString(), + data, + }, + null, + 2 + ); +} + +export function parseBackupText(rawText = '') { + if (!`${rawText || ''}`.trim()) { + return { ok: false, error: 'missing-backup' }; + } + + let parsed; + try { + parsed = JSON.parse(rawText); + } catch { + return { ok: false, error: 'invalid-json' }; + } + + const payload = parsed?.data && typeof parsed.data === 'object' ? parsed.data : parsed; + + if (!payload || typeof payload !== 'object' || !Array.isArray(payload.trips) || !payload.itemsByTrip || !payload.checkupsByTrip) { + return { ok: false, error: 'invalid-backup' }; + } + + return { + ok: true, + payload: normalizePayloadShape(payload), + }; +} diff --git a/src/utils/backup.test.js b/src/utils/backup.test.js new file mode 100644 index 0000000..afc3832 --- /dev/null +++ b/src/utils/backup.test.js @@ -0,0 +1,90 @@ +import { + normalizeItemRecord, + normalizePayloadShape, + parseBackupText, + stringifyBackupData, +} from './backup'; + +describe('backup helpers', () => { + test('normalizeItemRecord migrates legacy quantity from item name', () => { + expect( + normalizeItemRecord({ + id: 'item_1', + name: '3x socks', + quantity: 1, + }) + ).toEqual({ + id: 'item_1', + name: 'socks', + quantity: 3, + }); + }); + + test('normalizePayloadShape normalizes nested items and snapshots', () => { + const normalized = normalizePayloadShape({ + trips: [], + itemsByTrip: { + trip_1: [{ id: 'item_1', name: '2x cables', quantity: 1 }], + }, + checkupsByTrip: { + trip_1: [ + { + id: 'checkup_1', + snapshot: [{ itemId: 'item_1', name: '4x batteries', quantity: 1 }], + }, + ], + }, + }); + + expect(normalized.itemsByTrip.trip_1[0]).toEqual({ + id: 'item_1', + name: 'cables', + quantity: 2, + }); + + expect(normalized.checkupsByTrip.trip_1[0].snapshot[0]).toEqual({ + itemId: 'item_1', + name: 'batteries', + quantity: 4, + }); + }); + + test('stringifyBackupData returns versioned backup payload', () => { + const json = stringifyBackupData({ trips: [] }); + const parsed = JSON.parse(json); + + expect(parsed.version).toBe(2); + expect(parsed.data).toEqual({ trips: [] }); + expect(typeof parsed.exportedAt).toBe('string'); + }); + + test('parseBackupText rejects missing and malformed payloads', () => { + expect(parseBackupText('')).toEqual({ ok: false, error: 'missing-backup' }); + expect(parseBackupText('{bad')).toEqual({ ok: false, error: 'invalid-json' }); + expect(parseBackupText('{"foo":1}')).toEqual({ ok: false, error: 'invalid-backup' }); + }); + + test('parseBackupText accepts wrapped backup payloads and normalizes data', () => { + const wrapped = JSON.stringify({ + version: 2, + data: { + trips: [{ id: 'trip_1' }], + itemsByTrip: { + trip_1: [{ id: 'item_1', name: '2x socks', quantity: 1 }], + }, + checkupsByTrip: { + trip_1: [], + }, + }, + }); + + const result = parseBackupText(wrapped); + + expect(result.ok).toBe(true); + expect(result.payload.itemsByTrip.trip_1[0]).toEqual({ + id: 'item_1', + name: 'socks', + quantity: 2, + }); + }); +}); diff --git a/src/utils/cn.js b/src/utils/cn.js new file mode 100644 index 0000000..8220e47 --- /dev/null +++ b/src/utils/cn.js @@ -0,0 +1,3 @@ +export function cn(...parts) { + return parts.filter(Boolean).join(' '); +} diff --git a/src/utils/cn.test.js b/src/utils/cn.test.js new file mode 100644 index 0000000..921ef5a --- /dev/null +++ b/src/utils/cn.test.js @@ -0,0 +1,15 @@ +import { cn } from './cn'; + +describe('cn', () => { + test('joins truthy class parts', () => { + expect(cn('a', 'b', 'c')).toBe('a b c'); + }); + + test('skips falsy parts', () => { + expect(cn('a', '', null, undefined, false, 'b')).toBe('a b'); + }); + + test('returns empty string when nothing is provided', () => { + expect(cn()).toBe(''); + }); +}); diff --git a/src/utils/date.test.js b/src/utils/date.test.js new file mode 100644 index 0000000..54b9b20 --- /dev/null +++ b/src/utils/date.test.js @@ -0,0 +1,78 @@ +import { findActiveTripId, findBestTripId, findNextTripId, makeId, parseYMD, todayYMD } from './date'; +import { vi } from 'vitest'; + +describe('date helpers', () => { + beforeEach(() => { + vi.useFakeTimers(); + vi.setSystemTime(new Date(2026, 3, 18, 12, 0, 0)); + }); + + afterEach(() => { + vi.useRealTimers(); + vi.restoreAllMocks(); + }); + + test('makeId returns a prefixed id with timestamp and random suffix', () => { + vi.spyOn(Math, 'random').mockReturnValue(0.123456); + const id = makeId('item'); + + expect(id).toMatch(/^item_\d+_[a-z0-9]{6}$/); + }); + + test('todayYMD returns yyyy-mm-dd', () => { + expect(todayYMD()).toBe('2026-04-18'); + }); + + test('parseYMD returns null for invalid format', () => { + expect(parseYMD('2026/04/18')).toBeNull(); + expect(parseYMD('')).toBeNull(); + expect(parseYMD(null)).toBeNull(); + }); + + test('parseYMD returns date for valid format', () => { + const parsed = parseYMD('2026-04-18'); + + expect(parsed).toBeInstanceOf(Date); + expect(parsed?.getFullYear()).toBe(2026); + }); + + test('findActiveTripId picks a currently active trip', () => { + const trips = [ + { id: 'past', startDate: '2026-04-01', endDate: '2026-04-10' }, + { id: 'active', startDate: '2026-04-15', endDate: '2026-04-20' }, + { id: 'future', startDate: '2026-05-01', endDate: '2026-05-05' }, + ]; + + expect(findActiveTripId(trips)).toBe('active'); + }); + + test('findNextTripId picks nearest upcoming trip', () => { + const trips = [ + { id: 'next-later', startDate: '2026-05-10', endDate: '2026-05-12' }, + { id: 'next-soon', startDate: '2026-04-20', endDate: '2026-04-22' }, + { id: 'past', startDate: '2026-03-01', endDate: '2026-03-02' }, + ]; + + expect(findNextTripId(trips)).toBe('next-soon'); + }); + + test('findBestTripId prefers active trip, then next trip, then latest past trip', () => { + const activeTrips = [ + { id: 'active', startDate: '2026-04-10', endDate: '2026-04-20' }, + { id: 'future', startDate: '2026-04-25', endDate: '2026-04-27' }, + ]; + expect(findBestTripId(activeTrips)).toBe('active'); + + const nextTrips = [ + { id: 'future-1', startDate: '2026-04-30', endDate: '2026-05-02' }, + { id: 'future-2', startDate: '2026-04-22', endDate: '2026-04-23' }, + ]; + expect(findBestTripId(nextTrips)).toBe('future-2'); + + const pastTrips = [ + { id: 'old', startDate: '2026-02-01', endDate: '2026-02-05' }, + { id: 'recent', startDate: '2026-04-01', endDate: '2026-04-10' }, + ]; + expect(findBestTripId(pastTrips)).toBe('recent'); + }); +}); diff --git a/src/utils/items.js b/src/utils/items.js new file mode 100644 index 0000000..3b8e820 --- /dev/null +++ b/src/utils/items.js @@ -0,0 +1,27 @@ +import { ITEM_PLACEMENTS } from '../constants'; + +export function toPlacementFormState(rawPlacement = 'suitcase') { + const placement = `${rawPlacement || ''}`.trim() || 'suitcase'; + const hasPresetPlacement = ITEM_PLACEMENTS.includes(placement); + + return { + placement: hasPresetPlacement ? placement : 'other', + placementCustom: hasPresetPlacement || placement === 'other' ? '' : placement, + }; +} + +export function resolvePlacementValue(placement = '', placementCustom = '') { + const normalizedPlacement = `${placement || ''}`.trim(); + if (!normalizedPlacement) return ''; + + if (normalizedPlacement === 'other') { + return `${placementCustom || ''}`.trim(); + } + + return normalizedPlacement; +} + +export function withPlacementCustomFallback(currentCustom = '', fallback = '') { + const custom = `${currentCustom || ''}`.trim(); + return custom || `${fallback || ''}`.trim(); +} diff --git a/src/utils/items.test.js b/src/utils/items.test.js new file mode 100644 index 0000000..d51212f --- /dev/null +++ b/src/utils/items.test.js @@ -0,0 +1,33 @@ +import { resolvePlacementValue, toPlacementFormState, withPlacementCustomFallback } from './items'; + +describe('items helpers', () => { + test('toPlacementFormState keeps known placements as-is', () => { + expect(toPlacementFormState('suitcase')).toEqual({ + placement: 'suitcase', + placementCustom: '', + }); + }); + + test('toPlacementFormState converts custom placements to other with value', () => { + expect(toPlacementFormState('hotel safe')).toEqual({ + placement: 'other', + placementCustom: 'hotel safe', + }); + }); + + test('resolvePlacementValue returns custom value when placement is other', () => { + expect(resolvePlacementValue('other', ' hotel safe ')).toBe('hotel safe'); + }); + + test('resolvePlacementValue returns direct placement when not other', () => { + expect(resolvePlacementValue('backpack', 'ignored')).toBe('backpack'); + }); + + test('withPlacementCustomFallback prefers existing custom value', () => { + expect(withPlacementCustomFallback('closet shelf', 'hotel safe')).toBe('closet shelf'); + }); + + test('withPlacementCustomFallback uses fallback when custom is empty', () => { + expect(withPlacementCustomFallback(' ', 'hotel safe')).toBe('hotel safe'); + }); +}); diff --git a/src/utils/labels.js b/src/utils/labels.js index 114923a..b78e080 100644 --- a/src/utils/labels.js +++ b/src/utils/labels.js @@ -21,3 +21,63 @@ export function formatFilterLabel(value) { if (value === 'all') return 'All'; return toTitleWords(value); } + +export function normalizeQuantity(value, fallback = 1) { + const parsed = Number.parseInt(`${value ?? ''}`, 10); + if (Number.isFinite(parsed) && parsed > 0) return parsed; + return fallback; +} + +export function extractLegacyQuantityFromName(rawName = '') { + const name = `${rawName || ''}`.trim(); + if (!name) { + return { matched: false, name: '', quantity: 1 }; + } + + let matched = name.match(/^(\d+)\s*[xX×]\s*(.+)$/); + if (matched) { + const quantity = normalizeQuantity(matched[1], 1); + const cleanName = (matched[2] || '').trim() || name; + return { matched: true, name: cleanName, quantity }; + } + + matched = name.match(/^(.+?)\s+(\d+)\s*[xX×]$/); + if (matched) { + const quantity = normalizeQuantity(matched[2], 1); + const cleanName = (matched[1] || '').trim() || name; + return { matched: true, name: cleanName, quantity }; + } + + return { matched: false, name, quantity: 1 }; +} + +export function normalizeNameAndQuantity(rawName = '', rawQuantity = null) { + const explicitQuantity = normalizeQuantity(rawQuantity, 0); + const legacy = extractLegacyQuantityFromName(rawName); + + if (legacy.matched && explicitQuantity <= 1) { + return { + name: legacy.name, + quantity: normalizeQuantity(legacy.quantity, 1), + }; + } + + const quantity = explicitQuantity > 0 ? explicitQuantity : legacy.quantity; + const cleanName = `${rawName || ''}`.trim() || legacy.name; + + return { + name: cleanName, + quantity: normalizeQuantity(quantity, 1), + }; +} + +export function formatItemLabel(name = '', quantity = 1) { + const cleanName = `${name || ''}`.trim(); + const normalizedQuantity = normalizeQuantity(quantity, 1); + + if (!cleanName) { + return normalizedQuantity > 1 ? `${normalizedQuantity}x item` : 'item'; + } + + return normalizedQuantity > 1 ? `${normalizedQuantity}x ${cleanName}` : cleanName; +} diff --git a/src/utils/labels.test.js b/src/utils/labels.test.js new file mode 100644 index 0000000..cec1f04 --- /dev/null +++ b/src/utils/labels.test.js @@ -0,0 +1,72 @@ +import { + extractLegacyQuantityFromName, + formatFilterLabel, + formatItemLabel, + formatStatusLabel, + normalizeNameAndQuantity, + normalizeQuantity, + toTitleWords, +} from './labels'; + +describe('labels helpers', () => { + test('toTitleWords title-cases dashed words', () => { + expect(toTitleWords('left-behind')).toBe('Left Behind'); + }); + + test('formatStatusLabel formats lent-to with optional person', () => { + expect(formatStatusLabel('lent-to', 'Alex')).toBe('Lent To Alex'); + expect(formatStatusLabel('lent-to', ' ')).toBe('Lent To'); + expect(formatStatusLabel('packed')).toBe('Packed'); + }); + + test('formatFilterLabel handles all and regular values', () => { + expect(formatFilterLabel('all')).toBe('All'); + expect(formatFilterLabel('with-user')).toBe('With User'); + }); + + test('normalizeQuantity uses positive integers and fallback for invalid values', () => { + expect(normalizeQuantity(3)).toBe(3); + expect(normalizeQuantity('7')).toBe(7); + expect(normalizeQuantity('0')).toBe(1); + expect(normalizeQuantity('', 5)).toBe(5); + }); + + test('extractLegacyQuantityFromName parses leading and trailing quantity formats', () => { + expect(extractLegacyQuantityFromName('3x socks')).toEqual({ + matched: true, + name: 'socks', + quantity: 3, + }); + + expect(extractLegacyQuantityFromName('socks 4x')).toEqual({ + matched: true, + name: 'socks', + quantity: 4, + }); + + expect(extractLegacyQuantityFromName('2× chargers')).toEqual({ + matched: true, + name: 'chargers', + quantity: 2, + }); + + expect(extractLegacyQuantityFromName('passport')).toEqual({ + matched: false, + name: 'passport', + quantity: 1, + }); + }); + + test('normalizeNameAndQuantity prioritizes explicit quantity but migrates legacy names', () => { + expect(normalizeNameAndQuantity('3x socks', null)).toEqual({ name: 'socks', quantity: 3 }); + expect(normalizeNameAndQuantity('3x socks', 1)).toEqual({ name: 'socks', quantity: 3 }); + expect(normalizeNameAndQuantity('3x socks', 5)).toEqual({ name: '3x socks', quantity: 5 }); + expect(normalizeNameAndQuantity('socks', 2)).toEqual({ name: 'socks', quantity: 2 }); + }); + + test('formatItemLabel includes quantity prefix when quantity > 1', () => { + expect(formatItemLabel('socks', 3)).toBe('3x socks'); + expect(formatItemLabel('passport', 1)).toBe('passport'); + expect(formatItemLabel('', 2)).toBe('2x item'); + }); +}); diff --git a/src/utils/trips.js b/src/utils/trips.js new file mode 100644 index 0000000..0a8992b --- /dev/null +++ b/src/utils/trips.js @@ -0,0 +1,34 @@ +import { parseYMD } from './date'; + +export function validateTripDraft({ name = '', startDate = '', endDate = '' }) { + if (!`${name || ''}`.trim()) { + return { + valid: false, + title: 'Missing name', + message: 'Trip name is required.', + }; + } + + const start = parseYMD(startDate); + const end = parseYMD(endDate); + + if (!start || !end) { + return { + valid: false, + title: 'Invalid dates', + message: 'Please select valid trip dates.', + }; + } + + if (start > end) { + return { + valid: false, + title: 'Invalid dates', + message: 'Start date cannot be after end date.', + }; + } + + return { + valid: true, + }; +} diff --git a/src/utils/trips.test.js b/src/utils/trips.test.js new file mode 100644 index 0000000..1aced1e --- /dev/null +++ b/src/utils/trips.test.js @@ -0,0 +1,57 @@ +import { validateTripDraft } from './trips'; + +describe('trips helpers', () => { + test('returns missing-name validation error', () => { + expect( + validateTripDraft({ + name: ' ', + startDate: '2026-04-20', + endDate: '2026-04-22', + }) + ).toEqual({ + valid: false, + title: 'Missing name', + message: 'Trip name is required.', + }); + }); + + test('returns invalid-dates validation error for malformed dates', () => { + expect( + validateTripDraft({ + name: 'Paris', + startDate: '2026/04/20', + endDate: '2026-04-22', + }) + ).toEqual({ + valid: false, + title: 'Invalid dates', + message: 'Please select valid trip dates.', + }); + }); + + test('returns invalid-dates validation error when start is after end', () => { + expect( + validateTripDraft({ + name: 'Paris', + startDate: '2026-05-01', + endDate: '2026-04-22', + }) + ).toEqual({ + valid: false, + title: 'Invalid dates', + message: 'Start date cannot be after end date.', + }); + }); + + test('returns valid for a good trip draft', () => { + expect( + validateTripDraft({ + name: 'Paris', + startDate: '2026-04-20', + endDate: '2026-04-22', + }) + ).toEqual({ + valid: true, + }); + }); +}); diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 0000000..2a4588a --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,9 @@ +const { defineConfig } = require('vitest/config'); + +module.exports = defineConfig({ + test: { + environment: 'node', + globals: true, + include: ['src/utils/**/*.test.js'], + }, +});