diff --git a/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.spec.ts b/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.spec.ts
index 07787b2..903178e 100644
--- a/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.spec.ts
+++ b/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.spec.ts
@@ -374,6 +374,29 @@ describe('CreditApplicationService', () => {
});
+ it('should clear stale co-applicant spouse state when switching back to a single applicant', () => {
+ const marriedPrimaryApplication: any = JSON.parse(JSON.stringify(primaryAndCoApplicationAddressSameApplication));
+ spyOn(creditApplicationService, 'getFullCreditApplication').and.returnValue(marriedPrimaryApplication);
+ spyOn(creditApplicationService, 'saveCreditApplication').and.returnValue(of(true));
+
+ const memberInfo: MembershipInformation = {
+ limitRequested: marriedPrimaryApplication.limitRequested,
+ applicantType: CreditApplicationValues.CHOICE_NO,
+ livesInMaritalPropertyState: CreditApplicationValues.CHOICE_YES,
+ confirmJointCredit: null,
+ coApplicantLivesInMaritalPropertyState: null,
+ purposeOfLoanSignature: null,
+ agreementRequirement: undefined
+ };
+
+ creditApplicationService.saveMemberInformation(memberInfo);
+
+ expect(creditApplicationService.getFullCreditApplication().fullInfoBorrowers.length).toBe(1);
+ expect(creditApplicationService.getFullCreditApplication().hasCoApplicantSpouse).toBeNull();
+ expect(creditApplicationService.getFullCreditApplication().coApplicantLivesInMaritalPropertyState).toBeNull();
+ expect(creditApplicationService.getFullCreditApplication().confirmJointCredit).toBeNull();
+ });
+
it('should set Estimated Value & Property Type defaults on HELOC Rate Mod loan type', () => {
const loanConfigurationService = TestBed.get(ConfigurationService);
loanConfigurationService.saveConfiguration(DefaultSettings as UiSettings);
diff --git a/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.ts b/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.ts
index 8d76cb3..3cfd880 100644
--- a/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.ts
+++ b/LCU.WebApps.External.OnlineLoanApp/src/app/shared/credit-application.service.ts
@@ -368,6 +368,9 @@ export class CreditApplicationService {
if (creditApplication.hasCoApplicant === CreditApplicationValues.CHOICE_NO &&
creditApplication.fullInfoBorrowers.length > 1) {
creditApplication.fullInfoBorrowers.pop();
+ creditApplication.hasCoApplicantSpouse = null;
+ creditApplication.coApplicantLivesInMaritalPropertyState = null;
+ creditApplication.confirmJointCredit = null;
}
if (memberInfo.applicantType === CreditApplicationValues.CHOICE_YES &&
memberInfo.coApplicantLivesInMaritalPropertyState === CreditApplicationValues.CHOICE_YES) {
diff --git a/LCU.WebApps.Indirect.ReserveManagementSystem/WebApp/ReserveManagementSystemUI/Dockerfile b/LCU.WebApps.Indirect.ReserveManagementSystem/WebApp/ReserveManagementSystemUI/Dockerfile
index a3c02b2..fdc9421 100644
--- a/LCU.WebApps.Indirect.ReserveManagementSystem/WebApp/ReserveManagementSystemUI/Dockerfile
+++ b/LCU.WebApps.Indirect.ReserveManagementSystem/WebApp/ReserveManagementSystemUI/Dockerfile
@@ -31,6 +31,8 @@ RUN dotnet publish -c Release -o /app/publish
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine
RUN apk add --no-cache icu-libs && apk add --no-cache tzdata;
ENV TZ=America/Chicago
+ENV LANG=en_US.UTF-8
+ENV LC_ALL=en_US.UTF-8
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
ENV ASPNETCORE_URLS=http://+:80
diff --git a/baseball/.env.example b/baseball/.env.example
new file mode 100644
index 0000000..5a0161f
--- /dev/null
+++ b/baseball/.env.example
@@ -0,0 +1 @@
+MONGODB_URI=mongodb://127.0.0.1:27017/little-league-roster
diff --git a/baseball/.gitignore b/baseball/.gitignore
new file mode 100644
index 0000000..e27b3f0
--- /dev/null
+++ b/baseball/.gitignore
@@ -0,0 +1,5 @@
+.next
+node_modules
+.env
+dist
+coverage
diff --git a/baseball/README.md b/baseball/README.md
new file mode 100644
index 0000000..451147f
--- /dev/null
+++ b/baseball/README.md
@@ -0,0 +1,102 @@
+# Little League Roster Manager
+
+Mobile-friendly roster and lineup planning app for Little League baseball. It includes roster management, pitcher rest tracking, configurable rest rules, and a game-day lineup generator.
+
+## Stack
+
+- Next.js App Router with React and TypeScript
+- MongoDB with Mongoose
+- Node.js API routes
+
+## Features
+
+- Manage players with positions, handedness, notes, and active status
+- Log pitching appearances and pitch counts by game date
+- Configure pitch-count-based rest rules
+- See pitcher availability as `Available`, `Needs Rest`, or `Unknown`
+- Generate suggested batting orders and defensive assignments
+- Manually adjust generated lineups before saving
+- Seed sample data for a quick demo
+- Placeholder auth utility for future expansion
+
+## Setup
+
+1. Install dependencies:
+
+```bash
+cd baseball
+npm install
+```
+
+2. Create environment variables:
+
+```bash
+cp .env.example .env
+```
+
+3. Update `MONGODB_URI` in `.env` if needed.
+
+Example:
+
+```env
+MONGODB_URI=mongodb://127.0.0.1:27017/little-league-roster
+```
+
+4. Start the app:
+
+```bash
+npm run dev
+```
+
+5. Open `http://localhost:3000`.
+
+## Sample Data
+
+You can load sample data in two ways:
+
+- Click `Load Sample Team` on the dashboard
+- Run:
+
+```bash
+npm run seed
+```
+
+The seed script adds:
+
+- Sample players
+- Default pitching rest rules
+- Sample pitching appearances
+- One sample saved game/lineup
+
+## Scripts
+
+- `npm run dev` starts the development server
+- `npm run build` builds the app
+- `npm run start` runs the production build
+- `npm run seed` seeds the database if it is empty
+
+## Data Models
+
+- `Player`
+- `PitchingAppearance`
+- `PitchingRule`
+- `Game`
+- `Lineup`
+
+## Folder Structure
+
+```text
+baseball/
+ src/
+ app/ Next.js pages and API routes
+ components/ Reusable UI and screen components
+ lib/ DB, validation, client helpers, lineup logic
+ models/ Mongoose schemas
+ scripts/ Seed script
+```
+
+## Notes
+
+- No authentication is enforced yet. `src/lib/auth.ts` provides a placeholder for future auth integration.
+- API routes return basic validation and server errors in a simple JSON format.
+- Pitcher eligibility is based on the most recent pitching appearance and the configured rule table.
diff --git a/baseball/next-env.d.ts b/baseball/next-env.d.ts
new file mode 100644
index 0000000..830fb59
--- /dev/null
+++ b/baseball/next-env.d.ts
@@ -0,0 +1,6 @@
+///
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/baseball/next.config.mjs b/baseball/next.config.mjs
new file mode 100644
index 0000000..4678774
--- /dev/null
+++ b/baseball/next.config.mjs
@@ -0,0 +1,4 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {};
+
+export default nextConfig;
diff --git a/baseball/package-lock.json b/baseball/package-lock.json
new file mode 100644
index 0000000..03cab6f
--- /dev/null
+++ b/baseball/package-lock.json
@@ -0,0 +1,1755 @@
+{
+ "name": "little-league-roster-manager",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "little-league-roster-manager",
+ "version": "0.1.0",
+ "dependencies": {
+ "clsx": "^2.1.1",
+ "mongoose": "^8.14.3",
+ "next": "^15.3.2",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "zod": "^3.24.4"
+ },
+ "devDependencies": {
+ "@types/node": "^22.15.17",
+ "@types/react": "^19.1.4",
+ "@types/react-dom": "^19.1.4",
+ "tsx": "^4.19.4",
+ "typescript": "^5.8.3"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
+ "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
+ "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
+ "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
+ "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
+ "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
+ "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
+ "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
+ "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
+ "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
+ "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
+ "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
+ "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
+ "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
+ "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
+ "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
+ "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
+ "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
+ "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
+ "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
+ "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
+ "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
+ "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
+ "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/colour": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
+ "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-riscv64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.7.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@mongodb-js/saslprep": {
+ "version": "1.4.11",
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.11.tgz",
+ "integrity": "sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA==",
+ "license": "MIT",
+ "dependencies": {
+ "sparse-bitfield": "^3.0.3"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.15.tgz",
+ "integrity": "sha512-vcmyu5/MyFzN7CdqRHO3uHO44p/QPCZkuTUXroeUmhNP8bL5PHFEhik22JUazt+CDDoD6EpBYRCaS2pISL+/hg==",
+ "license": "MIT"
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.15.tgz",
+ "integrity": "sha512-6PvFO2Tzt10GFK2Ro9tAVEtacMqRmTarYMFKAnV2vYMdwWc73xzmDQyAV7SwEdMhzmiRoo7+m88DuiXlJlGeaw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.15.tgz",
+ "integrity": "sha512-G+YNV+z6FDZTp/+IdGyIMFqalBTaQSnvAA+X/hrt+eaTRFSznRMz9K7rTmzvM6tDmKegNtyzgufZW0HwVzEqaQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.15.tgz",
+ "integrity": "sha512-eVkrMcVIBqGfXB+QUC7jjZ94Z6uX/dNStbQFabewAnk13Uy18Igd1YZ/GtPRzdhtm7QwC0e6o7zOQecul4iC1w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.15.tgz",
+ "integrity": "sha512-RwSHKMQ7InLy5GfkY2/n5PcFycKA08qI1VST78n09nN36nUPqCvGSMiLXlfUmzmpQpF6XeBYP2KRWHi0UW3uNg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.15.tgz",
+ "integrity": "sha512-nplqvY86LakS+eeiuWsNWvfmK8pFcOEW7ZtVRt4QH70lL+0x6LG/m1OpJ/tvrbwjmR8HH9/fH2jzW1GlL03TIg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.15.tgz",
+ "integrity": "sha512-eAgl9NKQ84/sww0v81DQINl/vL2IBxD7sMybd0cWRw6wqgouVI53brVRBrggqBRP/NWeIAE1dm5cbKYoiMlqDQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.15.tgz",
+ "integrity": "sha512-GJVZC86lzSquh0MtvZT+L7G8+jMnJcldloOjA8Kf3wXvBrvb6OGe2MzPuALxFshSm/IpwUtD2mIoof39ymf52A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.15.tgz",
+ "integrity": "sha512-nFucjVdwlFqxh/JG3hWSJ4p8+YJV7Ii8aPDuBQULB6DzUF4UNZETXLfEUk+oI2zEznWWULPt7MeuTE6xtK1HSA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.15",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
+ "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.8.0"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "22.19.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz",
+ "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/react": {
+ "version": "19.2.14",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
+ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.2.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.2.3",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
+ "node_modules/@types/webidl-conversions": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
+ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/whatwg-url": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
+ "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/webidl-conversions": "*"
+ }
+ },
+ "node_modules/bson": {
+ "version": "6.10.4",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
+ "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=16.20.1"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001792",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz",
+ "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+ "license": "MIT"
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.27.7",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
+ "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.7",
+ "@esbuild/android-arm": "0.27.7",
+ "@esbuild/android-arm64": "0.27.7",
+ "@esbuild/android-x64": "0.27.7",
+ "@esbuild/darwin-arm64": "0.27.7",
+ "@esbuild/darwin-x64": "0.27.7",
+ "@esbuild/freebsd-arm64": "0.27.7",
+ "@esbuild/freebsd-x64": "0.27.7",
+ "@esbuild/linux-arm": "0.27.7",
+ "@esbuild/linux-arm64": "0.27.7",
+ "@esbuild/linux-ia32": "0.27.7",
+ "@esbuild/linux-loong64": "0.27.7",
+ "@esbuild/linux-mips64el": "0.27.7",
+ "@esbuild/linux-ppc64": "0.27.7",
+ "@esbuild/linux-riscv64": "0.27.7",
+ "@esbuild/linux-s390x": "0.27.7",
+ "@esbuild/linux-x64": "0.27.7",
+ "@esbuild/netbsd-arm64": "0.27.7",
+ "@esbuild/netbsd-x64": "0.27.7",
+ "@esbuild/openbsd-arm64": "0.27.7",
+ "@esbuild/openbsd-x64": "0.27.7",
+ "@esbuild/openharmony-arm64": "0.27.7",
+ "@esbuild/sunos-x64": "0.27.7",
+ "@esbuild/win32-arm64": "0.27.7",
+ "@esbuild/win32-ia32": "0.27.7",
+ "@esbuild/win32-x64": "0.27.7"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.14.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+ "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/kareem": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
+ "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
+ "license": "MIT"
+ },
+ "node_modules/mongodb": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.20.0.tgz",
+ "integrity": "sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@mongodb-js/saslprep": "^1.3.0",
+ "bson": "^6.10.4",
+ "mongodb-connection-string-url": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=16.20.1"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-providers": "^3.188.0",
+ "@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
+ "gcp-metadata": "^5.2.0",
+ "kerberos": "^2.0.1",
+ "mongodb-client-encryption": ">=6.0.0 <7",
+ "snappy": "^7.3.2",
+ "socks": "^2.7.1"
+ },
+ "peerDependenciesMeta": {
+ "@aws-sdk/credential-providers": {
+ "optional": true
+ },
+ "@mongodb-js/zstd": {
+ "optional": true
+ },
+ "gcp-metadata": {
+ "optional": true
+ },
+ "kerberos": {
+ "optional": true
+ },
+ "mongodb-client-encryption": {
+ "optional": true
+ },
+ "snappy": {
+ "optional": true
+ },
+ "socks": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/mongodb-connection-string-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
+ "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/whatwg-url": "^11.0.2",
+ "whatwg-url": "^14.1.0 || ^13.0.0"
+ }
+ },
+ "node_modules/mongoose": {
+ "version": "8.23.1",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.23.1.tgz",
+ "integrity": "sha512-gHSPD8qEwRmiXapK17hEnFWZdcFENMegHTcw5XIIg2+7R8eXQvdwSiMpD/A2oG8tKzFLLHyRXd8/eaDPAVwZgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "bson": "^6.10.4",
+ "kareem": "2.6.3",
+ "mongodb": "~6.20.0",
+ "mpath": "0.9.0",
+ "mquery": "5.0.0",
+ "ms": "2.1.3",
+ "sift": "17.1.3"
+ },
+ "engines": {
+ "node": ">=16.20.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mongoose"
+ }
+ },
+ "node_modules/mpath": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
+ "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mquery": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
+ "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4.x"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.12",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
+ "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/next": {
+ "version": "15.5.15",
+ "resolved": "https://registry.npmjs.org/next/-/next-15.5.15.tgz",
+ "integrity": "sha512-VSqCrJwtLVGwAVE0Sb/yikrQfkwkZW9p+lL/J4+xe+G3ZA+QnWPqgcfH1tDUEuk9y+pthzzVFp4L/U8JerMfMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "15.5.15",
+ "@swc/helpers": "0.5.15",
+ "caniuse-lite": "^1.0.30001579",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.6"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "15.5.15",
+ "@next/swc-darwin-x64": "15.5.15",
+ "@next/swc-linux-arm64-gnu": "15.5.15",
+ "@next/swc-linux-arm64-musl": "15.5.15",
+ "@next/swc-linux-x64-gnu": "15.5.15",
+ "@next/swc-linux-x64-musl": "15.5.15",
+ "@next/swc-win32-arm64-msvc": "15.5.15",
+ "@next/swc-win32-x64-msvc": "15.5.15",
+ "sharp": "^0.34.3"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.51.1",
+ "babel-plugin-react-compiler": "*",
+ "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
+ "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
+ "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.5"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@img/colour": "^1.0.0",
+ "detect-libc": "^2.1.2",
+ "semver": "^7.7.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.5",
+ "@img/sharp-darwin-x64": "0.34.5",
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
+ "@img/sharp-libvips-linux-arm": "1.2.4",
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
+ "@img/sharp-libvips-linux-x64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+ "@img/sharp-linux-arm": "0.34.5",
+ "@img/sharp-linux-arm64": "0.34.5",
+ "@img/sharp-linux-ppc64": "0.34.5",
+ "@img/sharp-linux-riscv64": "0.34.5",
+ "@img/sharp-linux-s390x": "0.34.5",
+ "@img/sharp-linux-x64": "0.34.5",
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
+ "@img/sharp-linuxmusl-x64": "0.34.5",
+ "@img/sharp-wasm32": "0.34.5",
+ "@img/sharp-win32-arm64": "0.34.5",
+ "@img/sharp-win32-ia32": "0.34.5",
+ "@img/sharp-win32-x64": "0.34.5"
+ }
+ },
+ "node_modules/sift": {
+ "version": "17.1.3",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
+ "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
+ "license": "MIT"
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "memory-pager": "^1.0.2"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz",
+ "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tr46": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
+ "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tsx": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
+ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.27.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
+ "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^5.1.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ }
+}
diff --git a/baseball/package.json b/baseball/package.json
new file mode 100644
index 0000000..88e43bb
--- /dev/null
+++ b/baseball/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "little-league-roster-manager",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "seed": "node --import tsx src/scripts/seed.ts"
+ },
+ "dependencies": {
+ "clsx": "^2.1.1",
+ "mongoose": "^8.14.3",
+ "next": "^15.3.2",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "zod": "^3.24.4"
+ },
+ "devDependencies": {
+ "@types/node": "^22.15.17",
+ "@types/react": "^19.1.4",
+ "@types/react-dom": "^19.1.4",
+ "tsx": "^4.19.4",
+ "typescript": "^5.8.3"
+ }
+}
diff --git a/baseball/src/app/api/_utils.ts b/baseball/src/app/api/_utils.ts
new file mode 100644
index 0000000..05877ee
--- /dev/null
+++ b/baseball/src/app/api/_utils.ts
@@ -0,0 +1,14 @@
+import { NextResponse } from "next/server";
+import { ZodError } from "zod";
+
+export function handleApiError(error: unknown) {
+ if (error instanceof ZodError) {
+ return NextResponse.json({ error: error.issues[0]?.message ?? "Validation failed." }, { status: 400 });
+ }
+
+ if (error instanceof Error) {
+ return NextResponse.json({ error: error.message }, { status: 500 });
+ }
+
+ return NextResponse.json({ error: "Unexpected server error." }, { status: 500 });
+}
diff --git a/baseball/src/app/api/dashboard/route.ts b/baseball/src/app/api/dashboard/route.ts
new file mode 100644
index 0000000..54f8678
--- /dev/null
+++ b/baseball/src/app/api/dashboard/route.ts
@@ -0,0 +1,62 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { buildPitcherAvailabilityMap } from "@/lib/pitching";
+import { serialize } from "@/lib/serialize";
+import type { DashboardResponse } from "@/lib/types";
+import { formatPlayerName, toDateOnly } from "@/lib/utils";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+import { PitchingRuleModel } from "@/models/PitchingRule";
+import { PlayerModel } from "@/models/Player";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function GET(request: Request) {
+ try {
+ await connectToDatabase();
+ const { searchParams } = new URL(request.url);
+ const gameDate = searchParams.get("gameDate") ?? toDateOnly(new Date());
+
+ const [players, appearances, rules] = await Promise.all([
+ PlayerModel.find().sort({ jerseyNumber: 1 }).lean(),
+ PitchingAppearanceModel.find().lean(),
+ PitchingRuleModel.find().sort({ sortOrder: 1 }).lean()
+ ]);
+
+ const availabilityMap = buildPitcherAvailabilityMap(
+ players.map((player) => ({ ...player, _id: String(player._id) })),
+ appearances.map((appearance) => ({ ...appearance, playerId: String(appearance.playerId) })),
+ rules,
+ gameDate
+ );
+
+ const response: DashboardResponse = {
+ rosterCount: players.length,
+ activePlayers: players.filter((player) => player.isActive).length,
+ availablePitchers: 0,
+ needsRest: 0,
+ unknownPitchers: 0,
+ recentPitching: players.map((player) => {
+ const summary = availabilityMap[String(player._id)];
+ if (summary.status === "available") response.availablePitchers += 1;
+ if (summary.status === "needs-rest") response.needsRest += 1;
+ if (summary.status === "unknown") response.unknownPitchers += 1;
+
+ return {
+ playerId: String(player._id),
+ playerName: formatPlayerName(player.firstName, player.lastName),
+ status: summary.status,
+ daysSinceLastAppearance: summary.daysSinceLastAppearance,
+ requiredRestDays: summary.requiredRestDays,
+ lastPitchedDate: summary.lastPitchedDate,
+ pitchCount: summary.lastPitchCount
+ };
+ })
+ };
+
+ return NextResponse.json(serialize(response));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/lineups/generate/route.ts b/baseball/src/app/api/lineups/generate/route.ts
new file mode 100644
index 0000000..50d2028
--- /dev/null
+++ b/baseball/src/app/api/lineups/generate/route.ts
@@ -0,0 +1,47 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { generateLineup } from "@/lib/lineup";
+import { serialize } from "@/lib/serialize";
+import type { Position } from "@/lib/types";
+import { generateLineupSchema } from "@/lib/validators";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+import { PitchingRuleModel } from "@/models/PitchingRule";
+import { PlayerModel } from "@/models/Player";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function POST(request: Request) {
+ try {
+ await connectToDatabase();
+ const payload = generateLineupSchema.parse(await request.json());
+
+ const [players, rules, appearances] = await Promise.all([
+ PlayerModel.find({ _id: { $in: payload.playerIds } }).lean(),
+ PitchingRuleModel.find().sort({ sortOrder: 1 }).lean(),
+ PitchingAppearanceModel.find({ playerId: { $in: payload.playerIds } }).lean()
+ ]);
+
+ const lineup = generateLineup({
+ players: players.map((player) => ({
+ ...player,
+ _id: String(player._id),
+ primaryPosition: player.primaryPosition as Position,
+ secondaryPosition: (player.secondaryPosition ?? null) as Position | null,
+ tertiaryPosition: (player.tertiaryPosition ?? null) as Position | null
+ })),
+ rules,
+ appearances: appearances.map((appearance) => ({
+ ...appearance,
+ playerId: String(appearance.playerId)
+ })),
+ gameDate: payload.gameDate,
+ startingPitcherId: payload.startingPitcherId ?? null
+ });
+
+ return NextResponse.json(serialize(lineup));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/lineups/route.ts b/baseball/src/app/api/lineups/route.ts
new file mode 100644
index 0000000..cead9cf
--- /dev/null
+++ b/baseball/src/app/api/lineups/route.ts
@@ -0,0 +1,59 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { serialize } from "@/lib/serialize";
+import { saveLineupSchema } from "@/lib/validators";
+import { GameModel } from "@/models/Game";
+import { LineupModel } from "@/models/Lineup";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function GET(request: Request) {
+ try {
+ await connectToDatabase();
+ const { searchParams } = new URL(request.url);
+ const gameDate = searchParams.get("gameDate");
+ const filter = gameDate ? { gameDate: new Date(gameDate) } : {};
+ const lineups = await LineupModel.find(filter).sort({ gameDate: -1 }).lean();
+ return NextResponse.json(serialize(lineups));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
+
+export async function POST(request: Request) {
+ try {
+ await connectToDatabase();
+ const payload = saveLineupSchema.parse(await request.json());
+ const lineupPayload = {
+ gameDate: new Date(payload.gameDate),
+ playerIds: payload.playerIds,
+ startingPitcherId: payload.startingPitcherId ?? null,
+ battingOrder: payload.battingOrder,
+ defensiveAssignments: payload.defensiveAssignments,
+ bench: payload.bench,
+ notes: payload.notes
+ };
+
+ const lineup = await LineupModel.findOneAndUpdate({ gameDate: lineupPayload.gameDate }, lineupPayload, {
+ upsert: true,
+ new: true,
+ runValidators: true
+ }).lean();
+
+ await GameModel.findOneAndUpdate(
+ { gameDate: lineupPayload.gameDate },
+ {
+ gameDate: lineupPayload.gameDate,
+ activePlayerIds: payload.playerIds,
+ startingPitcherId: payload.startingPitcherId ?? null
+ },
+ { upsert: true, new: true }
+ );
+
+ return NextResponse.json(serialize(lineup), { status: 201 });
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/pitching-appearances/route.ts b/baseball/src/app/api/pitching-appearances/route.ts
new file mode 100644
index 0000000..b58f2b4
--- /dev/null
+++ b/baseball/src/app/api/pitching-appearances/route.ts
@@ -0,0 +1,37 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { serialize } from "@/lib/serialize";
+import { pitchingAppearanceSchema } from "@/lib/validators";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function GET(request: Request) {
+ try {
+ await connectToDatabase();
+ const { searchParams } = new URL(request.url);
+ const playerId = searchParams.get("playerId");
+ const filter = playerId ? { playerId } : {};
+ const appearances = await PitchingAppearanceModel.find(filter).sort({ gameDate: -1 }).lean();
+ return NextResponse.json(serialize(appearances));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
+
+export async function POST(request: Request) {
+ try {
+ await connectToDatabase();
+ const payload = pitchingAppearanceSchema.parse(await request.json());
+ const appearance = await PitchingAppearanceModel.create({
+ ...payload,
+ gameDate: new Date(payload.gameDate)
+ });
+
+ return NextResponse.json(serialize(appearance), { status: 201 });
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/pitching-rules/route.ts b/baseball/src/app/api/pitching-rules/route.ts
new file mode 100644
index 0000000..417ce53
--- /dev/null
+++ b/baseball/src/app/api/pitching-rules/route.ts
@@ -0,0 +1,38 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { serialize } from "@/lib/serialize";
+import { pitchingRulesSchema } from "@/lib/validators";
+import { PitchingRuleModel } from "@/models/PitchingRule";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function GET() {
+ try {
+ await connectToDatabase();
+ const rules = await PitchingRuleModel.find().sort({ sortOrder: 1 }).lean();
+ return NextResponse.json(serialize(rules));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
+
+export async function PUT(request: Request) {
+ try {
+ await connectToDatabase();
+ const payload = pitchingRulesSchema.parse(await request.json());
+
+ await PitchingRuleModel.deleteMany({});
+ const rules = await PitchingRuleModel.insertMany(
+ payload.map((rule, index) => ({
+ ...rule,
+ sortOrder: index
+ }))
+ );
+
+ return NextResponse.json(serialize(rules));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/players/[id]/route.ts b/baseball/src/app/api/players/[id]/route.ts
new file mode 100644
index 0000000..59bb852
--- /dev/null
+++ b/baseball/src/app/api/players/[id]/route.ts
@@ -0,0 +1,59 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { serialize } from "@/lib/serialize";
+import { playerSchema } from "@/lib/validators";
+import { LineupModel } from "@/models/Lineup";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+import { PlayerModel } from "@/models/Player";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function PATCH(request: Request, { params }: { params: Promise<{ id: string }> }) {
+ try {
+ await connectToDatabase();
+ const { id } = await params;
+ const payload = playerSchema.parse(await request.json());
+ const player = await PlayerModel.findByIdAndUpdate(id, payload, { new: true, runValidators: true }).lean();
+
+ if (!player) {
+ return NextResponse.json({ error: "Player not found." }, { status: 404 });
+ }
+
+ return NextResponse.json(serialize(player));
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
+
+export async function DELETE(_request: Request, { params }: { params: Promise<{ id: string }> }) {
+ try {
+ await connectToDatabase();
+ const { id } = await params;
+
+ await Promise.all([
+ PitchingAppearanceModel.deleteMany({ playerId: id }),
+ LineupModel.updateMany(
+ {},
+ {
+ $pull: {
+ playerIds: id,
+ bench: id,
+ battingOrder: { playerId: id },
+ defensiveAssignments: { playerId: id }
+ }
+ }
+ )
+ ]);
+
+ const player = await PlayerModel.findByIdAndDelete(id).lean();
+ if (!player) {
+ return NextResponse.json({ error: "Player not found." }, { status: 404 });
+ }
+
+ return NextResponse.json({ success: true });
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/players/route.ts b/baseball/src/app/api/players/route.ts
new file mode 100644
index 0000000..4ff7c0f
--- /dev/null
+++ b/baseball/src/app/api/players/route.ts
@@ -0,0 +1,57 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { connectToDatabase } from "@/lib/db";
+import { buildPitcherAvailabilityMap } from "@/lib/pitching";
+import { serialize } from "@/lib/serialize";
+import { toDateOnly } from "@/lib/utils";
+import { playerSchema } from "@/lib/validators";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+import { PitchingRuleModel } from "@/models/PitchingRule";
+import { PlayerModel } from "@/models/Player";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function GET(request: Request) {
+ try {
+ await connectToDatabase();
+ const { searchParams } = new URL(request.url);
+ const gameDate = searchParams.get("gameDate") ?? toDateOnly(new Date());
+
+ const [players, rules, appearances] = await Promise.all([
+ PlayerModel.find().sort({ jerseyNumber: 1, lastName: 1 }).lean(),
+ PitchingRuleModel.find().sort({ sortOrder: 1 }).lean(),
+ PitchingAppearanceModel.find().lean()
+ ]);
+
+ const availabilityMap = buildPitcherAvailabilityMap(
+ players.map((player) => ({ ...player, _id: String(player._id) })),
+ appearances.map((appearance) => ({ ...appearance, playerId: String(appearance.playerId) })),
+ rules,
+ gameDate
+ );
+
+ return NextResponse.json(
+ serialize(
+ players.map((player) => ({
+ ...player,
+ _id: String(player._id),
+ pitcherAvailability: availabilityMap[String(player._id)]
+ }))
+ )
+ );
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
+
+export async function POST(request: Request) {
+ try {
+ await connectToDatabase();
+ const payload = playerSchema.parse(await request.json());
+ const player = await PlayerModel.create(payload);
+ return NextResponse.json(serialize(player), { status: 201 });
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/api/seed/route.ts b/baseball/src/app/api/seed/route.ts
new file mode 100644
index 0000000..04f8c10
--- /dev/null
+++ b/baseball/src/app/api/seed/route.ts
@@ -0,0 +1,15 @@
+import { NextResponse } from "next/server";
+import { handleApiError } from "@/app/api/_utils";
+import { seedDatabase } from "@/lib/seed";
+
+export const runtime = "nodejs";
+export const dynamic = "force-dynamic";
+
+export async function POST() {
+ try {
+ const result = await seedDatabase();
+ return NextResponse.json(result);
+ } catch (error) {
+ return handleApiError(error);
+ }
+}
diff --git a/baseball/src/app/dashboard/page.tsx b/baseball/src/app/dashboard/page.tsx
new file mode 100644
index 0000000..18a20c5
--- /dev/null
+++ b/baseball/src/app/dashboard/page.tsx
@@ -0,0 +1,5 @@
+import { DashboardClient } from "@/components/DashboardClient";
+
+export default function DashboardPage() {
+ return ;
+}
diff --git a/baseball/src/app/globals.css b/baseball/src/app/globals.css
new file mode 100644
index 0000000..8771e83
--- /dev/null
+++ b/baseball/src/app/globals.css
@@ -0,0 +1,434 @@
+:root {
+ --bg: #f4efe3;
+ --surface: rgba(255, 252, 246, 0.94);
+ --surface-strong: #fffdf8;
+ --ink: #152033;
+ --muted: #5e687c;
+ --line: rgba(21, 32, 51, 0.1);
+ --accent: #0d6a5b;
+ --accent-strong: #094f44;
+ --warning: #b87510;
+ --danger: #b53a2c;
+ --success: #177245;
+ --shadow: 0 20px 45px rgba(21, 32, 51, 0.12);
+ --radius-lg: 24px;
+ --radius-md: 18px;
+ --radius-sm: 12px;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 16px;
+}
+
+body {
+ margin: 0;
+ min-height: 100vh;
+ color: var(--ink);
+ background:
+ radial-gradient(circle at top left, rgba(13, 106, 91, 0.2), transparent 32%),
+ radial-gradient(circle at top right, rgba(184, 117, 16, 0.18), transparent 28%),
+ linear-gradient(180deg, #f8f2e7 0%, var(--bg) 48%, #efe7d5 100%);
+ font-family: Georgia, "Times New Roman", serif;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+button,
+input,
+select,
+textarea {
+ font: inherit;
+}
+
+button {
+ cursor: pointer;
+}
+
+.app-shell {
+ width: min(1120px, calc(100% - 24px));
+ margin: 0 auto;
+ padding: 24px 0 64px;
+}
+
+.hero {
+ display: flex;
+ justify-content: space-between;
+ gap: 20px;
+ padding: 28px;
+ border-radius: 28px;
+ background: linear-gradient(135deg, rgba(14, 65, 92, 0.96), rgba(13, 106, 91, 0.92));
+ color: white;
+ box-shadow: var(--shadow);
+}
+
+.hero h1 {
+ margin: 0;
+ font-size: clamp(2rem, 5vw, 3.4rem);
+ line-height: 1;
+}
+
+.hero-copy,
+.eyebrow {
+ margin: 0;
+}
+
+.hero-copy {
+ margin-top: 12px;
+ max-width: 50rem;
+ color: rgba(255, 255, 255, 0.86);
+}
+
+.eyebrow {
+ margin-bottom: 10px;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ font-size: 0.8rem;
+ color: rgba(255, 255, 255, 0.72);
+}
+
+.hero-actions {
+ display: flex;
+ align-items: flex-start;
+}
+
+.tabs {
+ display: grid;
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 10px;
+ margin: 18px 0 24px;
+}
+
+.tab {
+ border: 1px solid var(--line);
+ background: rgba(255, 255, 255, 0.72);
+ border-radius: 999px;
+ padding: 12px 14px;
+ text-align: center;
+ color: var(--muted);
+}
+
+.tab-active {
+ background: var(--surface-strong);
+ color: var(--ink);
+ box-shadow: var(--shadow);
+}
+
+.page-grid {
+ display: grid;
+ gap: 18px;
+}
+
+.section-card {
+ background: var(--surface);
+ border: 1px solid rgba(255, 255, 255, 0.72);
+ border-radius: var(--radius-lg);
+ padding: 24px;
+ box-shadow: var(--shadow);
+ backdrop-filter: blur(14px);
+}
+
+.section-heading h2,
+.list-row h3,
+.empty-state h3,
+.player-card h3 {
+ margin: 0;
+}
+
+.section-heading p,
+.empty-state p,
+.list-row p,
+.muted-copy {
+ margin: 8px 0 0;
+ color: var(--muted);
+}
+
+.stats-grid,
+.card-grid {
+ display: grid;
+ gap: 16px;
+}
+
+.stats-grid {
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+}
+
+.stat-card {
+ padding: 18px;
+ border-radius: var(--radius-md);
+ background: var(--surface-strong);
+ border: 1px solid var(--line);
+}
+
+.stat-card span {
+ display: block;
+ color: var(--muted);
+}
+
+.stat-card strong {
+ display: block;
+ margin-top: 10px;
+ font-size: 2rem;
+}
+
+.stat-card-success strong {
+ color: var(--success);
+}
+
+.stat-card-warning strong {
+ color: var(--warning);
+}
+
+.list-stack {
+ display: grid;
+ gap: 12px;
+}
+
+.list-row,
+.picker-card {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ border: 1px solid var(--line);
+ border-radius: var(--radius-md);
+ padding: 14px 16px;
+ background: rgba(255, 255, 255, 0.7);
+}
+
+.list-meta {
+ display: grid;
+ justify-items: end;
+ gap: 6px;
+}
+
+.badge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 108px;
+ padding: 8px 12px;
+ border-radius: 999px;
+ font-size: 0.85rem;
+ font-weight: 700;
+}
+
+.badge-available {
+ background: rgba(23, 114, 69, 0.12);
+ color: var(--success);
+}
+
+.badge-needs-rest {
+ background: rgba(181, 58, 44, 0.12);
+ color: var(--danger);
+}
+
+.badge-unknown {
+ background: rgba(94, 104, 124, 0.12);
+ color: var(--muted);
+}
+
+.empty-state {
+ padding: 28px;
+ border: 1px dashed var(--line);
+ border-radius: var(--radius-md);
+ text-align: center;
+}
+
+.banner {
+ padding: 14px 16px;
+ border-radius: var(--radius-sm);
+ margin-bottom: 12px;
+}
+
+.banner-success {
+ background: rgba(23, 114, 69, 0.12);
+ color: var(--success);
+}
+
+.banner-error {
+ background: rgba(181, 58, 44, 0.12);
+ color: var(--danger);
+}
+
+.form-grid {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 16px;
+}
+
+.form-grid label,
+.rule-table th,
+.rule-table td {
+ font-size: 0.95rem;
+}
+
+.form-grid label span {
+ display: block;
+ margin-bottom: 8px;
+ color: var(--muted);
+}
+
+.full-width {
+ grid-column: 1 / -1;
+}
+
+.form-grid input,
+.form-grid select,
+.form-grid textarea,
+.rule-table input,
+.list-row select {
+ width: 100%;
+ border: 1px solid var(--line);
+ border-radius: 14px;
+ background: white;
+ padding: 12px 14px;
+ color: var(--ink);
+}
+
+.checkbox-row {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.checkbox-row span {
+ margin: 0;
+}
+
+.checkbox-row input {
+ width: auto;
+}
+
+.button {
+ border: 0;
+ border-radius: 999px;
+ padding: 12px 18px;
+ background: var(--accent);
+ color: white;
+ font-weight: 700;
+}
+
+.button:disabled {
+ opacity: 0.45;
+ cursor: not-allowed;
+}
+
+.button-secondary {
+ background: white;
+ color: var(--ink);
+ border: 1px solid var(--line);
+}
+
+.button-danger {
+ background: var(--danger);
+}
+
+.player-card {
+ display: grid;
+ gap: 12px;
+ padding: 18px;
+ border-radius: var(--radius-md);
+ background: rgba(255, 255, 255, 0.72);
+ border: 1px solid var(--line);
+}
+
+.card-grid {
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
+}
+
+.player-card-head {
+ display: flex;
+ justify-content: space-between;
+ gap: 12px;
+}
+
+.player-card-head p,
+.player-notes,
+.player-meta dt {
+ margin: 6px 0 0;
+ color: var(--muted);
+}
+
+.player-meta {
+ display: grid;
+ gap: 10px;
+ margin: 0;
+}
+
+.player-meta dd {
+ margin: 4px 0 0;
+}
+
+.action-row {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+}
+
+.table-wrap {
+ overflow-x: auto;
+}
+
+.rule-table {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.rule-table th,
+.rule-table td {
+ text-align: left;
+ padding: 12px;
+ border-bottom: 1px solid var(--line);
+}
+
+.picker-grid {
+ display: grid;
+ gap: 12px;
+ margin-top: 18px;
+}
+
+.picker-card input {
+ width: auto;
+}
+
+.note-block {
+ margin-top: 16px;
+ border-left: 4px solid var(--warning);
+ padding-left: 14px;
+ color: var(--muted);
+}
+
+@media (max-width: 760px) {
+ .app-shell {
+ width: min(100% - 16px, 1120px);
+ }
+
+ .hero,
+ .tabs,
+ .form-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .hero,
+ .list-row,
+ .picker-card,
+ .player-card-head {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .tabs {
+ display: grid;
+ }
+
+ .list-meta {
+ justify-items: start;
+ }
+}
diff --git a/baseball/src/app/layout.tsx b/baseball/src/app/layout.tsx
new file mode 100644
index 0000000..897c34a
--- /dev/null
+++ b/baseball/src/app/layout.tsx
@@ -0,0 +1,15 @@
+import type { Metadata } from "next";
+import "./globals.css";
+
+export const metadata: Metadata = {
+ title: "Little League Roster Manager",
+ description: "Roster, pitching availability, and lineup planning for game day."
+};
+
+export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
+ return (
+
+
{children}
+
+ );
+}
diff --git a/baseball/src/app/lineup/page.tsx b/baseball/src/app/lineup/page.tsx
new file mode 100644
index 0000000..9277c6e
--- /dev/null
+++ b/baseball/src/app/lineup/page.tsx
@@ -0,0 +1,5 @@
+import { LineupClient } from "@/components/LineupClient";
+
+export default function LineupPage() {
+ return ;
+}
diff --git a/baseball/src/app/page.tsx b/baseball/src/app/page.tsx
new file mode 100644
index 0000000..9ef1235
--- /dev/null
+++ b/baseball/src/app/page.tsx
@@ -0,0 +1,5 @@
+import { redirect } from "next/navigation";
+
+export default function HomePage() {
+ redirect("/dashboard");
+}
diff --git a/baseball/src/app/roster/page.tsx b/baseball/src/app/roster/page.tsx
new file mode 100644
index 0000000..a54e609
--- /dev/null
+++ b/baseball/src/app/roster/page.tsx
@@ -0,0 +1,5 @@
+import { RosterClient } from "@/components/RosterClient";
+
+export default function RosterPage() {
+ return ;
+}
diff --git a/baseball/src/app/settings/page.tsx b/baseball/src/app/settings/page.tsx
new file mode 100644
index 0000000..e1b92df
--- /dev/null
+++ b/baseball/src/app/settings/page.tsx
@@ -0,0 +1,5 @@
+import { SettingsClient } from "@/components/SettingsClient";
+
+export default function SettingsPage() {
+ return ;
+}
diff --git a/baseball/src/components/AppShell.tsx b/baseball/src/components/AppShell.tsx
new file mode 100644
index 0000000..59e229a
--- /dev/null
+++ b/baseball/src/components/AppShell.tsx
@@ -0,0 +1,50 @@
+"use client";
+
+import Link from "next/link";
+import type { Route } from "next";
+import { usePathname } from "next/navigation";
+import { cn } from "@/lib/utils";
+
+const navItems = [
+ { href: "/dashboard", label: "Dashboard" },
+ { href: "/roster", label: "Roster" },
+ { href: "/lineup", label: "Generate Lineup" },
+ { href: "/settings", label: "Pitching Rules" }
+];
+
+export function AppShell({
+ title,
+ subtitle,
+ children,
+ actions
+}: {
+ title: string;
+ subtitle: string;
+ children: React.ReactNode;
+ actions?: React.ReactNode;
+}) {
+ const pathname = usePathname();
+
+ return (
+
+
+
+
+
+
{children}
+
+ );
+}
diff --git a/baseball/src/components/DashboardClient.tsx b/baseball/src/components/DashboardClient.tsx
new file mode 100644
index 0000000..8c8626b
--- /dev/null
+++ b/baseball/src/components/DashboardClient.tsx
@@ -0,0 +1,124 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { AppShell } from "@/components/AppShell";
+import { EmptyState } from "@/components/EmptyState";
+import { SectionCard } from "@/components/SectionCard";
+import { StatusBadge } from "@/components/StatusBadge";
+import { fetchJson } from "@/lib/client";
+import type { DashboardResponse } from "@/lib/types";
+
+export function DashboardClient() {
+ const [data, setData] = useState(null);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+ const [message, setMessage] = useState(null);
+
+ async function loadDashboard() {
+ setLoading(true);
+ setError(null);
+
+ try {
+ const response = await fetchJson("/api/dashboard");
+ setData(response);
+ } catch (loadError) {
+ setError(loadError instanceof Error ? loadError.message : "Failed to load dashboard.");
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ async function seedSampleData() {
+ try {
+ const response = await fetchJson<{ seeded: boolean; reason?: string }>("/api/seed", { method: "POST" });
+ setMessage(response.seeded ? "Sample team loaded." : response.reason ?? "Seed skipped.");
+ await loadDashboard();
+ } catch (seedError) {
+ setError(seedError instanceof Error ? seedError.message : "Failed to seed data.");
+ }
+ }
+
+ useEffect(() => {
+ void loadDashboard();
+ }, []);
+
+ return (
+ void seedSampleData()}>
+ Load Sample Team
+
+ }
+ >
+ {message ? {message}
: null}
+ {error ? {error}
: null}
+
+ {loading ? (
+
+ ) : data && data.rosterCount > 0 ? (
+ <>
+
+
+ Rostered Players
+ {data.rosterCount}
+
+
+ Active Today
+ {data.activePlayers}
+
+
+ Pitchers Available
+ {data.availablePitchers}
+
+
+ Need Rest
+ {data.needsRest}
+
+
+
+
+
+ {data.recentPitching.map((entry) => (
+
+
+
{entry.playerName}
+
+ {entry.lastPitchedDate
+ ? `${entry.pitchCount} pitches on ${entry.lastPitchedDate}`
+ : "No pitching history recorded yet."}
+
+
+
+
+
+ {entry.daysSinceLastAppearance === null
+ ? "No history"
+ : `${entry.daysSinceLastAppearance} day(s) since last outing`}
+
+
+
+ ))}
+
+
+ >
+ ) : (
+
+ void seedSampleData()}>
+ Load Sample Team
+
+ }
+ />
+
+ )}
+
+ );
+}
diff --git a/baseball/src/components/EmptyState.tsx b/baseball/src/components/EmptyState.tsx
new file mode 100644
index 0000000..15c509c
--- /dev/null
+++ b/baseball/src/components/EmptyState.tsx
@@ -0,0 +1,17 @@
+export function EmptyState({
+ title,
+ description,
+ action
+}: {
+ title: string;
+ description: string;
+ action?: React.ReactNode;
+}) {
+ return (
+
+
{title}
+
{description}
+ {action}
+
+ );
+}
diff --git a/baseball/src/components/LineupClient.tsx b/baseball/src/components/LineupClient.tsx
new file mode 100644
index 0000000..3f02368
--- /dev/null
+++ b/baseball/src/components/LineupClient.tsx
@@ -0,0 +1,249 @@
+"use client";
+
+import { useEffect, useMemo, useState } from "react";
+import { AppShell } from "@/components/AppShell";
+import { EmptyState } from "@/components/EmptyState";
+import { SectionCard } from "@/components/SectionCard";
+import { StatusBadge } from "@/components/StatusBadge";
+import { FIELD_POSITIONS } from "@/lib/constants";
+import { fetchJson } from "@/lib/client";
+import { formatPlayerName } from "@/lib/utils";
+import type { GeneratedLineup, LineupRecord, PlayerRecord } from "@/lib/types";
+
+export function LineupClient() {
+ const [gameDate, setGameDate] = useState(new Date().toISOString().slice(0, 10));
+ const [players, setPlayers] = useState([]);
+ const [selectedPlayerIds, setSelectedPlayerIds] = useState([]);
+ const [startingPitcherId, setStartingPitcherId] = useState("");
+ const [showAllPitchers, setShowAllPitchers] = useState(false);
+ const [generated, setGenerated] = useState(null);
+ const [message, setMessage] = useState(null);
+ const [error, setError] = useState(null);
+
+ async function loadPlayers(targetDate: string) {
+ try {
+ const response = await fetchJson(`/api/players?gameDate=${targetDate}`);
+ setPlayers(response);
+ const activeIds = response.filter((player) => player.isActive).map((player) => player._id);
+ setSelectedPlayerIds(activeIds);
+ const firstEligible = response.find((player) => player.pitcherAvailability.status === "available");
+ setStartingPitcherId(firstEligible?._id ?? response[0]?._id ?? "");
+ } catch (loadError) {
+ setError(loadError instanceof Error ? loadError.message : "Failed to load players.");
+ }
+ }
+
+ useEffect(() => {
+ void loadPlayers(gameDate);
+ }, [gameDate]);
+
+ const selectablePitchers = useMemo(
+ () =>
+ players.filter((player) =>
+ selectedPlayerIds.includes(player._id) &&
+ (showAllPitchers || player.pitcherAvailability.status !== "needs-rest")
+ ),
+ [players, selectedPlayerIds, showAllPitchers]
+ );
+
+ const selectedPlayers = useMemo(
+ () => players.filter((player) => selectedPlayerIds.includes(player._id)),
+ [players, selectedPlayerIds]
+ );
+
+ function updateGenerated(next: GeneratedLineup | null) {
+ setGenerated(next);
+ }
+
+ async function generate() {
+ try {
+ const response = await fetchJson("/api/lineups/generate", {
+ method: "POST",
+ body: JSON.stringify({
+ gameDate,
+ playerIds: selectedPlayerIds,
+ startingPitcherId: startingPitcherId || null
+ })
+ });
+ setGenerated(response);
+ setMessage("Suggested lineup generated.");
+ } catch (generateError) {
+ setError(generateError instanceof Error ? generateError.message : "Unable to generate lineup.");
+ }
+ }
+
+ async function save() {
+ if (!generated) return;
+
+ try {
+ await fetchJson("/api/lineups", {
+ method: "POST",
+ body: JSON.stringify({
+ ...generated,
+ playerIds: selectedPlayerIds
+ })
+ });
+ setMessage("Lineup saved.");
+ } catch (saveError) {
+ setError(saveError instanceof Error ? saveError.message : "Unable to save lineup.");
+ }
+ }
+
+ return (
+
+ {message ? {message}
: null}
+ {error ? {error}
: null}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {players.map((player) => (
+
+ ))}
+
+
+
+ {generated ? (
+ <>
+
+
+ {generated.battingOrder.map((slot, index) => (
+
+
+
Spot {index + 1}
+
+
+
+ ))}
+
+
+
+
+
+ {FIELD_POSITIONS.map((position) => {
+ const assignment = generated.defensiveAssignments.find((entry) => entry.position === position);
+ return (
+
+
+
{position}
+
+
+
+ );
+ })}
+
+ {generated.notes.length > 0 ? (
+
+ {generated.notes.map((note) => (
+
{note}
+ ))}
+
+ ) : null}
+
+ >
+ ) : (
+
+
+
+ )}
+
+ );
+}
diff --git a/baseball/src/components/PlayerForm.tsx b/baseball/src/components/PlayerForm.tsx
new file mode 100644
index 0000000..05078cf
--- /dev/null
+++ b/baseball/src/components/PlayerForm.tsx
@@ -0,0 +1,128 @@
+"use client";
+
+import { HANDEDNESS_OPTIONS, POSITIONS } from "@/lib/constants";
+import type { PlayerInput, PlayerRecord } from "@/lib/types";
+
+const defaultForm: PlayerInput = {
+ firstName: "",
+ lastName: "",
+ jerseyNumber: 0,
+ batsThrows: "R/R",
+ primaryPosition: "P",
+ secondaryPosition: "C",
+ tertiaryPosition: "1B",
+ isActive: true,
+ notes: ""
+};
+
+export function emptyPlayerForm() {
+ return { ...defaultForm };
+}
+
+export function toPlayerForm(player: PlayerRecord): PlayerInput {
+ return {
+ firstName: player.firstName,
+ lastName: player.lastName,
+ jerseyNumber: player.jerseyNumber,
+ batsThrows: player.batsThrows,
+ primaryPosition: player.primaryPosition,
+ secondaryPosition: player.secondaryPosition ?? null,
+ tertiaryPosition: player.tertiaryPosition ?? null,
+ isActive: player.isActive,
+ notes: player.notes ?? ""
+ };
+}
+
+export function PlayerForm({
+ value,
+ onChange,
+ onSubmit,
+ submitLabel
+}: {
+ value: PlayerInput;
+ onChange: (next: PlayerInput) => void;
+ onSubmit: () => void;
+ submitLabel: string;
+}) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/baseball/src/components/RosterClient.tsx b/baseball/src/components/RosterClient.tsx
new file mode 100644
index 0000000..8150dca
--- /dev/null
+++ b/baseball/src/components/RosterClient.tsx
@@ -0,0 +1,219 @@
+"use client";
+
+import { useEffect, useMemo, useState } from "react";
+import { AppShell } from "@/components/AppShell";
+import { EmptyState } from "@/components/EmptyState";
+import { PlayerForm, emptyPlayerForm, toPlayerForm } from "@/components/PlayerForm";
+import { SectionCard } from "@/components/SectionCard";
+import { StatusBadge } from "@/components/StatusBadge";
+import { fetchJson } from "@/lib/client";
+import { formatPlayerName } from "@/lib/utils";
+import type { PitchingAppearanceRecord, PlayerInput, PlayerRecord } from "@/lib/types";
+
+export function RosterClient() {
+ const [players, setPlayers] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+ const [message, setMessage] = useState(null);
+ const [editingPlayerId, setEditingPlayerId] = useState(null);
+ const [playerForm, setPlayerForm] = useState(emptyPlayerForm());
+ const [appearanceForm, setAppearanceForm] = useState({
+ playerId: "",
+ gameDate: new Date().toISOString().slice(0, 10),
+ pitchCount: 20,
+ notes: ""
+ });
+
+ const editingPlayer = useMemo(
+ () => players.find((player) => player._id === editingPlayerId) ?? null,
+ [editingPlayerId, players]
+ );
+
+ async function loadPlayers() {
+ setLoading(true);
+ setError(null);
+ try {
+ const response = await fetchJson("/api/players");
+ setPlayers(response);
+ if (response.length > 0 && !appearanceForm.playerId) {
+ setAppearanceForm((current) => ({ ...current, playerId: response[0]._id }));
+ }
+ } catch (loadError) {
+ setError(loadError instanceof Error ? loadError.message : "Failed to load roster.");
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ useEffect(() => {
+ void loadPlayers();
+ }, []);
+
+ useEffect(() => {
+ if (editingPlayer) {
+ setPlayerForm(toPlayerForm(editingPlayer));
+ } else {
+ setPlayerForm(emptyPlayerForm());
+ }
+ }, [editingPlayer]);
+
+ async function submitPlayer() {
+ try {
+ const url = editingPlayerId ? `/api/players/${editingPlayerId}` : "/api/players";
+ const method = editingPlayerId ? "PATCH" : "POST";
+ await fetchJson(url, { method, body: JSON.stringify(playerForm) });
+ setMessage(editingPlayerId ? "Player updated." : "Player added.");
+ setEditingPlayerId(null);
+ setPlayerForm(emptyPlayerForm());
+ await loadPlayers();
+ } catch (submitError) {
+ setError(submitError instanceof Error ? submitError.message : "Unable to save player.");
+ }
+ }
+
+ async function deletePlayer(player: PlayerRecord) {
+ if (!window.confirm(`Remove ${formatPlayerName(player.firstName, player.lastName)} from the roster?`)) {
+ return;
+ }
+
+ try {
+ await fetchJson(`/api/players/${player._id}`, { method: "DELETE" });
+ setMessage("Player removed.");
+ await loadPlayers();
+ } catch (deleteError) {
+ setError(deleteError instanceof Error ? deleteError.message : "Unable to delete player.");
+ }
+ }
+
+ async function logAppearance() {
+ try {
+ await fetchJson("/api/pitching-appearances", {
+ method: "POST",
+ body: JSON.stringify(appearanceForm)
+ });
+ setMessage("Pitching appearance recorded.");
+ await loadPlayers();
+ } catch (submitError) {
+ setError(submitError instanceof Error ? submitError.message : "Unable to save pitching appearance.");
+ }
+ }
+
+ return (
+
+ {message ? {message}
: null}
+ {error ? {error}
: null}
+
+
+ void submitPlayer()} submitLabel={editingPlayerId ? "Save Changes" : "Add Player"} />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {loading ? (
+ Loading roster...
+ ) : players.length > 0 ? (
+
+ {players.map((player) => (
+
+
+
+
+ #{player.jerseyNumber} {formatPlayerName(player.firstName, player.lastName)}
+
+
+ {player.primaryPosition}
+ {player.secondaryPosition ? ` / ${player.secondaryPosition}` : ""}
+ {player.tertiaryPosition ? ` / ${player.tertiaryPosition}` : ""}
+
+
+
+
+
+
+
- Bats/Throws
+ - {player.batsThrows}
+
+
+
- Status
+ - {player.isActive ? "Active" : "Inactive"}
+
+
+
- Pitching
+ -
+ {player.pitcherAvailability.lastPitchedDate
+ ? `${player.pitcherAvailability.lastPitchCount} pitches on ${player.pitcherAvailability.lastPitchedDate}`
+ : "No history"}
+
+
+
+ {player.notes ? {player.notes}
: null}
+
+
+
+
+
+ ))}
+
+ ) : (
+
+ )}
+
+
+ );
+}
diff --git a/baseball/src/components/SectionCard.tsx b/baseball/src/components/SectionCard.tsx
new file mode 100644
index 0000000..2c4a062
--- /dev/null
+++ b/baseball/src/components/SectionCard.tsx
@@ -0,0 +1,21 @@
+export function SectionCard({
+ title,
+ description,
+ children
+}: {
+ title: string;
+ description?: string;
+ children?: React.ReactNode;
+}) {
+ return (
+
+
+
+
{title}
+ {description ?
{description}
: null}
+
+
+ {children}
+
+ );
+}
diff --git a/baseball/src/components/SettingsClient.tsx b/baseball/src/components/SettingsClient.tsx
new file mode 100644
index 0000000..d12954a
--- /dev/null
+++ b/baseball/src/components/SettingsClient.tsx
@@ -0,0 +1,128 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { AppShell } from "@/components/AppShell";
+import { SectionCard } from "@/components/SectionCard";
+import { fetchJson } from "@/lib/client";
+import { DEFAULT_PITCHING_RULES } from "@/lib/constants";
+import type { PitchingRuleRecord } from "@/lib/types";
+
+export function SettingsClient() {
+ const [rules, setRules] = useState(DEFAULT_PITCHING_RULES);
+ const [error, setError] = useState(null);
+ const [message, setMessage] = useState(null);
+
+ async function loadRules() {
+ try {
+ const response = await fetchJson("/api/pitching-rules");
+ if (response.length > 0) {
+ setRules(
+ response.map((rule) => ({
+ minPitches: rule.minPitches,
+ maxPitches: rule.maxPitches,
+ requiredRestDays: rule.requiredRestDays
+ }))
+ );
+ }
+ } catch (loadError) {
+ setError(loadError instanceof Error ? loadError.message : "Failed to load rules.");
+ }
+ }
+
+ useEffect(() => {
+ void loadRules();
+ }, []);
+
+ async function saveRules() {
+ try {
+ await fetchJson("/api/pitching-rules", {
+ method: "PUT",
+ body: JSON.stringify(rules)
+ });
+ setMessage("Pitching rules updated.");
+ } catch (saveError) {
+ setError(saveError instanceof Error ? saveError.message : "Failed to save rules.");
+ }
+ }
+
+ return (
+
+ {message ? {message}
: null}
+ {error ? {error}
: null}
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/baseball/src/components/StatusBadge.tsx b/baseball/src/components/StatusBadge.tsx
new file mode 100644
index 0000000..8308743
--- /dev/null
+++ b/baseball/src/components/StatusBadge.tsx
@@ -0,0 +1,6 @@
+import type { PitcherAvailability } from "@/lib/types";
+import { cn, statusLabel } from "@/lib/utils";
+
+export function StatusBadge({ status }: { status: PitcherAvailability }) {
+ return {statusLabel(status)};
+}
diff --git a/baseball/src/lib/auth.ts b/baseball/src/lib/auth.ts
new file mode 100644
index 0000000..6850b38
--- /dev/null
+++ b/baseball/src/lib/auth.ts
@@ -0,0 +1,12 @@
+export interface UserContext {
+ userId: string | null;
+ role: "coach" | "admin" | "viewer";
+}
+
+export async function getCurrentUserContext(): Promise {
+ // Placeholder for future auth integration.
+ return {
+ userId: null,
+ role: "admin"
+ };
+}
diff --git a/baseball/src/lib/client.ts b/baseball/src/lib/client.ts
new file mode 100644
index 0000000..064aac3
--- /dev/null
+++ b/baseball/src/lib/client.ts
@@ -0,0 +1,19 @@
+"use client";
+
+export async function fetchJson(input: RequestInfo | URL, init?: RequestInit): Promise {
+ const response = await fetch(input, {
+ ...init,
+ headers: {
+ "Content-Type": "application/json",
+ ...(init?.headers ?? {})
+ },
+ cache: "no-store"
+ });
+
+ if (!response.ok) {
+ const data = (await response.json().catch(() => null)) as { error?: string } | null;
+ throw new Error(data?.error ?? "Request failed.");
+ }
+
+ return response.json() as Promise;
+}
diff --git a/baseball/src/lib/constants.ts b/baseball/src/lib/constants.ts
new file mode 100644
index 0000000..b486ade
--- /dev/null
+++ b/baseball/src/lib/constants.ts
@@ -0,0 +1,15 @@
+import type { Handedness, PitchingRuleInput, Position } from "@/lib/types";
+
+export const POSITIONS = ["P", "C", "1B", "2B", "3B", "SS", "LF", "CF", "RF", "UTIL"] as const satisfies readonly Position[];
+
+export const FIELD_POSITIONS = ["P", "C", "1B", "2B", "3B", "SS", "LF", "CF", "RF"] as const satisfies readonly Position[];
+
+export const DEFAULT_PITCHING_RULES: PitchingRuleInput[] = [
+ { minPitches: 1, maxPitches: 20, requiredRestDays: 0 },
+ { minPitches: 21, maxPitches: 35, requiredRestDays: 1 },
+ { minPitches: 36, maxPitches: 50, requiredRestDays: 2 },
+ { minPitches: 51, maxPitches: 65, requiredRestDays: 3 },
+ { minPitches: 66, maxPitches: null, requiredRestDays: 4 }
+];
+
+export const HANDEDNESS_OPTIONS = ["R/R", "R/L", "L/L", "L/R", "Switch"] as const satisfies readonly Handedness[];
diff --git a/baseball/src/lib/db.ts b/baseball/src/lib/db.ts
new file mode 100644
index 0000000..391a02c
--- /dev/null
+++ b/baseball/src/lib/db.ts
@@ -0,0 +1,35 @@
+import mongoose from "mongoose";
+
+const MONGODB_URI = process.env.MONGODB_URI;
+
+declare global {
+ // eslint-disable-next-line no-var
+ var mongooseCache:
+ | {
+ conn: typeof mongoose | null;
+ promise: Promise | null;
+ }
+ | undefined;
+}
+
+const cache = global.mongooseCache ?? { conn: null, promise: null };
+global.mongooseCache = cache;
+
+export async function connectToDatabase() {
+ if (!MONGODB_URI) {
+ throw new Error("Missing MONGODB_URI environment variable.");
+ }
+
+ if (cache.conn) {
+ return cache.conn;
+ }
+
+ if (!cache.promise) {
+ cache.promise = mongoose.connect(MONGODB_URI, {
+ bufferCommands: false
+ });
+ }
+
+ cache.conn = await cache.promise;
+ return cache.conn;
+}
diff --git a/baseball/src/lib/lineup.ts b/baseball/src/lib/lineup.ts
new file mode 100644
index 0000000..a9020ad
--- /dev/null
+++ b/baseball/src/lib/lineup.ts
@@ -0,0 +1,124 @@
+import { FIELD_POSITIONS } from "@/lib/constants";
+import { buildPitcherAvailabilityMap } from "@/lib/pitching";
+import type { GeneratedLineup, Position } from "@/lib/types";
+import { formatPlayerName } from "@/lib/utils";
+
+interface PlayerLike {
+ _id: string;
+ firstName: string;
+ lastName: string;
+ jerseyNumber: number;
+ isActive: boolean;
+ primaryPosition: Position;
+ secondaryPosition?: Position | null;
+ tertiaryPosition?: Position | null;
+}
+
+interface AppearanceLike {
+ playerId: string;
+ gameDate: Date | string;
+ pitchCount: number;
+}
+
+interface RuleLike {
+ minPitches: number;
+ maxPitches: number | null;
+ requiredRestDays: number;
+}
+
+function positionScore(player: PlayerLike, position: Position) {
+ if (player.primaryPosition === position) return 100;
+ if (player.secondaryPosition === position) return 75;
+ if (player.tertiaryPosition === position) return 50;
+ if (player.primaryPosition === "UTIL") return 25;
+ return 0;
+}
+
+export function generateLineup({
+ players,
+ appearances,
+ rules,
+ gameDate,
+ startingPitcherId
+}: {
+ players: PlayerLike[];
+ appearances: AppearanceLike[];
+ rules: RuleLike[];
+ gameDate: string;
+ startingPitcherId?: string | null;
+}): GeneratedLineup {
+ const notes: string[] = [];
+ const availabilityMap = buildPitcherAvailabilityMap(players, appearances, rules, gameDate);
+ const availablePlayers = players.filter((player) => player.isActive);
+ const lineupPool = availablePlayers.length > 0 ? availablePlayers : players;
+ const selectedPitcher =
+ startingPitcherId && lineupPool.find((player) => player._id === startingPitcherId)
+ ? lineupPool.find((player) => player._id === startingPitcherId) ?? null
+ : null;
+
+ if (selectedPitcher && availabilityMap[selectedPitcher._id]?.status === "needs-rest") {
+ notes.push(`${formatPlayerName(selectedPitcher.firstName, selectedPitcher.lastName)} is currently marked as needing rest.`);
+ }
+
+ const remainingPlayers = lineupPool.filter((player) => player._id !== selectedPitcher?._id);
+ const defensiveAssignments: GeneratedLineup["defensiveAssignments"] = [];
+ const assigned = new Set();
+
+ if (selectedPitcher) {
+ defensiveAssignments.push({
+ playerId: selectedPitcher._id,
+ playerName: formatPlayerName(selectedPitcher.firstName, selectedPitcher.lastName),
+ position: "P"
+ });
+ assigned.add(selectedPitcher._id);
+ }
+
+ for (const position of FIELD_POSITIONS.filter((entry) => entry !== "P")) {
+ const candidate = remainingPlayers
+ .filter((player) => !assigned.has(player._id))
+ .sort((a, b) => positionScore(b, position) - positionScore(a, position))[0];
+
+ if (!candidate) {
+ break;
+ }
+
+ defensiveAssignments.push({
+ playerId: candidate._id,
+ playerName: formatPlayerName(candidate.firstName, candidate.lastName),
+ position
+ });
+ assigned.add(candidate._id);
+ }
+
+ const battingPool = [...lineupPool].sort((a, b) => {
+ const aFlex = [a.primaryPosition, a.secondaryPosition, a.tertiaryPosition].filter(Boolean).length;
+ const bFlex = [b.primaryPosition, b.secondaryPosition, b.tertiaryPosition].filter(Boolean).length;
+ if (bFlex !== aFlex) return bFlex - aFlex;
+ return a.jerseyNumber - b.jerseyNumber;
+ });
+
+ const battingOrder = battingPool.map((player, index) => ({
+ playerId: player._id,
+ playerName: formatPlayerName(player.firstName, player.lastName),
+ slot: index + 1
+ }));
+
+ const bench = lineupPool.filter((player) => !assigned.has(player._id)).map((player) => player._id);
+
+ if (!selectedPitcher) {
+ notes.push("No starting pitcher was selected. Choose one before game time.");
+ }
+
+ if (lineupPool.length < FIELD_POSITIONS.length) {
+ notes.push("Fewer than nine players are available. Some positions will need to be covered creatively.");
+ }
+
+ return {
+ gameDate,
+ startingPitcherId: selectedPitcher?._id ?? null,
+ battingOrder,
+ defensiveAssignments,
+ bench,
+ notes
+ };
+}
diff --git a/baseball/src/lib/pitching.ts b/baseball/src/lib/pitching.ts
new file mode 100644
index 0000000..4ff96ac
--- /dev/null
+++ b/baseball/src/lib/pitching.ts
@@ -0,0 +1,71 @@
+import type { PlayerAvailabilitySummary } from "@/lib/types";
+import { daysBetween, toDateOnly } from "@/lib/utils";
+
+interface PlayerLike {
+ _id: string;
+ firstName: string;
+ lastName: string;
+ primaryPosition: string;
+ secondaryPosition?: string | null;
+ tertiaryPosition?: string | null;
+ isActive: boolean;
+}
+
+interface AppearanceLike {
+ playerId: string;
+ gameDate: Date | string;
+ pitchCount: number;
+}
+
+interface RuleLike {
+ minPitches: number;
+ maxPitches: number | null;
+ requiredRestDays: number;
+}
+
+export function resolveRestDays(pitchCount: number, rules: RuleLike[]) {
+ const match = rules.find(
+ (rule) => pitchCount >= rule.minPitches && (rule.maxPitches === null || pitchCount <= rule.maxPitches)
+ );
+
+ return match?.requiredRestDays ?? 0;
+}
+
+export function summarizePitcherAvailability(
+ playerId: string,
+ appearances: AppearanceLike[],
+ rules: RuleLike[],
+ gameDate: string
+): PlayerAvailabilitySummary {
+ const latest = appearances
+ .filter((appearance) => appearance.playerId === playerId)
+ .sort((a, b) => new Date(b.gameDate).getTime() - new Date(a.gameDate).getTime())[0];
+
+ if (!latest) {
+ return {
+ status: "unknown",
+ daysSinceLastAppearance: null,
+ requiredRestDays: null,
+ lastPitchedDate: null,
+ lastPitchCount: null
+ };
+ }
+
+ const daysSinceLastAppearance = daysBetween(latest.gameDate, gameDate);
+ const requiredRestDays = resolveRestDays(latest.pitchCount, rules);
+ const status = daysSinceLastAppearance >= requiredRestDays ? "available" : "needs-rest";
+
+ return {
+ status,
+ daysSinceLastAppearance,
+ requiredRestDays,
+ lastPitchedDate: toDateOnly(latest.gameDate),
+ lastPitchCount: latest.pitchCount
+ };
+}
+
+export function buildPitcherAvailabilityMap(players: PlayerLike[], appearances: AppearanceLike[], rules: RuleLike[], gameDate: string) {
+ return Object.fromEntries(
+ players.map((player) => [player._id, summarizePitcherAvailability(player._id, appearances, rules, gameDate)])
+ );
+}
diff --git a/baseball/src/lib/seed.ts b/baseball/src/lib/seed.ts
new file mode 100644
index 0000000..5f3eff7
--- /dev/null
+++ b/baseball/src/lib/seed.ts
@@ -0,0 +1,99 @@
+import { DEFAULT_PITCHING_RULES } from "@/lib/constants";
+import { connectToDatabase } from "@/lib/db";
+import { GameModel } from "@/models/Game";
+import { LineupModel } from "@/models/Lineup";
+import { PitchingAppearanceModel } from "@/models/PitchingAppearance";
+import { PitchingRuleModel } from "@/models/PitchingRule";
+import { PlayerModel } from "@/models/Player";
+
+const samplePlayers = [
+ ["Mason", "Reed", 2, "R/R", "SS", "P", "2B", true, "Steady glove and strong arm."],
+ ["Eli", "Watson", 4, "R/R", "P", "1B", "CF", true, "Reliable control pitcher."],
+ ["Noah", "Foster", 7, "L/L", "CF", "LF", "P", true, "Tracks fly balls well."],
+ ["Liam", "Parker", 9, "R/R", "C", "3B", "1B", true, "Best communicator on defense."],
+ ["Owen", "Hayes", 11, "R/L", "2B", "SS", "CF", true, "Quick hands on double plays."],
+ ["Lucas", "Brooks", 14, "L/R", "1B", "P", "RF", true, "Lefty target at first base."],
+ ["Jack", "Morris", 18, "R/R", "3B", "C", "2B", true, "Aggressive base runner."],
+ ["Henry", "Cole", 21, "Switch", "LF", "RF", "CF", true, "Good contact hitter."],
+ ["Wyatt", "Price", 24, "R/R", "RF", "LF", "1B", true, "Can fill corner spots."],
+ ["Caleb", "Ross", 27, "R/R", "P", "UTIL", "1B", false, "Recovering from a sore shoulder."]
+] as const;
+
+export async function seedDatabase() {
+ await connectToDatabase();
+
+ const playerCount = await PlayerModel.countDocuments();
+ if (playerCount > 0) {
+ return { seeded: false, reason: "Players already exist." };
+ }
+
+ const createdPlayers = await PlayerModel.insertMany(
+ samplePlayers.map(([firstName, lastName, jerseyNumber, batsThrows, primaryPosition, secondaryPosition, tertiaryPosition, isActive, notes]) => ({
+ firstName,
+ lastName,
+ jerseyNumber,
+ batsThrows,
+ primaryPosition,
+ secondaryPosition,
+ tertiaryPosition,
+ isActive,
+ notes
+ }))
+ );
+
+ await PitchingRuleModel.insertMany(
+ DEFAULT_PITCHING_RULES.map((rule, index) => ({
+ ...rule,
+ sortOrder: index
+ }))
+ );
+
+ const lookup = Object.fromEntries(createdPlayers.map((player) => [`${player.firstName} ${player.lastName}`, player._id]));
+
+ await PitchingAppearanceModel.insertMany([
+ { playerId: lookup["Eli Watson"], gameDate: new Date("2026-05-03"), pitchCount: 42, notes: "Saturday league game." },
+ { playerId: lookup["Mason Reed"], gameDate: new Date("2026-05-05"), pitchCount: 18, notes: "Short relief outing." },
+ { playerId: lookup["Noah Foster"], gameDate: new Date("2026-04-28"), pitchCount: 55, notes: "Closed a tough game." },
+ { playerId: lookup["Lucas Brooks"], gameDate: new Date("2026-05-01"), pitchCount: 24, notes: "Spot start." }
+ ]);
+
+ await GameModel.create({
+ gameDate: new Date("2026-05-07"),
+ activePlayerIds: createdPlayers.filter((player) => player.isActive).map((player) => player._id),
+ startingPitcherId: lookup["Eli Watson"],
+ notes: "Sample upcoming game."
+ });
+
+ await LineupModel.create({
+ gameDate: new Date("2026-05-07"),
+ playerIds: createdPlayers.filter((player) => player.isActive).map((player) => player._id),
+ startingPitcherId: lookup["Eli Watson"],
+ battingOrder: createdPlayers
+ .filter((player) => player.isActive)
+ .slice(0, 9)
+ .map((player, index) => ({
+ playerId: player._id,
+ playerName: `${player.firstName} ${player.lastName}`,
+ slot: index + 1
+ })),
+ defensiveAssignments: [
+ ["Eli Watson", "P"],
+ ["Liam Parker", "C"],
+ ["Lucas Brooks", "1B"],
+ ["Owen Hayes", "2B"],
+ ["Jack Morris", "3B"],
+ ["Mason Reed", "SS"],
+ ["Henry Cole", "LF"],
+ ["Noah Foster", "CF"],
+ ["Wyatt Price", "RF"]
+ ].map(([name, position]) => ({
+ playerId: lookup[name],
+ playerName: name,
+ position
+ })),
+ bench: [],
+ notes: ["Sample lineup generated for reference."]
+ });
+
+ return { seeded: true };
+}
diff --git a/baseball/src/lib/serialize.ts b/baseball/src/lib/serialize.ts
new file mode 100644
index 0000000..70c3fae
--- /dev/null
+++ b/baseball/src/lib/serialize.ts
@@ -0,0 +1,3 @@
+export function serialize(value: T): T {
+ return JSON.parse(JSON.stringify(value)) as T;
+}
diff --git a/baseball/src/lib/types.ts b/baseball/src/lib/types.ts
new file mode 100644
index 0000000..63ef692
--- /dev/null
+++ b/baseball/src/lib/types.ts
@@ -0,0 +1,111 @@
+export type Handedness = "R/R" | "R/L" | "L/L" | "L/R" | "Switch";
+
+export type Position =
+ | "P"
+ | "C"
+ | "1B"
+ | "2B"
+ | "3B"
+ | "SS"
+ | "LF"
+ | "CF"
+ | "RF"
+ | "UTIL";
+
+export type PitcherAvailability = "available" | "needs-rest" | "unknown";
+
+export interface PitchingRuleInput {
+ minPitches: number;
+ maxPitches: number | null;
+ requiredRestDays: number;
+}
+
+export interface PlayerInput {
+ firstName: string;
+ lastName: string;
+ jerseyNumber: number;
+ batsThrows: Handedness;
+ primaryPosition: Position;
+ secondaryPosition?: Position | null;
+ tertiaryPosition?: Position | null;
+ isActive: boolean;
+ notes?: string;
+}
+
+export interface PlayerRecord extends PlayerInput {
+ _id: string;
+ createdAt?: string;
+ updatedAt?: string;
+ pitcherAvailability: PlayerAvailabilitySummary;
+}
+
+export interface PitchingAppearanceInput {
+ playerId: string;
+ gameDate: string;
+ pitchCount: number;
+ notes?: string;
+}
+
+export interface DefensiveAssignment {
+ playerId: string;
+ playerName: string;
+ position: Position;
+}
+
+export interface BattingSlot {
+ playerId: string;
+ playerName: string;
+ slot: number;
+}
+
+export interface GeneratedLineup {
+ gameDate: string;
+ startingPitcherId?: string | null;
+ battingOrder: BattingSlot[];
+ defensiveAssignments: DefensiveAssignment[];
+ bench: string[];
+ notes: string[];
+}
+
+export interface PitchingRuleRecord extends PitchingRuleInput {
+ _id?: string;
+ sortOrder?: number;
+}
+
+export interface PitchingAppearanceRecord {
+ _id: string;
+ playerId: string;
+ gameDate: string;
+ pitchCount: number;
+ notes?: string;
+}
+
+export interface LineupRecord extends GeneratedLineup {
+ _id?: string;
+ playerIds: string[];
+}
+
+export interface PlayerAvailabilitySummary {
+ status: PitcherAvailability;
+ daysSinceLastAppearance: number | null;
+ requiredRestDays: number | null;
+ lastPitchedDate: string | null;
+ lastPitchCount: number | null;
+}
+
+export interface DashboardResponse {
+ rosterCount: number;
+ activePlayers: number;
+ availablePitchers: number;
+ needsRest: number;
+ unknownPitchers: number;
+ recentPitching: Array<{
+ playerId: string;
+ playerName: string;
+ status: PitcherAvailability;
+ daysSinceLastAppearance: number | null;
+ requiredRestDays: number | null;
+ lastPitchedDate: string | null;
+ pitchCount: number | null;
+ }>;
+}
diff --git a/baseball/src/lib/utils.ts b/baseball/src/lib/utils.ts
new file mode 100644
index 0000000..c2ad558
--- /dev/null
+++ b/baseball/src/lib/utils.ts
@@ -0,0 +1,47 @@
+import type { PitcherAvailability } from "@/lib/types";
+
+export function cn(...parts: Array) {
+ return parts.filter(Boolean).join(" ");
+}
+
+export function formatPlayerName(firstName: string, lastName: string) {
+ return `${firstName} ${lastName}`.trim();
+}
+
+export function toDateOnly(date: Date | string) {
+ const target = typeof date === "string" ? new Date(date) : date;
+ return target.toISOString().slice(0, 10);
+}
+
+export function startOfDay(date: Date | string) {
+ const target = typeof date === "string" ? new Date(date) : new Date(date);
+ target.setUTCHours(0, 0, 0, 0);
+ return target;
+}
+
+export function daysBetween(from: Date | string, to: Date | string) {
+ const left = startOfDay(from).getTime();
+ const right = startOfDay(to).getTime();
+ return Math.floor((right - left) / (1000 * 60 * 60 * 24));
+}
+
+export function statusLabel(status: PitcherAvailability) {
+ switch (status) {
+ case "available":
+ return "Available";
+ case "needs-rest":
+ return "Needs Rest";
+ default:
+ return "Unknown";
+ }
+}
+
+export function sortBy(items: T[], getter: (item: T) => string | number) {
+ return [...items].sort((a, b) => {
+ const left = getter(a);
+ const right = getter(b);
+ if (left < right) return -1;
+ if (left > right) return 1;
+ return 0;
+ });
+}
diff --git a/baseball/src/lib/validators.ts b/baseball/src/lib/validators.ts
new file mode 100644
index 0000000..8a9394a
--- /dev/null
+++ b/baseball/src/lib/validators.ts
@@ -0,0 +1,54 @@
+import { z } from "zod";
+import { HANDEDNESS_OPTIONS, POSITIONS } from "@/lib/constants";
+
+export const playerSchema = z.object({
+ firstName: z.string().trim().min(1, "First name is required."),
+ lastName: z.string().trim().min(1, "Last name is required."),
+ jerseyNumber: z.coerce.number().int().min(0).max(999),
+ batsThrows: z.enum(HANDEDNESS_OPTIONS),
+ primaryPosition: z.enum(POSITIONS),
+ secondaryPosition: z.enum(POSITIONS).nullable().optional(),
+ tertiaryPosition: z.enum(POSITIONS).nullable().optional(),
+ isActive: z.boolean(),
+ notes: z.string().max(500).optional().default("")
+});
+
+export const pitchingAppearanceSchema = z.object({
+ playerId: z.string().min(1),
+ gameDate: z.string().min(1),
+ pitchCount: z.coerce.number().int().min(1).max(200),
+ notes: z.string().max(300).optional().default("")
+});
+
+export const pitchingRulesSchema = z.array(
+ z.object({
+ minPitches: z.coerce.number().int().min(0),
+ maxPitches: z.coerce.number().int().positive().nullable(),
+ requiredRestDays: z.coerce.number().int().min(0).max(10)
+ })
+).min(1);
+
+export const generateLineupSchema = z.object({
+ gameDate: z.string().min(1),
+ playerIds: z.array(z.string()).min(1, "Select at least one player."),
+ startingPitcherId: z.string().nullable().optional()
+});
+
+export const saveLineupSchema = generateLineupSchema.extend({
+ battingOrder: z.array(
+ z.object({
+ playerId: z.string(),
+ playerName: z.string(),
+ slot: z.coerce.number().int().positive()
+ })
+ ).min(1),
+ defensiveAssignments: z.array(
+ z.object({
+ playerId: z.string(),
+ playerName: z.string(),
+ position: z.enum(POSITIONS)
+ })
+ ),
+ bench: z.array(z.string()),
+ notes: z.array(z.string())
+});
diff --git a/baseball/src/models/Game.ts b/baseball/src/models/Game.ts
new file mode 100644
index 0000000..6ec364d
--- /dev/null
+++ b/baseball/src/models/Game.ts
@@ -0,0 +1,22 @@
+import { Model, Schema, Types, model, models } from "mongoose";
+
+export interface GameDocument {
+ gameDate: Date;
+ activePlayerIds: Types.ObjectId[];
+ startingPitcherId?: Types.ObjectId | null;
+ notes?: string;
+ createdAt?: Date;
+ updatedAt?: Date;
+}
+
+const gameSchema = new Schema(
+ {
+ gameDate: { type: Date, required: true, unique: true, index: true },
+ activePlayerIds: [{ type: Schema.Types.ObjectId, ref: "Player" }],
+ startingPitcherId: { type: Schema.Types.ObjectId, ref: "Player", default: null },
+ notes: { type: String, default: "" }
+ },
+ { timestamps: true }
+);
+
+export const GameModel = (models.Game as Model) || model("Game", gameSchema);
diff --git a/baseball/src/models/Lineup.ts b/baseball/src/models/Lineup.ts
new file mode 100644
index 0000000..5e03a76
--- /dev/null
+++ b/baseball/src/models/Lineup.ts
@@ -0,0 +1,48 @@
+import { Model, Schema, Types, model, models } from "mongoose";
+
+export interface LineupDocument {
+ gameDate: Date;
+ playerIds: Types.ObjectId[];
+ startingPitcherId?: Types.ObjectId | null;
+ battingOrder: Array<{
+ playerId: Types.ObjectId;
+ playerName: string;
+ slot: number;
+ }>;
+ defensiveAssignments: Array<{
+ playerId: Types.ObjectId;
+ playerName: string;
+ position: string;
+ }>;
+ bench: Types.ObjectId[];
+ notes: string[];
+ createdAt?: Date;
+ updatedAt?: Date;
+}
+
+const lineupSchema = new Schema(
+ {
+ gameDate: { type: Date, required: true, unique: true, index: true },
+ playerIds: [{ type: Schema.Types.ObjectId, ref: "Player", required: true }],
+ startingPitcherId: { type: Schema.Types.ObjectId, ref: "Player", default: null },
+ battingOrder: [
+ {
+ playerId: { type: Schema.Types.ObjectId, ref: "Player", required: true },
+ playerName: { type: String, required: true },
+ slot: { type: Number, required: true }
+ }
+ ],
+ defensiveAssignments: [
+ {
+ playerId: { type: Schema.Types.ObjectId, ref: "Player", required: true },
+ playerName: { type: String, required: true },
+ position: { type: String, required: true }
+ }
+ ],
+ bench: [{ type: Schema.Types.ObjectId, ref: "Player" }],
+ notes: [{ type: String }]
+ },
+ { timestamps: true }
+);
+
+export const LineupModel = (models.Lineup as Model) || model("Lineup", lineupSchema);
diff --git a/baseball/src/models/PitchingAppearance.ts b/baseball/src/models/PitchingAppearance.ts
new file mode 100644
index 0000000..c4c5409
--- /dev/null
+++ b/baseball/src/models/PitchingAppearance.ts
@@ -0,0 +1,24 @@
+import { Model, Schema, Types, model, models } from "mongoose";
+
+export interface PitchingAppearanceDocument {
+ playerId: Types.ObjectId;
+ gameDate: Date;
+ pitchCount: number;
+ notes?: string;
+ createdAt?: Date;
+ updatedAt?: Date;
+}
+
+const pitchingAppearanceSchema = new Schema(
+ {
+ playerId: { type: Schema.Types.ObjectId, ref: "Player", required: true, index: true },
+ gameDate: { type: Date, required: true, index: true },
+ pitchCount: { type: Number, required: true },
+ notes: { type: String, default: "" }
+ },
+ { timestamps: true }
+);
+
+export const PitchingAppearanceModel =
+ (models.PitchingAppearance as Model) ||
+ model("PitchingAppearance", pitchingAppearanceSchema);
diff --git a/baseball/src/models/PitchingRule.ts b/baseball/src/models/PitchingRule.ts
new file mode 100644
index 0000000..c190189
--- /dev/null
+++ b/baseball/src/models/PitchingRule.ts
@@ -0,0 +1,18 @@
+import { Model, Schema, model, models } from "mongoose";
+
+export interface PitchingRuleDocument {
+ minPitches: number;
+ maxPitches: number | null;
+ requiredRestDays: number;
+ sortOrder: number;
+}
+
+const pitchingRuleSchema = new Schema({
+ minPitches: { type: Number, required: true },
+ maxPitches: { type: Number, default: null },
+ requiredRestDays: { type: Number, required: true },
+ sortOrder: { type: Number, required: true }
+});
+
+export const PitchingRuleModel =
+ (models.PitchingRule as Model) || model("PitchingRule", pitchingRuleSchema);
diff --git a/baseball/src/models/Player.ts b/baseball/src/models/Player.ts
new file mode 100644
index 0000000..2c17f14
--- /dev/null
+++ b/baseball/src/models/Player.ts
@@ -0,0 +1,32 @@
+import { Model, Schema, model, models } from "mongoose";
+
+export interface PlayerDocument {
+ firstName: string;
+ lastName: string;
+ jerseyNumber: number;
+ batsThrows: string;
+ primaryPosition: string;
+ secondaryPosition?: string | null;
+ tertiaryPosition?: string | null;
+ isActive: boolean;
+ notes?: string;
+ createdAt?: Date;
+ updatedAt?: Date;
+}
+
+const playerSchema = new Schema(
+ {
+ firstName: { type: String, required: true, trim: true },
+ lastName: { type: String, required: true, trim: true },
+ jerseyNumber: { type: Number, required: true },
+ batsThrows: { type: String, required: true },
+ primaryPosition: { type: String, required: true },
+ secondaryPosition: { type: String, default: null },
+ tertiaryPosition: { type: String, default: null },
+ isActive: { type: Boolean, default: true },
+ notes: { type: String, default: "" }
+ },
+ { timestamps: true }
+);
+
+export const PlayerModel = (models.Player as Model) || model("Player", playerSchema);
diff --git a/baseball/src/scripts/seed.ts b/baseball/src/scripts/seed.ts
new file mode 100644
index 0000000..d02d985
--- /dev/null
+++ b/baseball/src/scripts/seed.ts
@@ -0,0 +1,14 @@
+import { seedDatabase } from "@/lib/seed";
+
+async function run() {
+ const result = await seedDatabase();
+ // eslint-disable-next-line no-console
+ console.log(result);
+ process.exit(0);
+}
+
+run().catch((error) => {
+ // eslint-disable-next-line no-console
+ console.error(error);
+ process.exit(1);
+});
diff --git a/baseball/tsconfig.json b/baseball/tsconfig.json
new file mode 100644
index 0000000..56a7480
--- /dev/null
+++ b/baseball/tsconfig.json
@@ -0,0 +1,41 @@
+{
+ "compilerOptions": {
+ "target": "ES2017",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": [
+ "./src/*"
+ ]
+ }
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/baseball/tsconfig.tsbuildinfo b/baseball/tsconfig.tsbuildinfo
new file mode 100644
index 0000000..cffb634
--- /dev/null
+++ b/baseball/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./.next/types/routes.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/@types/react/compiler-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/static.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./node_modules/zod/v3/helpers/typeAliases.d.cts","./node_modules/zod/v3/helpers/util.d.cts","./node_modules/zod/v3/index.d.cts","./node_modules/zod/v3/ZodError.d.cts","./node_modules/zod/v3/locales/en.d.cts","./node_modules/zod/v3/errors.d.cts","./node_modules/zod/v3/helpers/parseUtil.d.cts","./node_modules/zod/v3/helpers/enumUtil.d.cts","./node_modules/zod/v3/helpers/errorUtil.d.cts","./node_modules/zod/v3/helpers/partialUtil.d.cts","./node_modules/zod/v3/standard-schema.d.cts","./node_modules/zod/v3/types.d.cts","./node_modules/zod/v3/external.d.cts","./node_modules/zod/index.d.cts","./src/app/api/_utils.ts","./node_modules/bson/bson.d.ts","./node_modules/mongodb/mongodb.d.ts","./node_modules/mongoose/types/aggregate.d.ts","./node_modules/mongoose/types/callback.d.ts","./node_modules/mongoose/types/collection.d.ts","./node_modules/mongoose/types/connection.d.ts","./node_modules/mongoose/types/cursor.d.ts","./node_modules/mongoose/types/document.d.ts","./node_modules/mongoose/types/error.d.ts","./node_modules/mongoose/types/expressions.d.ts","./node_modules/mongoose/types/helpers.d.ts","./node_modules/kareem/index.d.ts","./node_modules/mongoose/types/middlewares.d.ts","./node_modules/mongoose/types/indexes.d.ts","./node_modules/mongoose/types/models.d.ts","./node_modules/mongoose/types/mongooseoptions.d.ts","./node_modules/mongoose/types/pipelinestage.d.ts","./node_modules/mongoose/types/populate.d.ts","./node_modules/mongoose/types/query.d.ts","./node_modules/mongoose/types/schemaoptions.d.ts","./node_modules/mongoose/types/schematypes.d.ts","./node_modules/mongoose/types/session.d.ts","./node_modules/mongoose/types/types.d.ts","./node_modules/mongoose/types/utility.d.ts","./node_modules/mongoose/types/validation.d.ts","./node_modules/mongoose/types/inferschematype.d.ts","./node_modules/mongoose/types/inferrawdoctype.d.ts","./node_modules/mongoose/types/virtuals.d.ts","./node_modules/mongoose/types/augmentations.d.ts","./node_modules/mongoose/types/index.d.ts","./src/lib/db.ts","./src/lib/types.ts","./src/lib/utils.ts","./src/lib/pitching.ts","./src/lib/serialize.ts","./src/models/PitchingAppearance.ts","./src/models/PitchingRule.ts","./src/models/Player.ts","./src/app/api/dashboard/route.ts","./src/lib/constants.ts","./src/lib/validators.ts","./src/models/Game.ts","./src/models/Lineup.ts","./src/app/api/lineups/route.ts","./src/lib/lineup.ts","./src/app/api/lineups/generate/route.ts","./src/app/api/pitching-appearances/route.ts","./src/app/api/pitching-rules/route.ts","./src/app/api/players/route.ts","./src/app/api/players/[id]/route.ts","./src/lib/seed.ts","./src/app/api/seed/route.ts","./src/lib/auth.ts","./src/lib/client.ts","./src/scripts/seed.ts","./src/app/layout.tsx","./src/app/page.tsx","./src/components/AppShell.tsx","./src/components/EmptyState.tsx","./src/components/SectionCard.tsx","./src/components/StatusBadge.tsx","./src/components/DashboardClient.tsx","./src/app/dashboard/page.tsx","./src/components/LineupClient.tsx","./src/app/lineup/page.tsx","./src/components/PlayerForm.tsx","./src/components/RosterClient.tsx","./src/app/roster/page.tsx","./src/components/SettingsClient.tsx","./src/app/settings/page.tsx","./.next/types/cache-life.d.ts","./node_modules/next/dist/client/form-shared.d.ts","./node_modules/next/dist/client/form.d.ts","./.next/types/link.d.ts","./.next/types/validator.ts","./.next/types/app/layout.ts","./.next/types/app/page.ts","./.next/types/app/api/dashboard/route.ts","./.next/types/app/api/lineups/route.ts","./.next/types/app/api/lineups/generate/route.ts","./.next/types/app/api/pitching-appearances/route.ts","./.next/types/app/api/pitching-rules/route.ts","./.next/types/app/api/players/route.ts","./.next/types/app/api/players/[id]/route.ts","./.next/types/app/api/seed/route.ts","./.next/types/app/dashboard/page.ts","./.next/types/app/lineup/page.ts","./.next/types/app/roster/page.ts","./.next/types/app/settings/page.ts","./node_modules/@types/webidl-conversions/index.d.ts","./node_modules/@types/whatwg-url/index.d.ts"],"fileIdsList":[[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,555],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,562],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,560],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,563],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,564],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,566],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,565],[100,148,165,166,495,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,568],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,579],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,572],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,581],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,573],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,584],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,586],[100,148,165,166,448,449,450,451,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,191,369,416,471,481,498,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,589],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[83,100,148,165,166,495,498,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,555,560,562,563,564,565,566,568,572,573,579,581,584,586],[83,100,148,165,166,499,500,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,145,146,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,153,165,166,183,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,149,154,159,165,166,168,180,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,149,150,159,165,166,168,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[95,96,97,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,151,165,166,192,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,152,153,160,165,166,169,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,153,165,166,180,188,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,154,156,159,165,166,168,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,155,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,156,157,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,158,159,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,159,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,160,161,165,166,180,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,160,161,165,166,175,180,183,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,141,148,156,159,162,165,166,168,180,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,160,162,163,165,166,168,180,188,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,164,165,166,180,188,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[98,99,100,101,102,103,104,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,167,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,156,159,165,166,168,180,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,169,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,170,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,171,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,173,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,174,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,175,176,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,175,177,192,194,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,160,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,180,181,183,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,182,183,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,181,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,183,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,184,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,145,148,165,166,180,185,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,186,187,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,186,187,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,153,165,166,168,180,188,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,189,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,168,190,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,153,165,166,192,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,193,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,167,194,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,195,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,141,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,141,148,159,161,165,166,171,180,183,191,193,194,196,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,197,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,165,166,199,200,201,203,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,165,166,199,200,201,202,358,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,165,166,199,200,202,203,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,203,358,359,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,203,358,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,165,166,200,201,202,203,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,165,166,199,201,202,203,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[84,85,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,156,159,165,166,168,180,188,517,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546],[100,148,165,166,518,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,517,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546],[100,148,165,166,519,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,518,519,520,521,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,519,520,521,522,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,524,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,159,165,166,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,527,529,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,528,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,527,529,530,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,519,520,521,522,523,524,525,526,527,529,530,531,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,537,538,539,540,541,542,543,544,546],[100,148,165,166,517,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,538,539,540,541,542,543,544,545,546],[100,148,165,166,518,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,539,540,541,542,543,544,546],[100,148,165,166,517,518,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,540,541,542,543,544,545,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,541,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,542,543,544,546],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,546],[92,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,446,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,453,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,221,222,223,225,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,246,248,250,251,254,440,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,211,213,214,215,216,217,429,440,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,222,324,410,419,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,204,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,258,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,257,440,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,306,324,353,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,317,333,419,435,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,371,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,423,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,422,423,424,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,422,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[94,100,148,162,165,166,204,207,211,214,218,219,220,222,226,234,235,364,389,420,440,443,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,224,242,246,247,252,253,440,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,224,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,235,242,304,440,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,224,225,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,249,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,218,421,428,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,174,266,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,266,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,266,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,325,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,321,369,436,479,480,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,416,473,474,475,476,478,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,415,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,415,416,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,215,365,366,367,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,365,368,369,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,477,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,365,369,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,588],[86,100,148,165,166,208,467,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,224,294,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,224,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,292,296,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,293,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,162,165,166,198,199,200,201,202,203,443,489,490,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,211,273,365,375,390,410,425,426,440,441,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,234,427,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,443,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,206,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,306,320,332,342,344,435,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,174,306,320,341,342,343,435,496,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,335,336,337,338,339,340,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,337,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,341,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,264,265,266,268,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,259,260,261,267,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,264,267,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,262,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,263,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,266,293,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,266,444,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,266,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,390,432,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,432,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,441,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,329,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,328,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,236,274,312,314,316,317,318,319,362,365,435,438,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,236,350,365,369,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,317,435,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,317,326,327,329,330,331,332,333,334,345,346,347,348,349,351,352,435,436,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,311,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,236,237,273,288,318,362,363,364,369,390,410,431,440,441,442,443,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,435,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,222,315,318,364,431,433,434,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,317,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,273,278,307,308,309,310,311,312,313,314,316,435,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,278,279,307,441,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,222,364,365,390,431,435,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,440,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,180,438,441,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,191,204,211,224,236,237,239,274,275,280,285,288,314,318,365,375,377,380,382,385,386,387,388,389,410,430,431,436,438,440,441,442,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,180,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,208,209,211,216,219,224,242,430,438,439,443,445,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,180,191,254,256,258,259,260,261,268,497,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,174,191,204,246,256,284,285,286,287,314,365,380,389,390,396,399,400,410,431,436,438,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,218,219,234,364,389,431,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,191,208,211,314,394,438,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,305,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,397,398,407,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,438,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,312,315,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,314,318,430,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,240,246,287,380,390,396,399,402,438,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,218,234,246,403,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,207,239,405,430,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,191,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,224,238,239,240,251,269,404,406,430,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[94,100,148,165,166,236,318,409,443,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,191,211,218,226,234,237,274,280,284,285,286,287,288,314,365,377,390,391,393,395,410,430,431,436,437,438,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,180,218,396,401,407,438,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,229,230,231,232,233,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,275,381,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,383,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,381,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,383,384,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,211,214,215,273,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,206,208,236,274,288,318,373,374,410,438,442,443,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,174,191,210,215,314,374,437,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,307,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,308,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,309,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,255,271,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,211,255,274,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,270,271,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,272,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,255,256,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,255,289,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,255,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,275,379,437,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,378,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,256,436,437,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,376,437,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,256,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,362,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,211,216,274,303,306,312,314,318,320,323,354,357,361,365,409,430,438,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,297,300,301,302,321,322,369,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,201,203,266,355,356,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,201,203,266,355,356,360,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,418,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,222,279,317,318,329,333,365,409,411,412,413,414,416,417,420,430,435,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,369,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,373,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,274,290,370,372,375,409,438,443,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,297,298,299,300,301,302,321,322,369,444,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[94,100,148,162,165,166,174,191,237,255,256,288,314,318,407,408,410,430,431,440,441,443,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,279,281,284,431,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,275,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,278,317,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,277,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,279,280,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,276,278,440,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,162,165,166,210,279,281,282,283,440,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,365,366,368,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,241,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,208,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,94,100,148,165,166,288,318,443,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,208,467,468,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,296,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,174,191,206,253,291,293,295,445,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,224,436,441,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,392,436,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,365,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,160,162,165,166,174,206,242,248,296,443,444,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,100,148,165,166,199,200,201,202,203,443,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,87,88,89,90,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,153,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,243,244,245,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,243,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[86,90,100,148,162,164,165,166,174,198,199,200,201,202,203,204,206,237,341,402,440,442,445,491,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,455,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,457,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,459,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,461,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,463,464,465,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,469,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[91,93,100,148,165,166,447,452,454,456,458,460,462,466,470,472,482,483,485,495,496,497,498,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,471,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,481,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,293,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,484,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,147,148,165,166,279,281,282,284,332,436,486,487,488,491,492,493,494,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,117,148,165,166,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,148,165,166,180,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,108,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,110,113,148,165,166,188,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,168,188,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,108,148,165,166,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,110,113,148,165,166,168,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,105,106,109,112,148,159,165,166,180,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,120,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,105,111,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,134,135,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,109,113,148,165,166,183,191,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,134,148,165,166,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,107,108,148,165,166,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139,140,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,128,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,120,121,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,111,113,121,122,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,112,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,105,108,113,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,113,117,121,122,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,117,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,111,113,116,148,165,166,191,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,105,110,113,120,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,180,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,108,113,134,148,165,166,196,198,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,514,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,502,503,504,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,505,506,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,502,503,505,507,508,513,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,503,505,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,513,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,505,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,502,503,505,508,509,510,511,512,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,495,515,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,548,549,550,551,552,553,554],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,548,551,552,553,554,557,561],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,551,557,558,559],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,551,552,557],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,551,553,557],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,551,552,554,557,559],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,549,550,551,552,553,554,557],[100,148,165,166,495,516,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,567],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,578],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,590],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,580],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,583],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,585],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,549,590],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,570,574,575,576,577],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,549,556,570,574,575,576,577],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,556],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,549,570,574,575,576,577,582],[86,100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,556,570,574,576],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,549],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,548,549,550,556],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,547,552,553,554,556,558,559],[100,148,165,166,515,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,556],[100,148,165,166,519,520,521,522,523,524,525,526,527,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,546,567]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5999cd8092f17fff1aafae4298c493209adc02a7e56b8cded81b412b3c2f9f1","affectsGlobalScope":true},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"2beff543f6e9a9701df88daeee3cdd70a34b4a1c11cb4c734472195a5cb2af54","impliedFormat":1},{"version":"2e07abf27aa06353d46f4448c0bbac73431f6065eef7113128a5cd804d0c384d","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"42bc0e1a903408137c3df2b06dfd7e402cdab5bbfa5fcfb871b22ebfdb30bd0b","impliedFormat":1},{"version":"9894dafe342b976d251aac58e616ac6df8db91fb9d98934ff9dd103e9e82578f","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"829b9e6028b29e6a8b1c01ddb713efe59da04d857089298fa79acbdb3cfcfdef","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"5f90b8c733a1bda63e42160b15a2301051e83a6f9d5332a59d16eb12f463270d","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"496bbf339f3838c41f164238543e9fe5f1f10659cb30b68903851618464b98ba","impliedFormat":1},{"version":"5178eb4415a172c287c711dc60a619e110c3fd0b7de01ed0627e51a5336aa09c","impliedFormat":1},{"version":"ca6e5264278b53345bc1ce95f42fb0a8b733a09e3d6479c6ccfca55cdc45038c","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"fb1d8e814a3eeb5101ca13515e0548e112bd1ff3fb358ece535b93e94adf5a3a","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"98b18458acb46072947aabeeeab1e410f047e0cacc972943059ca5500b0a5e95","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"570bb5a00836ffad3e4127f6adf581bfc4535737d8ff763a4d6f4cc877e60d98","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c83bb0c9c5645a46c68356c2f73fdc9de339ce77f7f45a954f560c7e0b8d5ebb","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"6a148329edecbda07c21098639ef4254ef7869fb25a69f58e5d6a8b7b69d4236","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"f63ab283a1c8f5c79fabe7ca4ef85f9633339c4f0e822fce6a767f9d59282af2","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a54c996c8870ef1728a2c1fa9b8eaec0bf4a8001cd2583c02dd5869289465b10","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"3754982006a3b32c502cff0867ca83584f7a43b1035989ca73603f400de13c96","impliedFormat":1},{"version":"a30ae9bb8a8fa7b90f24b8a0496702063ae4fe75deb27da731ed4a03b2eb6631","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"e9dd71cf12123419c60dab867d44fbee5c358169f99529121eaef277f5c83531","impliedFormat":1},{"version":"5b6a189ba3a0befa1f5d9cb028eb9eec2af2089c32f04ff50e2411f63d70f25d","impliedFormat":1},{"version":"d6e73f8010935b7b4c7487b6fb13ea197cc610f0965b759bec03a561ccf8423a","impliedFormat":1},{"version":"174f3864e398f3f33f9a446a4f403d55a892aa55328cf6686135dfaf9e171657","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"75b868be3463d5a8cfc0d9396f0a3d973b8c297401d00bfb008a42ab16643f13","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"1a42d2ec31a1fe62fdc51591768695ed4a2dc64c01be113e7ff22890bebb5e3f","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"72d63643a657c02d3e51cd99a08b47c9b020a565c55f246907050d3c8a5e77fb","impliedFormat":1},{"version":"1d415445ea58f8033ba199703e55ff7483c52ac6742075b803bd3e7bbe9f5d61","impliedFormat":1},{"version":"d6406c629bb3efc31aedb2de809bef471e475c86c7e67f3ef9b676b5d7e0d6b2","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"71d8ba39a9e024d9e4bb922464d18542ed8d2c25ee78efa7890c27213cc6e5d3","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"754498c5208ce3c5134f6eabd49b25cf5e1a042373515718953581636491f3c3","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"633d58a237f4bb25ec7d565e4ffa32cecdcee8660ac12189c4351c52557cee9e","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"ce791f6ea807560f08065d1af6014581eeb54a05abd73294777a281b6dfd73c2","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"43fa6ea8714e18adc312b30450b13562949ba2f205a1972a459180fa54471018","impliedFormat":1},{"version":"6e89c2c177347d90916bad67714d0fb473f7e37fb3ce912f4ed521fe2892cd0d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"d93c544ad20197b3976b0716c6d5cd5994e71165985d31dcab6e1f77feb4b8f2","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"a8b1c79a833ee148251e88a2553d02ce1641d71d2921cce28e79678f3d8b96aa","impliedFormat":1},{"version":"126d4f950d2bba0bd45b3a86c76554d4126c16339e257e6d2fabf8b6bf1ce00c","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"2d3cc2211f352f46ea6b7cf2c751c141ffcdf514d6e7ae7ee20b7b6742da313f","impliedFormat":1},{"version":"c75445151ff8b77d9923191efed7203985b1a9e09eccf4b054e7be864e27923d","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"fa8a8fbf91ee2a4779496225f0312aac6635b0f21aa09cdafa4283fe32d519c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e8aef93d79b000deb6ec336b5645c87de167168e184e84521886f9ecc69a4b5","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},{"version":"19df3488557c2fc9b4d8f0bac0fd20fb59aa19dec67c81f93813951a81a867f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b25350193e103ae90423c5418ddb0ad1168dc9c393c9295ef34980b990030617","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"de7052bfee2981443498239a90c04ea5cc07065d5b9bb61b12cb6c84313ad4ef","impliedFormat":1},{"version":"a3e7d932dc9c09daa99141a8e4800fc6c58c625af0d4bbb017773dc36da75426","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"4a2edd238d9104eac35b60d727f1123de5062f452b70ed8e0366cb36387dfdfd","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"0bd0297484aacea217d0b76e55452862da3c5d9e33b24430e0719d1161657225","impliedFormat":1},{"version":"2ab6d334bcbf2aff3acfc4fd8c73ecd82b981d3c3aa47b3f3b89281772286904","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"49179c6a23701c642bd99abe30d996919748014848b738d8e85181fc159685ff","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"8514c62ce38e58457d967e9e73f128eedc1378115f712b9eef7127f7c88f82ae","impliedFormat":1},{"version":"f1289e05358c546a5b664fbb35a27738954ec2cc6eb4137350353099d154fc62","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"1d17ba45cfbe77a9c7e0df92f7d95f3eefd49ee23d1104d0548b215be56945ad","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"a1ee88010a64e8647d07dba58ec43e6e05851b9ec7a62e4ca2b9c33be5abb2c8","impliedFormat":1},{"version":"46273e8c29816125d0d0b56ce9a849cc77f60f9a5ba627447501d214466f0ff3","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"e91f7b1344577a02f051b9b471f33044fef8334a76dc9e1de003d17595a5219b","impliedFormat":1},{"version":"3af3584f79c57853028ef9421ec172539e1fe01853296dc05a9d615ade4ffaf6","impliedFormat":1},{"version":"f82579d87701d639ff4e3930a9b24f4ee13ca74221a9a3a792feb47f01881a9c","impliedFormat":1},{"version":"d7e5d5245a8ba34a274717d085174b2c9827722778129b0081fefd341cca8f55","impliedFormat":1},{"version":"d9d32f94056181c31f553b32ce41d0ef75004912e27450738d57efcd2409c324","impliedFormat":1},{"version":"752513f35f6cff294ffe02d6027c41373adf7bfa35e593dbfd53d95c203635ee","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"1a7e2ea171726446850ec72f4d1525d547ff7e86724cc9e7eec509725752a758","impliedFormat":1},{"version":"8c901126d73f09ecdea4785e9a187d1ac4e793e07da308009db04a7283ec2f37","impliedFormat":1},{"version":"db97922b767bd2675fdfa71e08b49c38b7d2c847a1cc4a7274cb77be23b026f1","impliedFormat":1},{"version":"aab290b8e4b7c399f2c09b957666fc95335eb4522b2dd9ead1bf0cb64da6d6ee","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"06c25ddfc2242bd06c19f66c9eae4c46d937349a267810f89783680a1d7b5259","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"90c54a02432d04e4246c87736e53a6a83084357acfeeba7a489c5422b22f5c7a","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"0a372c2d12a259da78e21b25974d2878502f14d89c6d16b97bd9c5017ab1bc12","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"ec1ca97598eda26b7a5e6c8053623acbd88e43be7c4d29c77ccd57abc4c43999","impliedFormat":1},{"version":"6e2261cd9836b2c25eecb13940d92c024ebed7f8efe23c4b084145cd3a13b8a6","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"a47e6d954d22dd9ebb802e7e431b560ed7c581e79fb885e44dc92ed4f60d4c07","impliedFormat":1},{"version":"f019e57d2491c159d47a107fd90219a1734bdd2e25cd8d1db3c8fae5c6b414c4","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d1c9bf292a54312888a77bb19dba5e2503ad803f5393beafd45d78d2f4fe9b48","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"cb8d8ef7b9ce8ed3e6f1c814fcbf3f90dab0cb8863079236784fc350746e27c4","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"3be035da7bee86b4c3abf392e0edaa44fc6e45092995eefe36b39118c8a84068","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f828825d077c2fa0ea606649faeb122749273a353daab23924fe674e98ba44c","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"407a06ba04eede4074eec470ecba2784cbb3bf4e7de56833b097dd90a2aa0651","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"81d8603ac527e75cfec72bb9391228b58f161c2b33514a9d814c7f3ebd3ef466","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"3eecb25bb467a948c04874d70452b14ae7edb707660aac17dc053e42f2088b00","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"5f0292a40df210ab94b9fb44c8b775c51e96777e14e073900e392b295ca1061b","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"8627ad129bcf56e82adff0ab5951627c993937aa99f5949c33240d690088b803","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"ecbaf0da125974be39c0aac869e403f72f033a4e7fd0d8cd821a8349b4159628","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"85ae5aee75f011967cf2d25cbc342f62d69314e9d925f7f4aa3456fc2cffcca6",{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"b7b0a7ef5d9e2d34563a932047ae06b12be5e14856e8e5b1a351e1c000180b12","signature":"b6b3501acce603e1ec7135f38977ac1ab3662876ffb819c7cc3aa61f3daa148a"},{"version":"359e7188a3ad226e902c43443a45f17bd53bf279596aece7761dc72ffa22b30d","impliedFormat":1},{"version":"aa50d0691c396fb3677d7240e8fb0b842ebf7e113a14ef092833717e3cb2f7fa","impliedFormat":1},{"version":"341acffb1750be02f7193f992f588214b8e0a62b409e39c9185c9e944f5c285d","impliedFormat":1},{"version":"0339d33fe49fbc1c70842c886195e01eafd37f7431dd7f32209dd0544c289474","impliedFormat":1},{"version":"cf70b9a6eab897a0168ef9d31ca13a9b8b69fe7f9da2c251528c076eea9c2db1","impliedFormat":1},{"version":"e308de1b989eb709570fdf26d45bb01f0031d8809273206a1d6fd53570e8dbac","impliedFormat":1},{"version":"13a4d931c625360ab1cbf68961b13a60969a17cf3247bd60e18a49fb498b68e5","impliedFormat":1},{"version":"55863858e28f768266adad3a19db6da5bbb5a057b07ba1b7cce099cf3f576df5","impliedFormat":1},{"version":"1201dba1a374e877db58ee8f5a208c68852ec2e152a0e8940950933d22cc5399","affectsGlobalScope":true,"impliedFormat":1},{"version":"89cbb41c032a8602412a55d89c9fbee8af199ffb3e89e52a0306d42518f491c3","impliedFormat":1},{"version":"3b251e4edc903f60ab560be43d72840f58a5bb6f6b297a78147436b6dba0bf51","impliedFormat":1},{"version":"021fbcae20ddc7ca7bf04cdb02a8c51f0d96afdde6a8462fb73b09ab4136ff7a","impliedFormat":1},{"version":"adaf4b35134a87afc9b749fb8a52ad062983e2460f9634c2638828b00c00c768","impliedFormat":1},{"version":"8443bbb1e167b4cca6d192eab6f9ab94442054f9b1c945f05070c23896396365","impliedFormat":1},{"version":"f5d4c987240115a570e4edda8347a73b28e88914357e12297b34bed88acf7ce3","impliedFormat":1},{"version":"bbe98bf29952b80a91789cc6a3a3727aa958e652f32b145740229fe4b02f2a0a","impliedFormat":1},{"version":"18e0fa134b9df012b043ee0fc9698d7b1666c7e7df7918bf465a79c89742fbfc","impliedFormat":1},{"version":"3016511eadb560b6874050f8ff2ca671c64a663a48c60a24e3e7ddef92c3b095","impliedFormat":1},{"version":"542bc2aca628050c8b6b44abfbaae74f5c86de3eeb54718266456f58fc4152fb","impliedFormat":1},{"version":"1237f5aa64d4d5b9a261c07cf85678a60f6528378d9e91bc5a9abf4c31ac9b6f","impliedFormat":1},{"version":"96fdfcdacb7516593f141d3e857e7609e70f8851089a22c2453a66e074b4df94","impliedFormat":1},{"version":"861b3b1cea0c4dbfd58cd3cb7a630ea8270b4ce92091941c263f4b4c6c21119b","impliedFormat":1},{"version":"8d35820323a2758d61684679eddc3f1d0cc051c55258b3243aee14b6b8e285c1","impliedFormat":1},{"version":"000876a9f6a3a17b1c7014047366cd2c7faa9c4849aae5a835b5f4c314ae5bc5","impliedFormat":1},{"version":"da440f879ec47f7113408fb75f239f437b9ee812fba67562c499f10ef012464a","impliedFormat":1},{"version":"881452a378e6b8e969b209541a68f86d481b48872c14540be27796001a99ef1e","impliedFormat":1},{"version":"28939d1b416e151313c42ae371da530733e2cb910f775e48d020e17e27f8e3fb","impliedFormat":1},{"version":"06b589495ccb33638b95551972542efef8658639a851c9832505641160b4356f","impliedFormat":1},{"version":"448ae408883377930fb80d69635f949f3425c0f32c49c5656c73f8a6ae90d702","impliedFormat":1},{"version":"46b659d0bf6a2389297cc2acf6fd430fdb379b897848656070cfb9d02d20524a","affectsGlobalScope":true,"impliedFormat":1},{"version":"203d2b484636f869c3438f13ac3f35f811fba41df097ac68a8e2e85027a757b2","signature":"c9c1c2ede800947c963d7064630af7e017b6f3e92b7b304cc3f1f286016d40e7","affectsGlobalScope":true},{"version":"64ceadd4d1f6c4b96df6e6ea278420727eaf1ec3edcf463483aedc07eb797125","signature":"d2021abe04670732314f7b46b1d0361fea7426e295218d47c8ffb55a62785828"},{"version":"bf5b7f7a73fd33bf415ce203e5a8e770477514ec4e9119b3c86312d9b30310bb","signature":"7139d1056080f6bc4e691c90946add43e49d5767a44f205d5e0f08aef2885904"},{"version":"f1d24ef8a8fdd580279556fa9ebf597c46c9f351fe7f1a6ccf2de488a593d50a","signature":"75b7bb8218c27831c03e6061fd2bff1af593736ea4c59ec142df039b077688e5"},{"version":"ae7a3032b6250c606768d8bc8fca3b9899b92508943c9ffa5413093e5566f1f7","signature":"0e4f2a2e11517f21a82f9beb65d525c7ed5bfe8232d13628acc6d746492b1520"},{"version":"03ddfbcee1ed449332d5d68a9351615aeb8f14f4ae21ea943a73f66469609e4c","signature":"f3f16221bbb71211943ed79404990a973782dea5f8290032e6b8aefa5de4fb1a"},{"version":"4ae7ca4cfdd5ef8923ee634bb60198567f8c4c12bf802315b403d56614a0ec3e","signature":"e7b57a8fff47de425a717c0ef93a312989cb7016626913b718e68dd257d8cc3b"},{"version":"325936d3690e94ae41a3a221f839b675a2180ff2b40722777ccf54af6b7a7c8b","signature":"5968ce836642ed050179f1e09c3511c7efc4f97438de925fdaeec0a8e991a40b"},{"version":"3ceb330917b60c3b5d010f75137811542776f751eb340f422219571d948b2baf","signature":"f12aa36a7d1956944f49d809210868b1ea7c74e6d0aa76aa7ecd8ce8524e491d"},{"version":"e59dc959da08212bc9ebb4566fd89bd0d64f87627d46f22899dfc9e61098439e","signature":"2a281323fa817aa7ff989f087e9fa7951fc453b753b762647470e9f314ec169e"},{"version":"8f1fcaa83e6b22f08a2d55171ab05e247877a2945b37aedc59c4e41d548e203e","signature":"912fdfd150d9fa3a45378131191af4121ec5e53cd937c13df93f76caa67eb514"},{"version":"1f64727fd4f46c4d8ffa568d45d06cd0b2f4ab35d37013ca57c6bb698d427e31","signature":"fc94a46f7821d5f5387e52dd5fd5c0e2a994d22dc0623e739a2b9cc9c1170acb"},{"version":"d58167408a829849de641cc5afc27e2f105a9a99265999990fb404dc12c1893f","signature":"86b635484994fdfef6f151470d2bdda7442b9b99d246a6a75743baeb4389f63c"},{"version":"3bd36ba17c7698b9041e9f8d6d45658d543a452155b84e7e4bd97202da1dbf2a","signature":"a9712f286e1a7bd5d8cea03a931299ba85830855ca64ee5a666529a681df2d51"},{"version":"7b510cdf88778c64795015f49ea3879bc102cdfaccbe6e4029f649f7bc852291","signature":"94dc2728ccdbe3c491c559f28f0bc065e6223544febe875d672d33870f2160d7"},{"version":"afbde5fb0fb2c2aa684adcb658337be74b409b50305e1ca5a046a4faa114d467","signature":"ce266ac6bd26f7036da861681f9f95a93a870d5998dedc549fe7f6286df7686d"},{"version":"252f3c4e6d88748175b185354c9aec58c9e92678aaeab6a9c89650feeae938ba","signature":"737c24b10f7d35478b4d735bd4f8a98bd807867c6af6a37e241e010f03932a60"},{"version":"6d016003615f9d41340aa99bbf76118cbc46a3a804fb321b3252587db1aedc76","signature":"29c1b7fbaccc3e5f631d51b9ecaf81cdcc6ba14bf9cc259d85b37fb28f92b694"},{"version":"7e85b52b5f883a96c0fa114a471fff63e24ad92a83c82bccdc8a98ddfdb1b320","signature":"fff606ea8e5e6de34e3067afa472f5fd208fedefa9f60f93fe3ea1ff35fed612"},{"version":"a53b9678fc9d6e1385b42681c8c9f8bf41c0be576eabf52fc168c293a7a1f80a","signature":"7c349b591428d6bfa41df36c5b9b7b9b473b1c0c94c1cffead3839a5fde857eb"},{"version":"ac4729758cfff93f384ba2b6d7a102f0ac5e937f799117e043241ad5d48ef5bc","signature":"a7476147385ebe13c7bdced2b3ced7ab83df78d19163b95b999b5b0cf2319db7"},{"version":"deb1c1b3d5fed73068a85f5ad230a0eafd02ed1168693daabe3768b0a203c351","signature":"636ab65db685b1d8a44f1d6201934917b6fd030aa70584210231b5764ed94b9f"},{"version":"11183eeadd549260b178c0bb8c151ec9f678444a31f4088686686d824e860943","signature":"1b2313a40f1af82e156cec7bb665fedbe34b67c244f6e2b52997f53a210dc07b"},{"version":"a220b5f40519fb86b5fe2a2b296e29cba7d6abf19cd9c5c678f635854dc05ba3","signature":"a341f8ef721922a5fc8af7b5ae592849f272f1fb4169bcd1e5166c3018d168b6"},{"version":"1880e0660a085636632a4e7951009b1c094a89b0d704792d1070737d04ceead5","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b0bc4a342ee3e4f1340170225e039b3cefd0dc89f41b0539db910bdb12f652dd","signature":"cfa277190b5f021ecae2aebcd65606489926e5145b09837e5524b9815561dd21"},{"version":"72c4bba09586cace009ad965105687a54c8b155c47e336b70f839ff421dea34f","signature":"01b1d6c85e6abfa5aace43b7ccd670950698c3615bae98152c8dd031bb3a3104"},{"version":"141a10a331bac170bfdd7bb11aab4b11aa4a20b9a654c87137fe5da9667d8521","signature":"45876b21089ba58fe147106516f7d414bf316a5f586c66a4d359416b1e55dd23"},{"version":"cfb0820ab0abe5c26769420de42316a1b02173e905289346f0a8ba6d17ed4456","signature":"4f5ffb07a36e1127661b6ee9da96d6416c621dd141e39928aeecf55ac5c9c591"},{"version":"9c4e3f04a81d71b74e4758bcb002eabb3ace8df34512b5160fed3e35f29ebdda","signature":"3c536bdc19661383a8e4e82defd11b517ec18844d44666e89ebdfdc598c47cd7"},{"version":"36af925a0008062959386a783b15e3fce50faed57abc8fe506557801654dc0df","signature":"d6d49850071d2b401cbf5ba6330b4658ad757b83de4bee200bb9eec202d44e0b"},{"version":"608049242aff9385af8822c14959c30498d85889d593e5746f877378b23f9812","signature":"3b0a94e68272a5204adca73ccce740205adbdef5a304ce291ce26d24e5a407c0"},{"version":"40bff4cc6b4433347305db99d43b42c32491ee279614b7315536ac44f6c6aed3","signature":"6c45675928d5db83b67f6f8d0c2238049d5290a975c3d1c99b7d2cdf8b415168"},{"version":"1396475e1bc797360edda179afe57da36829c4eb8d5265cac65c8cf5f05e09cb","signature":"c6a23028807d05e115b14c448178fb927f44c427a1242a8bc6e12e2a75fa7ece"},{"version":"034b39f1e5824c74829a34f48c1bcc2e38997bdd2f2b8895b7f7bc7a1f6df065","signature":"abe9ea84a32c065d2e769b2d61a0a3f653544ea6fe5300aec634ad4e2c52c759"},{"version":"143d7583868fb31b0e484001034baa39728060b32c2ee1346a5ae5062ef87151","signature":"7309e94eb4dc9bed424dc6b338cd3e8fda3444bf087cc35ce1b419b39b7a8ea4"},{"version":"81ffb86a450d3ed3b5f413f768a9cfe84554ce76ef578316caff9d94f7993c94","signature":"edafdcd6b06b6b95447efdf7e00339612d3a7196cc7503220b655d0f4e790062"},{"version":"8d8600a182b213f65bccdc32d42f9ee14666873186170b15298806ccc1a04531","signature":"cb6dbb28f263b8848eba4cd5666769891c36de75404857b6dccf4f6092bfed0e"},{"version":"ae9683260c8329573e39d8664a100fe2cbd8fdf6ed1a8778dea008d24d484b77","signature":"3dd6758760990db5f5ecd9210d05755ef47ab5338ec4035567244e01a0f4febf"},{"version":"614fe95776f9f19cd33aa9f074dace393aa0e3d0f986ae5904dfa0c7598f1bf1","signature":"3a8523bfa20e149df671c3166d3c2e0c8e5b9f015b121a6855deedf209096b5e"},"2552a31fad45a9ed1bde87e51b038dc0e786cd364b597162263abbf57018949b",{"version":"bdc1824d433df07efbd9a0ccf543d9358e250676fb755b27a9937176ff3a31e1","impliedFormat":1},{"version":"41c514d6896dd73d171bfa8ee88fb56cecda181e1811493ea4d330683eef7df5","impliedFormat":1},{"version":"083ed4b6b584737242490a87e64c53e076e385cc0258b6f90dec880d47200e6b","affectsGlobalScope":true},{"version":"3903dfcb09ad39816cf50e0e9c477949a727506496fe1faa5c761e720ab7a9c0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6a14ab7b61f5b5055fca6245ca3f6da58b004e9c1ed74c320ac7babb25009000","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"f4124221317bb4de59aae909da9fe01026b1bdc6a30e5da336e902cff920df32","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"47d550781db47923384342f3003981fb20c42db08f6b7f56102ac3a282c8d86e","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"a924ba63164b8f31996875fde9a4deb62ee3f2924a00c6d1c6ea2ef58cbd4073","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"025db1d0bb65a1fb5c7d7291eef4b3c614335547e336a89c304e79723d312a76","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"91d510d3b4668cecbb852360e9ca972cb2d5d874b1621fcae137b2608d50db06","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"9b3e4a6001d7fcd6205d009fb3ef4bb5bd6f73bb99d7d0de5d4676302e3803e3","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"608a3c27213e662d5f81168885e7e1888fd67ee27f9ef87efd4f979f3c1e3acb","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"e9445c5fe8b0dfaeb381d0d0b33d6e8f820c86c5a09b8a901c23f565cc5ca07c","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"d74d51d8fc3c32d4ef71a7d77faa1a6e383cb97d817e57cd6b5d1bb5bf030318","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"190f31d8d43ca7d65223e4c5011edb54708e3bd6acd7013e714c68ac4c23fa2b","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"3f5905c34c330f0983a3d1b59e4c6cbd8edbf29586fa727b3848b1d870f019a0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"11962053d39a0c30ac178192fb63ea34f864c6848e98fa3738c705fa595ca2d5","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"ba176c9b4a4c6bac22a2e2533fdc0d936a61d37b320cb3b4d6dd896eee07427c","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"f2f23fe34b735887db1d5597714ae37a6ffae530cafd6908c9d79d485667c956","impliedFormat":1},{"version":"5bba0e6cd8375fd37047e99a080d1bd9a808c95ecb7f3043e3adc125196f6607","impliedFormat":1}],"root":[83,501,516,[547,587],[590,605]],"options":{"allowJs":false,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[594,1],[596,2],[595,3],[597,4],[598,5],[600,6],[599,7],[601,8],[602,9],[592,10],[603,11],[593,12],[604,13],[605,14],[587,15],[590,16],[83,17],[591,18],[501,19],[248,17],[145,20],[146,20],[147,21],[100,22],[148,23],[149,24],[150,25],[95,17],[98,26],[96,17],[97,17],[151,27],[152,28],[153,29],[154,30],[155,31],[156,32],[157,32],[158,33],[159,34],[160,35],[161,36],[101,17],[99,17],[162,37],[163,38],[164,39],[198,40],[165,41],[166,17],[167,42],[168,43],[169,44],[170,45],[171,46],[172,47],[173,48],[174,49],[175,50],[176,50],[177,51],[178,17],[179,52],[180,53],[182,54],[181,55],[183,56],[184,57],[185,58],[186,59],[187,60],[188,61],[189,62],[190,63],[191,64],[192,65],[193,66],[194,67],[195,68],[102,17],[103,17],[104,17],[142,69],[143,17],[144,17],[196,70],[197,71],[202,72],[358,73],[203,74],[201,75],[360,76],[359,77],[199,78],[356,17],[200,79],[84,17],[86,80],[355,73],[266,73],[606,17],[607,17],[517,17],[85,17],[528,17],[518,81],[519,82],[545,83],[520,84],[521,85],[522,86],[523,87],[524,88],[525,89],[526,90],[527,91],[546,92],[530,93],[543,94],[542,17],[529,95],[531,96],[532,97],[533,98],[534,99],[535,100],[536,101],[537,102],[538,103],[539,104],[540,105],[541,106],[544,107],[93,108],[447,109],[452,15],[454,110],[224,111],[252,112],[430,113],[247,114],[235,17],[216,17],[222,17],[420,115],[283,116],[223,17],[389,117],[257,118],[258,119],[354,120],[417,121],[372,122],[424,123],[425,124],[423,125],[422,17],[421,126],[254,127],[225,128],[304,17],[305,129],[220,17],[236,130],[226,131],[288,130],[285,130],[209,130],[250,132],[249,17],[429,133],[439,17],[215,17],[330,134],[331,135],[325,73],[475,17],[333,17],[334,136],[326,137],[481,138],[479,139],[474,17],[416,140],[415,17],[473,141],[327,73],[368,142],[366,143],[476,17],[480,17],[478,144],[477,17],[367,145],[588,73],[589,146],[468,147],[471,148],[295,149],[294,150],[293,151],[484,73],[292,152],[277,17],[487,17],[490,17],[489,73],[491,153],[205,17],[426,154],[427,155],[428,156],[238,17],[214,157],[204,17],[346,73],[207,158],[345,159],[344,160],[335,17],[336,17],[343,17],[338,17],[341,161],[337,17],[339,162],[342,163],[340,162],[221,17],[212,17],[213,130],[267,164],[268,165],[265,166],[263,167],[264,168],[260,17],[352,136],[374,136],[446,169],[455,170],[459,171],[433,172],[432,17],[280,17],[492,173],[442,174],[328,175],[329,176],[320,177],[310,17],[351,178],[311,179],[353,180],[348,181],[347,17],[349,17],[365,182],[434,183],[435,184],[313,185],[317,186],[308,187],[412,188],[441,189],[287,190],[390,191],[210,192],[440,193],[206,114],[261,17],[269,194],[401,195],[259,17],[400,196],[94,17],[395,197],[237,17],[306,198],[391,17],[211,17],[270,17],[399,199],[219,17],[275,200],[316,201],[431,202],[315,17],[398,17],[262,17],[403,203],[404,204],[217,17],[406,205],[408,206],[407,207],[240,17],[397,192],[410,208],[396,209],[402,210],[228,17],[231,17],[229,17],[233,17],[230,17],[232,17],[234,211],[227,17],[382,212],[381,17],[387,213],[383,214],[386,215],[385,215],[388,213],[384,214],[274,216],[375,217],[438,218],[494,17],[463,219],[465,220],[312,17],[464,221],[436,183],[493,222],[332,183],[218,17],[314,223],[271,224],[272,225],[273,226],[303,227],[411,227],[289,227],[376,228],[290,228],[256,229],[255,17],[380,230],[379,231],[378,232],[377,233],[437,234],[324,235],[362,236],[323,237],[357,238],[361,239],[419,240],[418,241],[414,242],[371,243],[373,244],[370,245],[409,246],[364,17],[451,17],[363,247],[413,17],[276,248],[309,154],[307,249],[278,250],[281,251],[488,17],[279,252],[282,252],[449,17],[448,17],[450,17],[486,17],[284,253],[322,73],[92,17],[369,254],[253,17],[242,255],[318,17],[457,73],[467,256],[302,73],[461,136],[301,257],[444,258],[300,256],[208,17],[469,259],[298,73],[299,73],[291,17],[241,17],[297,260],[296,261],[239,262],[319,49],[286,49],[405,17],[393,263],[392,17],[453,17],[350,264],[321,73],[445,265],[87,73],[90,266],[91,267],[88,73],[89,17],[251,268],[246,269],[245,17],[244,270],[243,17],[443,271],[456,272],[458,273],[460,274],[462,275],[466,276],[500,277],[470,277],[499,278],[472,279],[482,280],[483,281],[485,282],[495,283],[498,157],[497,17],[496,284],[394,285],[81,17],[82,17],[13,17],[14,17],[16,17],[15,17],[2,17],[17,17],[18,17],[19,17],[20,17],[21,17],[22,17],[23,17],[24,17],[3,17],[25,17],[26,17],[4,17],[27,17],[31,17],[28,17],[29,17],[30,17],[32,17],[33,17],[34,17],[5,17],[35,17],[36,17],[37,17],[38,17],[6,17],[42,17],[39,17],[40,17],[41,17],[43,17],[7,17],[44,17],[49,17],[50,17],[45,17],[46,17],[47,17],[48,17],[8,17],[54,17],[51,17],[52,17],[53,17],[55,17],[9,17],[56,17],[57,17],[58,17],[60,17],[59,17],[61,17],[62,17],[10,17],[63,17],[64,17],[65,17],[11,17],[66,17],[67,17],[68,17],[69,17],[70,17],[1,17],[71,17],[72,17],[12,17],[76,17],[74,17],[79,17],[78,17],[73,17],[77,17],[75,17],[80,17],[120,286],[130,287],[119,286],[140,288],[111,289],[110,290],[139,284],[133,291],[138,292],[113,293],[127,294],[112,295],[136,296],[108,297],[107,284],[137,298],[109,299],[114,300],[115,17],[118,300],[105,17],[141,301],[131,302],[122,303],[123,304],[125,305],[121,306],[124,307],[134,284],[116,308],[117,309],[126,310],[106,311],[129,302],[128,300],[132,17],[135,312],[515,313],[505,314],[507,315],[514,316],[509,17],[510,17],[508,317],[511,318],[502,17],[503,17],[504,313],[506,319],[512,17],[513,320],[516,321],[555,322],[562,323],[560,324],[563,325],[564,326],[566,327],[565,328],[568,329],[579,330],[572,331],[581,332],[573,331],[584,333],[586,334],[574,335],[578,336],[575,17],[580,337],[582,338],[583,339],[576,17],[585,340],[577,341],[569,17],[570,17],[556,342],[547,17],[561,343],[550,341],[567,344],[551,17],[548,17],[549,342],[557,345],[558,17],[559,17],[552,17],[553,17],[554,17],[571,346]],"affectedFilesPendingEmit":[594,596,595,597,598,600,599,601,602,592,603,593,604,605,591,516,555,562,560,563,564,566,565,568,579,572,581,573,584,586,574,578,575,580,582,583,576,585,577,569,570,556,547,561,550,567,551,548,549,557,558,559,552,553,554,571],"version":"5.9.3"}
\ No newline at end of file