@umang-boss/claudemon 2.1.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/engine/constants.ts", "../src/state/state-manager.ts", "../src/engine/types.ts", "../src/state/io.ts", "../node_modules/zod/v3/external.js", "../node_modules/zod/v3/helpers/util.js", "../node_modules/zod/v3/ZodError.js", "../node_modules/zod/v3/locales/en.js", "../node_modules/zod/v3/errors.js", "../node_modules/zod/v3/helpers/parseUtil.js", "../node_modules/zod/v3/helpers/errorUtil.js", "../node_modules/zod/v3/types.js", "../src/state/schemas.ts", "../src/engine/pokemon-data.ts", "../src/engine/xp.ts", "../src/engine/stats.ts", "../src/engine/evolution-data.ts", "../src/engine/evolution.ts", "../src/engine/encounter-pool.ts", "../src/engine/encounters.ts", "../src/engine/mood.ts", "../src/hooks/award-xp.ts"],
4
- "sourcesContent": ["/**\n * Shared constants for Claudemon.\n * All magic numbers and configuration values live here.\n */\n\nimport type { XpEventType, CodingStat, TrainerTitle, Badge } from \"./types.js\";\n\n// \u2500\u2500 Game Limits \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const MAX_PARTY_SIZE = 6;\nexport const MAX_LEVEL = 100;\nexport const STARTER_LEVEL = 5;\nexport const MAX_HAPPINESS = 255;\nexport const TOTAL_POKEMON = 905;\n\n// \u2500\u2500 XP Awards per Event \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const XP_AWARDS: Record<\n XpEventType,\n { xp: number; stat: CodingStat | null; boost: number }\n> = {\n commit: { xp: 15, stat: \"velocity\", boost: 1 },\n test_pass: { xp: 12, stat: \"stability\", boost: 1 },\n test_written: { xp: 10, stat: \"stability\", boost: 1 },\n build_success: { xp: 10, stat: \"stability\", boost: 1 },\n bug_fix: { xp: 8, stat: \"debugging\", boost: 1 },\n lint_fix: { xp: 6, stat: \"debugging\", boost: 1 },\n file_create: { xp: 5, stat: \"velocity\", boost: 0 },\n file_edit: { xp: 3, stat: \"velocity\", boost: 0 },\n search: { xp: 1, stat: \"wisdom\", boost: 0 },\n large_refactor: { xp: 20, stat: \"wisdom\", boost: 2 },\n session_start: { xp: 5, stat: \"stamina\", boost: 1 },\n daily_streak: { xp: 15, stat: \"stamina\", boost: 1 },\n pet: { xp: 2, stat: null, boost: 0 },\n};\n\n// \u2500\u2500 Stat Display Names \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const STAT_DISPLAY_NAMES: Record<CodingStat, string> = {\n stamina: \"STAMINA\",\n debugging: \"DEBUGGING\",\n stability: \"STABILITY\",\n velocity: \"VELOCITY\",\n wisdom: \"WISDOM\",\n};\n\n// \u2500\u2500 Encounter Rate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** XP thresholds for encounter triggers by speed setting */\nexport const ENCOUNTER_THRESHOLDS = {\n fast: 100,\n normal: 250,\n slow: 500,\n} as const;\n\nexport type EncounterSpeed = keyof typeof ENCOUNTER_THRESHOLDS;\n\n/** Default encounter speed */\nexport const DEFAULT_ENCOUNTER_SPEED: EncounterSpeed = \"normal\";\n\n// \u2500\u2500 Reaction Cooldown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const DEFAULT_REACTION_COOLDOWN_MS = 30_000;\n\n// \u2500\u2500 Trainer Titles (by highest Pokemon level) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const TRAINER_TITLES: readonly TrainerTitle[] = [\n { minLevel: 1, title: \"Bug Catcher\" },\n { minLevel: 6, title: \"Youngster\" },\n { minLevel: 11, title: \"Hiker\" },\n { minLevel: 21, title: \"Ace Trainer\" },\n { minLevel: 31, title: \"Cooltrainer\" },\n { minLevel: 41, title: \"Veteran\" },\n { minLevel: 51, title: \"Elite Four\" },\n { minLevel: 61, title: \"Champion\" },\n { minLevel: 76, title: \"Pokemon Master\" },\n { minLevel: 91, title: \"Professor\" },\n];\n\n// \u2500\u2500 Badge Definitions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BADGES: readonly Badge[] = [\n {\n type: \"blaze\",\n name: \"Blaze Badge\",\n description: \"Fix 50 bugs \u2014 unlocks Fire Stone evolutions\",\n condition: { type: \"counter\", counter: \"bugs_fixed\", threshold: 50 },\n },\n {\n type: \"flow\",\n name: \"Flow Badge\",\n description: \"Pass 100 tests \u2014 unlocks Water Stone evolutions\",\n condition: { type: \"counter\", counter: \"tests_passed\", threshold: 100 },\n },\n {\n type: \"spark\",\n name: \"Spark Badge\",\n description: \"Make 200 commits \u2014 unlocks Thunder Stone evolutions\",\n condition: { type: \"counter\", counter: \"commits\", threshold: 200 },\n },\n {\n type: \"lunar\",\n name: \"Lunar Badge\",\n description: \"Code for 30 days (weekends off OK) \u2014 unlocks Moon Stone evolutions\",\n condition: { type: \"streak\", minDays: 30 },\n },\n {\n type: \"growth\",\n name: \"Growth Badge\",\n description: \"Edit 500 files \u2014 unlocks Leaf Stone evolutions\",\n condition: { type: \"counter\", counter: \"files_edited\", threshold: 500 },\n },\n];\n\n// \u2500\u2500 State File Paths \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Resolved at call time so tests can override HOME. Falls back to USERPROFILE on Windows. */\nexport function getStateDir(): string {\n return `${process.env[\"HOME\"] ?? process.env[\"USERPROFILE\"] ?? \"~\"}/.claudemon`;\n}\nexport function getStateFile(): string {\n return `${getStateDir()}/state.json`;\n}\nexport function getStatusFile(): string {\n return `${getStateDir()}/status.json`;\n}\n\n// \u2500\u2500 Terminal Bell \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BELL = \"\\x07\";\n", "/**\n * Singleton state manager for Claudemon.\n * All state reads/writes flow through this class.\n */\n\nimport { access as fsAccess } from \"node:fs/promises\";\nimport { constants as fsConst } from \"node:fs\";\nimport { getStateDir, getStateFile, getStatusFile } from \"../engine/constants.js\";\nimport type {\n PlayerState,\n OwnedPokemon,\n EventCounterKey,\n EventCounters,\n StreakData,\n BuddyConfig,\n PokedexState,\n WildEncounter,\n MoodType,\n} from \"../engine/types.js\";\nimport { EVENT_COUNTER_KEYS } from \"../engine/types.js\";\nimport { atomicWrite, safeRead, ensureDir, backupCorrupted, withLock } from \"./io.js\";\nimport { PlayerStateSchema } from \"./schemas.js\";\nimport { POKEMON_BY_ID } from \"../engine/pokemon-data.js\";\n\n/** Compact status payload for the shell status line script */\ninterface StatusPayload {\n name: string; // Species name (used for sprite filename lookup)\n displayName: string; // \"Nickname (Species)\" or just \"Species\" for display\n level: number;\n xpPercent: number;\n speciesId: number;\n evolutionReady: boolean;\n mood: MoodType;\n}\n\n/** Build a zeroed-out EventCounters record */\nfunction emptyCounters(): EventCounters {\n const counters = {} as Record<string, number>;\n for (const key of EVENT_COUNTER_KEYS) {\n counters[key] = 0;\n }\n return counters as EventCounters;\n}\n\n/** Build default streak data */\nfunction emptyStreak(): StreakData {\n return {\n currentStreak: 0,\n longestStreak: 0,\n lastActiveDate: null,\n totalDaysActive: 0,\n };\n}\n\n/** Build default config */\nfunction defaultConfig(): BuddyConfig {\n return {\n muted: false,\n reactionCooldownMs: 30_000,\n statusLineEnabled: true,\n bellEnabled: true,\n encounterSpeed: \"normal\",\n xpSharePercent: 25,\n };\n}\n\n/** Build empty pokedex */\nfunction emptyPokedex(): PokedexState {\n return {\n entries: {},\n totalSeen: 0,\n totalCaught: 0,\n };\n}\n\n/** Get today's date as YYYY-MM-DD in local timezone */\nfunction todayDateString(): string {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, \"0\");\n const day = String(now.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nexport class StateManager {\n private static instance: StateManager | null = null;\n private state: PlayerState | null = null;\n /** Timestamp of the last successful load from disk */\n private lastLoadTime: number = 0;\n /** How long (in ms) cached state is considered fresh before re-reading disk */\n private static readonly CACHE_TTL_MS = 1000;\n\n /** Debounce timer for writeStatus \u2014 limits disk writes to at most once per second */\n private statusWriteTimer: ReturnType<typeof setTimeout> | null = null;\n /** Payload queued for the next debounced status write */\n private pendingStatusPayload: StatusPayload | null = null;\n /** Maximum frequency for status file writes (ms) */\n private static readonly STATUS_DEBOUNCE_MS = 1000;\n\n private constructor() {}\n\n /** Get the singleton StateManager instance */\n static getInstance(): StateManager {\n if (!StateManager.instance) {\n StateManager.instance = new StateManager();\n }\n return StateManager.instance;\n }\n\n /** Load state from disk. Returns cached state if loaded within the last second. */\n async load(): Promise<PlayerState | null> {\n // Return cached state if fresh enough (avoids redundant disk reads from MCP tool calls)\n if (\n this.state &&\n this.lastLoadTime > 0 &&\n Date.now() - this.lastLoadTime < StateManager.CACHE_TTL_MS\n ) {\n return this.state;\n }\n\n await ensureDir(getStateDir());\n\n const stateFile = getStateFile();\n let fileExists = true;\n try {\n await fsAccess(stateFile, fsConst.F_OK);\n } catch {\n fileExists = false;\n }\n if (!fileExists) {\n return null;\n }\n\n const raw = await safeRead<unknown>(stateFile);\n if (raw === null) {\n // File exists but safeRead returned null \u2014 empty or invalid JSON\n const backupPath = await backupCorrupted(stateFile);\n process.stderr.write(\n `[claudemon] State file was corrupted and has been backed up to ${backupPath}\\n` +\n `[claudemon] You'll need to pick a new starter with buddy_starter.\\n`,\n );\n return null;\n }\n\n try {\n // Zod output is structurally compatible but not nominally identical to PlayerState\n const parsed = PlayerStateSchema.parse(raw) as PlayerState;\n this.state = parsed;\n this.lastLoadTime = Date.now();\n return this.state;\n } catch (err: unknown) {\n // Schema validation failed \u2014 data on disk doesn't match expected shape\n const backupPath = await backupCorrupted(stateFile);\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(\n `[claudemon] State validation failed: ${message}\\n` +\n `[claudemon] Corrupted data backed up to ${backupPath}\\n` +\n `[claudemon] You'll need to pick a new starter with buddy_starter.\\n`,\n );\n return null;\n }\n }\n\n /** Save current state to disk atomically, protected by file lock */\n async save(): Promise<void> {\n if (!this.state) {\n throw new Error(\"Cannot save: state not loaded. Call load() or initializePlayer() first.\");\n }\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n const lockPath = `${stateDir}/state.lock`;\n await withLock(lockPath, async () => {\n const json = JSON.stringify(this.state, null, 2);\n await atomicWrite(getStateFile(), json);\n });\n // After saving, in-memory state matches disk \u2014 refresh cache timestamp\n this.lastLoadTime = Date.now();\n }\n\n /** Get current state (throws if not loaded) */\n getState(): PlayerState {\n if (!this.state) {\n throw new Error(\"State not loaded. Call load() first.\");\n }\n return this.state;\n }\n\n /** Check if this is first run (no state file exists) */\n async isFirstRun(): Promise<boolean> {\n try {\n await fsAccess(getStateFile(), fsConst.F_OK);\n return false;\n } catch {\n return true;\n }\n }\n\n /** Initialize new player state after starter selection */\n async initializePlayer(\n trainerId: string,\n trainerName: string,\n starter: OwnedPokemon,\n ): Promise<PlayerState> {\n const now = new Date().toISOString();\n\n const state: PlayerState = {\n trainerId,\n trainerName,\n party: [starter],\n pcBox: [],\n pokedex: emptyPokedex(),\n badges: [],\n achievements: [],\n counters: emptyCounters(),\n streak: emptyStreak(),\n config: defaultConfig(),\n startedAt: now,\n totalXpEarned: 0,\n totalSessions: 0,\n pendingEncounter: null,\n xpSinceLastEncounter: 0,\n recentToolTypes: [],\n lastEncounterTime: 0,\n mood: \"neutral\",\n moodSetAt: 0,\n lastFedAt: 0,\n lastTrainedAt: 0,\n lastPlayedAt: 0,\n pendingQuiz: null,\n shareStats: { wins: 0, losses: 0, ties: 0 },\n };\n\n this.state = state;\n await this.save();\n return this.state;\n }\n\n /** Get the active Pokemon from the party (isActive === true) */\n getActivePokemon(): OwnedPokemon | null {\n if (!this.state) {\n return null;\n }\n return this.state.party.find((p) => p.isActive) ?? null;\n }\n\n /** Increment an event counter by amount (default 1) and save (lock-protected) */\n async incrementCounter(key: EventCounterKey, amount: number = 1): Promise<void> {\n const state = this.getState();\n state.counters[key] += amount;\n await this.save();\n }\n\n /**\n * Update daily streak with weekend grace period.\n * Allows up to 2 days off without breaking the streak (covers weekends).\n * Streak counts \"coding days\" not \"consecutive calendar days\".\n */\n async updateStreak(): Promise<void> {\n const state = this.getState();\n const today = todayDateString();\n const { streak } = state;\n\n if (streak.lastActiveDate === today) {\n return;\n }\n\n if (streak.lastActiveDate === null) {\n streak.currentStreak = 1;\n streak.totalDaysActive = 1;\n } else {\n const last = new Date(streak.lastActiveDate);\n const now = new Date(today);\n const diffMs = now.getTime() - last.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n // Grace period: up to 2 days off (covers weekends)\n // 1 day gap = next day (consecutive) \u2713\n // 2 day gap = skipped 1 day (e.g., Friday \u2192 Sunday) \u2713\n // 3 day gap = skipped 2 days (e.g., Friday \u2192 Monday) \u2713\n // 4+ day gap = streak broken\n if (diffDays <= 3) {\n streak.currentStreak += 1;\n } else {\n streak.currentStreak = 1;\n }\n streak.totalDaysActive += 1;\n }\n\n if (streak.currentStreak > streak.longestStreak) {\n streak.longestStreak = streak.currentStreak;\n }\n\n streak.lastActiveDate = today;\n await this.save();\n }\n\n /**\n * Write compact status JSON for the shell status line script.\n * Debounced: at most one disk write per STATUS_DEBOUNCE_MS.\n * The payload is computed immediately so it always reflects the latest state,\n * but the actual I/O is deferred and coalesced.\n */\n async writeStatus(evolutionReady: boolean = false): Promise<void> {\n const active = this.getActivePokemon();\n if (!active) {\n return;\n }\n\n const state = this.getState();\n\n // XP percent is currentXp as a rough percentage toward next level\n // Exact formula depends on exp group; use a simple ratio for the status line\n const xpPercent =\n active.level >= 100\n ? 100\n : Math.min(100, Math.floor((active.currentXp / Math.max(1, active.currentXp + 50)) * 100));\n\n // Look up species name for sprite lookup and display\n const species = POKEMON_BY_ID.get(active.pokemonId);\n const speciesName = species?.name ?? `Pokemon #${active.pokemonId}`;\n const displayName = active.nickname ? `${active.nickname} (${speciesName})` : speciesName;\n\n const payload: StatusPayload = {\n name: speciesName,\n displayName,\n level: active.level,\n xpPercent,\n speciesId: active.pokemonId,\n evolutionReady,\n mood: state.mood ?? \"neutral\",\n };\n\n // Always update the pending payload to the latest values\n this.pendingStatusPayload = payload;\n\n // If a write is already scheduled, it will pick up the updated payload\n if (this.statusWriteTimer) return;\n\n this.statusWriteTimer = setTimeout(() => {\n void (async () => {\n this.statusWriteTimer = null;\n if (this.pendingStatusPayload) {\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n await atomicWrite(getStatusFile(), JSON.stringify(this.pendingStatusPayload));\n this.pendingStatusPayload = null;\n }\n })();\n }, StateManager.STATUS_DEBOUNCE_MS);\n }\n\n /** Flush any pending debounced status write immediately.\n * Call before process exit to ensure the last status update is persisted. */\n async flushStatus(): Promise<void> {\n if (this.statusWriteTimer) {\n clearTimeout(this.statusWriteTimer);\n this.statusWriteTimer = null;\n }\n if (this.pendingStatusPayload) {\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n await atomicWrite(getStatusFile(), JSON.stringify(this.pendingStatusPayload));\n this.pendingStatusPayload = null;\n }\n }\n\n /** Set a pending wild encounter on state. */\n setPendingEncounter(encounter: WildEncounter): void {\n const state = this.getState();\n state.pendingEncounter = encounter;\n }\n\n /** Clear the pending wild encounter from state. */\n clearPendingEncounter(): void {\n const state = this.getState();\n state.pendingEncounter = null;\n }\n\n /** Write encounter notification to status JSON so status line can show it. */\n async writeEncounterStatus(pokemonName: string): Promise<void> {\n const active = this.getActivePokemon();\n if (!active) return;\n\n const xpPercent =\n active.level >= 100\n ? 100\n : Math.min(100, Math.floor((active.currentXp / Math.max(1, active.currentXp + 50)) * 100));\n\n const species = POKEMON_BY_ID.get(active.pokemonId);\n const speciesName = species?.name ?? `Pokemon #${active.pokemonId}`;\n const displayLabel = active.nickname ? `${active.nickname} (${speciesName})` : speciesName;\n\n const payload = {\n name: speciesName,\n displayName: displayLabel,\n level: active.level,\n xpPercent,\n speciesId: active.pokemonId,\n evolutionReady: false,\n encounter: `Wild ${pokemonName} appeared!`,\n };\n\n await ensureDir(getStateDir());\n await atomicWrite(getStatusFile(), JSON.stringify(payload));\n }\n\n /** Reset singleton for testing purposes */\n static resetInstance(): void {\n StateManager.instance = null;\n }\n\n /** Invalidate the in-memory cache, forcing the next load() to read from disk */\n invalidateCache(): void {\n this.lastLoadTime = 0;\n }\n}\n", "/**\n * Core type definitions for Claudemon.\n * Single source of truth for all shared interfaces and types.\n */\n\n// \u2500\u2500 Mood Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const MOOD_TYPES = [\"happy\", \"worried\", \"sleepy\", \"energetic\", \"proud\", \"neutral\"] as const;\nexport type MoodType = (typeof MOOD_TYPES)[number];\n\n// \u2500\u2500 Pokemon Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const POKEMON_TYPES = [\n \"Normal\",\n \"Fire\",\n \"Water\",\n \"Electric\",\n \"Grass\",\n \"Ice\",\n \"Fighting\",\n \"Poison\",\n \"Ground\",\n \"Flying\",\n \"Psychic\",\n \"Bug\",\n \"Rock\",\n \"Ghost\",\n \"Dragon\",\n \"Steel\",\n \"Dark\",\n \"Fairy\",\n] as const;\n\nexport type PokemonType = (typeof POKEMON_TYPES)[number];\n\nexport const EXP_GROUPS = [\"fast\", \"medium_fast\", \"medium_slow\", \"slow\"] as const;\n\nexport type ExpGroup = (typeof EXP_GROUPS)[number];\n\nexport const RARITY_TIERS = [\"common\", \"uncommon\", \"rare\", \"legendary\", \"mythical\"] as const;\n\nexport type RarityTier = (typeof RARITY_TIERS)[number];\n\n// \u2500\u2500 Base Stats (Gen 1 layout) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface BaseStats {\n readonly hp: number;\n readonly attack: number;\n readonly defense: number;\n readonly speed: number;\n readonly special: number;\n}\n\n// \u2500\u2500 Pokemon Species (static, immutable Pokedex entry) \u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface Pokemon {\n readonly id: number;\n readonly name: string;\n readonly types: readonly [PokemonType, PokemonType?];\n readonly baseStats: BaseStats;\n readonly expGroup: ExpGroup;\n readonly evolutionChainId: number;\n readonly rarity: RarityTier;\n readonly catchRate: number; // 1-255, higher = easier to catch\n readonly description: string; // Short flavor text\n}\n\n// \u2500\u2500 Evolution \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type EvolutionMethod =\n | { readonly type: \"level\"; readonly level: number }\n | { readonly type: \"badge\"; readonly badge: BadgeType }\n | { readonly type: \"collaboration\" }\n | { readonly type: \"stat\"; readonly stat: CodingStat; readonly minValue: number };\n\nexport interface EvolutionLink {\n readonly from: number; // Pokemon ID\n readonly to: number; // Pokemon ID\n readonly method: EvolutionMethod;\n}\n\nexport interface EvolutionChain {\n readonly id: number;\n readonly links: readonly EvolutionLink[];\n}\n\n// \u2500\u2500 Coding Stats (mapped from Gen 1 stats) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const CODING_STATS = [\"stamina\", \"debugging\", \"stability\", \"velocity\", \"wisdom\"] as const;\n\nexport type CodingStat = (typeof CODING_STATS)[number];\n\nexport interface CodingStats {\n stamina: number; // HP \u2192 session endurance, streaks\n debugging: number; // Attack \u2192 bug-finding, error fixing\n stability: number; // Defense \u2192 test coverage, build reliability\n velocity: number; // Speed \u2192 throughput, commits, edits\n wisdom: number; // Special \u2192 deep problem-solving, refactors\n}\n\n/** Maps Gen 1 base stats to coding stats for initial values */\nexport const BASE_STAT_TO_CODING: Record<keyof BaseStats, CodingStat> = {\n hp: \"stamina\",\n attack: \"debugging\",\n defense: \"stability\",\n speed: \"velocity\",\n special: \"wisdom\",\n} as const;\n\n// \u2500\u2500 Badges (replace evolution stones) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BADGE_TYPES = [\n \"blaze\", // Fire Stone \u2192 50 bugs fixed\n \"flow\", // Water Stone \u2192 100 tests passed\n \"spark\", // Thunder Stone \u2192 200 commits\n \"lunar\", // Moon Stone \u2192 30-day streak\n \"growth\", // Leaf Stone \u2192 500 files edited\n] as const;\n\nexport type BadgeType = (typeof BADGE_TYPES)[number];\n\nexport interface Badge {\n readonly type: BadgeType;\n readonly name: string;\n readonly description: string;\n readonly condition: BadgeCondition;\n}\n\nexport type BadgeCondition =\n | { readonly type: \"counter\"; readonly counter: EventCounterKey; readonly threshold: number }\n | { readonly type: \"streak\"; readonly minDays: number };\n\n// \u2500\u2500 Owned Pokemon (user's individual Pokemon instance) \u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface OwnedPokemon {\n readonly id: string; // Unique instance ID (UUID)\n pokemonId: number;\n nickname: string | null;\n level: number;\n currentXp: number;\n totalXp: number;\n codingStats: CodingStats;\n happiness: number; // 0-255\n caughtAt: string; // ISO date\n evolvedAt: string | null;\n isActive: boolean;\n personality: string | null;\n shiny: boolean; // Future: always false in v1\n isStarter: boolean;\n}\n\n// \u2500\u2500 Player State (single source of truth) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PlayerState {\n readonly trainerId: string;\n trainerName: string;\n party: OwnedPokemon[]; // Max 6\n pcBox: OwnedPokemon[]; // Overflow storage\n pokedex: PokedexState;\n badges: BadgeType[];\n achievements: UnlockedAchievement[];\n counters: EventCounters;\n streak: StreakData;\n config: BuddyConfig;\n startedAt: string; // ISO date\n totalXpEarned: number;\n totalSessions: number;\n pendingEncounter: WildEncounter | null;\n xpSinceLastEncounter: number;\n recentToolTypes: string[]; // Track tool diversity for bonus encounters\n lastEncounterTime: number; // Timestamp of last encounter (for cooldown)\n mood: MoodType; // Current mood of the active Pokemon\n moodSetAt: number; // Timestamp when mood was last set\n lastFedAt: number; // Timestamp of last feed action\n lastTrainedAt: number; // Timestamp of last train action\n lastPlayedAt: number; // Timestamp of last play (quiz completed) action\n pendingQuiz: PendingQuiz | null; // Active quiz awaiting answer\n shareStats: ShareStats; // Win/loss/tie record from compare\n}\n\n// \u2500\u2500 Share Stats \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface ShareStats {\n wins: number;\n losses: number;\n ties: number;\n}\n\n// \u2500\u2500 Pokedex \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PokedexEntry {\n seen: boolean;\n caught: boolean;\n firstSeen: string | null; // ISO date\n firstCaught: string | null;\n}\n\nexport interface PokedexState {\n entries: Record<number, PokedexEntry>; // Keyed by Pokedex number 1-151\n totalSeen: number;\n totalCaught: number;\n}\n\n// \u2500\u2500 Achievements \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface Achievement {\n readonly id: string;\n readonly name: string;\n readonly description: string;\n readonly category: \"trainer\" | \"coding\" | \"pokemon\" | \"secret\";\n readonly condition: AchievementCondition;\n}\n\nexport type AchievementCondition =\n | { readonly type: \"counter\"; readonly counter: EventCounterKey; readonly threshold: number }\n | { readonly type: \"level\"; readonly minLevel: number }\n | { readonly type: \"pokedex\"; readonly minCaught: number }\n | { readonly type: \"streak\"; readonly minDays: number }\n | { readonly type: \"badge\"; readonly badge: BadgeType }\n | { readonly type: \"evolution\" }\n | { readonly type: \"party_size\"; readonly minSize: number };\n\nexport interface UnlockedAchievement {\n readonly achievementId: string;\n readonly unlockedAt: string; // ISO date\n}\n\n// \u2500\u2500 Event Counters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const EVENT_COUNTER_KEYS = [\n \"commits\",\n \"tests_passed\",\n \"tests_failed\",\n \"tests_written\",\n \"builds_succeeded\",\n \"builds_failed\",\n \"bugs_fixed\",\n \"lint_fixes\",\n \"files_created\",\n \"files_edited\",\n \"searches\",\n \"large_refactors\",\n \"errors_encountered\",\n \"sessions\",\n \"prs_merged\",\n] as const;\n\nexport type EventCounterKey = (typeof EVENT_COUNTER_KEYS)[number];\n\nexport type EventCounters = Record<EventCounterKey, number>;\n\n// \u2500\u2500 Streaks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface StreakData {\n currentStreak: number;\n longestStreak: number;\n lastActiveDate: string | null; // ISO date \"2026-04-13\"\n totalDaysActive: number;\n}\n\n// \u2500\u2500 Config \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface BuddyConfig {\n muted: boolean;\n reactionCooldownMs: number; // Default 30000\n statusLineEnabled: boolean;\n bellEnabled: boolean; // Terminal bell on level-up/encounters\n encounterSpeed: \"fast\" | \"normal\" | \"slow\"; // Configurable encounter frequency\n xpSharePercent: number; // 0-100, default 25. Percentage of XP shared to inactive party\n}\n\n// \u2500\u2500 XP Events (what triggers XP awards) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const XP_EVENT_TYPES = [\n \"commit\",\n \"test_pass\",\n \"test_written\",\n \"build_success\",\n \"bug_fix\",\n \"lint_fix\",\n \"file_create\",\n \"file_edit\",\n \"search\",\n \"large_refactor\",\n \"session_start\",\n \"daily_streak\",\n \"pet\",\n] as const;\n\nexport type XpEventType = (typeof XP_EVENT_TYPES)[number];\n\nexport interface XpEvent {\n readonly type: XpEventType;\n readonly xp: number;\n readonly statBoost: CodingStat | null;\n readonly boostAmount: number;\n}\n\n// \u2500\u2500 Pending Quiz (for /buddy play) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PendingQuiz {\n readonly type: \"type_matchup\" | \"stat_compare\" | \"evolution\" | \"pokedex_trivia\";\n readonly question: string;\n readonly options: readonly string[];\n readonly correctAnswer: number; // 1-4\n}\n\n// \u2500\u2500 Encounters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface WildEncounter {\n readonly pokemonId: number;\n readonly level: number;\n readonly catchCondition: CatchCondition;\n}\n\nexport interface CatchCondition {\n readonly requiredStat: CodingStat | null;\n readonly minStatValue: number;\n readonly requiredLevel: number;\n}\n\n// \u2500\u2500 Level Up Result \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface LevelUpResult {\n readonly previousLevel: number;\n readonly newLevel: number;\n readonly pendingEvolution: EvolutionLink | null;\n}\n\n// \u2500\u2500 Trainer Titles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface TrainerTitle {\n readonly minLevel: number;\n readonly title: string;\n}\n\n// \u2500\u2500 Legendary Quest \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface LegendaryQuest {\n readonly pokemonId: number;\n readonly name: string;\n readonly steps: readonly QuestStep[];\n}\n\nexport interface QuestStep {\n readonly description: string;\n readonly condition: AchievementCondition;\n}\n", "/**\n * Atomic file I/O helpers for state persistence.\n * All disk writes go through atomicWrite to prevent corruption.\n * Uses only Node.js APIs (no Bun-specific APIs) for compatibility.\n */\n\nimport {\n readFile,\n writeFile,\n rename,\n mkdir,\n copyFile,\n unlink,\n stat,\n access,\n} from \"node:fs/promises\";\nimport { constants } from \"node:fs\";\n\n/** Write data atomically via temp file + rename */\nexport async function atomicWrite(path: string, data: string): Promise<void> {\n const tmpPath = `${path}.${Date.now()}.tmp`;\n await writeFile(tmpPath, data, \"utf-8\");\n await rename(tmpPath, path);\n}\n\n/** Read and parse JSON, returning null if file doesn't exist or contains invalid JSON */\nexport async function safeRead<T>(path: string): Promise<T | null> {\n try {\n await access(path, constants.F_OK);\n } catch {\n return null;\n }\n try {\n const text = await readFile(path, \"utf-8\");\n if (!text.trim()) {\n return null;\n }\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n}\n\n/** Ensure directory exists, creating parents as needed */\nexport async function ensureDir(path: string): Promise<void> {\n await mkdir(path, { recursive: true });\n}\n\n/**\n * Backup a corrupted file by copying it to `<path>.corrupt.<timestamp>`.\n */\nexport async function backupCorrupted(path: string): Promise<string> {\n const backupPath = `${path}.corrupt.${Date.now()}`;\n try {\n await copyFile(path, backupPath);\n } catch {\n // If copy fails, nothing to back up\n }\n return backupPath;\n}\n\nconst LOCK_MAX_AGE_MS = 5000;\nconst LOCK_RETRY_DELAY_MS = 100;\n\n/**\n * Execute a function while holding a simple file lock.\n */\nexport async function withLock<T>(lockPath: string, fn: () => Promise<T>): Promise<T> {\n try {\n const lockStat = await stat(lockPath);\n const lockAge = Date.now() - lockStat.mtimeMs;\n if (lockAge < LOCK_MAX_AGE_MS) {\n await new Promise((r) => setTimeout(r, LOCK_RETRY_DELAY_MS));\n }\n } catch {\n // No lock file\n }\n\n await writeFile(lockPath, String(Date.now()), \"utf-8\");\n try {\n return await fn();\n } finally {\n try {\n await unlink(lockPath);\n } catch {\n // Ignore\n }\n }\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "/**\n * Zod validation schemas for state files.\n * Catches disk corruption early at load boundaries.\n */\n\nimport { z } from \"zod\";\n\nimport { BADGE_TYPES, CODING_STATS, EVENT_COUNTER_KEYS, MOOD_TYPES } from \"../engine/types.js\";\n\n// ---- Shared Primitives ----\n\nconst BadgeTypeSchema = z.enum(BADGE_TYPES);\n\n// ---- Coding Stats ----\n\nexport const CodingStatsSchema = z.object({\n stamina: z.number(),\n debugging: z.number(),\n stability: z.number(),\n velocity: z.number(),\n wisdom: z.number(),\n});\n\n// ---- Owned Pokemon ----\n\nexport const OwnedPokemonSchema = z.object({\n id: z.string(),\n pokemonId: z.number().int().min(1).max(905),\n nickname: z.string().nullable(),\n level: z.number().int().min(1).max(100),\n currentXp: z.number().int().min(0),\n totalXp: z.number().int().min(0),\n codingStats: CodingStatsSchema,\n happiness: z.number().int().min(0).max(255),\n caughtAt: z.string(),\n evolvedAt: z.string().nullable(),\n isActive: z.boolean(),\n personality: z.string().nullable(),\n shiny: z.boolean().default(false),\n isStarter: z.boolean().default(false),\n});\n\n// ---- Event Counters ----\n\n// Cast needed: Object.fromEntries loses key specificity, but keys are guaranteed by EVENT_COUNTER_KEYS\nexport const EventCountersSchema = z.object(\n Object.fromEntries(\n EVENT_COUNTER_KEYS.map((key) => [key, z.number().int().min(0).default(0)]),\n ) as Record<(typeof EVENT_COUNTER_KEYS)[number], z.ZodDefault<z.ZodNumber>>,\n);\n\n// ---- Streak Data ----\n\nexport const StreakDataSchema = z.object({\n currentStreak: z.number().int().min(0).default(0),\n longestStreak: z.number().int().min(0).default(0),\n lastActiveDate: z.string().nullable().default(null),\n totalDaysActive: z.number().int().min(0).default(0),\n});\n\n// ---- Buddy Config ----\n\nexport const BuddyConfigSchema = z.object({\n muted: z.boolean().default(false),\n reactionCooldownMs: z.number().int().min(0).default(30_000),\n statusLineEnabled: z.boolean().default(true),\n bellEnabled: z.boolean().default(true),\n encounterSpeed: z.enum([\"fast\", \"normal\", \"slow\"]).default(\"normal\"),\n xpSharePercent: z.number().min(0).max(100).default(25),\n});\n\n// ---- Pokedex ----\n\nexport const PokedexEntrySchema = z.object({\n seen: z.boolean(),\n caught: z.boolean(),\n firstSeen: z.string().nullable(),\n firstCaught: z.string().nullable(),\n});\n\nexport const PokedexStateSchema = z.object({\n entries: z.record(z.coerce.number(), PokedexEntrySchema).default({}),\n totalSeen: z.number().int().min(0).default(0),\n totalCaught: z.number().int().min(0).default(0),\n});\n\n// ---- Achievements ----\n\nexport const UnlockedAchievementSchema = z.object({\n achievementId: z.string(),\n unlockedAt: z.string(),\n});\n\n// ---- Share Stats ----\n\nexport const ShareStatsSchema = z.object({\n wins: z.number().int().min(0).default(0),\n losses: z.number().int().min(0).default(0),\n ties: z.number().int().min(0).default(0),\n});\n\n// ---- Pending Quiz ----\n\nexport const PendingQuizSchema = z.object({\n type: z.enum([\"type_matchup\", \"stat_compare\", \"evolution\", \"pokedex_trivia\"]),\n question: z.string(),\n options: z.array(z.string()),\n correctAnswer: z.number().int().min(1).max(4),\n});\n\n// ---- Catch Condition ----\n\nexport const CatchConditionSchema = z.object({\n requiredStat: z.enum(CODING_STATS).nullable(),\n minStatValue: z.number(),\n requiredLevel: z.number(),\n});\n\n// ---- Wild Encounter ----\n\nexport const WildEncounterSchema = z.object({\n pokemonId: z.number().int().min(1).max(905),\n level: z.number().int().min(1).max(100),\n catchCondition: CatchConditionSchema,\n});\n\n// ---- Player State (top-level) ----\n\nexport const PlayerStateSchema = z.object({\n trainerId: z.string(),\n trainerName: z.string(),\n party: z.array(OwnedPokemonSchema).max(6),\n pcBox: z.array(OwnedPokemonSchema).default([]),\n pokedex: PokedexStateSchema,\n badges: z.array(BadgeTypeSchema).default([]),\n achievements: z.array(UnlockedAchievementSchema).default([]),\n counters: EventCountersSchema,\n streak: StreakDataSchema,\n config: BuddyConfigSchema,\n startedAt: z.string(),\n totalXpEarned: z.number().int().min(0).default(0),\n totalSessions: z.number().int().min(0).default(0),\n pendingEncounter: WildEncounterSchema.nullable().default(null),\n xpSinceLastEncounter: z.number().int().min(0).default(0),\n recentToolTypes: z.array(z.string()).default([]),\n lastEncounterTime: z.number().int().min(0).default(0),\n mood: z.enum(MOOD_TYPES).default(\"neutral\"),\n moodSetAt: z.number().default(0),\n lastFedAt: z.number().default(0),\n lastTrainedAt: z.number().default(0),\n lastPlayedAt: z.number().default(0),\n pendingQuiz: PendingQuizSchema.nullable().default(null),\n shareStats: ShareStatsSchema.default({ wins: 0, losses: 0, ties: 0 }),\n});\n", "/**\n * Complete Pokedex \u2014 all 905 Pokemon (Gen 1-8) with actual base stats,\n * catch rates, and coding-themed descriptions.\n * Auto-generated from PokeAPI data.\n */\n\nimport type { Pokemon } from \"./types.js\";\n\nexport const POKEDEX: readonly Pokemon[] = [\n // \u2500\u2500 Gen 1 \u2014 Kanto (#001\u2013#151) \u2500\u2500\n {\n id: 1,\n name: \"Bulbasaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 45, attack: 49, defense: 49, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 2,\n name: \"Ivysaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 62, defense: 63, speed: 60, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 3,\n name: \"Venusaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 80, attack: 82, defense: 83, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 4,\n name: \"Charmander\",\n types: [\"Fire\"],\n baseStats: { hp: 39, attack: 52, defense: 43, speed: 65, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 5,\n name: \"Charmeleon\",\n types: [\"Fire\"],\n baseStats: { hp: 58, attack: 64, defense: 58, speed: 80, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 6,\n name: \"Charizard\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 78, attack: 84, defense: 78, speed: 100, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 7,\n name: \"Squirtle\",\n types: [\"Water\"],\n baseStats: { hp: 44, attack: 48, defense: 65, speed: 43, special: 64 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 8,\n name: \"Wartortle\",\n types: [\"Water\"],\n baseStats: { hp: 59, attack: 63, defense: 80, speed: 58, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 9,\n name: \"Blastoise\",\n types: [\"Water\"],\n baseStats: { hp: 79, attack: 83, defense: 100, speed: 78, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 10,\n name: \"Caterpie\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 30, defense: 35, speed: 45, special: 20 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 11,\n name: \"Metapod\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 20, defense: 55, speed: 30, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 12,\n name: \"Butterfree\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 60, attack: 45, defense: 50, speed: 70, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 13,\n name: \"Weedle\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 35, defense: 30, speed: 50, special: 20 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 14,\n name: \"Kakuna\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 45, attack: 25, defense: 50, speed: 35, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 15,\n name: \"Beedrill\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 40, speed: 75, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 16,\n name: \"Pidgey\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 56, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 17,\n name: \"Pidgeotto\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 63, attack: 60, defense: 55, speed: 71, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 18,\n name: \"Pidgeot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 83, attack: 80, defense: 75, speed: 101, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 19,\n name: \"Rattata\",\n types: [\"Normal\"],\n baseStats: { hp: 30, attack: 56, defense: 35, speed: 72, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 7,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 20,\n name: \"Raticate\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 81, defense: 60, speed: 97, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 7,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 21,\n name: \"Spearow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 60, defense: 30, speed: 70, special: 31 },\n expGroup: \"medium_fast\",\n evolutionChainId: 8,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 22,\n name: \"Fearow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 65, attack: 90, defense: 65, speed: 100, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 8,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 23,\n name: \"Ekans\",\n types: [\"Poison\"],\n baseStats: { hp: 35, attack: 60, defense: 44, speed: 55, special: 54 },\n expGroup: \"medium_fast\",\n evolutionChainId: 9,\n rarity: \"common\",\n catchRate: 255,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 24,\n name: \"Arbok\",\n types: [\"Poison\"],\n baseStats: { hp: 60, attack: 95, defense: 69, speed: 80, special: 79 },\n expGroup: \"medium_fast\",\n evolutionChainId: 9,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 25,\n name: \"Pikachu\",\n types: [\"Electric\"],\n baseStats: { hp: 35, attack: 55, defense: 40, speed: 90, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 26,\n name: \"Raichu\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 90, defense: 55, speed: 110, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 27,\n name: \"Sandshrew\",\n types: [\"Ground\"],\n baseStats: { hp: 50, attack: 75, defense: 85, speed: 40, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 11,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 28,\n name: \"Sandslash\",\n types: [\"Ground\"],\n baseStats: { hp: 75, attack: 100, defense: 110, speed: 65, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 11,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 29,\n name: \"Nidoran\u2640\",\n types: [\"Poison\"],\n baseStats: { hp: 55, attack: 47, defense: 52, speed: 41, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 30,\n name: \"Nidorina\",\n types: [\"Poison\"],\n baseStats: { hp: 70, attack: 62, defense: 67, speed: 56, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 31,\n name: \"Nidoqueen\",\n types: [\"Poison\", \"Ground\"],\n baseStats: { hp: 90, attack: 92, defense: 87, speed: 76, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 32,\n name: \"Nidoran\u2642\",\n types: [\"Poison\"],\n baseStats: { hp: 46, attack: 57, defense: 40, speed: 50, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"common\",\n catchRate: 235,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 33,\n name: \"Nidorino\",\n types: [\"Poison\"],\n baseStats: { hp: 61, attack: 72, defense: 57, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 34,\n name: \"Nidoking\",\n types: [\"Poison\", \"Ground\"],\n baseStats: { hp: 81, attack: 102, defense: 77, speed: 85, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 35,\n name: \"Clefairy\",\n types: [\"Fairy\"],\n baseStats: { hp: 70, attack: 45, defense: 48, speed: 35, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"common\",\n catchRate: 150,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 36,\n name: \"Clefable\",\n types: [\"Fairy\"],\n baseStats: { hp: 95, attack: 70, defense: 73, speed: 60, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Makes complex code look magically simple.\",\n },\n {\n id: 37,\n name: \"Vulpix\",\n types: [\"Fire\"],\n baseStats: { hp: 38, attack: 41, defense: 40, speed: 65, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 15,\n rarity: \"common\",\n catchRate: 190,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 38,\n name: \"Ninetales\",\n types: [\"Fire\"],\n baseStats: { hp: 73, attack: 76, defense: 75, speed: 100, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 15,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 39,\n name: \"Jigglypuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 115, attack: 45, defense: 20, speed: 20, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"common\",\n catchRate: 170,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 40,\n name: \"Wigglytuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 140, attack: 70, defense: 45, speed: 45, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 41,\n name: \"Zubat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 55, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"common\",\n catchRate: 255,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 42,\n name: \"Golbat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 75, attack: 80, defense: 70, speed: 90, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 43,\n name: \"Oddish\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 45, attack: 50, defense: 55, speed: 30, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 44,\n name: \"Gloom\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 65, defense: 70, speed: 40, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 45,\n name: \"Vileplume\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 75, attack: 80, defense: 85, speed: 50, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 46,\n name: \"Paras\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 35, attack: 70, defense: 55, speed: 25, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 19,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 47,\n name: \"Parasect\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 60, attack: 95, defense: 80, speed: 30, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 19,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 48,\n name: \"Venonat\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 55, defense: 50, speed: 45, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 20,\n rarity: \"common\",\n catchRate: 190,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 49,\n name: \"Venomoth\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 70, attack: 65, defense: 60, speed: 90, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 20,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 50,\n name: \"Diglett\",\n types: [\"Ground\"],\n baseStats: { hp: 10, attack: 55, defense: 25, speed: 95, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 21,\n rarity: \"common\",\n catchRate: 255,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 51,\n name: \"Dugtrio\",\n types: [\"Ground\"],\n baseStats: { hp: 35, attack: 100, defense: 50, speed: 120, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 21,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 52,\n name: \"Meowth\",\n types: [\"Normal\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 90, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 53,\n name: \"Persian\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 70, defense: 60, speed: 115, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 54,\n name: \"Psyduck\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 52, defense: 48, speed: 55, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 23,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 55,\n name: \"Golduck\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 82, defense: 78, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 23,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 56,\n name: \"Mankey\",\n types: [\"Fighting\"],\n baseStats: { hp: 40, attack: 80, defense: 35, speed: 70, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 24,\n rarity: \"common\",\n catchRate: 190,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 57,\n name: \"Primeape\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 105, defense: 60, speed: 95, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 24,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 58,\n name: \"Growlithe\",\n types: [\"Fire\"],\n baseStats: { hp: 55, attack: 70, defense: 45, speed: 60, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 25,\n rarity: \"common\",\n catchRate: 190,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 59,\n name: \"Arcanine\",\n types: [\"Fire\"],\n baseStats: { hp: 90, attack: 110, defense: 80, speed: 95, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 25,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 60,\n name: \"Poliwag\",\n types: [\"Water\"],\n baseStats: { hp: 40, attack: 50, defense: 40, speed: 90, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 61,\n name: \"Poliwhirl\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 65, defense: 65, speed: 90, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 62,\n name: \"Poliwrath\",\n types: [\"Water\", \"Fighting\"],\n baseStats: { hp: 90, attack: 95, defense: 95, speed: 70, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 63,\n name: \"Abra\",\n types: [\"Psychic\"],\n baseStats: { hp: 25, attack: 20, defense: 15, speed: 90, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 64,\n name: \"Kadabra\",\n types: [\"Psychic\"],\n baseStats: { hp: 40, attack: 35, defense: 30, speed: 105, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 65,\n name: \"Alakazam\",\n types: [\"Psychic\"],\n baseStats: { hp: 55, attack: 50, defense: 45, speed: 120, special: 135 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 66,\n name: \"Machop\",\n types: [\"Fighting\"],\n baseStats: { hp: 70, attack: 80, defense: 50, speed: 35, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"common\",\n catchRate: 180,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 67,\n name: \"Machoke\",\n types: [\"Fighting\"],\n baseStats: { hp: 80, attack: 100, defense: 70, speed: 45, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 68,\n name: \"Machamp\",\n types: [\"Fighting\"],\n baseStats: { hp: 90, attack: 130, defense: 80, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 69,\n name: \"Bellsprout\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 50, attack: 75, defense: 35, speed: 40, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 70,\n name: \"Weepinbell\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 50, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 71,\n name: \"Victreebel\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 80, attack: 105, defense: 65, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 72,\n name: \"Tentacool\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 40, attack: 40, defense: 35, speed: 70, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 30,\n rarity: \"common\",\n catchRate: 190,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 73,\n name: \"Tentacruel\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 80, attack: 70, defense: 65, speed: 100, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 30,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 74,\n name: \"Geodude\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 40, attack: 80, defense: 100, speed: 20, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 75,\n name: \"Graveler\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 55, attack: 95, defense: 115, speed: 35, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 76,\n name: \"Golem\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 80, attack: 120, defense: 130, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 77,\n name: \"Ponyta\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 85, defense: 55, speed: 90, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 32,\n rarity: \"common\",\n catchRate: 190,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 78,\n name: \"Rapidash\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 100, defense: 70, speed: 105, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 32,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 79,\n name: \"Slowpoke\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 90, attack: 65, defense: 65, speed: 15, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 80,\n name: \"Slowbro\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 95, attack: 75, defense: 110, speed: 30, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 81,\n name: \"Magnemite\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 25, attack: 35, defense: 70, speed: 45, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 82,\n name: \"Magneton\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 50, attack: 60, defense: 95, speed: 70, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 83,\n name: \"Farfetch'd\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 52, attack: 90, defense: 55, speed: 60, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 35,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 84,\n name: \"Doduo\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 35, attack: 85, defense: 45, speed: 75, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 36,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 85,\n name: \"Dodrio\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 110, defense: 70, speed: 110, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 36,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 86,\n name: \"Seel\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 45, defense: 55, speed: 45, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 37,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 87,\n name: \"Dewgong\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 90, attack: 70, defense: 80, speed: 70, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 37,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 88,\n name: \"Grimer\",\n types: [\"Poison\"],\n baseStats: { hp: 80, attack: 80, defense: 50, speed: 25, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 38,\n rarity: \"common\",\n catchRate: 190,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 89,\n name: \"Muk\",\n types: [\"Poison\"],\n baseStats: { hp: 105, attack: 105, defense: 75, speed: 50, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 38,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 90,\n name: \"Shellder\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 65, defense: 100, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 39,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 91,\n name: \"Cloyster\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 50, attack: 95, defense: 180, speed: 70, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 39,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 92,\n name: \"Gastly\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 30, attack: 35, defense: 30, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 93,\n name: \"Haunter\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 45, attack: 50, defense: 45, speed: 95, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 94,\n name: \"Gengar\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 60, attack: 65, defense: 60, speed: 110, special: 130 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 95,\n name: \"Onix\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 35, attack: 45, defense: 160, speed: 70, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 41,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 96,\n name: \"Drowzee\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 48, defense: 45, speed: 42, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 42,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 97,\n name: \"Hypno\",\n types: [\"Psychic\"],\n baseStats: { hp: 85, attack: 73, defense: 70, speed: 67, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 42,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 98,\n name: \"Krabby\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 105, defense: 90, speed: 50, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 43,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 99,\n name: \"Kingler\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 130, defense: 115, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 43,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 100,\n name: \"Voltorb\",\n types: [\"Electric\"],\n baseStats: { hp: 40, attack: 30, defense: 50, speed: 100, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 44,\n rarity: \"common\",\n catchRate: 190,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 101,\n name: \"Electrode\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 50, defense: 70, speed: 150, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 44,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 102,\n name: \"Exeggcute\",\n types: [\"Grass\", \"Psychic\"],\n baseStats: { hp: 60, attack: 40, defense: 80, speed: 40, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 45,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 103,\n name: \"Exeggutor\",\n types: [\"Grass\", \"Psychic\"],\n baseStats: { hp: 95, attack: 95, defense: 85, speed: 55, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 45,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 104,\n name: \"Cubone\",\n types: [\"Ground\"],\n baseStats: { hp: 50, attack: 50, defense: 95, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 46,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 105,\n name: \"Marowak\",\n types: [\"Ground\"],\n baseStats: { hp: 60, attack: 80, defense: 110, speed: 45, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 46,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 106,\n name: \"Hitmonlee\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 120, defense: 53, speed: 87, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 107,\n name: \"Hitmonchan\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 105, defense: 79, speed: 76, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 108,\n name: \"Lickitung\",\n types: [\"Normal\"],\n baseStats: { hp: 90, attack: 55, defense: 75, speed: 30, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 48,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 109,\n name: \"Koffing\",\n types: [\"Poison\"],\n baseStats: { hp: 40, attack: 65, defense: 95, speed: 35, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 49,\n rarity: \"common\",\n catchRate: 190,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 110,\n name: \"Weezing\",\n types: [\"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 120, speed: 60, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 49,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 111,\n name: \"Rhyhorn\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 80, attack: 85, defense: 95, speed: 25, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 112,\n name: \"Rhydon\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 105, attack: 130, defense: 120, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 113,\n name: \"Chansey\",\n types: [\"Normal\"],\n baseStats: { hp: 250, attack: 5, defense: 5, speed: 50, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 114,\n name: \"Tangela\",\n types: [\"Grass\"],\n baseStats: { hp: 65, attack: 55, defense: 115, speed: 60, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 52,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 115,\n name: \"Kangaskhan\",\n types: [\"Normal\"],\n baseStats: { hp: 105, attack: 95, defense: 80, speed: 90, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 53,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 116,\n name: \"Horsea\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 40, defense: 70, speed: 60, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"common\",\n catchRate: 225,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 117,\n name: \"Seadra\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 65, defense: 95, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 118,\n name: \"Goldeen\",\n types: [\"Water\"],\n baseStats: { hp: 45, attack: 67, defense: 60, speed: 63, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 55,\n rarity: \"common\",\n catchRate: 225,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 119,\n name: \"Seaking\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 92, defense: 65, speed: 68, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 55,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 120,\n name: \"Staryu\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 45, defense: 55, speed: 85, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 56,\n rarity: \"common\",\n catchRate: 225,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 121,\n name: \"Starmie\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 60, attack: 75, defense: 85, speed: 115, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 56,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 122,\n name: \"Mr. Mime\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 40, attack: 45, defense: 65, speed: 90, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 123,\n name: \"Scyther\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 110, defense: 80, speed: 105, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 124,\n name: \"Jynx\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 65, attack: 50, defense: 35, speed: 95, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 59,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 125,\n name: \"Electabuzz\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 83, defense: 57, speed: 105, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 126,\n name: \"Magmar\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 95, defense: 57, speed: 93, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 127,\n name: \"Pinsir\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 125, defense: 100, speed: 85, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 62,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 128,\n name: \"Tauros\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 100, defense: 95, speed: 110, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 63,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 129,\n name: \"Magikarp\",\n types: [\"Water\"],\n baseStats: { hp: 20, attack: 10, defense: 55, speed: 80, special: 20 },\n expGroup: \"slow\",\n evolutionChainId: 64,\n rarity: \"common\",\n catchRate: 255,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 130,\n name: \"Gyarados\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 95, attack: 125, defense: 79, speed: 81, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 64,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 131,\n name: \"Lapras\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 130, attack: 85, defense: 80, speed: 60, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 65,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 132,\n name: \"Ditto\",\n types: [\"Normal\"],\n baseStats: { hp: 48, attack: 48, defense: 48, speed: 48, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 66,\n rarity: \"rare\",\n catchRate: 35,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 133,\n name: \"Eevee\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 55, defense: 50, speed: 55, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 134,\n name: \"Vaporeon\",\n types: [\"Water\"],\n baseStats: { hp: 130, attack: 65, defense: 60, speed: 65, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 135,\n name: \"Jolteon\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 65, defense: 60, speed: 130, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 136,\n name: \"Flareon\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 130, defense: 60, speed: 65, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 137,\n name: \"Porygon\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 60, defense: 70, speed: 40, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 138,\n name: \"Omanyte\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 35, attack: 40, defense: 100, speed: 35, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 69,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 139,\n name: \"Omastar\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 70, attack: 60, defense: 125, speed: 55, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 69,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 140,\n name: \"Kabuto\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 30, attack: 80, defense: 90, speed: 55, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 70,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 141,\n name: \"Kabutops\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 60, attack: 115, defense: 105, speed: 80, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 70,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 142,\n name: \"Aerodactyl\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 80, attack: 105, defense: 65, speed: 130, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 71,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 143,\n name: \"Snorlax\",\n types: [\"Normal\"],\n baseStats: { hp: 160, attack: 110, defense: 65, speed: 30, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 72,\n rarity: \"rare\",\n catchRate: 25,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 144,\n name: \"Articuno\",\n types: [\"Ice\", \"Flying\"],\n baseStats: { hp: 90, attack: 85, defense: 100, speed: 85, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 73,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 145,\n name: \"Zapdos\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 90, attack: 90, defense: 85, speed: 100, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 74,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 146,\n name: \"Moltres\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 90, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 75,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 147,\n name: \"Dratini\",\n types: [\"Dragon\"],\n baseStats: { hp: 41, attack: 64, defense: 45, speed: 50, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 148,\n name: \"Dragonair\",\n types: [\"Dragon\"],\n baseStats: { hp: 61, attack: 84, defense: 65, speed: 70, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 149,\n name: \"Dragonite\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 91, attack: 134, defense: 95, speed: 80, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 150,\n name: \"Mewtwo\",\n types: [\"Psychic\"],\n baseStats: { hp: 106, attack: 110, defense: 90, speed: 130, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 77,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 151,\n name: \"Mew\",\n types: [\"Psychic\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 78,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n\n // \u2500\u2500 Gen 2 \u2014 Johto (#152\u2013#251) \u2500\u2500\n {\n id: 152,\n name: \"Chikorita\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 49, defense: 65, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 153,\n name: \"Bayleef\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 62, defense: 80, speed: 60, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 154,\n name: \"Meganium\",\n types: [\"Grass\"],\n baseStats: { hp: 80, attack: 82, defense: 100, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 155,\n name: \"Cyndaquil\",\n types: [\"Fire\"],\n baseStats: { hp: 39, attack: 52, defense: 43, speed: 65, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 156,\n name: \"Quilava\",\n types: [\"Fire\"],\n baseStats: { hp: 58, attack: 64, defense: 58, speed: 80, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 157,\n name: \"Typhlosion\",\n types: [\"Fire\"],\n baseStats: { hp: 78, attack: 84, defense: 78, speed: 100, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 158,\n name: \"Totodile\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 65, defense: 64, speed: 43, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 159,\n name: \"Croconaw\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 80, defense: 80, speed: 58, special: 63 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 160,\n name: \"Feraligatr\",\n types: [\"Water\"],\n baseStats: { hp: 85, attack: 105, defense: 100, speed: 78, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 161,\n name: \"Sentret\",\n types: [\"Normal\"],\n baseStats: { hp: 35, attack: 46, defense: 34, speed: 20, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 82,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 162,\n name: \"Furret\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 76, defense: 64, speed: 90, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 82,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 163,\n name: \"Hoothoot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 30, defense: 30, speed: 50, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 83,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 164,\n name: \"Noctowl\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 100, attack: 50, defense: 50, speed: 70, special: 96 },\n expGroup: \"medium_fast\",\n evolutionChainId: 83,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 165,\n name: \"Ledyba\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 40, attack: 20, defense: 30, speed: 55, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 84,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 166,\n name: \"Ledian\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 55, attack: 35, defense: 50, speed: 85, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 84,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 167,\n name: \"Spinarak\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 60, defense: 40, speed: 30, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 85,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 168,\n name: \"Ariados\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 70, attack: 90, defense: 70, speed: 40, special: 70 },\n expGroup: \"fast\",\n evolutionChainId: 85,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 169,\n name: \"Crobat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 85, attack: 90, defense: 80, speed: 130, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 170,\n name: \"Chinchou\",\n types: [\"Water\", \"Electric\"],\n baseStats: { hp: 75, attack: 38, defense: 38, speed: 67, special: 56 },\n expGroup: \"slow\",\n evolutionChainId: 86,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 171,\n name: \"Lanturn\",\n types: [\"Water\", \"Electric\"],\n baseStats: { hp: 125, attack: 58, defense: 58, speed: 67, special: 76 },\n expGroup: \"slow\",\n evolutionChainId: 86,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 172,\n name: \"Pichu\",\n types: [\"Electric\"],\n baseStats: { hp: 20, attack: 40, defense: 15, speed: 60, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"common\",\n catchRate: 190,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 173,\n name: \"Cleffa\",\n types: [\"Fairy\"],\n baseStats: { hp: 50, attack: 25, defense: 28, speed: 15, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"common\",\n catchRate: 150,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 174,\n name: \"Igglybuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 90, attack: 30, defense: 15, speed: 15, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"common\",\n catchRate: 170,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 175,\n name: \"Togepi\",\n types: [\"Fairy\"],\n baseStats: { hp: 35, attack: 20, defense: 65, speed: 20, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 176,\n name: \"Togetic\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 55, attack: 40, defense: 85, speed: 40, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 177,\n name: \"Natu\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 40, attack: 50, defense: 45, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 88,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 178,\n name: \"Xatu\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 65, attack: 75, defense: 70, speed: 95, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 88,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 179,\n name: \"Mareep\",\n types: [\"Electric\"],\n baseStats: { hp: 55, attack: 40, defense: 40, speed: 35, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"common\",\n catchRate: 235,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 180,\n name: \"Flaaffy\",\n types: [\"Electric\"],\n baseStats: { hp: 70, attack: 55, defense: 55, speed: 45, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 181,\n name: \"Ampharos\",\n types: [\"Electric\"],\n baseStats: { hp: 90, attack: 75, defense: 85, speed: 55, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 182,\n name: \"Bellossom\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 80, defense: 95, speed: 50, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 183,\n name: \"Marill\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 70, attack: 20, defense: 50, speed: 40, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 184,\n name: \"Azumarill\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 100, attack: 50, defense: 80, speed: 50, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 185,\n name: \"Sudowoodo\",\n types: [\"Rock\"],\n baseStats: { hp: 70, attack: 100, defense: 115, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 91,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 186,\n name: \"Politoed\",\n types: [\"Water\"],\n baseStats: { hp: 90, attack: 75, defense: 75, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 187,\n name: \"Hoppip\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 35, attack: 35, defense: 40, speed: 50, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 188,\n name: \"Skiploom\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 55, attack: 45, defense: 50, speed: 80, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 189,\n name: \"Jumpluff\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 75, attack: 55, defense: 70, speed: 110, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 190,\n name: \"Aipom\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 70, defense: 55, speed: 85, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 93,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 191,\n name: \"Sunkern\",\n types: [\"Grass\"],\n baseStats: { hp: 30, attack: 30, defense: 30, speed: 30, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 94,\n rarity: \"common\",\n catchRate: 235,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 192,\n name: \"Sunflora\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 75, defense: 55, speed: 30, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 94,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 193,\n name: \"Yanma\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 65, attack: 65, defense: 45, speed: 95, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 95,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 194,\n name: \"Wooper\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 55, attack: 45, defense: 45, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 96,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 195,\n name: \"Quagsire\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 95, attack: 85, defense: 85, speed: 35, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 96,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 196,\n name: \"Espeon\",\n types: [\"Psychic\"],\n baseStats: { hp: 65, attack: 65, defense: 60, speed: 110, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 197,\n name: \"Umbreon\",\n types: [\"Dark\"],\n baseStats: { hp: 95, attack: 65, defense: 110, speed: 65, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 198,\n name: \"Murkrow\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 60, attack: 85, defense: 42, speed: 91, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 97,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 199,\n name: \"Slowking\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 95, attack: 75, defense: 80, speed: 30, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 200,\n name: \"Misdreavus\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 85, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 98,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 201,\n name: \"Unown\",\n types: [\"Psychic\"],\n baseStats: { hp: 48, attack: 72, defense: 48, speed: 48, special: 72 },\n expGroup: \"medium_fast\",\n evolutionChainId: 99,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 202,\n name: \"Wobbuffet\",\n types: [\"Psychic\"],\n baseStats: { hp: 190, attack: 33, defense: 58, speed: 33, special: 58 },\n expGroup: \"medium_fast\",\n evolutionChainId: 100,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 203,\n name: \"Girafarig\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 70, attack: 80, defense: 65, speed: 85, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 101,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 204,\n name: \"Pineco\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 65, defense: 90, speed: 15, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 102,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 205,\n name: \"Forretress\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 75, attack: 90, defense: 140, speed: 40, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 102,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 206,\n name: \"Dunsparce\",\n types: [\"Normal\"],\n baseStats: { hp: 100, attack: 70, defense: 70, speed: 45, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 103,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 207,\n name: \"Gligar\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 65, attack: 75, defense: 105, speed: 85, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 104,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 208,\n name: \"Steelix\",\n types: [\"Steel\", \"Ground\"],\n baseStats: { hp: 75, attack: 85, defense: 200, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 41,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 209,\n name: \"Snubbull\",\n types: [\"Fairy\"],\n baseStats: { hp: 60, attack: 80, defense: 50, speed: 30, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 105,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 210,\n name: \"Granbull\",\n types: [\"Fairy\"],\n baseStats: { hp: 90, attack: 120, defense: 75, speed: 45, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 105,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 211,\n name: \"Qwilfish\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 65, attack: 95, defense: 85, speed: 85, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 106,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 212,\n name: \"Scizor\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 70, attack: 130, defense: 100, speed: 65, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 213,\n name: \"Shuckle\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 20, attack: 10, defense: 230, speed: 5, special: 230 },\n expGroup: \"medium_slow\",\n evolutionChainId: 107,\n rarity: \"common\",\n catchRate: 190,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 214,\n name: \"Heracross\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 80, attack: 125, defense: 75, speed: 85, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 108,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 215,\n name: \"Sneasel\",\n types: [\"Dark\", \"Ice\"],\n baseStats: { hp: 55, attack: 95, defense: 55, speed: 115, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 216,\n name: \"Teddiursa\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 80, defense: 50, speed: 40, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 217,\n name: \"Ursaring\",\n types: [\"Normal\"],\n baseStats: { hp: 90, attack: 130, defense: 75, speed: 55, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 218,\n name: \"Slugma\",\n types: [\"Fire\"],\n baseStats: { hp: 40, attack: 40, defense: 40, speed: 20, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 111,\n rarity: \"common\",\n catchRate: 190,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 219,\n name: \"Magcargo\",\n types: [\"Fire\", \"Rock\"],\n baseStats: { hp: 60, attack: 50, defense: 120, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 111,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 220,\n name: \"Swinub\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 50, attack: 50, defense: 40, speed: 50, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"common\",\n catchRate: 225,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 221,\n name: \"Piloswine\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 100, attack: 100, defense: 80, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 222,\n name: \"Corsola\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 65, attack: 55, defense: 95, speed: 35, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 113,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 223,\n name: \"Remoraid\",\n types: [\"Water\"],\n baseStats: { hp: 35, attack: 65, defense: 35, speed: 65, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 114,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 224,\n name: \"Octillery\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 105, defense: 75, speed: 45, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 114,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 225,\n name: \"Delibird\",\n types: [\"Ice\", \"Flying\"],\n baseStats: { hp: 45, attack: 55, defense: 45, speed: 75, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 115,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 226,\n name: \"Mantine\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 85, attack: 40, defense: 70, speed: 70, special: 140 },\n expGroup: \"slow\",\n evolutionChainId: 116,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 227,\n name: \"Skarmory\",\n types: [\"Steel\", \"Flying\"],\n baseStats: { hp: 65, attack: 80, defense: 140, speed: 70, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 117,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 228,\n name: \"Houndour\",\n types: [\"Dark\", \"Fire\"],\n baseStats: { hp: 45, attack: 60, defense: 30, speed: 65, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 118,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 229,\n name: \"Houndoom\",\n types: [\"Dark\", \"Fire\"],\n baseStats: { hp: 75, attack: 90, defense: 50, speed: 95, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 118,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 230,\n name: \"Kingdra\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 75, attack: 95, defense: 95, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 231,\n name: \"Phanpy\",\n types: [\"Ground\"],\n baseStats: { hp: 90, attack: 60, defense: 60, speed: 40, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 119,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 232,\n name: \"Donphan\",\n types: [\"Ground\"],\n baseStats: { hp: 90, attack: 120, defense: 120, speed: 50, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 119,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 233,\n name: \"Porygon2\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 80, defense: 90, speed: 60, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 234,\n name: \"Stantler\",\n types: [\"Normal\"],\n baseStats: { hp: 73, attack: 95, defense: 62, speed: 85, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 120,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 235,\n name: \"Smeargle\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 20, defense: 35, speed: 75, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 121,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 236,\n name: \"Tyrogue\",\n types: [\"Fighting\"],\n baseStats: { hp: 35, attack: 35, defense: 35, speed: 35, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 237,\n name: \"Hitmontop\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 95, defense: 95, speed: 70, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 238,\n name: \"Smoochum\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 15, speed: 65, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 59,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 239,\n name: \"Elekid\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 63, defense: 37, speed: 95, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 240,\n name: \"Magby\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 75, defense: 37, speed: 83, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 241,\n name: \"Miltank\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 80, defense: 105, speed: 100, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 122,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 242,\n name: \"Blissey\",\n types: [\"Normal\"],\n baseStats: { hp: 255, attack: 10, defense: 10, speed: 55, special: 135 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"rare\",\n catchRate: 30,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 243,\n name: \"Raikou\",\n types: [\"Electric\"],\n baseStats: { hp: 90, attack: 85, defense: 75, speed: 115, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 123,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 244,\n name: \"Entei\",\n types: [\"Fire\"],\n baseStats: { hp: 115, attack: 115, defense: 85, speed: 100, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 124,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 245,\n name: \"Suicune\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 75, defense: 115, speed: 85, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 125,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 246,\n name: \"Larvitar\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 50, attack: 64, defense: 50, speed: 41, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 247,\n name: \"Pupitar\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 70, attack: 84, defense: 70, speed: 51, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 248,\n name: \"Tyranitar\",\n types: [\"Rock\", \"Dark\"],\n baseStats: { hp: 100, attack: 134, defense: 110, speed: 61, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 249,\n name: \"Lugia\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 106, attack: 90, defense: 130, speed: 110, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 127,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 250,\n name: \"Ho-Oh\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 106, attack: 130, defense: 90, speed: 90, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 128,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 251,\n name: \"Celebi\",\n types: [\"Psychic\", \"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 129,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n\n // \u2500\u2500 Gen 3 \u2014 Hoenn (#252\u2013#386) \u2500\u2500\n {\n id: 252,\n name: \"Treecko\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 70, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 253,\n name: \"Grovyle\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 65, defense: 45, speed: 95, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 254,\n name: \"Sceptile\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 85, defense: 65, speed: 120, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 255,\n name: \"Torchic\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 60, defense: 40, speed: 45, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 256,\n name: \"Combusken\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 60, attack: 85, defense: 60, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 257,\n name: \"Blaziken\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 80, attack: 120, defense: 70, speed: 80, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 258,\n name: \"Mudkip\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 70, defense: 50, speed: 40, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 259,\n name: \"Marshtomp\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 70, attack: 85, defense: 70, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 260,\n name: \"Swampert\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 100, attack: 110, defense: 90, speed: 60, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 261,\n name: \"Poochyena\",\n types: [\"Dark\"],\n baseStats: { hp: 35, attack: 55, defense: 35, speed: 35, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 133,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 262,\n name: \"Mightyena\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 70, speed: 70, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 133,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 263,\n name: \"Zigzagoon\",\n types: [\"Normal\"],\n baseStats: { hp: 38, attack: 30, defense: 41, speed: 60, special: 41 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 264,\n name: \"Linoone\",\n types: [\"Normal\"],\n baseStats: { hp: 78, attack: 70, defense: 61, speed: 100, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 265,\n name: \"Wurmple\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 45, defense: 35, speed: 20, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 266,\n name: \"Silcoon\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 35, defense: 55, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 267,\n name: \"Beautifly\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 60, attack: 70, defense: 50, speed: 65, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 268,\n name: \"Cascoon\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 35, defense: 55, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 269,\n name: \"Dustox\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 50, defense: 70, speed: 65, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 270,\n name: \"Lotad\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 40, attack: 30, defense: 30, speed: 30, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 271,\n name: \"Lombre\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 60, attack: 50, defense: 50, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 272,\n name: \"Ludicolo\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 80, attack: 70, defense: 70, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 273,\n name: \"Seedot\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 40, defense: 50, speed: 30, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 274,\n name: \"Nuzleaf\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 70, attack: 70, defense: 40, speed: 60, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 275,\n name: \"Shiftry\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 90, attack: 100, defense: 60, speed: 80, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 276,\n name: \"Taillow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 55, defense: 30, speed: 85, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 138,\n rarity: \"common\",\n catchRate: 200,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 277,\n name: \"Swellow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 85, defense: 60, speed: 125, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 138,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 278,\n name: \"Wingull\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 40, attack: 30, defense: 30, speed: 85, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 139,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 279,\n name: \"Pelipper\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 60, attack: 50, defense: 100, speed: 65, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 139,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 280,\n name: \"Ralts\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 28, attack: 25, defense: 25, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"common\",\n catchRate: 235,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 281,\n name: \"Kirlia\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 38, attack: 35, defense: 35, speed: 50, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 282,\n name: \"Gardevoir\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 68, attack: 65, defense: 65, speed: 80, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 283,\n name: \"Surskit\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 40, attack: 30, defense: 32, speed: 65, special: 52 },\n expGroup: \"medium_fast\",\n evolutionChainId: 141,\n rarity: \"common\",\n catchRate: 200,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 284,\n name: \"Masquerain\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 60, defense: 62, speed: 80, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 141,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 285,\n name: \"Shroomish\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 40, defense: 60, speed: 35, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 142,\n rarity: \"common\",\n catchRate: 255,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 286,\n name: \"Breloom\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 60, attack: 130, defense: 80, speed: 70, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 142,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 287,\n name: \"Slakoth\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 30, special: 35 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 288,\n name: \"Vigoroth\",\n types: [\"Normal\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 90, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 289,\n name: \"Slaking\",\n types: [\"Normal\"],\n baseStats: { hp: 150, attack: 160, defense: 100, speed: 100, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 290,\n name: \"Nincada\",\n types: [\"Bug\", \"Ground\"],\n baseStats: { hp: 31, attack: 45, defense: 90, speed: 40, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 291,\n name: \"Ninjask\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 61, attack: 90, defense: 45, speed: 160, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 292,\n name: \"Shedinja\",\n types: [\"Bug\", \"Ghost\"],\n baseStats: { hp: 1, attack: 90, defense: 45, speed: 40, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 293,\n name: \"Whismur\",\n types: [\"Normal\"],\n baseStats: { hp: 64, attack: 51, defense: 23, speed: 28, special: 51 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"common\",\n catchRate: 190,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 294,\n name: \"Loudred\",\n types: [\"Normal\"],\n baseStats: { hp: 84, attack: 71, defense: 43, speed: 48, special: 71 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 295,\n name: \"Exploud\",\n types: [\"Normal\"],\n baseStats: { hp: 104, attack: 91, defense: 63, speed: 68, special: 91 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 296,\n name: \"Makuhita\",\n types: [\"Fighting\"],\n baseStats: { hp: 72, attack: 60, defense: 30, speed: 25, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 146,\n rarity: \"common\",\n catchRate: 180,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 297,\n name: \"Hariyama\",\n types: [\"Fighting\"],\n baseStats: { hp: 144, attack: 120, defense: 60, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 146,\n rarity: \"common\",\n catchRate: 200,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 298,\n name: \"Azurill\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 50, attack: 20, defense: 40, speed: 20, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"common\",\n catchRate: 150,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 299,\n name: \"Nosepass\",\n types: [\"Rock\"],\n baseStats: { hp: 30, attack: 45, defense: 135, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 147,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 300,\n name: \"Skitty\",\n types: [\"Normal\"],\n baseStats: { hp: 50, attack: 45, defense: 45, speed: 50, special: 35 },\n expGroup: \"fast\",\n evolutionChainId: 148,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 301,\n name: \"Delcatty\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 65, defense: 65, speed: 90, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 148,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 302,\n name: \"Sableye\",\n types: [\"Dark\", \"Ghost\"],\n baseStats: { hp: 50, attack: 75, defense: 75, speed: 50, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 149,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 303,\n name: \"Mawile\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 50, attack: 85, defense: 85, speed: 50, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 150,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 304,\n name: \"Aron\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 50, attack: 70, defense: 100, speed: 30, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"common\",\n catchRate: 180,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 305,\n name: \"Lairon\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 60, attack: 90, defense: 140, speed: 40, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 306,\n name: \"Aggron\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 70, attack: 110, defense: 180, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 307,\n name: \"Meditite\",\n types: [\"Fighting\", \"Psychic\"],\n baseStats: { hp: 30, attack: 40, defense: 55, speed: 60, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 152,\n rarity: \"common\",\n catchRate: 180,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 308,\n name: \"Medicham\",\n types: [\"Fighting\", \"Psychic\"],\n baseStats: { hp: 60, attack: 60, defense: 75, speed: 80, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 152,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 309,\n name: \"Electrike\",\n types: [\"Electric\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 65, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 153,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 310,\n name: \"Manectric\",\n types: [\"Electric\"],\n baseStats: { hp: 70, attack: 75, defense: 60, speed: 105, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 153,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 311,\n name: \"Plusle\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 50, defense: 40, speed: 95, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 154,\n rarity: \"common\",\n catchRate: 200,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 312,\n name: \"Minun\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 40, defense: 50, speed: 95, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 155,\n rarity: \"common\",\n catchRate: 200,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 313,\n name: \"Volbeat\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 73, defense: 75, speed: 85, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 156,\n rarity: \"common\",\n catchRate: 150,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 314,\n name: \"Illumise\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 47, defense: 75, speed: 85, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 157,\n rarity: \"common\",\n catchRate: 150,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 315,\n name: \"Roselia\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 50, attack: 60, defense: 45, speed: 65, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"common\",\n catchRate: 150,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 316,\n name: \"Gulpin\",\n types: [\"Poison\"],\n baseStats: { hp: 70, attack: 43, defense: 53, speed: 40, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 159,\n rarity: \"common\",\n catchRate: 225,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 317,\n name: \"Swalot\",\n types: [\"Poison\"],\n baseStats: { hp: 100, attack: 73, defense: 83, speed: 55, special: 83 },\n expGroup: \"slow\",\n evolutionChainId: 159,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 318,\n name: \"Carvanha\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 45, attack: 90, defense: 20, speed: 65, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 160,\n rarity: \"common\",\n catchRate: 225,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 319,\n name: \"Sharpedo\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 70, attack: 120, defense: 40, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 160,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 320,\n name: \"Wailmer\",\n types: [\"Water\"],\n baseStats: { hp: 130, attack: 70, defense: 35, speed: 60, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 161,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 321,\n name: \"Wailord\",\n types: [\"Water\"],\n baseStats: { hp: 170, attack: 90, defense: 45, speed: 60, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 161,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 322,\n name: \"Numel\",\n types: [\"Fire\", \"Ground\"],\n baseStats: { hp: 60, attack: 60, defense: 40, speed: 35, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 162,\n rarity: \"common\",\n catchRate: 255,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 323,\n name: \"Camerupt\",\n types: [\"Fire\", \"Ground\"],\n baseStats: { hp: 70, attack: 100, defense: 70, speed: 40, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 162,\n rarity: \"common\",\n catchRate: 150,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 324,\n name: \"Torkoal\",\n types: [\"Fire\"],\n baseStats: { hp: 70, attack: 85, defense: 140, speed: 20, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 163,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 325,\n name: \"Spoink\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 25, defense: 35, speed: 60, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 164,\n rarity: \"common\",\n catchRate: 255,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 326,\n name: \"Grumpig\",\n types: [\"Psychic\"],\n baseStats: { hp: 80, attack: 45, defense: 65, speed: 80, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 164,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 327,\n name: \"Spinda\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 60, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 165,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 328,\n name: \"Trapinch\",\n types: [\"Ground\"],\n baseStats: { hp: 45, attack: 100, defense: 45, speed: 10, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"common\",\n catchRate: 255,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 329,\n name: \"Vibrava\",\n types: [\"Ground\", \"Dragon\"],\n baseStats: { hp: 50, attack: 70, defense: 50, speed: 70, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 330,\n name: \"Flygon\",\n types: [\"Ground\", \"Dragon\"],\n baseStats: { hp: 80, attack: 100, defense: 80, speed: 100, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 331,\n name: \"Cacnea\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 85, defense: 40, speed: 35, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 167,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 332,\n name: \"Cacturne\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 70, attack: 115, defense: 60, speed: 55, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 167,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 333,\n name: \"Swablu\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 45, attack: 40, defense: 60, speed: 50, special: 75 },\n expGroup: \"fast\",\n evolutionChainId: 168,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 334,\n name: \"Altaria\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 75, attack: 70, defense: 90, speed: 80, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 168,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 335,\n name: \"Zangoose\",\n types: [\"Normal\"],\n baseStats: { hp: 73, attack: 115, defense: 60, speed: 90, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 169,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 336,\n name: \"Seviper\",\n types: [\"Poison\"],\n baseStats: { hp: 73, attack: 100, defense: 60, speed: 65, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 170,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 337,\n name: \"Lunatone\",\n types: [\"Rock\", \"Psychic\"],\n baseStats: { hp: 90, attack: 55, defense: 65, speed: 70, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 171,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 338,\n name: \"Solrock\",\n types: [\"Rock\", \"Psychic\"],\n baseStats: { hp: 90, attack: 95, defense: 85, speed: 70, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 172,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 339,\n name: \"Barboach\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 50, attack: 48, defense: 43, speed: 60, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 173,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 340,\n name: \"Whiscash\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 110, attack: 78, defense: 73, speed: 60, special: 76 },\n expGroup: \"medium_fast\",\n evolutionChainId: 173,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 341,\n name: \"Corphish\",\n types: [\"Water\"],\n baseStats: { hp: 43, attack: 80, defense: 65, speed: 35, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 174,\n rarity: \"common\",\n catchRate: 205,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 342,\n name: \"Crawdaunt\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 63, attack: 120, defense: 85, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 174,\n rarity: \"common\",\n catchRate: 155,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 343,\n name: \"Baltoy\",\n types: [\"Ground\", \"Psychic\"],\n baseStats: { hp: 40, attack: 40, defense: 55, speed: 55, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 175,\n rarity: \"common\",\n catchRate: 255,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 344,\n name: \"Claydol\",\n types: [\"Ground\", \"Psychic\"],\n baseStats: { hp: 60, attack: 70, defense: 105, speed: 75, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 175,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 345,\n name: \"Lileep\",\n types: [\"Rock\", \"Grass\"],\n baseStats: { hp: 66, attack: 41, defense: 77, speed: 23, special: 87 },\n expGroup: \"fast\",\n evolutionChainId: 176,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 346,\n name: \"Cradily\",\n types: [\"Rock\", \"Grass\"],\n baseStats: { hp: 86, attack: 81, defense: 97, speed: 43, special: 107 },\n expGroup: \"fast\",\n evolutionChainId: 176,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 347,\n name: \"Anorith\",\n types: [\"Rock\", \"Bug\"],\n baseStats: { hp: 45, attack: 95, defense: 50, speed: 75, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 177,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 348,\n name: \"Armaldo\",\n types: [\"Rock\", \"Bug\"],\n baseStats: { hp: 75, attack: 125, defense: 100, speed: 45, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 177,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 349,\n name: \"Feebas\",\n types: [\"Water\"],\n baseStats: { hp: 20, attack: 15, defense: 20, speed: 80, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 178,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 350,\n name: \"Milotic\",\n types: [\"Water\"],\n baseStats: { hp: 95, attack: 60, defense: 79, speed: 81, special: 125 },\n expGroup: \"fast\",\n evolutionChainId: 178,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 351,\n name: \"Castform\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 70, defense: 70, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 179,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 352,\n name: \"Kecleon\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 90, defense: 70, speed: 40, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 180,\n rarity: \"common\",\n catchRate: 200,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 353,\n name: \"Shuppet\",\n types: [\"Ghost\"],\n baseStats: { hp: 44, attack: 75, defense: 35, speed: 45, special: 63 },\n expGroup: \"fast\",\n evolutionChainId: 181,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 354,\n name: \"Banette\",\n types: [\"Ghost\"],\n baseStats: { hp: 64, attack: 115, defense: 65, speed: 65, special: 83 },\n expGroup: \"fast\",\n evolutionChainId: 181,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 355,\n name: \"Duskull\",\n types: [\"Ghost\"],\n baseStats: { hp: 20, attack: 40, defense: 90, speed: 25, special: 90 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 356,\n name: \"Dusclops\",\n types: [\"Ghost\"],\n baseStats: { hp: 40, attack: 70, defense: 130, speed: 25, special: 130 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 357,\n name: \"Tropius\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 99, attack: 68, defense: 83, speed: 51, special: 87 },\n expGroup: \"slow\",\n evolutionChainId: 183,\n rarity: \"common\",\n catchRate: 200,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 358,\n name: \"Chimecho\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 50, defense: 80, speed: 65, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 184,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 359,\n name: \"Absol\",\n types: [\"Dark\"],\n baseStats: { hp: 65, attack: 130, defense: 60, speed: 75, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 185,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 360,\n name: \"Wynaut\",\n types: [\"Psychic\"],\n baseStats: { hp: 95, attack: 23, defense: 48, speed: 23, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 100,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 361,\n name: \"Snorunt\",\n types: [\"Ice\"],\n baseStats: { hp: 50, attack: 50, defense: 50, speed: 50, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 362,\n name: \"Glalie\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 363,\n name: \"Spheal\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 70, attack: 40, defense: 50, speed: 25, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 364,\n name: \"Sealeo\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 90, attack: 60, defense: 70, speed: 45, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 365,\n name: \"Walrein\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 110, attack: 80, defense: 90, speed: 65, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 366,\n name: \"Clamperl\",\n types: [\"Water\"],\n baseStats: { hp: 35, attack: 64, defense: 85, speed: 32, special: 74 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 367,\n name: \"Huntail\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 104, defense: 105, speed: 52, special: 94 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 368,\n name: \"Gorebyss\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 84, defense: 105, speed: 52, special: 114 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 369,\n name: \"Relicanth\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 100, attack: 90, defense: 130, speed: 55, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 189,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 370,\n name: \"Luvdisc\",\n types: [\"Water\"],\n baseStats: { hp: 43, attack: 30, defense: 55, speed: 97, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 190,\n rarity: \"common\",\n catchRate: 225,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 371,\n name: \"Bagon\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 75, defense: 60, speed: 50, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 372,\n name: \"Shelgon\",\n types: [\"Dragon\"],\n baseStats: { hp: 65, attack: 95, defense: 100, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 373,\n name: \"Salamence\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 95, attack: 135, defense: 80, speed: 100, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 374,\n name: \"Beldum\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 40, attack: 55, defense: 80, speed: 30, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 375,\n name: \"Metang\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 60, attack: 75, defense: 100, speed: 50, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 376,\n name: \"Metagross\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 80, attack: 135, defense: 130, speed: 70, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 377,\n name: \"Regirock\",\n types: [\"Rock\"],\n baseStats: { hp: 80, attack: 100, defense: 200, speed: 50, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 193,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 378,\n name: \"Regice\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 50, defense: 100, speed: 50, special: 200 },\n expGroup: \"slow\",\n evolutionChainId: 194,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 379,\n name: \"Registeel\",\n types: [\"Steel\"],\n baseStats: { hp: 80, attack: 75, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 195,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 380,\n name: \"Latias\",\n types: [\"Dragon\", \"Psychic\"],\n baseStats: { hp: 80, attack: 80, defense: 90, speed: 110, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 196,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 381,\n name: \"Latios\",\n types: [\"Dragon\", \"Psychic\"],\n baseStats: { hp: 80, attack: 90, defense: 80, speed: 110, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 197,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 382,\n name: \"Kyogre\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 100, defense: 90, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 198,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 383,\n name: \"Groudon\",\n types: [\"Ground\"],\n baseStats: { hp: 100, attack: 150, defense: 140, speed: 90, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 199,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 384,\n name: \"Rayquaza\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 105, attack: 150, defense: 90, speed: 95, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 200,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 385,\n name: \"Jirachi\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 201,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 386,\n name: \"Deoxys-Normal\",\n types: [\"Psychic\"],\n baseStats: { hp: 50, attack: 150, defense: 50, speed: 150, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 202,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n\n // \u2500\u2500 Gen 4 \u2014 Sinnoh (#387\u2013#493) \u2500\u2500\n {\n id: 387,\n name: \"Turtwig\",\n types: [\"Grass\"],\n baseStats: { hp: 55, attack: 68, defense: 64, speed: 31, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 388,\n name: \"Grotle\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 89, defense: 85, speed: 36, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 389,\n name: \"Torterra\",\n types: [\"Grass\", \"Ground\"],\n baseStats: { hp: 95, attack: 109, defense: 105, speed: 56, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 390,\n name: \"Chimchar\",\n types: [\"Fire\"],\n baseStats: { hp: 44, attack: 58, defense: 44, speed: 61, special: 58 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 391,\n name: \"Monferno\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 64, attack: 78, defense: 52, speed: 81, special: 78 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 392,\n name: \"Infernape\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 76, attack: 104, defense: 71, speed: 108, special: 104 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 393,\n name: \"Piplup\",\n types: [\"Water\"],\n baseStats: { hp: 53, attack: 51, defense: 53, speed: 40, special: 61 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 394,\n name: \"Prinplup\",\n types: [\"Water\"],\n baseStats: { hp: 64, attack: 66, defense: 68, speed: 50, special: 81 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 395,\n name: \"Empoleon\",\n types: [\"Water\", \"Steel\"],\n baseStats: { hp: 84, attack: 86, defense: 88, speed: 60, special: 111 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 396,\n name: \"Starly\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 55, defense: 30, speed: 60, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 397,\n name: \"Staravia\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 55, attack: 75, defense: 50, speed: 80, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 398,\n name: \"Staraptor\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 85, attack: 120, defense: 70, speed: 100, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 399,\n name: \"Bidoof\",\n types: [\"Normal\"],\n baseStats: { hp: 59, attack: 45, defense: 40, speed: 31, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 207,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 400,\n name: \"Bibarel\",\n types: [\"Normal\", \"Water\"],\n baseStats: { hp: 79, attack: 85, defense: 60, speed: 71, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 207,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 401,\n name: \"Kricketot\",\n types: [\"Bug\"],\n baseStats: { hp: 37, attack: 25, defense: 41, speed: 25, special: 41 },\n expGroup: \"medium_slow\",\n evolutionChainId: 208,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 402,\n name: \"Kricketune\",\n types: [\"Bug\"],\n baseStats: { hp: 77, attack: 85, defense: 51, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 208,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 403,\n name: \"Shinx\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 65, defense: 34, speed: 45, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 404,\n name: \"Luxio\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 85, defense: 49, speed: 60, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 405,\n name: \"Luxray\",\n types: [\"Electric\"],\n baseStats: { hp: 80, attack: 120, defense: 79, speed: 70, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 406,\n name: \"Budew\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 40, attack: 30, defense: 35, speed: 55, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 407,\n name: \"Roserade\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 70, defense: 65, speed: 90, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 408,\n name: \"Cranidos\",\n types: [\"Rock\"],\n baseStats: { hp: 67, attack: 125, defense: 40, speed: 58, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 211,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 409,\n name: \"Rampardos\",\n types: [\"Rock\"],\n baseStats: { hp: 97, attack: 165, defense: 60, speed: 58, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 211,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 410,\n name: \"Shieldon\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 30, attack: 42, defense: 118, speed: 30, special: 88 },\n expGroup: \"fast\",\n evolutionChainId: 212,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 411,\n name: \"Bastiodon\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 60, attack: 52, defense: 168, speed: 30, special: 138 },\n expGroup: \"fast\",\n evolutionChainId: 212,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 412,\n name: \"Burmy\",\n types: [\"Bug\"],\n baseStats: { hp: 40, attack: 29, defense: 45, speed: 36, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 413,\n name: \"Wormadam-Plant\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 60, attack: 59, defense: 85, speed: 36, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 414,\n name: \"Mothim\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 94, defense: 50, speed: 66, special: 94 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 415,\n name: \"Combee\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 30, attack: 30, defense: 42, speed: 70, special: 42 },\n expGroup: \"medium_slow\",\n evolutionChainId: 214,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 416,\n name: \"Vespiquen\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 80, defense: 102, speed: 40, special: 102 },\n expGroup: \"medium_slow\",\n evolutionChainId: 214,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 417,\n name: \"Pachirisu\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 45, defense: 70, speed: 95, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 215,\n rarity: \"common\",\n catchRate: 200,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 418,\n name: \"Buizel\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 65, defense: 35, speed: 85, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 216,\n rarity: \"common\",\n catchRate: 190,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 419,\n name: \"Floatzel\",\n types: [\"Water\"],\n baseStats: { hp: 85, attack: 105, defense: 55, speed: 115, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 216,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 420,\n name: \"Cherubi\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 35, defense: 45, speed: 35, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 217,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 421,\n name: \"Cherrim\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 60, defense: 70, speed: 85, special: 87 },\n expGroup: \"medium_fast\",\n evolutionChainId: 217,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 422,\n name: \"Shellos\",\n types: [\"Water\"],\n baseStats: { hp: 76, attack: 48, defense: 48, speed: 34, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 218,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 423,\n name: \"Gastrodon\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 111, attack: 83, defense: 68, speed: 39, special: 92 },\n expGroup: \"medium_fast\",\n evolutionChainId: 218,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 424,\n name: \"Ambipom\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 100, defense: 66, speed: 115, special: 66 },\n expGroup: \"fast\",\n evolutionChainId: 93,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 425,\n name: \"Drifloon\",\n types: [\"Ghost\", \"Flying\"],\n baseStats: { hp: 90, attack: 50, defense: 34, speed: 70, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 219,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 426,\n name: \"Drifblim\",\n types: [\"Ghost\", \"Flying\"],\n baseStats: { hp: 150, attack: 80, defense: 44, speed: 80, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 219,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 427,\n name: \"Buneary\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 66, defense: 44, speed: 85, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 220,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 428,\n name: \"Lopunny\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 76, defense: 84, speed: 105, special: 96 },\n expGroup: \"medium_fast\",\n evolutionChainId: 220,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 429,\n name: \"Mismagius\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 105, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 98,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 430,\n name: \"Honchkrow\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 100, attack: 125, defense: 52, speed: 71, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 97,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 431,\n name: \"Glameow\",\n types: [\"Normal\"],\n baseStats: { hp: 49, attack: 55, defense: 42, speed: 85, special: 42 },\n expGroup: \"fast\",\n evolutionChainId: 221,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 432,\n name: \"Purugly\",\n types: [\"Normal\"],\n baseStats: { hp: 71, attack: 82, defense: 64, speed: 112, special: 64 },\n expGroup: \"fast\",\n evolutionChainId: 221,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 433,\n name: \"Chingling\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 50, speed: 45, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 184,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 434,\n name: \"Stunky\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 63, attack: 63, defense: 47, speed: 74, special: 41 },\n expGroup: \"medium_fast\",\n evolutionChainId: 223,\n rarity: \"common\",\n catchRate: 225,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 435,\n name: \"Skuntank\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 103, attack: 93, defense: 67, speed: 84, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 223,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 436,\n name: \"Bronzor\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 57, attack: 24, defense: 86, speed: 23, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 224,\n rarity: \"common\",\n catchRate: 255,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 437,\n name: \"Bronzong\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 67, attack: 89, defense: 116, speed: 33, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 224,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 438,\n name: \"Bonsly\",\n types: [\"Rock\"],\n baseStats: { hp: 50, attack: 80, defense: 95, speed: 10, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 91,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 439,\n name: \"Mime Jr.\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 20, attack: 25, defense: 45, speed: 60, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"uncommon\",\n catchRate: 145,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 440,\n name: \"Happiny\",\n types: [\"Normal\"],\n baseStats: { hp: 100, attack: 5, defense: 5, speed: 30, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"uncommon\",\n catchRate: 130,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 441,\n name: \"Chatot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 76, attack: 65, defense: 45, speed: 91, special: 92 },\n expGroup: \"medium_slow\",\n evolutionChainId: 228,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 442,\n name: \"Spiritomb\",\n types: [\"Ghost\", \"Dark\"],\n baseStats: { hp: 50, attack: 92, defense: 108, speed: 35, special: 108 },\n expGroup: \"medium_fast\",\n evolutionChainId: 229,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 443,\n name: \"Gible\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 58, attack: 70, defense: 45, speed: 42, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 444,\n name: \"Gabite\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 68, attack: 90, defense: 65, speed: 82, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 445,\n name: \"Garchomp\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 108, attack: 130, defense: 95, speed: 102, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 446,\n name: \"Munchlax\",\n types: [\"Normal\"],\n baseStats: { hp: 135, attack: 85, defense: 40, speed: 5, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 72,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 447,\n name: \"Riolu\",\n types: [\"Fighting\"],\n baseStats: { hp: 40, attack: 70, defense: 40, speed: 60, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 232,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 448,\n name: \"Lucario\",\n types: [\"Fighting\", \"Steel\"],\n baseStats: { hp: 70, attack: 110, defense: 70, speed: 90, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 232,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 449,\n name: \"Hippopotas\",\n types: [\"Ground\"],\n baseStats: { hp: 68, attack: 72, defense: 78, speed: 32, special: 42 },\n expGroup: \"slow\",\n evolutionChainId: 233,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 450,\n name: \"Hippowdon\",\n types: [\"Ground\"],\n baseStats: { hp: 108, attack: 112, defense: 118, speed: 47, special: 72 },\n expGroup: \"slow\",\n evolutionChainId: 233,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 451,\n name: \"Skorupi\",\n types: [\"Poison\", \"Bug\"],\n baseStats: { hp: 40, attack: 50, defense: 90, speed: 65, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 234,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 452,\n name: \"Drapion\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 110, speed: 95, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 234,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 453,\n name: \"Croagunk\",\n types: [\"Poison\", \"Fighting\"],\n baseStats: { hp: 48, attack: 61, defense: 40, speed: 50, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 235,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 454,\n name: \"Toxicroak\",\n types: [\"Poison\", \"Fighting\"],\n baseStats: { hp: 83, attack: 106, defense: 65, speed: 85, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 235,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 455,\n name: \"Carnivine\",\n types: [\"Grass\"],\n baseStats: { hp: 74, attack: 100, defense: 72, speed: 46, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 236,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 456,\n name: \"Finneon\",\n types: [\"Water\"],\n baseStats: { hp: 49, attack: 49, defense: 56, speed: 66, special: 61 },\n expGroup: \"fast\",\n evolutionChainId: 237,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 457,\n name: \"Lumineon\",\n types: [\"Water\"],\n baseStats: { hp: 69, attack: 69, defense: 76, speed: 91, special: 86 },\n expGroup: \"fast\",\n evolutionChainId: 237,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 458,\n name: \"Mantyke\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 45, attack: 20, defense: 50, speed: 50, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 116,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 459,\n name: \"Snover\",\n types: [\"Grass\", \"Ice\"],\n baseStats: { hp: 60, attack: 62, defense: 50, speed: 40, special: 62 },\n expGroup: \"slow\",\n evolutionChainId: 239,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 460,\n name: \"Abomasnow\",\n types: [\"Grass\", \"Ice\"],\n baseStats: { hp: 90, attack: 92, defense: 75, speed: 60, special: 92 },\n expGroup: \"slow\",\n evolutionChainId: 239,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 461,\n name: \"Weavile\",\n types: [\"Dark\", \"Ice\"],\n baseStats: { hp: 70, attack: 120, defense: 65, speed: 125, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 462,\n name: \"Magnezone\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 70, attack: 70, defense: 115, speed: 60, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 463,\n name: \"Lickilicky\",\n types: [\"Normal\"],\n baseStats: { hp: 110, attack: 85, defense: 95, speed: 50, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 48,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 464,\n name: \"Rhyperior\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 115, attack: 140, defense: 130, speed: 40, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 465,\n name: \"Tangrowth\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 125, speed: 50, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 52,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 466,\n name: \"Electivire\",\n types: [\"Electric\"],\n baseStats: { hp: 75, attack: 123, defense: 67, speed: 95, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 467,\n name: \"Magmortar\",\n types: [\"Fire\"],\n baseStats: { hp: 75, attack: 95, defense: 67, speed: 83, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 468,\n name: \"Togekiss\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 85, attack: 50, defense: 95, speed: 80, special: 120 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 469,\n name: \"Yanmega\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 86, attack: 76, defense: 86, speed: 95, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 95,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 470,\n name: \"Leafeon\",\n types: [\"Grass\"],\n baseStats: { hp: 65, attack: 110, defense: 130, speed: 95, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 471,\n name: \"Glaceon\",\n types: [\"Ice\"],\n baseStats: { hp: 65, attack: 60, defense: 110, speed: 65, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 472,\n name: \"Gliscor\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 75, attack: 95, defense: 125, speed: 95, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 104,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 473,\n name: \"Mamoswine\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 110, attack: 130, defense: 80, speed: 80, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 474,\n name: \"Porygon-Z\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 80, defense: 70, speed: 90, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 30,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 475,\n name: \"Gallade\",\n types: [\"Psychic\", \"Fighting\"],\n baseStats: { hp: 68, attack: 125, defense: 65, speed: 80, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 476,\n name: \"Probopass\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 60, attack: 55, defense: 145, speed: 40, special: 150 },\n expGroup: \"medium_fast\",\n evolutionChainId: 147,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 477,\n name: \"Dusknoir\",\n types: [\"Ghost\"],\n baseStats: { hp: 45, attack: 100, defense: 135, speed: 45, special: 135 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 478,\n name: \"Froslass\",\n types: [\"Ice\", \"Ghost\"],\n baseStats: { hp: 70, attack: 80, defense: 70, speed: 110, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 479,\n name: \"Rotom\",\n types: [\"Electric\", \"Ghost\"],\n baseStats: { hp: 50, attack: 50, defense: 77, speed: 91, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 240,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 480,\n name: \"Uxie\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 75, defense: 130, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 241,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 481,\n name: \"Mesprit\",\n types: [\"Psychic\"],\n baseStats: { hp: 80, attack: 105, defense: 105, speed: 80, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 242,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 482,\n name: \"Azelf\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 125, defense: 70, speed: 115, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 243,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 483,\n name: \"Dialga\",\n types: [\"Steel\", \"Dragon\"],\n baseStats: { hp: 100, attack: 120, defense: 120, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 244,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 484,\n name: \"Palkia\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 90, attack: 120, defense: 100, speed: 100, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 245,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 485,\n name: \"Heatran\",\n types: [\"Fire\", \"Steel\"],\n baseStats: { hp: 91, attack: 90, defense: 106, speed: 77, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 246,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 486,\n name: \"Regigigas\",\n types: [\"Normal\"],\n baseStats: { hp: 110, attack: 160, defense: 110, speed: 100, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 247,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 487,\n name: \"Giratina-Altered\",\n types: [\"Ghost\", \"Dragon\"],\n baseStats: { hp: 150, attack: 100, defense: 120, speed: 90, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 248,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 488,\n name: \"Cresselia\",\n types: [\"Psychic\"],\n baseStats: { hp: 120, attack: 70, defense: 110, speed: 85, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 249,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 489,\n name: \"Phione\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 250,\n rarity: \"mythical\",\n catchRate: 30,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 490,\n name: \"Manaphy\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 250,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 491,\n name: \"Darkrai\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 90, speed: 125, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 252,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 492,\n name: \"Shaymin-Land\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 253,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 493,\n name: \"Arceus\",\n types: [\"Normal\"],\n baseStats: { hp: 120, attack: 120, defense: 120, speed: 120, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 254,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"A reliable teammate in any codebase.\",\n },\n\n // \u2500\u2500 Gen 5 \u2014 Unova (#494\u2013#649) \u2500\u2500\n {\n id: 494,\n name: \"Victini\",\n types: [\"Psychic\", \"Fire\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 255,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 495,\n name: \"Snivy\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 45, defense: 55, speed: 63, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 496,\n name: \"Servine\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 60, defense: 75, speed: 83, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 497,\n name: \"Serperior\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 75, defense: 95, speed: 113, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 498,\n name: \"Tepig\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 63, defense: 45, speed: 45, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 499,\n name: \"Pignite\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 90, attack: 93, defense: 55, speed: 55, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 500,\n name: \"Emboar\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 110, attack: 123, defense: 65, speed: 65, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 501,\n name: \"Oshawott\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 55, defense: 45, speed: 45, special: 63 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 502,\n name: \"Dewott\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 75, defense: 60, speed: 60, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 503,\n name: \"Samurott\",\n types: [\"Water\"],\n baseStats: { hp: 95, attack: 100, defense: 85, speed: 70, special: 108 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 504,\n name: \"Patrat\",\n types: [\"Normal\"],\n baseStats: { hp: 45, attack: 55, defense: 39, speed: 42, special: 39 },\n expGroup: \"medium_fast\",\n evolutionChainId: 259,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 505,\n name: \"Watchog\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 85, defense: 69, speed: 77, special: 69 },\n expGroup: \"medium_fast\",\n evolutionChainId: 259,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 506,\n name: \"Lillipup\",\n types: [\"Normal\"],\n baseStats: { hp: 45, attack: 60, defense: 45, speed: 55, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 507,\n name: \"Herdier\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 80, defense: 65, speed: 60, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 508,\n name: \"Stoutland\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 110, defense: 90, speed: 80, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 509,\n name: \"Purrloin\",\n types: [\"Dark\"],\n baseStats: { hp: 41, attack: 50, defense: 37, speed: 66, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 261,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 510,\n name: \"Liepard\",\n types: [\"Dark\"],\n baseStats: { hp: 64, attack: 88, defense: 50, speed: 106, special: 88 },\n expGroup: \"medium_fast\",\n evolutionChainId: 261,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code works in ways few can understand.\",\n },\n {\n id: 511,\n name: \"Pansage\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 262,\n rarity: \"common\",\n catchRate: 190,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 512,\n name: \"Simisage\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 262,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 513,\n name: \"Pansear\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 263,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 514,\n name: \"Simisear\",\n types: [\"Fire\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 263,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 515,\n name: \"Panpour\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 264,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 516,\n name: \"Simipour\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 264,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 517,\n name: \"Munna\",\n types: [\"Psychic\"],\n baseStats: { hp: 76, attack: 25, defense: 45, speed: 24, special: 67 },\n expGroup: \"fast\",\n evolutionChainId: 265,\n rarity: \"common\",\n catchRate: 190,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 518,\n name: \"Musharna\",\n types: [\"Psychic\"],\n baseStats: { hp: 116, attack: 55, defense: 85, speed: 29, special: 107 },\n expGroup: \"fast\",\n evolutionChainId: 265,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 519,\n name: \"Pidove\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 50, attack: 55, defense: 50, speed: 43, special: 36 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 520,\n name: \"Tranquill\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 62, attack: 77, defense: 62, speed: 65, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 521,\n name: \"Unfezant\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 80, attack: 115, defense: 80, speed: 93, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 522,\n name: \"Blitzle\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 60, defense: 32, speed: 76, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 267,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 523,\n name: \"Zebstrika\",\n types: [\"Electric\"],\n baseStats: { hp: 75, attack: 100, defense: 63, speed: 116, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 267,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 524,\n name: \"Roggenrola\",\n types: [\"Rock\"],\n baseStats: { hp: 55, attack: 75, defense: 85, speed: 15, special: 25 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 525,\n name: \"Boldore\",\n types: [\"Rock\"],\n baseStats: { hp: 70, attack: 105, defense: 105, speed: 20, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 526,\n name: \"Gigalith\",\n types: [\"Rock\"],\n baseStats: { hp: 85, attack: 135, defense: 130, speed: 25, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 527,\n name: \"Woobat\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 65, attack: 45, defense: 43, speed: 72, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 269,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 528,\n name: \"Swoobat\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 67, attack: 57, defense: 55, speed: 114, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 269,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 529,\n name: \"Drilbur\",\n types: [\"Ground\"],\n baseStats: { hp: 60, attack: 85, defense: 40, speed: 68, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 270,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 530,\n name: \"Excadrill\",\n types: [\"Ground\", \"Steel\"],\n baseStats: { hp: 110, attack: 135, defense: 60, speed: 88, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 270,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 531,\n name: \"Audino\",\n types: [\"Normal\"],\n baseStats: { hp: 103, attack: 60, defense: 86, speed: 50, special: 86 },\n expGroup: \"fast\",\n evolutionChainId: 271,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 532,\n name: \"Timburr\",\n types: [\"Fighting\"],\n baseStats: { hp: 75, attack: 80, defense: 55, speed: 35, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"common\",\n catchRate: 180,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 533,\n name: \"Gurdurr\",\n types: [\"Fighting\"],\n baseStats: { hp: 85, attack: 105, defense: 85, speed: 40, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 534,\n name: \"Conkeldurr\",\n types: [\"Fighting\"],\n baseStats: { hp: 105, attack: 140, defense: 95, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 535,\n name: \"Tympole\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 50, defense: 40, speed: 64, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 536,\n name: \"Palpitoad\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 75, attack: 65, defense: 55, speed: 69, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 537,\n name: \"Seismitoad\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 105, attack: 95, defense: 75, speed: 74, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 538,\n name: \"Throh\",\n types: [\"Fighting\"],\n baseStats: { hp: 120, attack: 100, defense: 85, speed: 45, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 274,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 539,\n name: \"Sawk\",\n types: [\"Fighting\"],\n baseStats: { hp: 75, attack: 125, defense: 75, speed: 85, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 275,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 540,\n name: \"Sewaddle\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 45, attack: 53, defense: 70, speed: 42, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 541,\n name: \"Swadloon\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 55, attack: 63, defense: 90, speed: 42, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 542,\n name: \"Leavanny\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 75, attack: 103, defense: 80, speed: 92, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 543,\n name: \"Venipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 30, attack: 45, defense: 59, speed: 57, special: 39 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"common\",\n catchRate: 255,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 544,\n name: \"Whirlipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 55, defense: 99, speed: 47, special: 79 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 545,\n name: \"Scolipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 100, defense: 89, speed: 112, special: 69 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 546,\n name: \"Cottonee\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 40, attack: 27, defense: 60, speed: 66, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 278,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 547,\n name: \"Whimsicott\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 60, attack: 67, defense: 85, speed: 116, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 278,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 548,\n name: \"Petilil\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 35, defense: 50, speed: 30, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 279,\n rarity: \"common\",\n catchRate: 190,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 549,\n name: \"Lilligant\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 60, defense: 75, speed: 90, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 279,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 550,\n name: \"Basculin-Red-Striped\",\n types: [\"Water\"],\n baseStats: { hp: 70, attack: 92, defense: 65, speed: 98, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 280,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 551,\n name: \"Sandile\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 50, attack: 72, defense: 35, speed: 65, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"common\",\n catchRate: 180,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 552,\n name: \"Krokorok\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 60, attack: 82, defense: 45, speed: 74, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 553,\n name: \"Krookodile\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 95, attack: 117, defense: 80, speed: 92, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 554,\n name: \"Darumaka\",\n types: [\"Fire\"],\n baseStats: { hp: 70, attack: 90, defense: 45, speed: 50, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 282,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 555,\n name: \"Darmanitan-Standard\",\n types: [\"Fire\"],\n baseStats: { hp: 105, attack: 140, defense: 55, speed: 95, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 282,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 556,\n name: \"Maractus\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 86, defense: 67, speed: 60, special: 106 },\n expGroup: \"medium_fast\",\n evolutionChainId: 283,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 557,\n name: \"Dwebble\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 50, attack: 65, defense: 85, speed: 55, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 284,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 558,\n name: \"Crustle\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 70, attack: 105, defense: 125, speed: 45, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 284,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 559,\n name: \"Scraggy\",\n types: [\"Dark\", \"Fighting\"],\n baseStats: { hp: 50, attack: 75, defense: 70, speed: 48, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 285,\n rarity: \"common\",\n catchRate: 180,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 560,\n name: \"Scrafty\",\n types: [\"Dark\", \"Fighting\"],\n baseStats: { hp: 65, attack: 90, defense: 115, speed: 58, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 285,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 561,\n name: \"Sigilyph\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 72, attack: 58, defense: 80, speed: 97, special: 103 },\n expGroup: \"medium_fast\",\n evolutionChainId: 286,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 562,\n name: \"Yamask\",\n types: [\"Ghost\"],\n baseStats: { hp: 38, attack: 30, defense: 85, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 563,\n name: \"Cofagrigus\",\n types: [\"Ghost\"],\n baseStats: { hp: 58, attack: 50, defense: 145, speed: 30, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 564,\n name: \"Tirtouga\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 54, attack: 78, defense: 103, speed: 22, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 288,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 565,\n name: \"Carracosta\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 74, attack: 108, defense: 133, speed: 32, special: 83 },\n expGroup: \"medium_fast\",\n evolutionChainId: 288,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 566,\n name: \"Archen\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 55, attack: 112, defense: 45, speed: 70, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 289,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 567,\n name: \"Archeops\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 75, attack: 140, defense: 65, speed: 110, special: 112 },\n expGroup: \"medium_fast\",\n evolutionChainId: 289,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 568,\n name: \"Trubbish\",\n types: [\"Poison\"],\n baseStats: { hp: 50, attack: 50, defense: 62, speed: 65, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 290,\n rarity: \"common\",\n catchRate: 190,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 569,\n name: \"Garbodor\",\n types: [\"Poison\"],\n baseStats: { hp: 80, attack: 95, defense: 82, speed: 75, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 290,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 570,\n name: \"Zorua\",\n types: [\"Dark\"],\n baseStats: { hp: 40, attack: 65, defense: 40, speed: 65, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 291,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 571,\n name: \"Zoroark\",\n types: [\"Dark\"],\n baseStats: { hp: 60, attack: 105, defense: 60, speed: 105, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 291,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 572,\n name: \"Minccino\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 50, defense: 40, speed: 75, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 292,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 573,\n name: \"Cinccino\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 95, defense: 60, speed: 115, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 292,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 574,\n name: \"Gothita\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 50, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"common\",\n catchRate: 200,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 575,\n name: \"Gothorita\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 45, defense: 70, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 576,\n name: \"Gothitelle\",\n types: [\"Psychic\"],\n baseStats: { hp: 70, attack: 55, defense: 95, speed: 65, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 577,\n name: \"Solosis\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 40, speed: 20, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"common\",\n catchRate: 200,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 578,\n name: \"Duosion\",\n types: [\"Psychic\"],\n baseStats: { hp: 65, attack: 40, defense: 50, speed: 30, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 579,\n name: \"Reuniclus\",\n types: [\"Psychic\"],\n baseStats: { hp: 110, attack: 65, defense: 75, speed: 30, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 580,\n name: \"Ducklett\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 62, attack: 44, defense: 50, speed: 55, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 295,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 581,\n name: \"Swanna\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 75, attack: 87, defense: 63, speed: 98, special: 87 },\n expGroup: \"medium_fast\",\n evolutionChainId: 295,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 582,\n name: \"Vanillite\",\n types: [\"Ice\"],\n baseStats: { hp: 36, attack: 50, defense: 50, speed: 44, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 583,\n name: \"Vanillish\",\n types: [\"Ice\"],\n baseStats: { hp: 51, attack: 65, defense: 65, speed: 59, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 584,\n name: \"Vanilluxe\",\n types: [\"Ice\"],\n baseStats: { hp: 71, attack: 95, defense: 85, speed: 79, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 585,\n name: \"Deerling\",\n types: [\"Normal\", \"Grass\"],\n baseStats: { hp: 60, attack: 60, defense: 50, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 297,\n rarity: \"common\",\n catchRate: 190,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 586,\n name: \"Sawsbuck\",\n types: [\"Normal\", \"Grass\"],\n baseStats: { hp: 80, attack: 100, defense: 70, speed: 95, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 297,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 587,\n name: \"Emolga\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 55, attack: 75, defense: 60, speed: 103, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 298,\n rarity: \"common\",\n catchRate: 200,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 588,\n name: \"Karrablast\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 75, defense: 45, speed: 60, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 299,\n rarity: \"common\",\n catchRate: 200,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 589,\n name: \"Escavalier\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 70, attack: 135, defense: 105, speed: 20, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 299,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 590,\n name: \"Foongus\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 69, attack: 55, defense: 45, speed: 15, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 300,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 591,\n name: \"Amoonguss\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 114, attack: 85, defense: 70, speed: 30, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 300,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 592,\n name: \"Frillish-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 55, attack: 40, defense: 50, speed: 40, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 301,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 593,\n name: \"Jellicent-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 100, attack: 60, defense: 70, speed: 60, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 301,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 594,\n name: \"Alomomola\",\n types: [\"Water\"],\n baseStats: { hp: 165, attack: 75, defense: 80, speed: 65, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 302,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 595,\n name: \"Joltik\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 50, attack: 47, defense: 50, speed: 65, special: 57 },\n expGroup: \"medium_fast\",\n evolutionChainId: 303,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 596,\n name: \"Galvantula\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 70, attack: 77, defense: 60, speed: 108, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 303,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 597,\n name: \"Ferroseed\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 44, attack: 50, defense: 91, speed: 10, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 304,\n rarity: \"common\",\n catchRate: 255,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 598,\n name: \"Ferrothorn\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 74, attack: 94, defense: 131, speed: 20, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 304,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 599,\n name: \"Klink\",\n types: [\"Steel\"],\n baseStats: { hp: 40, attack: 55, defense: 70, speed: 30, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"uncommon\",\n catchRate: 130,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 600,\n name: \"Klang\",\n types: [\"Steel\"],\n baseStats: { hp: 60, attack: 80, defense: 95, speed: 50, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 601,\n name: \"Klinklang\",\n types: [\"Steel\"],\n baseStats: { hp: 60, attack: 100, defense: 115, speed: 90, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 602,\n name: \"Tynamo\",\n types: [\"Electric\"],\n baseStats: { hp: 35, attack: 55, defense: 40, speed: 60, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 603,\n name: \"Eelektrik\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 85, defense: 70, speed: 40, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 604,\n name: \"Eelektross\",\n types: [\"Electric\"],\n baseStats: { hp: 85, attack: 115, defense: 80, speed: 50, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 605,\n name: \"Elgyem\",\n types: [\"Psychic\"],\n baseStats: { hp: 55, attack: 55, defense: 55, speed: 30, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 307,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 606,\n name: \"Beheeyem\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 75, defense: 75, speed: 40, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 307,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 607,\n name: \"Litwick\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 50, attack: 30, defense: 55, speed: 20, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"common\",\n catchRate: 190,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 608,\n name: \"Lampent\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 60, attack: 40, defense: 60, speed: 55, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 609,\n name: \"Chandelure\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 60, attack: 55, defense: 90, speed: 80, special: 145 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 610,\n name: \"Axew\",\n types: [\"Dragon\"],\n baseStats: { hp: 46, attack: 87, defense: 60, speed: 57, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 611,\n name: \"Fraxure\",\n types: [\"Dragon\"],\n baseStats: { hp: 66, attack: 117, defense: 70, speed: 67, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 612,\n name: \"Haxorus\",\n types: [\"Dragon\"],\n baseStats: { hp: 76, attack: 147, defense: 90, speed: 97, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 613,\n name: \"Cubchoo\",\n types: [\"Ice\"],\n baseStats: { hp: 55, attack: 70, defense: 40, speed: 40, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 310,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 614,\n name: \"Beartic\",\n types: [\"Ice\"],\n baseStats: { hp: 95, attack: 130, defense: 80, speed: 50, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 310,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 615,\n name: \"Cryogonal\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 50, defense: 50, speed: 105, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 311,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 616,\n name: \"Shelmet\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 40, defense: 85, speed: 25, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 312,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 617,\n name: \"Accelgor\",\n types: [\"Bug\"],\n baseStats: { hp: 80, attack: 70, defense: 40, speed: 145, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 312,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 618,\n name: \"Stunfisk\",\n types: [\"Ground\", \"Electric\"],\n baseStats: { hp: 109, attack: 66, defense: 84, speed: 32, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 313,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 619,\n name: \"Mienfoo\",\n types: [\"Fighting\"],\n baseStats: { hp: 45, attack: 85, defense: 50, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 314,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 620,\n name: \"Mienshao\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 125, defense: 60, speed: 105, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 314,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 621,\n name: \"Druddigon\",\n types: [\"Dragon\"],\n baseStats: { hp: 77, attack: 120, defense: 90, speed: 48, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 315,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 622,\n name: \"Golett\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 59, attack: 74, defense: 50, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 316,\n rarity: \"common\",\n catchRate: 190,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 623,\n name: \"Golurk\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 89, attack: 124, defense: 80, speed: 55, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 316,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 624,\n name: \"Pawniard\",\n types: [\"Dark\", \"Steel\"],\n baseStats: { hp: 45, attack: 85, defense: 70, speed: 60, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 317,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 625,\n name: \"Bisharp\",\n types: [\"Dark\", \"Steel\"],\n baseStats: { hp: 65, attack: 125, defense: 100, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 317,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 626,\n name: \"Bouffalant\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 110, defense: 95, speed: 55, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 318,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 627,\n name: \"Rufflet\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 70, attack: 83, defense: 50, speed: 60, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 319,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 628,\n name: \"Braviary\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 100, attack: 123, defense: 75, speed: 80, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 319,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 629,\n name: \"Vullaby\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 70, attack: 55, defense: 75, speed: 60, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 320,\n rarity: \"common\",\n catchRate: 190,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 630,\n name: \"Mandibuzz\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 110, attack: 65, defense: 105, speed: 80, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 320,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 631,\n name: \"Heatmor\",\n types: [\"Fire\"],\n baseStats: { hp: 85, attack: 97, defense: 66, speed: 65, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 321,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 632,\n name: \"Durant\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 58, attack: 109, defense: 112, speed: 109, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 322,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 633,\n name: \"Deino\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 52, attack: 65, defense: 50, speed: 38, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 634,\n name: \"Zweilous\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 72, attack: 85, defense: 70, speed: 58, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 635,\n name: \"Hydreigon\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 92, attack: 105, defense: 90, speed: 98, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 636,\n name: \"Larvesta\",\n types: [\"Bug\", \"Fire\"],\n baseStats: { hp: 55, attack: 85, defense: 55, speed: 60, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 324,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 637,\n name: \"Volcarona\",\n types: [\"Bug\", \"Fire\"],\n baseStats: { hp: 85, attack: 60, defense: 65, speed: 100, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 324,\n rarity: \"rare\",\n catchRate: 15,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 638,\n name: \"Cobalion\",\n types: [\"Steel\", \"Fighting\"],\n baseStats: { hp: 91, attack: 90, defense: 129, speed: 108, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 325,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 639,\n name: \"Terrakion\",\n types: [\"Rock\", \"Fighting\"],\n baseStats: { hp: 91, attack: 129, defense: 90, speed: 108, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 326,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 640,\n name: \"Virizion\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 91, attack: 90, defense: 72, speed: 108, special: 129 },\n expGroup: \"slow\",\n evolutionChainId: 327,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 641,\n name: \"Tornadus-Incarnate\",\n types: [\"Flying\"],\n baseStats: { hp: 79, attack: 115, defense: 70, speed: 111, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 328,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 642,\n name: \"Thundurus-Incarnate\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 79, attack: 115, defense: 70, speed: 111, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 329,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 643,\n name: \"Reshiram\",\n types: [\"Dragon\", \"Fire\"],\n baseStats: { hp: 100, attack: 120, defense: 100, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 330,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 644,\n name: \"Zekrom\",\n types: [\"Dragon\", \"Electric\"],\n baseStats: { hp: 100, attack: 150, defense: 120, speed: 90, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 331,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 645,\n name: \"Landorus-Incarnate\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 89, attack: 125, defense: 90, speed: 101, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 332,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 646,\n name: \"Kyurem\",\n types: [\"Dragon\", \"Ice\"],\n baseStats: { hp: 125, attack: 130, defense: 90, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 333,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 647,\n name: \"Keldeo-Ordinary\",\n types: [\"Water\", \"Fighting\"],\n baseStats: { hp: 91, attack: 72, defense: 90, speed: 108, special: 129 },\n expGroup: \"slow\",\n evolutionChainId: 334,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 648,\n name: \"Meloetta-Aria\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 100, attack: 77, defense: 77, speed: 90, special: 128 },\n expGroup: \"slow\",\n evolutionChainId: 335,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 649,\n name: \"Genesect\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 71, attack: 120, defense: 95, speed: 99, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 336,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Crawls through every edge case methodically.\",\n },\n\n // \u2500\u2500 Gen 6 \u2014 Kalos (#650\u2013#721) \u2500\u2500\n {\n id: 650,\n name: \"Chespin\",\n types: [\"Grass\"],\n baseStats: { hp: 56, attack: 61, defense: 65, speed: 38, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 651,\n name: \"Quilladin\",\n types: [\"Grass\"],\n baseStats: { hp: 61, attack: 78, defense: 95, speed: 57, special: 58 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 652,\n name: \"Chesnaught\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 88, attack: 107, defense: 122, speed: 64, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 653,\n name: \"Fennekin\",\n types: [\"Fire\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 60, special: 62 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 654,\n name: \"Braixen\",\n types: [\"Fire\"],\n baseStats: { hp: 59, attack: 59, defense: 58, speed: 73, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 655,\n name: \"Delphox\",\n types: [\"Fire\", \"Psychic\"],\n baseStats: { hp: 75, attack: 69, defense: 72, speed: 104, special: 114 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 656,\n name: \"Froakie\",\n types: [\"Water\"],\n baseStats: { hp: 41, attack: 56, defense: 40, speed: 71, special: 62 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 657,\n name: \"Frogadier\",\n types: [\"Water\"],\n baseStats: { hp: 54, attack: 63, defense: 52, speed: 97, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 658,\n name: \"Greninja\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 72, attack: 95, defense: 67, speed: 122, special: 103 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 659,\n name: \"Bunnelby\",\n types: [\"Normal\"],\n baseStats: { hp: 38, attack: 36, defense: 38, speed: 57, special: 36 },\n expGroup: \"medium_fast\",\n evolutionChainId: 340,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 660,\n name: \"Diggersby\",\n types: [\"Normal\", \"Ground\"],\n baseStats: { hp: 85, attack: 56, defense: 77, speed: 78, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 340,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 661,\n name: \"Fletchling\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 45, attack: 50, defense: 43, speed: 62, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 662,\n name: \"Fletchinder\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 62, attack: 73, defense: 55, speed: 84, special: 56 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 663,\n name: \"Talonflame\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 78, attack: 81, defense: 71, speed: 126, special: 74 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 664,\n name: \"Scatterbug\",\n types: [\"Bug\"],\n baseStats: { hp: 38, attack: 35, defense: 40, speed: 35, special: 27 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 665,\n name: \"Spewpa\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 22, defense: 60, speed: 29, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 666,\n name: \"Vivillon\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 80, attack: 52, defense: 50, speed: 89, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 667,\n name: \"Litleo\",\n types: [\"Fire\", \"Normal\"],\n baseStats: { hp: 62, attack: 50, defense: 58, speed: 72, special: 73 },\n expGroup: \"medium_slow\",\n evolutionChainId: 343,\n rarity: \"common\",\n catchRate: 220,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 668,\n name: \"Pyroar-Male\",\n types: [\"Fire\", \"Normal\"],\n baseStats: { hp: 86, attack: 68, defense: 72, speed: 106, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 343,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 669,\n name: \"Flabebe\",\n types: [\"Fairy\"],\n baseStats: { hp: 44, attack: 38, defense: 39, speed: 42, special: 79 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"common\",\n catchRate: 225,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 670,\n name: \"Floette\",\n types: [\"Fairy\"],\n baseStats: { hp: 54, attack: 45, defense: 47, speed: 52, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 671,\n name: \"Florges\",\n types: [\"Fairy\"],\n baseStats: { hp: 78, attack: 65, defense: 68, speed: 75, special: 154 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 672,\n name: \"Skiddo\",\n types: [\"Grass\"],\n baseStats: { hp: 66, attack: 65, defense: 48, speed: 52, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 345,\n rarity: \"common\",\n catchRate: 200,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 673,\n name: \"Gogoat\",\n types: [\"Grass\"],\n baseStats: { hp: 123, attack: 100, defense: 62, speed: 68, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 345,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 674,\n name: \"Pancham\",\n types: [\"Fighting\"],\n baseStats: { hp: 67, attack: 82, defense: 62, speed: 43, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 346,\n rarity: \"common\",\n catchRate: 220,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 675,\n name: \"Pangoro\",\n types: [\"Fighting\", \"Dark\"],\n baseStats: { hp: 95, attack: 124, defense: 78, speed: 58, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 346,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 676,\n name: \"Furfrou\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 80, defense: 60, speed: 102, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 347,\n rarity: \"common\",\n catchRate: 160,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 677,\n name: \"Espurr\",\n types: [\"Psychic\"],\n baseStats: { hp: 62, attack: 48, defense: 54, speed: 68, special: 63 },\n expGroup: \"medium_fast\",\n evolutionChainId: 348,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 678,\n name: \"Meowstic-Male\",\n types: [\"Psychic\"],\n baseStats: { hp: 74, attack: 48, defense: 76, speed: 104, special: 83 },\n expGroup: \"medium_fast\",\n evolutionChainId: 348,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 679,\n name: \"Honedge\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 45, attack: 80, defense: 100, speed: 28, special: 37 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 680,\n name: \"Doublade\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 59, attack: 110, defense: 150, speed: 35, special: 49 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 681,\n name: \"Aegislash-Shield\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 60, attack: 50, defense: 140, speed: 60, special: 140 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 682,\n name: \"Spritzee\",\n types: [\"Fairy\"],\n baseStats: { hp: 78, attack: 52, defense: 60, speed: 23, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 350,\n rarity: \"common\",\n catchRate: 200,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 683,\n name: \"Aromatisse\",\n types: [\"Fairy\"],\n baseStats: { hp: 101, attack: 72, defense: 72, speed: 29, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 350,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 684,\n name: \"Swirlix\",\n types: [\"Fairy\"],\n baseStats: { hp: 62, attack: 48, defense: 66, speed: 49, special: 59 },\n expGroup: \"medium_fast\",\n evolutionChainId: 351,\n rarity: \"common\",\n catchRate: 200,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 685,\n name: \"Slurpuff\",\n types: [\"Fairy\"],\n baseStats: { hp: 82, attack: 80, defense: 86, speed: 72, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 351,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Makes complex code look magically simple.\",\n },\n {\n id: 686,\n name: \"Inkay\",\n types: [\"Dark\", \"Psychic\"],\n baseStats: { hp: 53, attack: 54, defense: 53, speed: 45, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 352,\n rarity: \"common\",\n catchRate: 190,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 687,\n name: \"Malamar\",\n types: [\"Dark\", \"Psychic\"],\n baseStats: { hp: 86, attack: 92, defense: 88, speed: 73, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 352,\n rarity: \"uncommon\",\n catchRate: 80,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 688,\n name: \"Binacle\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 42, attack: 52, defense: 67, speed: 50, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 353,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 689,\n name: \"Barbaracle\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 72, attack: 105, defense: 115, speed: 68, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 353,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 690,\n name: \"Skrelp\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 60, defense: 60, speed: 30, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 354,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 691,\n name: \"Dragalge\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 65, attack: 75, defense: 90, speed: 44, special: 123 },\n expGroup: \"medium_fast\",\n evolutionChainId: 354,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 692,\n name: \"Clauncher\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 62, speed: 44, special: 63 },\n expGroup: \"slow\",\n evolutionChainId: 355,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 693,\n name: \"Clawitzer\",\n types: [\"Water\"],\n baseStats: { hp: 71, attack: 73, defense: 88, speed: 59, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 355,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 694,\n name: \"Helioptile\",\n types: [\"Electric\", \"Normal\"],\n baseStats: { hp: 44, attack: 38, defense: 33, speed: 70, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 356,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 695,\n name: \"Heliolisk\",\n types: [\"Electric\", \"Normal\"],\n baseStats: { hp: 62, attack: 55, defense: 52, speed: 109, special: 109 },\n expGroup: \"medium_fast\",\n evolutionChainId: 356,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 696,\n name: \"Tyrunt\",\n types: [\"Rock\", \"Dragon\"],\n baseStats: { hp: 58, attack: 89, defense: 77, speed: 48, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 357,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 697,\n name: \"Tyrantrum\",\n types: [\"Rock\", \"Dragon\"],\n baseStats: { hp: 82, attack: 121, defense: 119, speed: 71, special: 69 },\n expGroup: \"medium_fast\",\n evolutionChainId: 357,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 698,\n name: \"Amaura\",\n types: [\"Rock\", \"Ice\"],\n baseStats: { hp: 77, attack: 59, defense: 50, speed: 46, special: 67 },\n expGroup: \"medium_fast\",\n evolutionChainId: 358,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 699,\n name: \"Aurorus\",\n types: [\"Rock\", \"Ice\"],\n baseStats: { hp: 123, attack: 77, defense: 72, speed: 58, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 358,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 700,\n name: \"Sylveon\",\n types: [\"Fairy\"],\n baseStats: { hp: 95, attack: 65, defense: 65, speed: 60, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 701,\n name: \"Hawlucha\",\n types: [\"Fighting\", \"Flying\"],\n baseStats: { hp: 78, attack: 92, defense: 75, speed: 118, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 359,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 702,\n name: \"Dedenne\",\n types: [\"Electric\", \"Fairy\"],\n baseStats: { hp: 67, attack: 58, defense: 57, speed: 101, special: 81 },\n expGroup: \"medium_fast\",\n evolutionChainId: 360,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 703,\n name: \"Carbink\",\n types: [\"Rock\", \"Fairy\"],\n baseStats: { hp: 50, attack: 50, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 361,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 704,\n name: \"Goomy\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 50, defense: 35, speed: 40, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 705,\n name: \"Sliggoo\",\n types: [\"Dragon\"],\n baseStats: { hp: 68, attack: 75, defense: 53, speed: 60, special: 113 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 706,\n name: \"Goodra\",\n types: [\"Dragon\"],\n baseStats: { hp: 90, attack: 100, defense: 70, speed: 80, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 707,\n name: \"Klefki\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 57, attack: 80, defense: 91, speed: 75, special: 87 },\n expGroup: \"fast\",\n evolutionChainId: 363,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 708,\n name: \"Phantump\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 43, attack: 70, defense: 48, speed: 38, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 364,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 709,\n name: \"Trevenant\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 85, attack: 110, defense: 76, speed: 56, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 364,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 710,\n name: \"Pumpkaboo-Average\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 49, attack: 66, defense: 70, speed: 51, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 365,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 711,\n name: \"Gourgeist-Average\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 65, attack: 90, defense: 122, speed: 84, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 365,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 712,\n name: \"Bergmite\",\n types: [\"Ice\"],\n baseStats: { hp: 55, attack: 69, defense: 85, speed: 28, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 366,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 713,\n name: \"Avalugg\",\n types: [\"Ice\"],\n baseStats: { hp: 95, attack: 117, defense: 184, speed: 28, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 366,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 714,\n name: \"Noibat\",\n types: [\"Flying\", \"Dragon\"],\n baseStats: { hp: 40, attack: 30, defense: 35, speed: 55, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 367,\n rarity: \"common\",\n catchRate: 190,\n description: \"Zooms through code reviews at altitude.\",\n },\n {\n id: 715,\n name: \"Noivern\",\n types: [\"Flying\", \"Dragon\"],\n baseStats: { hp: 85, attack: 70, defense: 80, speed: 123, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 367,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Floats above complexity with elegant solutions.\",\n },\n {\n id: 716,\n name: \"Xerneas\",\n types: [\"Fairy\"],\n baseStats: { hp: 126, attack: 131, defense: 95, speed: 99, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 368,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 717,\n name: \"Yveltal\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 126, attack: 131, defense: 95, speed: 99, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 369,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 718,\n name: \"Zygarde-50\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 108, attack: 100, defense: 121, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 370,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 719,\n name: \"Diancie\",\n types: [\"Rock\", \"Fairy\"],\n baseStats: { hp: 50, attack: 100, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 371,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 720,\n name: \"Hoopa\",\n types: [\"Psychic\", \"Ghost\"],\n baseStats: { hp: 80, attack: 110, defense: 60, speed: 70, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 372,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 721,\n name: \"Volcanion\",\n types: [\"Fire\", \"Water\"],\n baseStats: { hp: 80, attack: 110, defense: 120, speed: 70, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 373,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n\n // \u2500\u2500 Gen 7 \u2014 Alola (#722\u2013#809) \u2500\u2500\n {\n id: 722,\n name: \"Rowlet\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 68, attack: 55, defense: 55, speed: 42, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 723,\n name: \"Dartrix\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 78, attack: 75, defense: 75, speed: 52, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 724,\n name: \"Decidueye\",\n types: [\"Grass\", \"Ghost\"],\n baseStats: { hp: 78, attack: 107, defense: 75, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 725,\n name: \"Litten\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 65, defense: 40, speed: 70, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 726,\n name: \"Torracat\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 85, defense: 50, speed: 90, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 727,\n name: \"Incineroar\",\n types: [\"Fire\", \"Dark\"],\n baseStats: { hp: 95, attack: 115, defense: 90, speed: 60, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 728,\n name: \"Popplio\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 54, defense: 54, speed: 40, special: 66 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 729,\n name: \"Brionne\",\n types: [\"Water\"],\n baseStats: { hp: 60, attack: 69, defense: 69, speed: 50, special: 91 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 730,\n name: \"Primarina\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 80, attack: 74, defense: 74, speed: 60, special: 126 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 731,\n name: \"Pikipek\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 35, attack: 75, defense: 30, speed: 65, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 732,\n name: \"Trumbeak\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 55, attack: 85, defense: 50, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 733,\n name: \"Toucannon\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 80, attack: 120, defense: 75, speed: 60, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 734,\n name: \"Yungoos\",\n types: [\"Normal\"],\n baseStats: { hp: 48, attack: 70, defense: 30, speed: 45, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 378,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 735,\n name: \"Gumshoos\",\n types: [\"Normal\"],\n baseStats: { hp: 88, attack: 110, defense: 60, speed: 45, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 378,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 736,\n name: \"Grubbin\",\n types: [\"Bug\"],\n baseStats: { hp: 47, attack: 62, defense: 45, speed: 46, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"common\",\n catchRate: 255,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 737,\n name: \"Charjabug\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 57, attack: 82, defense: 95, speed: 36, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 738,\n name: \"Vikavolt\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 77, attack: 70, defense: 90, speed: 43, special: 145 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 739,\n name: \"Crabrawler\",\n types: [\"Fighting\"],\n baseStats: { hp: 47, attack: 82, defense: 57, speed: 63, special: 47 },\n expGroup: \"medium_fast\",\n evolutionChainId: 380,\n rarity: \"common\",\n catchRate: 225,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 740,\n name: \"Crabominable\",\n types: [\"Fighting\", \"Ice\"],\n baseStats: { hp: 97, attack: 132, defense: 77, speed: 43, special: 67 },\n expGroup: \"medium_fast\",\n evolutionChainId: 380,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 741,\n name: \"Oricorio-Baile\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 75, attack: 70, defense: 70, speed: 93, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 381,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 742,\n name: \"Cutiefly\",\n types: [\"Bug\", \"Fairy\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 84, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 382,\n rarity: \"common\",\n catchRate: 190,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 743,\n name: \"Ribombee\",\n types: [\"Bug\", \"Fairy\"],\n baseStats: { hp: 60, attack: 55, defense: 60, speed: 124, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 382,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 744,\n name: \"Rockruff\",\n types: [\"Rock\"],\n baseStats: { hp: 45, attack: 65, defense: 40, speed: 60, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 383,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 745,\n name: \"Lycanroc-Midday\",\n types: [\"Rock\"],\n baseStats: { hp: 75, attack: 115, defense: 65, speed: 112, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 383,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 746,\n name: \"Wishiwashi-Solo\",\n types: [\"Water\"],\n baseStats: { hp: 45, attack: 20, defense: 20, speed: 40, special: 25 },\n expGroup: \"fast\",\n evolutionChainId: 384,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 747,\n name: \"Mareanie\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 62, speed: 45, special: 52 },\n expGroup: \"medium_fast\",\n evolutionChainId: 385,\n rarity: \"common\",\n catchRate: 190,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 748,\n name: \"Toxapex\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 63, defense: 152, speed: 35, special: 142 },\n expGroup: \"medium_fast\",\n evolutionChainId: 385,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 749,\n name: \"Mudbray\",\n types: [\"Ground\"],\n baseStats: { hp: 70, attack: 100, defense: 70, speed: 45, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 386,\n rarity: \"common\",\n catchRate: 190,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 750,\n name: \"Mudsdale\",\n types: [\"Ground\"],\n baseStats: { hp: 100, attack: 125, defense: 100, speed: 35, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 386,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 751,\n name: \"Dewpider\",\n types: [\"Water\", \"Bug\"],\n baseStats: { hp: 38, attack: 40, defense: 52, speed: 27, special: 72 },\n expGroup: \"medium_fast\",\n evolutionChainId: 387,\n rarity: \"common\",\n catchRate: 200,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 752,\n name: \"Araquanid\",\n types: [\"Water\", \"Bug\"],\n baseStats: { hp: 68, attack: 70, defense: 92, speed: 42, special: 132 },\n expGroup: \"medium_fast\",\n evolutionChainId: 387,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 753,\n name: \"Fomantis\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 55, defense: 35, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 388,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 754,\n name: \"Lurantis\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 105, defense: 90, speed: 45, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 388,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 755,\n name: \"Morelull\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 40, attack: 35, defense: 55, speed: 15, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 389,\n rarity: \"common\",\n catchRate: 190,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 756,\n name: \"Shiinotic\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 60, attack: 45, defense: 80, speed: 30, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 389,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 757,\n name: \"Salandit\",\n types: [\"Poison\", \"Fire\"],\n baseStats: { hp: 48, attack: 44, defense: 40, speed: 77, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 390,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 758,\n name: \"Salazzle\",\n types: [\"Poison\", \"Fire\"],\n baseStats: { hp: 68, attack: 64, defense: 60, speed: 117, special: 111 },\n expGroup: \"medium_fast\",\n evolutionChainId: 390,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 759,\n name: \"Stufful\",\n types: [\"Normal\", \"Fighting\"],\n baseStats: { hp: 70, attack: 75, defense: 50, speed: 50, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 391,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 760,\n name: \"Bewear\",\n types: [\"Normal\", \"Fighting\"],\n baseStats: { hp: 120, attack: 125, defense: 80, speed: 60, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 391,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 761,\n name: \"Bounsweet\",\n types: [\"Grass\"],\n baseStats: { hp: 42, attack: 30, defense: 38, speed: 32, special: 38 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"common\",\n catchRate: 235,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 762,\n name: \"Steenee\",\n types: [\"Grass\"],\n baseStats: { hp: 52, attack: 40, defense: 48, speed: 62, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 763,\n name: \"Tsareena\",\n types: [\"Grass\"],\n baseStats: { hp: 72, attack: 120, defense: 98, speed: 72, special: 98 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 764,\n name: \"Comfey\",\n types: [\"Fairy\"],\n baseStats: { hp: 51, attack: 52, defense: 90, speed: 100, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 393,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 765,\n name: \"Oranguru\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 90, attack: 60, defense: 80, speed: 60, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 394,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 766,\n name: \"Passimian\",\n types: [\"Fighting\"],\n baseStats: { hp: 100, attack: 120, defense: 90, speed: 80, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 395,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 767,\n name: \"Wimpod\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 25, attack: 35, defense: 40, speed: 80, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 396,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 768,\n name: \"Golisopod\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 75, attack: 125, defense: 140, speed: 40, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 396,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 769,\n name: \"Sandygast\",\n types: [\"Ghost\", \"Ground\"],\n baseStats: { hp: 55, attack: 55, defense: 80, speed: 15, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 397,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 770,\n name: \"Palossand\",\n types: [\"Ghost\", \"Ground\"],\n baseStats: { hp: 85, attack: 75, defense: 110, speed: 35, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 397,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 771,\n name: \"Pyukumuku\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 60, defense: 130, speed: 5, special: 130 },\n expGroup: \"fast\",\n evolutionChainId: 398,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 772,\n name: \"Type: Null\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 95, defense: 95, speed: 59, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 399,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 773,\n name: \"Silvally\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 95, defense: 95, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 399,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 774,\n name: \"Minior-Red-Meteor\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 60, attack: 60, defense: 100, speed: 60, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 400,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 775,\n name: \"Komala\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 115, defense: 65, speed: 65, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 401,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 776,\n name: \"Turtonator\",\n types: [\"Fire\", \"Dragon\"],\n baseStats: { hp: 60, attack: 78, defense: 135, speed: 36, special: 91 },\n expGroup: \"medium_fast\",\n evolutionChainId: 402,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 777,\n name: \"Togedemaru\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 65, attack: 98, defense: 63, speed: 96, special: 73 },\n expGroup: \"medium_fast\",\n evolutionChainId: 403,\n rarity: \"common\",\n catchRate: 180,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 778,\n name: \"Mimikyu-Disguised\",\n types: [\"Ghost\", \"Fairy\"],\n baseStats: { hp: 55, attack: 90, defense: 80, speed: 96, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 404,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 779,\n name: \"Bruxish\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 68, attack: 105, defense: 70, speed: 92, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 405,\n rarity: \"uncommon\",\n catchRate: 80,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 780,\n name: \"Drampa\",\n types: [\"Normal\", \"Dragon\"],\n baseStats: { hp: 78, attack: 60, defense: 85, speed: 36, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 406,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 781,\n name: \"Dhelmise\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 70, attack: 131, defense: 100, speed: 40, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 407,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 782,\n name: \"Jangmo-O\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 55, defense: 65, speed: 45, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 783,\n name: \"Hakamo-O\",\n types: [\"Dragon\", \"Fighting\"],\n baseStats: { hp: 55, attack: 75, defense: 90, speed: 65, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 784,\n name: \"Kommo-O\",\n types: [\"Dragon\", \"Fighting\"],\n baseStats: { hp: 75, attack: 110, defense: 125, speed: 85, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 785,\n name: \"Tapu-Koko\",\n types: [\"Electric\", \"Fairy\"],\n baseStats: { hp: 70, attack: 115, defense: 85, speed: 130, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 409,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 786,\n name: \"Tapu-Lele\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 70, attack: 85, defense: 75, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 410,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 787,\n name: \"Tapu-Bulu\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 70, attack: 130, defense: 115, speed: 75, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 411,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 788,\n name: \"Tapu-Fini\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 70, attack: 75, defense: 115, speed: 85, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 412,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 789,\n name: \"Cosmog\",\n types: [\"Psychic\"],\n baseStats: { hp: 43, attack: 29, defense: 31, speed: 37, special: 31 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 790,\n name: \"Cosmoem\",\n types: [\"Psychic\"],\n baseStats: { hp: 43, attack: 29, defense: 131, speed: 37, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 791,\n name: \"Solgaleo\",\n types: [\"Psychic\", \"Steel\"],\n baseStats: { hp: 137, attack: 137, defense: 107, speed: 97, special: 113 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 792,\n name: \"Lunala\",\n types: [\"Psychic\", \"Ghost\"],\n baseStats: { hp: 137, attack: 113, defense: 89, speed: 97, special: 137 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 793,\n name: \"Nihilego\",\n types: [\"Rock\", \"Poison\"],\n baseStats: { hp: 109, attack: 53, defense: 47, speed: 103, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 414,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 794,\n name: \"Buzzwole\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 107, attack: 139, defense: 139, speed: 79, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 415,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 795,\n name: \"Pheromosa\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 71, attack: 137, defense: 37, speed: 151, special: 137 },\n expGroup: \"slow\",\n evolutionChainId: 416,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 796,\n name: \"Xurkitree\",\n types: [\"Electric\"],\n baseStats: { hp: 83, attack: 89, defense: 71, speed: 83, special: 173 },\n expGroup: \"slow\",\n evolutionChainId: 417,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 797,\n name: \"Celesteela\",\n types: [\"Steel\", \"Flying\"],\n baseStats: { hp: 97, attack: 101, defense: 103, speed: 61, special: 107 },\n expGroup: \"slow\",\n evolutionChainId: 418,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 798,\n name: \"Kartana\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 59, attack: 181, defense: 131, speed: 109, special: 59 },\n expGroup: \"slow\",\n evolutionChainId: 419,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 799,\n name: \"Guzzlord\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 223, attack: 101, defense: 53, speed: 43, special: 97 },\n expGroup: \"slow\",\n evolutionChainId: 420,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 800,\n name: \"Necrozma\",\n types: [\"Psychic\"],\n baseStats: { hp: 97, attack: 107, defense: 101, speed: 79, special: 127 },\n expGroup: \"slow\",\n evolutionChainId: 421,\n rarity: \"legendary\",\n catchRate: 255,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 801,\n name: \"Magearna\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 80, attack: 95, defense: 115, speed: 65, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 422,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 802,\n name: \"Marshadow\",\n types: [\"Fighting\", \"Ghost\"],\n baseStats: { hp: 90, attack: 125, defense: 80, speed: 125, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 423,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 803,\n name: \"Poipole\",\n types: [\"Poison\"],\n baseStats: { hp: 67, attack: 73, defense: 67, speed: 73, special: 73 },\n expGroup: \"slow\",\n evolutionChainId: 424,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 804,\n name: \"Naganadel\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 73, attack: 73, defense: 73, speed: 121, special: 127 },\n expGroup: \"slow\",\n evolutionChainId: 424,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 805,\n name: \"Stakataka\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 61, attack: 131, defense: 211, speed: 13, special: 101 },\n expGroup: \"slow\",\n evolutionChainId: 425,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 806,\n name: \"Blacephalon\",\n types: [\"Fire\", \"Ghost\"],\n baseStats: { hp: 53, attack: 127, defense: 53, speed: 107, special: 151 },\n expGroup: \"slow\",\n evolutionChainId: 426,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 807,\n name: \"Zeraora\",\n types: [\"Electric\"],\n baseStats: { hp: 88, attack: 112, defense: 75, speed: 143, special: 102 },\n expGroup: \"slow\",\n evolutionChainId: 427,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 808,\n name: \"Meltan\",\n types: [\"Steel\"],\n baseStats: { hp: 46, attack: 65, defense: 65, speed: 34, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 428,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 809,\n name: \"Melmetal\",\n types: [\"Steel\"],\n baseStats: { hp: 135, attack: 143, defense: 143, speed: 34, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 429,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Builds infrastructure that withstands any load.\",\n },\n\n // \u2500\u2500 Gen 8 \u2014 Galar (#810\u2013#905) \u2500\u2500\n {\n id: 810,\n name: \"Grookey\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 65, defense: 50, speed: 65, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 811,\n name: \"Thwackey\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 85, defense: 70, speed: 80, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 812,\n name: \"Rillaboom\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 125, defense: 90, speed: 85, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 813,\n name: \"Scorbunny\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 71, defense: 40, speed: 69, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 814,\n name: \"Raboot\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 86, defense: 60, speed: 94, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 815,\n name: \"Cinderace\",\n types: [\"Fire\"],\n baseStats: { hp: 80, attack: 116, defense: 75, speed: 119, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 816,\n name: \"Sobble\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 40, defense: 40, speed: 70, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 817,\n name: \"Drizzile\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 60, defense: 55, speed: 90, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 818,\n name: \"Inteleon\",\n types: [\"Water\"],\n baseStats: { hp: 70, attack: 85, defense: 65, speed: 120, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 819,\n name: \"Skwovet\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 55, defense: 55, speed: 25, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 433,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 820,\n name: \"Greedent\",\n types: [\"Normal\"],\n baseStats: { hp: 120, attack: 95, defense: 95, speed: 20, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 433,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 821,\n name: \"Rookidee\",\n types: [\"Flying\"],\n baseStats: { hp: 38, attack: 47, defense: 35, speed: 57, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"common\",\n catchRate: 255,\n description: \"Migrates databases without breaking a wing.\",\n },\n {\n id: 822,\n name: \"Corvisquire\",\n types: [\"Flying\"],\n baseStats: { hp: 68, attack: 67, defense: 55, speed: 77, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 823,\n name: \"Corviknight\",\n types: [\"Flying\", \"Steel\"],\n baseStats: { hp: 98, attack: 87, defense: 105, speed: 67, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 824,\n name: \"Blipbug\",\n types: [\"Bug\"],\n baseStats: { hp: 25, attack: 20, defense: 20, speed: 45, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 825,\n name: \"Dottler\",\n types: [\"Bug\", \"Psychic\"],\n baseStats: { hp: 50, attack: 35, defense: 80, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 826,\n name: \"Orbeetle\",\n types: [\"Bug\", \"Psychic\"],\n baseStats: { hp: 60, attack: 45, defense: 110, speed: 90, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 827,\n name: \"Nickit\",\n types: [\"Dark\"],\n baseStats: { hp: 40, attack: 28, defense: 28, speed: 50, special: 52 },\n expGroup: \"fast\",\n evolutionChainId: 436,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 828,\n name: \"Thievul\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 58, defense: 58, speed: 90, special: 92 },\n expGroup: \"fast\",\n evolutionChainId: 436,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 829,\n name: \"Gossifleur\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 40, defense: 60, speed: 10, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 437,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 830,\n name: \"Eldegoss\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 50, defense: 90, speed: 60, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 437,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 831,\n name: \"Wooloo\",\n types: [\"Normal\"],\n baseStats: { hp: 42, attack: 40, defense: 55, speed: 48, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 438,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 832,\n name: \"Dubwool\",\n types: [\"Normal\"],\n baseStats: { hp: 72, attack: 80, defense: 100, speed: 88, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 438,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 833,\n name: \"Chewtle\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 64, defense: 50, speed: 44, special: 38 },\n expGroup: \"medium_fast\",\n evolutionChainId: 439,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 834,\n name: \"Drednaw\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 90, attack: 115, defense: 90, speed: 74, special: 68 },\n expGroup: \"medium_fast\",\n evolutionChainId: 439,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 835,\n name: \"Yamper\",\n types: [\"Electric\"],\n baseStats: { hp: 59, attack: 45, defense: 50, speed: 26, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 440,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 836,\n name: \"Boltund\",\n types: [\"Electric\"],\n baseStats: { hp: 69, attack: 90, defense: 60, speed: 121, special: 90 },\n expGroup: \"fast\",\n evolutionChainId: 440,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 837,\n name: \"Rolycoly\",\n types: [\"Rock\"],\n baseStats: { hp: 30, attack: 40, defense: 50, speed: 30, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 838,\n name: \"Carkol\",\n types: [\"Rock\", \"Fire\"],\n baseStats: { hp: 80, attack: 60, defense: 90, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 839,\n name: \"Coalossal\",\n types: [\"Rock\", \"Fire\"],\n baseStats: { hp: 110, attack: 80, defense: 120, speed: 30, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 840,\n name: \"Applin\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 40, attack: 40, defense: 80, speed: 20, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"common\",\n catchRate: 255,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 841,\n name: \"Flapple\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 70, attack: 110, defense: 80, speed: 70, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 842,\n name: \"Appletun\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 110, attack: 85, defense: 80, speed: 30, special: 100 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 843,\n name: \"Silicobra\",\n types: [\"Ground\"],\n baseStats: { hp: 52, attack: 57, defense: 75, speed: 46, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 443,\n rarity: \"common\",\n catchRate: 255,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 844,\n name: \"Sandaconda\",\n types: [\"Ground\"],\n baseStats: { hp: 72, attack: 107, defense: 125, speed: 71, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 443,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 845,\n name: \"Cramorant\",\n types: [\"Flying\", \"Water\"],\n baseStats: { hp: 70, attack: 85, defense: 55, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 444,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Floats above complexity with elegant solutions.\",\n },\n {\n id: 846,\n name: \"Arrokuda\",\n types: [\"Water\"],\n baseStats: { hp: 41, attack: 63, defense: 40, speed: 66, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 445,\n rarity: \"common\",\n catchRate: 255,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 847,\n name: \"Barraskewda\",\n types: [\"Water\"],\n baseStats: { hp: 61, attack: 123, defense: 60, speed: 136, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 445,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 848,\n name: \"Toxel\",\n types: [\"Electric\", \"Poison\"],\n baseStats: { hp: 40, attack: 38, defense: 35, speed: 40, special: 54 },\n expGroup: \"medium_slow\",\n evolutionChainId: 446,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 849,\n name: \"Toxtricity-Amped\",\n types: [\"Electric\", \"Poison\"],\n baseStats: { hp: 75, attack: 98, defense: 70, speed: 75, special: 114 },\n expGroup: \"medium_slow\",\n evolutionChainId: 446,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 850,\n name: \"Sizzlipede\",\n types: [\"Fire\", \"Bug\"],\n baseStats: { hp: 50, attack: 65, defense: 45, speed: 45, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 447,\n rarity: \"common\",\n catchRate: 190,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 851,\n name: \"Centiskorch\",\n types: [\"Fire\", \"Bug\"],\n baseStats: { hp: 100, attack: 115, defense: 65, speed: 65, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 447,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 852,\n name: \"Clobbopus\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 68, defense: 60, speed: 32, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 448,\n rarity: \"common\",\n catchRate: 180,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 853,\n name: \"Grapploct\",\n types: [\"Fighting\"],\n baseStats: { hp: 80, attack: 118, defense: 90, speed: 42, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 448,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 854,\n name: \"Sinistea\",\n types: [\"Ghost\"],\n baseStats: { hp: 40, attack: 45, defense: 45, speed: 50, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 449,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 855,\n name: \"Polteageist\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 65, defense: 65, speed: 70, special: 134 },\n expGroup: \"medium_fast\",\n evolutionChainId: 449,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 856,\n name: \"Hatenna\",\n types: [\"Psychic\"],\n baseStats: { hp: 42, attack: 30, defense: 45, speed: 39, special: 56 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 857,\n name: \"Hattrem\",\n types: [\"Psychic\"],\n baseStats: { hp: 57, attack: 40, defense: 65, speed: 49, special: 86 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 858,\n name: \"Hatterene\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 57, attack: 90, defense: 95, speed: 29, special: 136 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 859,\n name: \"Impidimp\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 45, attack: 45, defense: 30, speed: 50, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 860,\n name: \"Morgrem\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 65, attack: 60, defense: 45, speed: 70, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 861,\n name: \"Grimmsnarl\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 95, attack: 120, defense: 65, speed: 60, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 862,\n name: \"Obstagoon\",\n types: [\"Dark\", \"Normal\"],\n baseStats: { hp: 93, attack: 90, defense: 101, speed: 95, special: 81 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 863,\n name: \"Perrserker\",\n types: [\"Steel\"],\n baseStats: { hp: 70, attack: 110, defense: 100, speed: 50, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 864,\n name: \"Cursola\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 95, defense: 50, speed: 30, special: 145 },\n expGroup: \"fast\",\n evolutionChainId: 113,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 865,\n name: \"Sirfetch'd\",\n types: [\"Fighting\"],\n baseStats: { hp: 62, attack: 135, defense: 95, speed: 65, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 35,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 866,\n name: \"Mr. Rime\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 80, attack: 85, defense: 75, speed: 70, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 867,\n name: \"Runerigus\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 58, attack: 95, defense: 145, speed: 30, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 868,\n name: \"Milcery\",\n types: [\"Fairy\"],\n baseStats: { hp: 45, attack: 40, defense: 40, speed: 34, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 452,\n rarity: \"common\",\n catchRate: 200,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 869,\n name: \"Alcremie\",\n types: [\"Fairy\"],\n baseStats: { hp: 65, attack: 60, defense: 75, speed: 64, special: 121 },\n expGroup: \"medium_fast\",\n evolutionChainId: 452,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 870,\n name: \"Falinks\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 100, defense: 100, speed: 75, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 453,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 871,\n name: \"Pincurchin\",\n types: [\"Electric\"],\n baseStats: { hp: 48, attack: 101, defense: 95, speed: 15, special: 91 },\n expGroup: \"medium_fast\",\n evolutionChainId: 454,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 872,\n name: \"Snom\",\n types: [\"Ice\", \"Bug\"],\n baseStats: { hp: 30, attack: 25, defense: 35, speed: 20, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 455,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 873,\n name: \"Frosmoth\",\n types: [\"Ice\", \"Bug\"],\n baseStats: { hp: 70, attack: 65, defense: 60, speed: 65, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 455,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 874,\n name: \"Stonjourner\",\n types: [\"Rock\"],\n baseStats: { hp: 100, attack: 125, defense: 135, speed: 70, special: 20 },\n expGroup: \"slow\",\n evolutionChainId: 456,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 875,\n name: \"Eiscue-Ice\",\n types: [\"Ice\"],\n baseStats: { hp: 75, attack: 80, defense: 110, speed: 50, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 457,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 876,\n name: \"Indeedee-Male\",\n types: [\"Psychic\", \"Normal\"],\n baseStats: { hp: 60, attack: 65, defense: 55, speed: 95, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 458,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 877,\n name: \"Morpeko-Full-Belly\",\n types: [\"Electric\", \"Dark\"],\n baseStats: { hp: 58, attack: 95, defense: 58, speed: 97, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 459,\n rarity: \"common\",\n catchRate: 180,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 878,\n name: \"Cufant\",\n types: [\"Steel\"],\n baseStats: { hp: 72, attack: 80, defense: 49, speed: 40, special: 49 },\n expGroup: \"medium_fast\",\n evolutionChainId: 460,\n rarity: \"common\",\n catchRate: 190,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 879,\n name: \"Copperajah\",\n types: [\"Steel\"],\n baseStats: { hp: 122, attack: 130, defense: 69, speed: 30, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 460,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 880,\n name: \"Dracozolt\",\n types: [\"Electric\", \"Dragon\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 75, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 461,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 881,\n name: \"Arctozolt\",\n types: [\"Electric\", \"Ice\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 462,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 882,\n name: \"Dracovish\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 90, attack: 90, defense: 100, speed: 75, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 463,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 883,\n name: \"Arctovish\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 90, attack: 90, defense: 100, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 464,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 884,\n name: \"Duraludon\",\n types: [\"Steel\", \"Dragon\"],\n baseStats: { hp: 70, attack: 95, defense: 115, speed: 85, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 465,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 885,\n name: \"Dreepy\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 28, attack: 60, defense: 30, speed: 82, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 886,\n name: \"Drakloak\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 68, attack: 80, defense: 50, speed: 102, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 887,\n name: \"Dragapult\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 88, attack: 120, defense: 75, speed: 142, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 888,\n name: \"Zacian\",\n types: [\"Fairy\"],\n baseStats: { hp: 92, attack: 120, defense: 115, speed: 138, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 467,\n rarity: \"legendary\",\n catchRate: 10,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 889,\n name: \"Zamazenta\",\n types: [\"Fighting\"],\n baseStats: { hp: 92, attack: 120, defense: 115, speed: 138, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 468,\n rarity: \"legendary\",\n catchRate: 10,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 890,\n name: \"Eternatus\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 140, attack: 85, defense: 95, speed: 130, special: 145 },\n expGroup: \"slow\",\n evolutionChainId: 469,\n rarity: \"legendary\",\n catchRate: 255,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 891,\n name: \"Kubfu\",\n types: [\"Fighting\"],\n baseStats: { hp: 60, attack: 90, defense: 60, speed: 72, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 470,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 892,\n name: \"Urshifu-Single-Strike\",\n types: [\"Fighting\", \"Dark\"],\n baseStats: { hp: 100, attack: 130, defense: 100, speed: 97, special: 63 },\n expGroup: \"slow\",\n evolutionChainId: 470,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 893,\n name: \"Zarude\",\n types: [\"Dark\", \"Grass\"],\n baseStats: { hp: 105, attack: 120, defense: 105, speed: 105, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 471,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 894,\n name: \"Regieleki\",\n types: [\"Electric\"],\n baseStats: { hp: 80, attack: 100, defense: 50, speed: 200, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 472,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 895,\n name: \"Regidrago\",\n types: [\"Dragon\"],\n baseStats: { hp: 200, attack: 100, defense: 50, speed: 80, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 473,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 896,\n name: \"Glastrier\",\n types: [\"Ice\"],\n baseStats: { hp: 100, attack: 145, defense: 130, speed: 30, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 474,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 897,\n name: \"Spectrier\",\n types: [\"Ghost\"],\n baseStats: { hp: 100, attack: 65, defense: 60, speed: 130, special: 145 },\n expGroup: \"slow\",\n evolutionChainId: 475,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 898,\n name: \"Calyrex\",\n types: [\"Psychic\", \"Grass\"],\n baseStats: { hp: 100, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 476,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 899,\n name: \"Wyrdeer\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 103, attack: 105, defense: 72, speed: 65, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 120,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 900,\n name: \"Kleavor\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 70, attack: 135, defense: 95, speed: 85, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"uncommon\",\n catchRate: 115,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 901,\n name: \"Ursaluna\",\n types: [\"Ground\", \"Normal\"],\n baseStats: { hp: 130, attack: 140, defense: 105, speed: 50, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 902,\n name: \"Basculegion-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 120, attack: 112, defense: 65, speed: 78, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 280,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 903,\n name: \"Sneasler\",\n types: [\"Fighting\", \"Poison\"],\n baseStats: { hp: 80, attack: 130, defense: 60, speed: 120, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 904,\n name: \"Overqwil\",\n types: [\"Dark\", \"Poison\"],\n baseStats: { hp: 85, attack: 115, defense: 95, speed: 85, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 106,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 905,\n name: \"Enamorus-Incarnate\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 74, attack: 115, defense: 70, speed: 106, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 477,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n] as const satisfies readonly Pokemon[];\n\n/** Lookup map: Pokemon ID \u2192 Pokemon data. Built once at module load. */\nexport const POKEMON_BY_ID: ReadonlyMap<number, Pokemon> = new Map(POKEDEX.map((p) => [p.id, p]));\n\n/** Lookup map: lowercase name \u2192 Pokemon data. Built once at module load. */\nexport const POKEMON_BY_NAME: ReadonlyMap<string, Pokemon> = new Map(\n POKEDEX.map((p) => [p.name.toLowerCase(), p]),\n);\n", "/**\n * XP and leveling engine for Claudemon.\n * Implements Gen 1 experience growth rate formulas.\n */\n\nimport type {\n ExpGroup,\n OwnedPokemon,\n Pokemon,\n LevelUpResult,\n XpEventType,\n XpEvent,\n} from \"./types.js\";\nimport { MAX_LEVEL, XP_AWARDS } from \"./constants.js\";\n\n/**\n * Total cumulative XP required to reach a given level.\n * @param level - Target level (1-100)\n * @param group - Experience growth rate group\n * @returns Cumulative XP needed to reach that level\n */\nexport function cumulativeXpForLevel(level: number, group: ExpGroup): number {\n const n = level;\n const n3 = n * n * n;\n\n switch (group) {\n case \"fast\":\n return Math.floor(0.8 * n3);\n case \"medium_fast\":\n return n3;\n case \"medium_slow\": {\n const raw = 1.2 * n3 - 15 * n * n + 100 * n - 140;\n return Math.max(0, Math.floor(raw));\n }\n case \"slow\":\n return Math.floor(1.25 * n3);\n }\n}\n\n/**\n * XP delta needed to advance from currentLevel to currentLevel + 1.\n * @param currentLevel - The pokemon's current level (1-99)\n * @param group - Experience growth rate group\n * @returns XP needed for the next level, or 0 if already at MAX_LEVEL\n */\nexport function xpToNextLevel(currentLevel: number, group: ExpGroup): number {\n if (currentLevel >= MAX_LEVEL) {\n return 0;\n }\n return cumulativeXpForLevel(currentLevel + 1, group) - cumulativeXpForLevel(currentLevel, group);\n}\n\n/**\n * Apply XP to an owned pokemon, handling level-ups (including multi-level).\n * Mutates the pokemon's currentXp, totalXp, and level fields.\n * @param pokemon - The owned pokemon instance to award XP to\n * @param amount - XP amount to add\n * @param pokemonData - The species data for this pokemon\n * @returns Level-up result if the pokemon leveled up, or null\n */\nexport function addXp(\n pokemon: OwnedPokemon,\n amount: number,\n pokemonData: Pokemon,\n): LevelUpResult | null {\n if (amount <= 0 || pokemon.level >= MAX_LEVEL) {\n return null;\n }\n\n const previousLevel = pokemon.level;\n const group = pokemonData.expGroup;\n\n pokemon.totalXp += amount;\n pokemon.currentXp += amount;\n\n // Check for level-ups (possibly multiple from large XP gains)\n while (pokemon.level < MAX_LEVEL) {\n const xpNeeded = xpToNextLevel(pokemon.level, group);\n if (xpNeeded <= 0 || pokemon.currentXp < xpNeeded) {\n break;\n }\n pokemon.currentXp -= xpNeeded;\n pokemon.level += 1;\n }\n\n // Clamp at max level: any overflow XP is discarded\n if (pokemon.level >= MAX_LEVEL) {\n pokemon.currentXp = 0;\n }\n\n if (pokemon.level === previousLevel) {\n return null;\n }\n\n // TODO(phase-2): check evolution triggers and populate pendingEvolution\n return {\n previousLevel,\n newLevel: pokemon.level,\n pendingEvolution: null,\n };\n}\n\n/**\n * Calculate progress percentage toward the next level.\n * @param pokemon - The owned pokemon instance\n * @param pokemonData - The species data for this pokemon\n * @returns Percentage (0-100) of progress to next level\n */\nexport function xpProgressPercent(pokemon: OwnedPokemon, pokemonData: Pokemon): number {\n if (pokemon.level >= MAX_LEVEL) {\n return 100;\n }\n\n const needed = xpToNextLevel(pokemon.level, pokemonData.expGroup);\n if (needed <= 0) {\n return 100;\n }\n\n return Math.min(100, Math.floor((pokemon.currentXp / needed) * 100));\n}\n\n/**\n * Create an XP event descriptor from an event type, using constants.\n * @param type - The XP event type\n * @returns A fully populated XpEvent\n */\nexport function createXpEvent(type: XpEventType): XpEvent {\n const award = XP_AWARDS[type];\n return {\n type,\n xp: award.xp,\n statBoost: award.stat,\n boostAmount: award.boost,\n };\n}\n", "/**\n * Coding stat system for Claudemon.\n * Maps Gen 1 base stats to coding-themed stats with display utilities.\n */\n\nimport type { BaseStats, CodingStats, CodingStat, OwnedPokemon } from \"./types.js\";\nimport { BASE_STAT_TO_CODING } from \"./types.js\";\nimport { TRAINER_TITLES } from \"./constants.js\";\n\n/** Filled portion of stat bar (ASCII-safe for MCP text output) */\nconst BLOCK_FILLED = \"#\";\n\n/** Empty portion of stat bar (ASCII-safe for MCP text output) */\nconst BLOCK_EMPTY = \"-\";\n\n/**\n * Create initial coding stats from a pokemon's base stats.\n * Scaled to ~50% of base value since starters begin at level 5.\n * @param baseStats - The species' base stat block\n * @returns Initial coding stats for a newly caught pokemon\n */\nexport function initCodingStats(baseStats: BaseStats): CodingStats {\n const stats: CodingStats = {\n stamina: 0,\n debugging: 0,\n stability: 0,\n velocity: 0,\n wisdom: 0,\n };\n\n for (const [baseStat, codingStat] of Object.entries(BASE_STAT_TO_CODING) as Array<\n [keyof BaseStats, CodingStat]\n >) {\n stats[codingStat] = Math.floor(baseStats[baseStat] * 0.5);\n }\n\n return stats;\n}\n\n/**\n * Calculate the effective display value of a coding stat.\n * Formula: floor(baseStat * (0.5 + level/200)) + activityBonus\n * @param baseStat - The species' base stat value\n * @param level - The pokemon's current level\n * @param activityBonus - Accumulated bonus from coding activity\n * @returns The effective stat value for display\n */\nexport function calculateDisplayStat(\n baseStat: number,\n level: number,\n activityBonus: number,\n): number {\n return Math.floor(baseStat * (0.5 + level / 200)) + activityBonus;\n}\n\n/**\n * Increment a coding stat's activity bonus on an owned pokemon. Mutates in place.\n * @param pokemon - The owned pokemon instance to boost\n * @param stat - Which coding stat to boost\n * @param amount - How much to add to the stat\n */\nexport function applyStatBoost(pokemon: OwnedPokemon, stat: CodingStat, amount: number): void {\n pokemon.codingStats[stat] += amount;\n}\n\n/**\n * Render an ASCII progress bar for a stat value.\n * Uses '#' and '-' for MCP text output compatibility.\n * @param value - Stat value (0-100 range)\n * @param maxWidth - Character width of the bar (default 10)\n * @returns ASCII bar string like \"######----\"\n */\nexport function renderStatBar(value: number, maxWidth: number = 10): string {\n const clamped = Math.max(0, Math.min(100, value));\n const filled = Math.round((clamped / 100) * maxWidth);\n const empty = maxWidth - filled;\n return BLOCK_FILLED.repeat(filled) + BLOCK_EMPTY.repeat(empty);\n}\n\n/**\n * Get the trainer title based on highest pokemon level.\n * @param highestLevel - The highest level among the trainer's pokemon\n * @returns The trainer's title string\n */\nexport function getTrainerTitle(highestLevel: number): string {\n // Titles are sorted ascending by minLevel; find the last one that qualifies\n let title = \"Bug Catcher\"; // Fallback for level 0\n\n for (const entry of TRAINER_TITLES) {\n if (highestLevel >= entry.minLevel) {\n title = entry.title;\n } else {\n break;\n }\n }\n\n return title;\n}\n", "/**\n * Evolution chains for all 151 Gen 1 Pokemon.\n * Stone evolutions are mapped to badge-based methods.\n * Trade evolutions become collaboration events.\n */\n\nimport type { EvolutionChain } from \"./types.js\";\n\nexport const EVOLUTION_CHAINS: readonly EvolutionChain[] = [\n // \u2500\u2500 Chain 1: Bulbasaur \u2192 Ivysaur \u2192 Venusaur \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 1,\n links: [\n { from: 1, to: 2, method: { type: \"level\", level: 16 } },\n { from: 2, to: 3, method: { type: \"level\", level: 32 } },\n ],\n },\n\n // \u2500\u2500 Chain 2: Charmander \u2192 Charmeleon \u2192 Charizard \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 2,\n links: [\n { from: 4, to: 5, method: { type: \"level\", level: 16 } },\n { from: 5, to: 6, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 3: Squirtle \u2192 Wartortle \u2192 Blastoise \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 3,\n links: [\n { from: 7, to: 8, method: { type: \"level\", level: 16 } },\n { from: 8, to: 9, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 4: Caterpie \u2192 Metapod \u2192 Butterfree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 4,\n links: [\n { from: 10, to: 11, method: { type: \"level\", level: 7 } },\n { from: 11, to: 12, method: { type: \"level\", level: 10 } },\n ],\n },\n\n // \u2500\u2500 Chain 5: Weedle \u2192 Kakuna \u2192 Beedrill \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 5,\n links: [\n { from: 13, to: 14, method: { type: \"level\", level: 7 } },\n { from: 14, to: 15, method: { type: \"level\", level: 10 } },\n ],\n },\n\n // \u2500\u2500 Chain 6: Pidgey \u2192 Pidgeotto \u2192 Pidgeot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 6,\n links: [\n { from: 16, to: 17, method: { type: \"level\", level: 18 } },\n { from: 17, to: 18, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 7: Rattata \u2192 Raticate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 7,\n links: [{ from: 19, to: 20, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 8: Spearow \u2192 Fearow \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 8,\n links: [{ from: 21, to: 22, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 9: Ekans \u2192 Arbok \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 9,\n links: [{ from: 23, to: 24, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 10: Pikachu \u2192 Raichu (Thunder Stone \u2192 spark) \u2500\u2500\u2500\n {\n id: 10,\n links: [{ from: 25, to: 26, method: { type: \"badge\", badge: \"spark\" } }],\n },\n\n // \u2500\u2500 Chain 11: Sandshrew \u2192 Sandslash \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 11,\n links: [{ from: 27, to: 28, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 12: Nidoran\u2640 \u2192 Nidorina \u2192 Nidoqueen (Moon Stone)\n {\n id: 12,\n links: [\n { from: 29, to: 30, method: { type: \"level\", level: 16 } },\n { from: 30, to: 31, method: { type: \"badge\", badge: \"lunar\" } },\n ],\n },\n\n // \u2500\u2500 Chain 13: Nidoran\u2642 \u2192 Nidorino \u2192 Nidoking (Moon Stone)\n {\n id: 13,\n links: [\n { from: 32, to: 33, method: { type: \"level\", level: 16 } },\n { from: 33, to: 34, method: { type: \"badge\", badge: \"lunar\" } },\n ],\n },\n\n // \u2500\u2500 Chain 14: Clefairy \u2192 Clefable (Moon Stone \u2192 lunar) \u2500\u2500\u2500\n {\n id: 14,\n links: [{ from: 35, to: 36, method: { type: \"badge\", badge: \"lunar\" } }],\n },\n\n // \u2500\u2500 Chain 15: Vulpix \u2192 Ninetales (Fire Stone \u2192 blaze) \u2500\u2500\u2500\u2500\n {\n id: 15,\n links: [{ from: 37, to: 38, method: { type: \"badge\", badge: \"blaze\" } }],\n },\n\n // \u2500\u2500 Chain 16: Jigglypuff \u2192 Wigglytuff (Moon Stone \u2192 lunar)\n {\n id: 16,\n links: [{ from: 39, to: 40, method: { type: \"badge\", badge: \"lunar\" } }],\n },\n\n // \u2500\u2500 Chain 17: Zubat \u2192 Golbat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 17,\n links: [{ from: 41, to: 42, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 18: Oddish \u2192 Gloom \u2192 Vileplume (Leaf Stone \u2192 growth)\n {\n id: 18,\n links: [\n { from: 43, to: 44, method: { type: \"level\", level: 21 } },\n { from: 44, to: 45, method: { type: \"badge\", badge: \"growth\" } },\n ],\n },\n\n // \u2500\u2500 Chain 19: Paras \u2192 Parasect \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 19,\n links: [{ from: 46, to: 47, method: { type: \"level\", level: 24 } }],\n },\n\n // \u2500\u2500 Chain 20: Venonat \u2192 Venomoth \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 20,\n links: [{ from: 48, to: 49, method: { type: \"level\", level: 31 } }],\n },\n\n // \u2500\u2500 Chain 21: Diglett \u2192 Dugtrio \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 21,\n links: [{ from: 50, to: 51, method: { type: \"level\", level: 26 } }],\n },\n\n // \u2500\u2500 Chain 22: Meowth \u2192 Persian \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 22,\n links: [{ from: 52, to: 53, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 23: Psyduck \u2192 Golduck \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 23,\n links: [{ from: 54, to: 55, method: { type: \"level\", level: 33 } }],\n },\n\n // \u2500\u2500 Chain 24: Mankey \u2192 Primeape \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 24,\n links: [{ from: 56, to: 57, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 25: Growlithe \u2192 Arcanine (Fire Stone \u2192 blaze) \u2500\u2500\n {\n id: 25,\n links: [{ from: 58, to: 59, method: { type: \"badge\", badge: \"blaze\" } }],\n },\n\n // \u2500\u2500 Chain 26: Poliwag \u2192 Poliwhirl \u2192 Poliwrath (Water Stone \u2192 flow)\n {\n id: 26,\n links: [\n { from: 60, to: 61, method: { type: \"level\", level: 25 } },\n { from: 61, to: 62, method: { type: \"badge\", badge: \"flow\" } },\n ],\n },\n\n // \u2500\u2500 Chain 27: Abra \u2192 Kadabra \u2192 Alakazam (trade \u2192 collaboration)\n {\n id: 27,\n links: [\n { from: 63, to: 64, method: { type: \"level\", level: 16 } },\n { from: 64, to: 65, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 28: Machop \u2192 Machoke \u2192 Machamp (trade \u2192 collaboration)\n {\n id: 28,\n links: [\n { from: 66, to: 67, method: { type: \"level\", level: 28 } },\n { from: 67, to: 68, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 29: Bellsprout \u2192 Weepinbell \u2192 Victreebel (Leaf Stone \u2192 growth)\n {\n id: 29,\n links: [\n { from: 69, to: 70, method: { type: \"level\", level: 21 } },\n { from: 70, to: 71, method: { type: \"badge\", badge: \"growth\" } },\n ],\n },\n\n // \u2500\u2500 Chain 30: Tentacool \u2192 Tentacruel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 30,\n links: [{ from: 72, to: 73, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 31: Geodude \u2192 Graveler \u2192 Golem (trade \u2192 collaboration)\n {\n id: 31,\n links: [\n { from: 74, to: 75, method: { type: \"level\", level: 25 } },\n { from: 75, to: 76, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 32: Ponyta \u2192 Rapidash \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 32,\n links: [{ from: 77, to: 78, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 33: Slowpoke \u2192 Slowbro \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 33,\n links: [{ from: 79, to: 80, method: { type: \"level\", level: 37 } }],\n },\n\n // \u2500\u2500 Chain 34: Magnemite \u2192 Magneton \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 34,\n links: [{ from: 81, to: 82, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 35: Farfetch'd (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 35,\n links: [],\n },\n\n // \u2500\u2500 Chain 36: Doduo \u2192 Dodrio \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 36,\n links: [{ from: 84, to: 85, method: { type: \"level\", level: 31 } }],\n },\n\n // \u2500\u2500 Chain 37: Seel \u2192 Dewgong \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 37,\n links: [{ from: 86, to: 87, method: { type: \"level\", level: 34 } }],\n },\n\n // \u2500\u2500 Chain 38: Grimer \u2192 Muk \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 38,\n links: [{ from: 88, to: 89, method: { type: \"level\", level: 38 } }],\n },\n\n // \u2500\u2500 Chain 39: Shellder \u2192 Cloyster (Water Stone \u2192 flow) \u2500\u2500\u2500\n {\n id: 39,\n links: [{ from: 90, to: 91, method: { type: \"badge\", badge: \"flow\" } }],\n },\n\n // \u2500\u2500 Chain 40: Gastly \u2192 Haunter \u2192 Gengar (trade \u2192 collaboration)\n {\n id: 40,\n links: [\n { from: 92, to: 93, method: { type: \"level\", level: 25 } },\n { from: 93, to: 94, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 41: Onix (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 41,\n links: [],\n },\n\n // \u2500\u2500 Chain 42: Drowzee \u2192 Hypno \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 42,\n links: [{ from: 96, to: 97, method: { type: \"level\", level: 26 } }],\n },\n\n // \u2500\u2500 Chain 43: Krabby \u2192 Kingler \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 43,\n links: [{ from: 98, to: 99, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 44: Voltorb \u2192 Electrode \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 44,\n links: [{ from: 100, to: 101, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 45: Exeggcute \u2192 Exeggutor (Leaf Stone \u2192 growth)\n {\n id: 45,\n links: [{ from: 102, to: 103, method: { type: \"badge\", badge: \"growth\" } }],\n },\n\n // \u2500\u2500 Chain 46: Cubone \u2192 Marowak \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 46,\n links: [{ from: 104, to: 105, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 47: Hitmonlee (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 47,\n links: [],\n },\n\n // \u2500\u2500 Chain 48: Hitmonchan (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 48,\n links: [],\n },\n\n // \u2500\u2500 Chain 49: Lickitung (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 49,\n links: [],\n },\n\n // \u2500\u2500 Chain 50: Koffing \u2192 Weezing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 50,\n links: [{ from: 109, to: 110, method: { type: \"level\", level: 35 } }],\n },\n\n // \u2500\u2500 Chain 51: Rhyhorn \u2192 Rhydon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 51,\n links: [{ from: 111, to: 112, method: { type: \"level\", level: 42 } }],\n },\n\n // \u2500\u2500 Chain 52: Chansey (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 52,\n links: [],\n },\n\n // \u2500\u2500 Chain 53: Tangela (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 53,\n links: [],\n },\n\n // \u2500\u2500 Chain 54: Kangaskhan (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 54,\n links: [],\n },\n\n // \u2500\u2500 Chain 55: Horsea \u2192 Seadra \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 55,\n links: [{ from: 116, to: 117, method: { type: \"level\", level: 32 } }],\n },\n\n // \u2500\u2500 Chain 56: Goldeen \u2192 Seaking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 56,\n links: [{ from: 118, to: 119, method: { type: \"level\", level: 33 } }],\n },\n\n // \u2500\u2500 Chain 57: Staryu \u2192 Starmie (Water Stone \u2192 flow) \u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 57,\n links: [{ from: 120, to: 121, method: { type: \"badge\", badge: \"flow\" } }],\n },\n\n // \u2500\u2500 Chain 58: Mr. Mime (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 58,\n links: [],\n },\n\n // \u2500\u2500 Chain 59: Scyther (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 59,\n links: [],\n },\n\n // \u2500\u2500 Chain 60: Jynx (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 60,\n links: [],\n },\n\n // \u2500\u2500 Chain 61: Electabuzz (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 61,\n links: [],\n },\n\n // \u2500\u2500 Chain 62: Magmar (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 62,\n links: [],\n },\n\n // \u2500\u2500 Chain 63: Pinsir (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 63,\n links: [],\n },\n\n // \u2500\u2500 Chain 64: Tauros (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 64,\n links: [],\n },\n\n // \u2500\u2500 Chain 65: Magikarp \u2192 Gyarados \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 65,\n links: [{ from: 129, to: 130, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 66: Lapras (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 66,\n links: [],\n },\n\n // \u2500\u2500 Chain 67: Ditto (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 67,\n links: [],\n },\n\n // \u2500\u2500 Chain 68: Eevee \u2192 Vaporeon / Jolteon / Flareon (stat-based)\n {\n id: 68,\n links: [\n { from: 133, to: 134, method: { type: \"stat\", stat: \"stability\", minValue: 50 } },\n { from: 133, to: 135, method: { type: \"stat\", stat: \"velocity\", minValue: 50 } },\n { from: 133, to: 136, method: { type: \"stat\", stat: \"debugging\", minValue: 50 } },\n ],\n },\n\n // \u2500\u2500 Chain 69: Porygon (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 69,\n links: [],\n },\n\n // \u2500\u2500 Chain 70: Omanyte \u2192 Omastar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 70,\n links: [{ from: 138, to: 139, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 71: Kabuto \u2192 Kabutops \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 71,\n links: [{ from: 140, to: 141, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 72: Aerodactyl (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 72,\n links: [],\n },\n\n // \u2500\u2500 Chain 73: Snorlax (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 73,\n links: [],\n },\n\n // \u2500\u2500 Chain 74: Articuno (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 74,\n links: [],\n },\n\n // \u2500\u2500 Chain 75: Zapdos (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 75,\n links: [],\n },\n\n // \u2500\u2500 Chain 76: Moltres (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 76,\n links: [],\n },\n\n // \u2500\u2500 Chain 77: Dratini \u2192 Dragonair \u2192 Dragonite \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 77,\n links: [\n { from: 147, to: 148, method: { type: \"level\", level: 30 } },\n { from: 148, to: 149, method: { type: \"level\", level: 55 } },\n ],\n },\n\n // \u2500\u2500 Chain 78: Mewtwo (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 78,\n links: [],\n },\n\n // \u2500\u2500 Chain 79: Mew (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 79,\n links: [],\n },\n // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n // Gen 2-8 Evolution Chains (auto-generated from PokeAPI)\n // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n {\n id: 80,\n links: [\n { from: 155, to: 156, method: { type: \"level\", level: 14 } },\n { from: 156, to: 157, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 81,\n links: [\n { from: 158, to: 159, method: { type: \"level\", level: 18 } },\n { from: 159, to: 160, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 82,\n links: [{ from: 161, to: 162, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 83,\n links: [{ from: 163, to: 164, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 84,\n links: [{ from: 165, to: 166, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 85,\n links: [{ from: 167, to: 168, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 86,\n links: [{ from: 170, to: 171, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 87,\n links: [\n { from: 175, to: 176, method: { type: \"level\", level: 30 } },\n { from: 176, to: 468, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 88,\n links: [{ from: 177, to: 178, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 89,\n links: [\n { from: 179, to: 180, method: { type: \"level\", level: 15 } },\n { from: 180, to: 181, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 90,\n links: [\n { from: 298, to: 183, method: { type: \"level\", level: 30 } },\n { from: 183, to: 184, method: { type: \"level\", level: 18 } },\n ],\n },\n {\n id: 91,\n links: [{ from: 438, to: 185, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 92,\n links: [\n { from: 187, to: 188, method: { type: \"level\", level: 18 } },\n { from: 188, to: 189, method: { type: \"level\", level: 27 } },\n ],\n },\n {\n id: 93,\n links: [{ from: 190, to: 424, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 94,\n links: [{ from: 191, to: 192, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 95,\n links: [{ from: 193, to: 469, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 97,\n links: [{ from: 198, to: 430, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 98,\n links: [{ from: 200, to: 429, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 100,\n links: [{ from: 360, to: 202, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 102,\n links: [{ from: 204, to: 205, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 104,\n links: [{ from: 207, to: 472, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 105,\n links: [{ from: 209, to: 210, method: { type: \"level\", level: 23 } }],\n },\n {\n id: 106,\n links: [{ from: 211, to: 904, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 109,\n links: [\n { from: 215, to: 461, method: { type: \"level\", level: 30 } },\n { from: 215, to: 903, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 110,\n links: [\n { from: 216, to: 217, method: { type: \"level\", level: 30 } },\n { from: 217, to: 901, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 111,\n links: [{ from: 218, to: 219, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 112,\n links: [\n { from: 220, to: 221, method: { type: \"level\", level: 33 } },\n { from: 221, to: 473, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 113,\n links: [{ from: 222, to: 864, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 114,\n links: [{ from: 223, to: 224, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 116,\n links: [{ from: 458, to: 226, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 118,\n links: [{ from: 228, to: 229, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 119,\n links: [{ from: 231, to: 232, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 120,\n links: [{ from: 234, to: 899, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 126,\n links: [\n { from: 246, to: 247, method: { type: \"level\", level: 30 } },\n { from: 247, to: 248, method: { type: \"level\", level: 55 } },\n ],\n },\n {\n id: 130,\n links: [\n { from: 252, to: 253, method: { type: \"level\", level: 16 } },\n { from: 253, to: 254, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 131,\n links: [\n { from: 255, to: 256, method: { type: \"level\", level: 16 } },\n { from: 256, to: 257, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 132,\n links: [\n { from: 258, to: 259, method: { type: \"level\", level: 16 } },\n { from: 259, to: 260, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 133,\n links: [{ from: 261, to: 262, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 134,\n links: [\n { from: 263, to: 264, method: { type: \"level\", level: 20 } },\n { from: 264, to: 862, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 135,\n links: [\n { from: 265, to: 266, method: { type: \"level\", level: 7 } },\n { from: 266, to: 267, method: { type: \"level\", level: 10 } },\n { from: 265, to: 268, method: { type: \"level\", level: 7 } },\n { from: 268, to: 269, method: { type: \"level\", level: 10 } },\n ],\n },\n {\n id: 136,\n links: [\n { from: 270, to: 271, method: { type: \"level\", level: 14 } },\n { from: 271, to: 272, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 137,\n links: [\n { from: 273, to: 274, method: { type: \"level\", level: 14 } },\n { from: 274, to: 275, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 138,\n links: [{ from: 276, to: 277, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 139,\n links: [{ from: 278, to: 279, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 140,\n links: [\n { from: 280, to: 281, method: { type: \"level\", level: 20 } },\n { from: 281, to: 282, method: { type: \"level\", level: 30 } },\n { from: 281, to: 475, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 141,\n links: [{ from: 283, to: 284, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 142,\n links: [{ from: 285, to: 286, method: { type: \"level\", level: 23 } }],\n },\n {\n id: 143,\n links: [\n { from: 287, to: 288, method: { type: \"level\", level: 18 } },\n { from: 288, to: 289, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 144,\n links: [\n { from: 290, to: 291, method: { type: \"level\", level: 20 } },\n { from: 290, to: 292, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 145,\n links: [\n { from: 293, to: 294, method: { type: \"level\", level: 20 } },\n { from: 294, to: 295, method: { type: \"level\", level: 40 } },\n ],\n },\n {\n id: 146,\n links: [{ from: 296, to: 297, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 147,\n links: [{ from: 299, to: 476, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 148,\n links: [{ from: 300, to: 301, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 151,\n links: [\n { from: 304, to: 305, method: { type: \"level\", level: 32 } },\n { from: 305, to: 306, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 152,\n links: [{ from: 307, to: 308, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 153,\n links: [{ from: 309, to: 310, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 158,\n links: [\n { from: 406, to: 315, method: { type: \"level\", level: 30 } },\n { from: 315, to: 407, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 159,\n links: [{ from: 316, to: 317, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 160,\n links: [{ from: 318, to: 319, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 161,\n links: [{ from: 320, to: 321, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 162,\n links: [{ from: 322, to: 323, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 164,\n links: [{ from: 325, to: 326, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 166,\n links: [\n { from: 328, to: 329, method: { type: \"level\", level: 35 } },\n { from: 329, to: 330, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 167,\n links: [{ from: 331, to: 332, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 168,\n links: [{ from: 333, to: 334, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 173,\n links: [{ from: 339, to: 340, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 174,\n links: [{ from: 341, to: 342, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 175,\n links: [{ from: 343, to: 344, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 176,\n links: [{ from: 345, to: 346, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 177,\n links: [{ from: 347, to: 348, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 178,\n links: [{ from: 349, to: 350, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 181,\n links: [{ from: 353, to: 354, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 182,\n links: [\n { from: 355, to: 356, method: { type: \"level\", level: 37 } },\n { from: 356, to: 477, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 184,\n links: [{ from: 433, to: 358, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 186,\n links: [\n { from: 361, to: 362, method: { type: \"level\", level: 42 } },\n { from: 361, to: 478, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 187,\n links: [\n { from: 363, to: 364, method: { type: \"level\", level: 32 } },\n { from: 364, to: 365, method: { type: \"level\", level: 44 } },\n ],\n },\n {\n id: 188,\n links: [\n { from: 366, to: 367, method: { type: \"level\", level: 30 } },\n { from: 366, to: 368, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 191,\n links: [\n { from: 371, to: 372, method: { type: \"level\", level: 30 } },\n { from: 372, to: 373, method: { type: \"level\", level: 50 } },\n ],\n },\n {\n id: 192,\n links: [\n { from: 374, to: 375, method: { type: \"level\", level: 20 } },\n { from: 375, to: 376, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 203,\n links: [\n { from: 387, to: 388, method: { type: \"level\", level: 18 } },\n { from: 388, to: 389, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 204,\n links: [\n { from: 390, to: 391, method: { type: \"level\", level: 14 } },\n { from: 391, to: 392, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 205,\n links: [\n { from: 393, to: 394, method: { type: \"level\", level: 16 } },\n { from: 394, to: 395, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 206,\n links: [\n { from: 396, to: 397, method: { type: \"level\", level: 14 } },\n { from: 397, to: 398, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 207,\n links: [{ from: 399, to: 400, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 208,\n links: [{ from: 401, to: 402, method: { type: \"level\", level: 10 } }],\n },\n {\n id: 209,\n links: [\n { from: 403, to: 404, method: { type: \"level\", level: 15 } },\n { from: 404, to: 405, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 211,\n links: [{ from: 408, to: 409, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 212,\n links: [{ from: 410, to: 411, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 213,\n links: [\n { from: 412, to: 413, method: { type: \"level\", level: 20 } },\n { from: 412, to: 414, method: { type: \"level\", level: 20 } },\n ],\n },\n {\n id: 214,\n links: [{ from: 415, to: 416, method: { type: \"level\", level: 21 } }],\n },\n {\n id: 216,\n links: [{ from: 418, to: 419, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 217,\n links: [{ from: 420, to: 421, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 218,\n links: [{ from: 422, to: 423, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 219,\n links: [{ from: 425, to: 426, method: { type: \"level\", level: 28 } }],\n },\n {\n id: 220,\n links: [{ from: 427, to: 428, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 221,\n links: [{ from: 431, to: 432, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 223,\n links: [{ from: 434, to: 435, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 224,\n links: [{ from: 436, to: 437, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 230,\n links: [\n { from: 443, to: 444, method: { type: \"level\", level: 24 } },\n { from: 444, to: 445, method: { type: \"level\", level: 48 } },\n ],\n },\n {\n id: 232,\n links: [{ from: 447, to: 448, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 233,\n links: [{ from: 449, to: 450, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 234,\n links: [{ from: 451, to: 452, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 235,\n links: [{ from: 453, to: 454, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 237,\n links: [{ from: 456, to: 457, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 239,\n links: [{ from: 459, to: 460, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 250,\n links: [{ from: 489, to: 490, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 256,\n links: [\n { from: 495, to: 496, method: { type: \"level\", level: 17 } },\n { from: 496, to: 497, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 257,\n links: [\n { from: 498, to: 499, method: { type: \"level\", level: 17 } },\n { from: 499, to: 500, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 258,\n links: [\n { from: 501, to: 502, method: { type: \"level\", level: 17 } },\n { from: 502, to: 503, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 259,\n links: [{ from: 504, to: 505, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 260,\n links: [\n { from: 506, to: 507, method: { type: \"level\", level: 16 } },\n { from: 507, to: 508, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 261,\n links: [{ from: 509, to: 510, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 262,\n links: [{ from: 511, to: 512, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 263,\n links: [{ from: 513, to: 514, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 264,\n links: [{ from: 515, to: 516, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 265,\n links: [{ from: 517, to: 518, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 266,\n links: [\n { from: 519, to: 520, method: { type: \"level\", level: 21 } },\n { from: 520, to: 521, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 267,\n links: [{ from: 522, to: 523, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 268,\n links: [\n { from: 524, to: 525, method: { type: \"level\", level: 25 } },\n { from: 525, to: 526, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 269,\n links: [{ from: 527, to: 528, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 270,\n links: [{ from: 529, to: 530, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 272,\n links: [\n { from: 532, to: 533, method: { type: \"level\", level: 25 } },\n { from: 533, to: 534, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 273,\n links: [\n { from: 535, to: 536, method: { type: \"level\", level: 25 } },\n { from: 536, to: 537, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 276,\n links: [\n { from: 540, to: 541, method: { type: \"level\", level: 20 } },\n { from: 541, to: 542, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 277,\n links: [\n { from: 543, to: 544, method: { type: \"level\", level: 22 } },\n { from: 544, to: 545, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 278,\n links: [{ from: 546, to: 547, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 279,\n links: [{ from: 548, to: 549, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 280,\n links: [{ from: 550, to: 902, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 281,\n links: [\n { from: 551, to: 552, method: { type: \"level\", level: 29 } },\n { from: 552, to: 553, method: { type: \"level\", level: 40 } },\n ],\n },\n {\n id: 282,\n links: [{ from: 554, to: 555, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 284,\n links: [{ from: 557, to: 558, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 285,\n links: [{ from: 559, to: 560, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 287,\n links: [\n { from: 562, to: 563, method: { type: \"level\", level: 34 } },\n { from: 562, to: 867, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 288,\n links: [{ from: 564, to: 565, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 289,\n links: [{ from: 566, to: 567, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 290,\n links: [{ from: 568, to: 569, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 291,\n links: [{ from: 570, to: 571, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 292,\n links: [{ from: 572, to: 573, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 293,\n links: [\n { from: 574, to: 575, method: { type: \"level\", level: 32 } },\n { from: 575, to: 576, method: { type: \"level\", level: 41 } },\n ],\n },\n {\n id: 294,\n links: [\n { from: 577, to: 578, method: { type: \"level\", level: 32 } },\n { from: 578, to: 579, method: { type: \"level\", level: 41 } },\n ],\n },\n {\n id: 295,\n links: [{ from: 580, to: 581, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 296,\n links: [\n { from: 582, to: 583, method: { type: \"level\", level: 35 } },\n { from: 583, to: 584, method: { type: \"level\", level: 47 } },\n ],\n },\n {\n id: 297,\n links: [{ from: 585, to: 586, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 299,\n links: [{ from: 588, to: 589, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 300,\n links: [{ from: 590, to: 591, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 301,\n links: [{ from: 592, to: 593, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 303,\n links: [{ from: 595, to: 596, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 304,\n links: [{ from: 597, to: 598, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 305,\n links: [\n { from: 599, to: 600, method: { type: \"level\", level: 38 } },\n { from: 600, to: 601, method: { type: \"level\", level: 49 } },\n ],\n },\n {\n id: 306,\n links: [\n { from: 602, to: 603, method: { type: \"level\", level: 39 } },\n { from: 603, to: 604, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 307,\n links: [{ from: 605, to: 606, method: { type: \"level\", level: 42 } }],\n },\n {\n id: 308,\n links: [\n { from: 607, to: 608, method: { type: \"level\", level: 41 } },\n { from: 608, to: 609, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 309,\n links: [\n { from: 610, to: 611, method: { type: \"level\", level: 38 } },\n { from: 611, to: 612, method: { type: \"level\", level: 48 } },\n ],\n },\n {\n id: 310,\n links: [{ from: 613, to: 614, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 312,\n links: [{ from: 616, to: 617, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 314,\n links: [{ from: 619, to: 620, method: { type: \"level\", level: 50 } }],\n },\n {\n id: 316,\n links: [{ from: 622, to: 623, method: { type: \"level\", level: 43 } }],\n },\n {\n id: 319,\n links: [{ from: 627, to: 628, method: { type: \"level\", level: 54 } }],\n },\n {\n id: 320,\n links: [{ from: 629, to: 630, method: { type: \"level\", level: 54 } }],\n },\n {\n id: 323,\n links: [\n { from: 633, to: 634, method: { type: \"level\", level: 50 } },\n { from: 634, to: 635, method: { type: \"level\", level: 64 } },\n ],\n },\n {\n id: 324,\n links: [{ from: 636, to: 637, method: { type: \"level\", level: 59 } }],\n },\n {\n id: 337,\n links: [\n { from: 650, to: 651, method: { type: \"level\", level: 16 } },\n { from: 651, to: 652, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 338,\n links: [\n { from: 653, to: 654, method: { type: \"level\", level: 16 } },\n { from: 654, to: 655, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 339,\n links: [\n { from: 656, to: 657, method: { type: \"level\", level: 16 } },\n { from: 657, to: 658, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 340,\n links: [{ from: 659, to: 660, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 341,\n links: [\n { from: 661, to: 662, method: { type: \"level\", level: 17 } },\n { from: 662, to: 663, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 342,\n links: [\n { from: 664, to: 665, method: { type: \"level\", level: 9 } },\n { from: 665, to: 666, method: { type: \"level\", level: 12 } },\n ],\n },\n {\n id: 343,\n links: [{ from: 667, to: 668, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 344,\n links: [\n { from: 669, to: 670, method: { type: \"level\", level: 19 } },\n { from: 670, to: 671, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 345,\n links: [{ from: 672, to: 673, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 346,\n links: [{ from: 674, to: 675, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 348,\n links: [{ from: 677, to: 678, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 349,\n links: [\n { from: 679, to: 680, method: { type: \"level\", level: 35 } },\n { from: 680, to: 681, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 350,\n links: [{ from: 682, to: 683, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 351,\n links: [{ from: 684, to: 685, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 352,\n links: [{ from: 686, to: 687, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 353,\n links: [{ from: 688, to: 689, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 354,\n links: [{ from: 690, to: 691, method: { type: \"level\", level: 48 } }],\n },\n {\n id: 355,\n links: [{ from: 692, to: 693, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 356,\n links: [{ from: 694, to: 695, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 357,\n links: [{ from: 696, to: 697, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 358,\n links: [{ from: 698, to: 699, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 362,\n links: [\n { from: 704, to: 705, method: { type: \"level\", level: 40 } },\n { from: 705, to: 706, method: { type: \"level\", level: 50 } },\n ],\n },\n {\n id: 364,\n links: [{ from: 708, to: 709, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 365,\n links: [{ from: 710, to: 711, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 366,\n links: [{ from: 712, to: 713, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 367,\n links: [{ from: 714, to: 715, method: { type: \"level\", level: 48 } }],\n },\n {\n id: 374,\n links: [\n { from: 722, to: 723, method: { type: \"level\", level: 17 } },\n { from: 723, to: 724, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 375,\n links: [\n { from: 725, to: 726, method: { type: \"level\", level: 17 } },\n { from: 726, to: 727, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 376,\n links: [\n { from: 728, to: 729, method: { type: \"level\", level: 17 } },\n { from: 729, to: 730, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 377,\n links: [\n { from: 731, to: 732, method: { type: \"level\", level: 14 } },\n { from: 732, to: 733, method: { type: \"level\", level: 28 } },\n ],\n },\n {\n id: 378,\n links: [{ from: 734, to: 735, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 379,\n links: [\n { from: 736, to: 737, method: { type: \"level\", level: 20 } },\n { from: 737, to: 738, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 380,\n links: [{ from: 739, to: 740, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 382,\n links: [{ from: 742, to: 743, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 383,\n links: [{ from: 744, to: 745, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 385,\n links: [{ from: 747, to: 748, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 386,\n links: [{ from: 749, to: 750, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 387,\n links: [{ from: 751, to: 752, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 388,\n links: [{ from: 753, to: 754, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 389,\n links: [{ from: 755, to: 756, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 390,\n links: [{ from: 757, to: 758, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 391,\n links: [{ from: 759, to: 760, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 392,\n links: [\n { from: 761, to: 762, method: { type: \"level\", level: 18 } },\n { from: 762, to: 763, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 396,\n links: [{ from: 767, to: 768, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 397,\n links: [{ from: 769, to: 770, method: { type: \"level\", level: 42 } }],\n },\n {\n id: 399,\n links: [{ from: 772, to: 773, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 408,\n links: [\n { from: 782, to: 783, method: { type: \"level\", level: 35 } },\n { from: 783, to: 784, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 413,\n links: [\n { from: 789, to: 790, method: { type: \"level\", level: 43 } },\n { from: 790, to: 791, method: { type: \"level\", level: 53 } },\n { from: 790, to: 792, method: { type: \"level\", level: 53 } },\n ],\n },\n {\n id: 424,\n links: [{ from: 803, to: 804, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 430,\n links: [\n { from: 810, to: 811, method: { type: \"level\", level: 16 } },\n { from: 811, to: 812, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 431,\n links: [\n { from: 813, to: 814, method: { type: \"level\", level: 16 } },\n { from: 814, to: 815, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 432,\n links: [\n { from: 816, to: 817, method: { type: \"level\", level: 16 } },\n { from: 817, to: 818, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 433,\n links: [{ from: 819, to: 820, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 434,\n links: [\n { from: 821, to: 822, method: { type: \"level\", level: 18 } },\n { from: 822, to: 823, method: { type: \"level\", level: 38 } },\n ],\n },\n {\n id: 435,\n links: [\n { from: 824, to: 825, method: { type: \"level\", level: 10 } },\n { from: 825, to: 826, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 436,\n links: [{ from: 827, to: 828, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 437,\n links: [{ from: 829, to: 830, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 438,\n links: [{ from: 831, to: 832, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 439,\n links: [{ from: 833, to: 834, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 440,\n links: [{ from: 835, to: 836, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 441,\n links: [\n { from: 837, to: 838, method: { type: \"level\", level: 18 } },\n { from: 838, to: 839, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 443,\n links: [{ from: 843, to: 844, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 445,\n links: [{ from: 846, to: 847, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 446,\n links: [{ from: 848, to: 849, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 447,\n links: [{ from: 850, to: 851, method: { type: \"level\", level: 28 } }],\n },\n {\n id: 448,\n links: [{ from: 852, to: 853, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 449,\n links: [{ from: 854, to: 855, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 450,\n links: [\n { from: 856, to: 857, method: { type: \"level\", level: 32 } },\n { from: 857, to: 858, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 451,\n links: [\n { from: 859, to: 860, method: { type: \"level\", level: 32 } },\n { from: 860, to: 861, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 452,\n links: [{ from: 868, to: 869, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 455,\n links: [{ from: 872, to: 873, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 460,\n links: [{ from: 878, to: 879, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 466,\n links: [\n { from: 885, to: 886, method: { type: \"level\", level: 50 } },\n { from: 886, to: 887, method: { type: \"level\", level: 60 } },\n ],\n },\n {\n id: 470,\n links: [{ from: 891, to: 892, method: { type: \"level\", level: 30 } }],\n },\n] as const satisfies readonly EvolutionChain[];\n", "/**\n * Evolution engine for Claudemon.\n * Handles evolution eligibility checks, stat-based branching (Eevee),\n * badge earning, and the transformation of owned Pokemon.\n */\n\nimport type {\n EvolutionChain,\n EvolutionLink,\n EvolutionMethod,\n OwnedPokemon,\n PlayerState,\n BadgeType,\n BadgeCondition,\n CodingStat,\n CodingStats,\n BaseStats,\n} from \"./types.js\";\nimport { BASE_STAT_TO_CODING } from \"./types.js\";\nimport { EVOLUTION_CHAINS } from \"./evolution-data.js\";\nimport { POKEMON_BY_ID } from \"./pokemon-data.js\";\nimport { BADGES } from \"./constants.js\";\n\n// \u2500\u2500 Eevee Branching Constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Minimum level required for Eevee stat-based evolution. */\nconst EEVEE_MIN_LEVEL = 25;\n\n/** Pokemon ID for Eevee. */\nconst EEVEE_ID = 133;\n\n/** Maps a dominant coding stat to the corresponding Eeveelution ID. */\nconst EEVEE_STAT_MAP: Readonly<Record<string, number>> = {\n debugging: 136, // Flareon\n stability: 134, // Vaporeon\n velocity: 135, // Jolteon\n} as const;\n\n/** The three stats used for Eevee branching. */\nconst EEVEE_BRANCH_STATS: readonly CodingStat[] = [\"debugging\", \"stability\", \"velocity\"];\n\n// \u2500\u2500 Precomputed Lookup Index \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Maps every Pokemon ID that appears in an evolution chain\n * to the chain that contains it. Built once at module load.\n */\nconst chainByPokemonId: ReadonlyMap<number, EvolutionChain> = buildChainIndex();\n\nfunction buildChainIndex(): Map<number, EvolutionChain> {\n const index = new Map<number, EvolutionChain>();\n for (const chain of EVOLUTION_CHAINS) {\n for (const link of chain.links) {\n index.set(link.from, chain);\n index.set(link.to, chain);\n }\n }\n return index;\n}\n\n// \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Find the evolution chain that contains a given Pokemon.\n * Returns null if the Pokemon has no evolution chain or the chain has no links.\n */\nexport function findEvolutionChain(pokemonId: number): EvolutionChain | null {\n return chainByPokemonId.get(pokemonId) ?? null;\n}\n\n/**\n * Get all possible evolution links FROM a given Pokemon.\n * A Pokemon might have multiple paths (e.g., Eevee has 3).\n * Returns an empty array if there are no outgoing links.\n */\nexport function getEvolutionLinks(pokemonId: number): readonly EvolutionLink[] {\n const chain = findEvolutionChain(pokemonId);\n if (!chain) {\n return [];\n }\n return chain.links.filter((link) => link.from === pokemonId);\n}\n\n/**\n * Check if a Pokemon is eligible to evolve right now.\n * Evaluates the evolution method against current state.\n * Returns the first eligible EvolutionLink, or null.\n *\n * For Eevee (stat-based): returns the link matching the dominant stat.\n * If stats are tied, returns null (user must boost one stat to break the tie).\n */\nexport function checkEvolution(pokemon: OwnedPokemon, state: PlayerState): EvolutionLink | null {\n const links = getEvolutionLinks(pokemon.pokemonId);\n if (links.length === 0) {\n return null;\n }\n\n // Special handling for Eevee: stat-based branching with tie-breaking\n if (pokemon.pokemonId === EEVEE_ID) {\n return checkEeveeEvolution(pokemon, state);\n }\n\n // Standard path: return the first satisfied link\n for (const link of links) {\n if (isMethodSatisfied(link.method, pokemon, state)) {\n return link;\n }\n }\n\n return null;\n}\n\n/**\n * Check a specific evolution method against current state.\n */\nfunction isMethodSatisfied(\n method: EvolutionMethod,\n pokemon: OwnedPokemon,\n state: PlayerState,\n): boolean {\n switch (method.type) {\n case \"level\":\n return pokemon.level >= method.level;\n\n case \"badge\":\n return state.badges.includes(method.badge);\n\n case \"collaboration\":\n return state.counters.prs_merged >= 10;\n\n case \"stat\":\n return (\n pokemon.level >= EEVEE_MIN_LEVEL && pokemon.codingStats[method.stat] >= method.minValue\n );\n }\n}\n\n/**\n * Apply an evolution: transform the Pokemon to its new species.\n * - Updates pokemonId to the target species\n * - Recalculates coding stats with new base stats (preserves activity bonuses)\n * - Sets evolvedAt timestamp\n * - Returns the new species name and types for display\n *\n * Does not change: nickname, happiness, totalXp, currentXp, level, shiny, isStarter, id.\n */\nexport function applyEvolution(\n pokemon: OwnedPokemon,\n targetId: number,\n): { newName: string; newTypes: readonly [string, string?] } {\n const oldSpecies = POKEMON_BY_ID.get(pokemon.pokemonId);\n const newSpecies = POKEMON_BY_ID.get(targetId);\n\n if (!oldSpecies) {\n throw new Error(`Unknown source Pokemon ID: ${pokemon.pokemonId}`);\n }\n if (!newSpecies) {\n throw new Error(`Unknown target Pokemon ID: ${targetId}`);\n }\n\n // Preserve activity bonuses: subtract old base contribution, add new base contribution\n const updatedStats = recalculateStats(\n pokemon.codingStats,\n oldSpecies.baseStats,\n newSpecies.baseStats,\n );\n\n pokemon.pokemonId = targetId;\n pokemon.codingStats = updatedStats;\n pokemon.evolvedAt = new Date().toISOString();\n\n return {\n newName: newSpecies.name,\n newTypes: newSpecies.types,\n };\n}\n\n/**\n * Get the dominant coding stat for Eevee branching.\n * Only considers debugging, stability, and velocity.\n * Returns null if there is a tie between the top stats.\n */\nexport function getDominantStat(stats: CodingStats): CodingStat | null {\n let maxValue = -Infinity;\n let dominant: CodingStat | null = null;\n let tied = false;\n\n for (const stat of EEVEE_BRANCH_STATS) {\n const value = stats[stat];\n if (value > maxValue) {\n maxValue = value;\n dominant = stat;\n tied = false;\n } else if (value === maxValue) {\n tied = true;\n }\n }\n\n return tied ? null : dominant;\n}\n\n/** Check if a specific badge has been earned based on player state. */\nexport function isBadgeEarned(badge: BadgeType, state: PlayerState): boolean {\n const badgeDef = BADGES.find((b) => b.type === badge);\n if (!badgeDef) return false;\n return isBadgeConditionMet(badgeDef.condition, state);\n}\n\n/**\n * Get all badges the player has earned but not yet collected.\n * Compares earned conditions against state.badges array.\n */\nexport function getNewlyEarnedBadges(state: PlayerState): BadgeType[] {\n const newBadges: BadgeType[] = [];\n\n for (const badgeDef of BADGES) {\n // Skip badges the player already has\n if (state.badges.includes(badgeDef.type)) {\n continue;\n }\n if (isBadgeConditionMet(badgeDef.condition, state)) {\n newBadges.push(badgeDef.type);\n }\n }\n\n return newBadges;\n}\n\n// \u2500\u2500 Internal Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Eevee-specific evolution check.\n * Requires level >= 25 and a clear dominant stat (no ties).\n */\nfunction checkEeveeEvolution(pokemon: OwnedPokemon, state: PlayerState): EvolutionLink | null {\n if (pokemon.level < EEVEE_MIN_LEVEL) {\n return null;\n }\n\n const dominant = getDominantStat(pokemon.codingStats);\n if (dominant === null) {\n return null;\n }\n\n const targetId = EEVEE_STAT_MAP[dominant];\n if (targetId === undefined) {\n return null;\n }\n\n // Find the matching link and verify the stat threshold is met\n const links = getEvolutionLinks(pokemon.pokemonId);\n const matchingLink = links.find((link) => link.to === targetId);\n if (!matchingLink) {\n return null;\n }\n\n if (isMethodSatisfied(matchingLink.method, pokemon, state)) {\n return matchingLink;\n }\n\n return null;\n}\n\n/**\n * Evaluate a badge condition against player state.\n */\nfunction isBadgeConditionMet(condition: BadgeCondition, state: PlayerState): boolean {\n switch (condition.type) {\n case \"counter\":\n return state.counters[condition.counter] >= condition.threshold;\n case \"streak\":\n return state.streak.currentStreak >= condition.minDays;\n }\n}\n\n/**\n * Recalculate coding stats when evolving to a new species.\n * Extracts activity bonuses from current stats by removing the old base\n * contribution, then applies the new base contribution.\n *\n * Formula per stat:\n * activityBonus = currentStat - floor(oldBaseStat * 0.5)\n * newStat = floor(newBaseStat * 0.5) + activityBonus\n *\n * Activity bonuses are floored at 0 to prevent negative values.\n */\nfunction recalculateStats(\n currentStats: CodingStats,\n oldBase: BaseStats,\n newBase: BaseStats,\n): CodingStats {\n const result: CodingStats = {\n stamina: 0,\n debugging: 0,\n stability: 0,\n velocity: 0,\n wisdom: 0,\n };\n\n for (const [baseStat, codingStat] of Object.entries(BASE_STAT_TO_CODING) as Array<\n [keyof BaseStats, CodingStat]\n >) {\n const oldBaseContribution = Math.floor(oldBase[baseStat] * 0.5);\n const activityBonus = Math.max(0, currentStats[codingStat] - oldBaseContribution);\n const newBaseContribution = Math.floor(newBase[baseStat] * 0.5);\n result[codingStat] = newBaseContribution + activityBonus;\n }\n\n return result;\n}\n", "/**\n * Pre-built encounter pools \u2014 computed once at module load.\n * Maps each PokemonType to base-stage Pokemon IDs grouped by rarity.\n */\n\nimport type { PokemonType, RarityTier } from \"./types.js\";\nimport { POKEDEX } from \"./pokemon-data.js\";\nimport { EVOLUTION_CHAINS } from \"./evolution-data.js\";\n\n// \u2500\u2500 Identify evolved Pokemon (targets of any evolution link) \u2500\u2500\n\nconst EVOLVED_IDS: ReadonlySet<number> = new Set(\n EVOLUTION_CHAINS.flatMap((chain) => chain.links.map((link) => link.to)),\n);\n\n/** Returns true if the Pokemon is the base stage of its evolution chain. */\nfunction isBaseStage(pokemonId: number): boolean {\n return !EVOLVED_IDS.has(pokemonId);\n}\n\n// \u2500\u2500 Rarity tiers eligible for wild encounters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst WILD_RARITIES: ReadonlySet<RarityTier> = new Set([\"common\", \"uncommon\", \"rare\"]);\n\n// \u2500\u2500 Build pools at module load \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ninterface RarityPool {\n readonly common: readonly number[];\n readonly uncommon: readonly number[];\n readonly rare: readonly number[];\n}\n\nfunction buildTypePools(): ReadonlyMap<PokemonType, RarityPool> {\n const pools = new Map<PokemonType, { common: number[]; uncommon: number[]; rare: number[] }>();\n\n for (const pokemon of POKEDEX) {\n // Only base-stage Pokemon appear in wild encounters\n if (!isBaseStage(pokemon.id)) continue;\n\n // Legendary and mythical never appear in wild encounters\n if (!WILD_RARITIES.has(pokemon.rarity)) continue;\n\n for (const pokemonType of pokemon.types) {\n if (pokemonType === undefined) continue;\n\n let pool = pools.get(pokemonType);\n if (!pool) {\n pool = { common: [], uncommon: [], rare: [] };\n pools.set(pokemonType, pool);\n }\n\n const rarity = pokemon.rarity as \"common\" | \"uncommon\" | \"rare\";\n pool[rarity].push(pokemon.id);\n }\n }\n\n // Freeze all inner arrays for immutability\n const frozen = new Map<PokemonType, RarityPool>();\n for (const [type, pool] of pools) {\n frozen.set(type, {\n common: Object.freeze(pool.common),\n uncommon: Object.freeze(pool.uncommon),\n rare: Object.freeze(pool.rare),\n });\n }\n\n return frozen;\n}\n\n/** Map of PokemonType to Pokemon IDs of that type, grouped by rarity. */\nexport const TYPE_POOLS: ReadonlyMap<PokemonType, RarityPool> = buildTypePools();\n", "/**\n * Wild encounter system.\n * Pokemon appear based on coding activity type, streak bonuses,\n * tool diversity, and time-of-day biases. Catch eligibility is\n * determined by the active Pokemon's stats and level.\n */\n\nimport type {\n XpEventType,\n PokemonType,\n PlayerState,\n WildEncounter,\n OwnedPokemon,\n CatchCondition,\n CodingStat,\n RarityTier,\n} from \"./types.js\";\nimport { ENCOUNTER_THRESHOLDS } from \"./constants.js\";\nimport type { EncounterSpeed } from \"./constants.js\";\nimport { POKEMON_BY_ID } from \"./pokemon-data.js\";\nimport { TYPE_POOLS } from \"./encounter-pool.js\";\n\n// \u2500\u2500 Activity to Pokemon Type Mapping \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst ENCOUNTER_TYPE_MAP: Readonly<Record<XpEventType, readonly PokemonType[]>> = {\n commit: [\"Normal\", \"Flying\"],\n test_pass: [\"Fighting\", \"Normal\"],\n test_written: [\"Fighting\", \"Normal\"],\n build_success: [\"Fire\", \"Rock\"],\n bug_fix: [\"Bug\", \"Poison\"],\n lint_fix: [\"Bug\", \"Poison\"],\n file_create: [\"Normal\", \"Ground\"],\n file_edit: [\"Normal\", \"Ground\"],\n search: [\"Flying\", \"Ground\"],\n large_refactor: [\"Psychic\", \"Dragon\"],\n session_start: [\"Grass\", \"Fairy\"],\n daily_streak: [\"Water\", \"Electric\"],\n pet: [\"Normal\", \"Fairy\"],\n};\n\n/** Maps an XP event type to the Pokemon types that can appear. */\nexport function getEncounterTypes(eventType: XpEventType): readonly PokemonType[] {\n return ENCOUNTER_TYPE_MAP[eventType];\n}\n\n// \u2500\u2500 Encounter Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface EncounterContext {\n xpSinceLastEncounter: number;\n encounterSpeed: EncounterSpeed;\n currentStreak: number;\n recentToolTypes: string[]; // tool types used recently\n currentHour: number; // 0-23\n}\n\n// \u2500\u2500 Encounter Trigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Check if a wild encounter should trigger based on XP earned,\n * encounter speed setting, and streak bonus.\n * Streak bonus: 7+ day streak halves the threshold.\n */\nexport function shouldTriggerEncounter(ctx: EncounterContext): boolean {\n const threshold = ENCOUNTER_THRESHOLDS[ctx.encounterSpeed];\n\n // Streak bonus: 7+ day streak = halve the threshold\n const streakMultiplier = ctx.currentStreak >= 7 ? 0.5 : 1;\n const effectiveThreshold = Math.floor(threshold * streakMultiplier);\n\n if (ctx.xpSinceLastEncounter < effectiveThreshold) return false;\n\n return true;\n}\n\n/** Check for bonus encounter (10% chance after a regular encounter). */\nexport function shouldBonusEncounter(): boolean {\n return Math.random() < 0.1;\n}\n\n/** Check for activity diversity bonus (3+ unique tool types in recent history). */\nexport function shouldDiversityBonus(recentToolTypes: string[]): boolean {\n const uniqueTypes = new Set(recentToolTypes);\n return uniqueTypes.size >= 3;\n}\n\n// \u2500\u2500 Time-of-Day Bias \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Get time-of-day type biases for encounter generation. */\nexport function getTimeOfDayBias(hour: number): PokemonType[] {\n if (hour >= 22 || hour < 5) return [\"Ghost\", \"Dark\"]; // Night: Ghost/Dark types\n if (hour >= 5 && hour < 9) return [\"Grass\", \"Fairy\"]; // Morning: Grass/Fairy types\n if (hour >= 12 && hour < 14) return [\"Fire\", \"Steel\"]; // Midday: Fire/Steel types\n if (hour >= 17 && hour < 20) return [\"Water\", \"Flying\"]; // Evening: Water types\n return []; // No bias\n}\n\n// \u2500\u2500 Rarity Weights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Relative weights for rarity-based selection. Higher = more likely to appear. */\nconst RARITY_WEIGHTS: Readonly<Record<\"common\" | \"uncommon\" | \"rare\", number>> = {\n common: 70,\n uncommon: 25,\n rare: 5,\n};\n\n// \u2500\u2500 Catch Condition Mapping \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Stat most relevant to each Pokemon type for catch condition evaluation.\n * Used for uncommon+ encounters to determine the required stat.\n */\nconst TYPE_TO_STAT: Readonly<Record<PokemonType, CodingStat>> = {\n Normal: \"velocity\",\n Fire: \"debugging\",\n Water: \"stability\",\n Electric: \"velocity\",\n Grass: \"stamina\",\n Ice: \"stability\",\n Fighting: \"debugging\",\n Poison: \"debugging\",\n Ground: \"stability\",\n Flying: \"velocity\",\n Psychic: \"wisdom\",\n Bug: \"debugging\",\n Rock: \"stability\",\n Ghost: \"wisdom\",\n Dragon: \"wisdom\",\n Steel: \"stability\",\n Dark: \"debugging\",\n Fairy: \"wisdom\",\n};\n\n/** Minimum stat thresholds by rarity tier. */\nconst RARITY_STAT_THRESHOLD: Readonly<Record<RarityTier, number>> = {\n common: 0,\n uncommon: 20,\n rare: 40,\n legendary: 60,\n mythical: 80,\n};\n\n/** Minimum Pokemon level required to catch by rarity tier. */\nconst RARITY_LEVEL_THRESHOLD: Readonly<Record<RarityTier, number>> = {\n common: 1,\n uncommon: 10,\n rare: 25,\n legendary: 50,\n mythical: 75,\n};\n\n// \u2500\u2500 Catch Condition \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Get the catch condition for a Pokemon based on its rarity. */\nexport function getCatchCondition(pokemonId: number): CatchCondition {\n const pokemon = POKEMON_BY_ID.get(pokemonId);\n if (!pokemon) {\n return { requiredStat: null, minStatValue: 0, requiredLevel: 1 };\n }\n\n const rarity = pokemon.rarity;\n const requiredLevel = RARITY_LEVEL_THRESHOLD[rarity];\n const minStatValue = RARITY_STAT_THRESHOLD[rarity];\n\n // Common Pokemon have no stat requirement\n if (rarity === \"common\") {\n return { requiredStat: null, minStatValue: 0, requiredLevel };\n }\n\n // Use the primary type to determine which stat is required\n const primaryType = pokemon.types[0];\n const requiredStat = TYPE_TO_STAT[primaryType];\n\n return { requiredStat, minStatValue, requiredLevel };\n}\n\n// \u2500\u2500 Encounter Generation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Collect all candidate Pokemon IDs for a set of types, respecting\n * ownership rules and rarity constraints.\n */\nfunction buildCandidatePool(\n types: readonly PokemonType[],\n state: PlayerState,\n): { id: number; weight: number }[] {\n const candidates: { id: number; weight: number }[] = [];\n const seen = new Set<number>();\n\n // Determine the player's starter Pokemon ID\n const starterPokemon = [...state.party, ...state.pcBox].find((p) => p.isStarter);\n const starterPokemonId = starterPokemon?.pokemonId ?? -1;\n\n // Set of already-caught Pokemon IDs (for duplicate filtering)\n const caughtIds = new Set<number>();\n for (const [idStr, entry] of Object.entries(state.pokedex.entries)) {\n if (entry.caught) {\n caughtIds.add(Number(idStr));\n }\n }\n\n for (const pokemonType of types) {\n const pool = TYPE_POOLS.get(pokemonType);\n if (!pool) continue;\n\n for (const rarity of [\"common\", \"uncommon\", \"rare\"] as const) {\n const ids = pool[rarity];\n const weight = RARITY_WEIGHTS[rarity];\n\n for (const id of ids) {\n // Skip if already added from another type overlap\n if (seen.has(id)) continue;\n seen.add(id);\n\n // Exclude the player's starter from wild encounters\n if (id === starterPokemonId) continue;\n\n // Common Pokemon: always available, duplicates allowed\n // Uncommon+: skip if already caught\n if (rarity !== \"common\" && caughtIds.has(id)) continue;\n\n candidates.push({ id, weight });\n }\n }\n }\n\n return candidates;\n}\n\n/**\n * Deterministic pseudo-random number generator seeded by the current second.\n * Uses a simple mulberry32 approach for reproducibility within the same second.\n */\nfunction seededRandom(seed: number): number {\n let t = (seed + 0x6d2b79f5) | 0;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n}\n\n/**\n * Select a Pokemon ID from the weighted candidate pool using a deterministic seed.\n * Returns null if the pool is empty.\n */\nfunction weightedSelect(\n candidates: readonly { id: number; weight: number }[],\n seed: number,\n): number | null {\n if (candidates.length === 0) return null;\n\n const totalWeight = candidates.reduce((sum, c) => sum + c.weight, 0);\n const roll = seededRandom(seed) * totalWeight;\n\n let cumulative = 0;\n for (const candidate of candidates) {\n cumulative += candidate.weight;\n if (roll < cumulative) {\n return candidate.id;\n }\n }\n\n // Fallback to last candidate (floating-point edge case)\n return candidates[candidates.length - 1]!.id;\n}\n\n/**\n * Determine the level of a wild encounter Pokemon.\n * Scales with the player's strongest Pokemon level, with some variance.\n */\nfunction determineEncounterLevel(state: PlayerState, seed: number): number {\n const allPokemon = [...state.party, ...state.pcBox];\n const maxLevel = allPokemon.reduce((max, p) => Math.max(max, p.level), 1);\n\n // Wild Pokemon appear at 60-100% of the player's max level, minimum 2\n const minLevel = Math.max(2, Math.floor(maxLevel * 0.6));\n const range = Math.max(1, maxLevel - minLevel + 1);\n const level = minLevel + Math.floor(seededRandom(seed + 7) * range);\n\n return Math.min(level, 100);\n}\n\n/**\n * Generate a wild encounter based on the activity type.\n * Picks a Pokemon from the matching type pool, weighted by rarity.\n * If time-of-day bias types are provided, there is a 40% chance to\n * use those types instead of the activity-based types.\n * Excludes Pokemon already in the player's party/box (unless common tier).\n * Returns null if no eligible Pokemon found.\n */\nexport function generateEncounter(\n eventType: XpEventType,\n state: PlayerState,\n timeOfDayTypes?: readonly PokemonType[],\n): WildEncounter | null {\n let types = getEncounterTypes(eventType);\n\n // 40% chance to use time-of-day biased types if available\n if (timeOfDayTypes && timeOfDayTypes.length > 0) {\n const seed = Math.floor(Date.now() / 1000);\n const biasRoll = seededRandom(seed + 42);\n if (biasRoll < 0.4) {\n types = timeOfDayTypes;\n }\n }\n\n const candidates = buildCandidatePool(types, state);\n\n if (candidates.length === 0) return null;\n\n const seed = Math.floor(Date.now() / 1000);\n const pokemonId = weightedSelect(candidates, seed);\n\n if (pokemonId === null) return null;\n\n const level = determineEncounterLevel(state, seed);\n const catchCondition = getCatchCondition(pokemonId);\n\n return { pokemonId, level, catchCondition };\n}\n\n// \u2500\u2500 Catch Evaluation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Check if the active Pokemon can catch the encountered Pokemon.\n * Based on catch rate, required stats, and level.\n */\nexport function canCatch(\n encounter: WildEncounter,\n activePokemon: OwnedPokemon,\n): { success: boolean; reason: string } {\n const pokemon = POKEMON_BY_ID.get(encounter.pokemonId);\n if (!pokemon) {\n return { success: false, reason: \"Unknown Pokemon\" };\n }\n\n const { requiredStat, minStatValue, requiredLevel } = encounter.catchCondition;\n\n // Check level requirement\n if (activePokemon.level < requiredLevel) {\n return {\n success: false,\n reason: `Need level ${requiredLevel} to catch ${pokemon.rarity} Pokemon (currently level ${activePokemon.level})`,\n };\n }\n\n // Check stat requirement\n if (requiredStat !== null) {\n const currentStat = activePokemon.codingStats[requiredStat];\n if (currentStat < minStatValue) {\n const primaryType = pokemon.types[0];\n return {\n success: false,\n reason: `Need ${requiredStat.toUpperCase()} at ${minStatValue} to catch ${primaryType} types (currently ${currentStat})`,\n };\n }\n }\n\n // Requirements met \u2014 roll against catch rate\n const seed = Math.floor(Date.now() / 1000);\n const roll = seededRandom(seed + encounter.pokemonId) * 255;\n const success = pokemon.catchRate > roll;\n\n if (success) {\n return { success: true, reason: `Caught ${pokemon.name}!` };\n }\n\n return { success: false, reason: `${pokemon.name} broke free!` };\n}\n", "/**\n * Mood engine for Claudemon.\n * Pure functions that calculate mood based on recent events, time of day,\n * and special triggers (evolution, achievements, catches).\n */\n\nimport type { MoodType, EventCounters } from \"./types.js\";\n\n// \u2500\u2500 Mood Decay Durations (milliseconds) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** How long each mood lasts before decaying back to neutral */\nconst MOOD_DECAY_MS: Record<MoodType, number> = {\n happy: 600_000, // 10 minutes\n worried: 300_000, // 5 minutes\n sleepy: Infinity, // Resets based on time-of-day, not duration\n energetic: 900_000, // 15 minutes\n proud: 600_000, // 10 minutes\n neutral: Infinity, // Never decays (it IS the default)\n};\n\n// \u2500\u2500 XP Event Types That Trigger Moods \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst POSITIVE_EVENTS = new Set([\"test_pass\", \"build_success\", \"commit\"]);\n\nconst NEGATIVE_EVENTS = new Set([\"test_fail\", \"build_fail\", \"error\"]);\n\n// \u2500\u2500 Mood Calculation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Calculate the current mood based on recent events, time, and special triggers.\n *\n * Priority order:\n * 1. Sleepy (midnight to 5 AM)\n * 2. Proud (just evolved/achieved/caught)\n * 3. Worried (recent negative event)\n * 4. Happy (recent positive event)\n * 5. Energetic (morning + active streak)\n * 6. Keep current mood if it hasn't decayed\n * 7. Neutral (default fallback)\n *\n * @param recentEvent - The last XP event type, or null\n * @param counters - Current event counters (for context)\n * @param currentHour - Hour of day (0-23)\n * @param lastMood - The previous mood\n * @param moodSetAt - Timestamp when last mood was set\n * @param hadEvolution - Whether the Pokemon just evolved\n * @param hadAchievement - Whether the player just unlocked an achievement\n * @param hadCatch - Whether the player just caught a Pokemon\n * @returns The calculated mood\n */\nexport function calculateMood(\n recentEvent: string | null,\n counters: EventCounters,\n currentHour: number,\n lastMood: MoodType,\n moodSetAt: number,\n hadEvolution: boolean,\n hadAchievement: boolean,\n hadCatch: boolean,\n): MoodType {\n // 1. Sleepy: midnight to 5 AM (hours 0-4)\n if (currentHour >= 0 && currentHour < 5) {\n return \"sleepy\";\n }\n\n // 2. Proud: just evolved, achieved, or caught a Pokemon\n if (hadEvolution || hadAchievement || hadCatch) {\n return \"proud\";\n }\n\n // 3. Worried: recent negative event\n if (recentEvent !== null && NEGATIVE_EVENTS.has(recentEvent)) {\n return \"worried\";\n }\n\n // 4. Happy: recent positive event\n if (recentEvent !== null && POSITIVE_EVENTS.has(recentEvent)) {\n return \"happy\";\n }\n\n // 5. Energetic: morning coding (5 AM - 10 AM) with an active streak\n if (currentHour >= 5 && currentHour < 10) {\n // Use a simple heuristic: if there have been any sessions, consider it an active streak\n const hasStreak = counters.sessions > 0;\n if (hasStreak) {\n return \"energetic\";\n }\n }\n\n // 6. Keep current mood if it hasn't decayed\n if (!hasMoodDecayed(lastMood, moodSetAt, Date.now())) {\n return lastMood;\n }\n\n // 7. Default fallback\n return \"neutral\";\n}\n\n/**\n * Check whether a mood has expired based on its decay duration.\n *\n * @param mood - The mood to check\n * @param setAt - Timestamp when the mood was set\n * @param now - Current timestamp\n * @returns true if the mood has decayed (expired)\n */\nexport function hasMoodDecayed(mood: MoodType, setAt: number, now: number): boolean {\n const duration = MOOD_DECAY_MS[mood];\n if (duration === Infinity) {\n // Sleepy decays when it's no longer midnight-5 AM (handled in calculateMood)\n // Neutral never decays\n return false;\n }\n return now - setAt >= duration;\n}\n\n// \u2500\u2500 Mood Speeches \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Mood-specific speech lines for the status line. Name placeholder {name} is replaced at call time. */\nconst MOOD_SPEECHES: Record<MoodType, readonly string[]> = {\n happy: [\n \"*{name} is beaming with pride!*\",\n \"*{name} does a little victory dance*\",\n \"*{name} radiates positive energy*\",\n \"*{name} bounces happily*\",\n \"*{name} gives you a thumbs up*\",\n ],\n worried: [\n \"*{name} looks concerned...*\",\n \"*{name} nervously watches the errors*\",\n \"*{name} hides behind the terminal*\",\n \"*{name} paces back and forth*\",\n \"*{name} offers you a virtual hug*\",\n ],\n sleepy: [\n \"*{name} yawns widely*\",\n \"*{name} dozes off... zzz*\",\n \"*{name} rubs its eyes*\",\n \"*{name} curls up near the keyboard*\",\n \"*{name} mumbles in its sleep*\",\n ],\n energetic: [\n \"*{name} is fired up! Let's go!*\",\n \"*{name} bounces off the walls*\",\n \"*{name} can't sit still!*\",\n \"*{name} is ready to code all day!*\",\n \"*{name} stretches and flexes*\",\n ],\n proud: [\n \"*{name} puffs up with pride*\",\n \"*{name} strikes a victory pose*\",\n \"*{name} shows off to everyone*\",\n \"*{name} earned bragging rights!*\",\n \"*{name} stands tall and proud*\",\n ],\n neutral: [\n \"*{name} looks at your code curiously*\",\n \"*{name} nods along as you type*\",\n \"*{name} is watching closely*\",\n \"*{name} hums softly*\",\n \"*{name} waits patiently*\",\n \"*{name} tilts head at the screen*\",\n \"*{name} chirps encouragingly*\",\n \"*{name} peers at a variable name*\",\n ],\n};\n\n/**\n * Get mood-specific speech messages with the Pokemon's name filled in.\n *\n * @param name - The Pokemon's display name\n * @param mood - The current mood\n * @returns Array of speech strings with the name interpolated\n */\nexport function getMoodSpeeches(name: string, mood: MoodType): string[] {\n const templates = MOOD_SPEECHES[mood];\n return templates.map((t) => t.replace(\"{name}\", name));\n}\n\n// \u2500\u2500 Mood Display Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Emoji representation for each mood */\nconst MOOD_EMOJIS: Record<MoodType, string> = {\n happy: \"\\u{1F60A}\", // \uD83D\uDE0A\n worried: \"\\u{1F61F}\", // \uD83D\uDE1F\n sleepy: \"\\u{1F634}\", // \uD83D\uDE34\n energetic: \"\\u{26A1}\", // \u26A1\n proud: \"\\u{1F451}\", // \uD83D\uDC51\n neutral: \"\\u{1F610}\", // \uD83D\uDE10\n};\n\n/** Human-readable mood descriptions */\nconst MOOD_DESCRIPTIONS: Record<MoodType, string> = {\n happy: \"Happy\",\n worried: \"Worried\",\n sleepy: \"Sleepy\",\n energetic: \"Energetic\",\n proud: \"Proud\",\n neutral: \"Neutral\",\n};\n\n/**\n * Get the emoji for a mood.\n *\n * @param mood - The mood type\n * @returns The emoji string\n */\nexport function getMoodEmoji(mood: MoodType): string {\n return MOOD_EMOJIS[mood];\n}\n\n/**\n * Get a human-readable description for a mood.\n *\n * @param mood - The mood type\n * @returns The description string (e.g. \"Happy\")\n */\nexport function getMoodDescription(mood: MoodType): string {\n return MOOD_DESCRIPTIONS[mood];\n}\n", "/**\n * award-xp.ts \u2014 Lightweight bun script called by the PostToolUse hook.\n * Usage: bun run award-xp.ts <event_type> <counter_key>\n *\n * Loads state, awards XP to the active Pokemon, applies stat boosts,\n * increments the event counter, updates the streak, and saves.\n * Supports enhanced encounter triggers: streak bonuses, time-of-day bias,\n * bonus encounters (10%), and tool diversity encounters.\n * Emits a terminal bell on level-up.\n */\n\nimport type { XpEventType, EventCounterKey } from \"../engine/types.js\";\nimport { BELL } from \"../engine/constants.js\";\nimport { StateManager } from \"../state/state-manager.js\";\nimport { addXp, createXpEvent } from \"../engine/xp.js\";\nimport { applyStatBoost } from \"../engine/stats.js\";\nimport { POKEMON_BY_ID } from \"../engine/pokemon-data.js\";\nimport { checkEvolution, getNewlyEarnedBadges } from \"../engine/evolution.js\";\nimport {\n shouldTriggerEncounter,\n generateEncounter,\n shouldBonusEncounter,\n shouldDiversityBonus,\n getTimeOfDayBias,\n} from \"../engine/encounters.js\";\nimport type { EncounterContext } from \"../engine/encounters.js\";\nimport { calculateMood } from \"../engine/mood.js\";\n\nconst MAX_RECENT_TOOL_TYPES = 20;\n\nconst eventType = process.argv[2] as XpEventType;\nconst counterKey = process.argv[3] as EventCounterKey | undefined;\n\nif (!eventType) {\n process.exit(0);\n}\n\nconst stateManager = StateManager.getInstance();\nconst state = await stateManager.load();\n\n// No state file = first run, nothing to do yet\nif (!state) {\n process.exit(0);\n}\n\nconst pokemon = stateManager.getActivePokemon();\nif (!pokemon) {\n process.exit(0);\n}\n\nconst pokemonData = POKEMON_BY_ID.get(pokemon.pokemonId);\nif (!pokemonData) {\n process.exit(0);\n}\n\n// Create XP event from the event type\nconst xpEvent = createXpEvent(eventType);\n\n// Award XP and check for level-up\nconst levelUp = addXp(pokemon, xpEvent.xp, pokemonData);\n\n// Apply stat boost if the event provides one\nif (xpEvent.statBoost && xpEvent.boostAmount > 0) {\n applyStatBoost(pokemon, xpEvent.statBoost, xpEvent.boostAmount);\n}\n\n// XP sharing: give inactive party members a percentage\nconst sharePercent = state.config.xpSharePercent ?? 0;\nif (sharePercent > 0 && state.party.length > 1) {\n const sharedXp = Math.floor((xpEvent.xp * sharePercent) / 100);\n if (sharedXp > 0) {\n for (const member of state.party) {\n if (member.isActive) continue;\n const memberSpecies = POKEMON_BY_ID.get(member.pokemonId);\n if (memberSpecies) {\n addXp(member, sharedXp, memberSpecies);\n }\n }\n }\n}\n\n// Track total XP earned by the trainer\nstate.totalXpEarned += xpEvent.xp;\n\n// Increment the event counter directly on state (avoids extra save from incrementCounter)\nif (counterKey) {\n state.counters[counterKey] += 1;\n}\n\n// Track tool type for diversity bonus (keep last MAX_RECENT_TOOL_TYPES entries)\nconst recentToolTypes = state.recentToolTypes ?? [];\nrecentToolTypes.push(eventType);\nif (recentToolTypes.length > MAX_RECENT_TOOL_TYPES) {\n recentToolTypes.splice(0, recentToolTypes.length - MAX_RECENT_TOOL_TYPES);\n}\nstate.recentToolTypes = recentToolTypes;\n\n// Update the daily coding streak\n// Inline the streak logic to avoid the extra save from updateStreak()\nconst today = new Date();\nconst todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, \"0\")}-${String(today.getDate()).padStart(2, \"0\")}`;\nconst { streak } = state;\n\nif (streak.lastActiveDate !== todayStr) {\n if (streak.lastActiveDate === null) {\n streak.currentStreak = 1;\n streak.totalDaysActive = 1;\n } else {\n const last = new Date(streak.lastActiveDate);\n const now = new Date(todayStr);\n const diffMs = now.getTime() - last.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 1) {\n streak.currentStreak += 1;\n } else {\n streak.currentStreak = 1;\n }\n streak.totalDaysActive += 1;\n }\n\n if (streak.currentStreak > streak.longestStreak) {\n streak.longestStreak = streak.currentStreak;\n }\n\n streak.lastActiveDate = todayStr;\n}\n\n// Check for newly earned badges\nconst newBadges = getNewlyEarnedBadges(state);\nfor (const badge of newBadges) {\n state.badges.push(badge);\n}\n\n// Check if evolution is available (sets flag in status for status line indicator)\nconst evolutionReady = checkEvolution(pokemon, state) !== null;\n\n// Build encounter context for the enhanced trigger system\nconst encounterSpeed = state.config.encounterSpeed ?? \"normal\";\nconst currentHour = new Date().getHours();\nconst timeOfDayTypes = getTimeOfDayBias(currentHour);\n\nconst encounterCtx: EncounterContext = {\n xpSinceLastEncounter: (state.xpSinceLastEncounter ?? 0) + xpEvent.xp,\n encounterSpeed,\n currentStreak: streak.currentStreak,\n recentToolTypes: state.recentToolTypes,\n currentHour,\n};\n\n// Track XP toward next encounter\nstate.xpSinceLastEncounter = encounterCtx.xpSinceLastEncounter;\nlet encounterTriggered = false;\n\nif (shouldTriggerEncounter(encounterCtx) && !state.pendingEncounter) {\n const encounter = generateEncounter(eventType, state, timeOfDayTypes);\n if (encounter) {\n state.pendingEncounter = encounter;\n state.xpSinceLastEncounter = 0;\n state.lastEncounterTime = Date.now();\n encounterTriggered = true;\n\n // 10% chance for a bonus encounter after a regular one\n // (bonus replaces the pending encounter with a second roll)\n if (shouldBonusEncounter()) {\n const bonusEncounter = generateEncounter(eventType, state, timeOfDayTypes);\n if (bonusEncounter) {\n // The bonus encounter replaces the first; first is already set as pending\n // In practice the player still sees one encounter per trigger,\n // but the bonus gives them a fresh roll (potentially rarer Pokemon)\n state.pendingEncounter = bonusEncounter;\n }\n }\n }\n}\n\n// Tool diversity bonus: if 3+ unique tool types used recently and no pending encounter,\n// grant an extra encounter opportunity\nif (!encounterTriggered && !state.pendingEncounter && shouldDiversityBonus(state.recentToolTypes)) {\n const diversityEncounter = generateEncounter(eventType, state, timeOfDayTypes);\n if (diversityEncounter) {\n state.pendingEncounter = diversityEncounter;\n state.xpSinceLastEncounter = 0;\n state.lastEncounterTime = Date.now();\n // Clear recent tool types after diversity bonus triggers\n state.recentToolTypes = [];\n encounterTriggered = true;\n }\n}\n\n// Calculate mood based on the event that just happened\nconst newMood = calculateMood(\n eventType,\n state.counters,\n currentHour,\n state.mood ?? \"neutral\",\n state.moodSetAt ?? 0,\n evolutionReady, // evolution ready counts as a proud trigger\n false, // achievements are checked in catch/evolve tools\n false, // catches are handled in the catch tool\n);\n\nif (newMood !== (state.mood ?? \"neutral\")) {\n state.mood = newMood;\n state.moodSetAt = Date.now();\n}\n\n// Single atomic save for all mutations\nawait stateManager.save();\n\n// Write status for the status line (includes evolution flag and encounter notification)\nif (encounterTriggered && state.pendingEncounter) {\n const encSpecies = POKEMON_BY_ID.get(state.pendingEncounter.pokemonId);\n const encName = encSpecies?.name ?? \"???\";\n await stateManager.writeEncounterStatus(encName);\n} else {\n await stateManager.writeStatus(evolutionReady);\n}\n\n// Flush any pending debounced status write before the process exits\nawait stateManager.flushStatus();\n\n// Terminal bell on level-up, evolution available, or encounter (written to stderr so it reaches the terminal)\nif ((levelUp || evolutionReady || encounterTriggered) && state.config.bellEnabled) {\n process.stderr.write(BELL);\n}\n"],
5
- "mappings": "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",
6
- "names": ["util", "objectUtil", "errorUtil", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "state", "today", "streak", "evolutionReady", "pokemon", "pokemonData", "pokemon", "stat", "pokemon", "state", "stat", "state", "newBadges", "pokemon", "pokemon", "eventType", "recentToolTypes", "pokemon", "state", "timeOfDayTypes", "seed", "currentHour"]
4
+ "sourcesContent": ["/**\n * Shared constants for Claudemon.\n * All magic numbers and configuration values live here.\n */\n\nimport type { XpEventType, CodingStat, TrainerTitle, Badge } from \"./types.js\";\n\n// \u2500\u2500 Game Limits \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const MAX_PARTY_SIZE = 6;\nexport const MAX_LEVEL = 100;\nexport const STARTER_LEVEL = 5;\nexport const MAX_HAPPINESS = 255;\nexport const TOTAL_POKEMON = 905;\n\n// \u2500\u2500 XP Awards per Event \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const XP_AWARDS: Record<\n XpEventType,\n { xp: number; stat: CodingStat | null; boost: number }\n> = {\n commit: { xp: 15, stat: \"velocity\", boost: 1 },\n test_pass: { xp: 12, stat: \"stability\", boost: 1 },\n test_written: { xp: 10, stat: \"stability\", boost: 1 },\n build_success: { xp: 10, stat: \"stability\", boost: 1 },\n bug_fix: { xp: 8, stat: \"debugging\", boost: 1 },\n lint_fix: { xp: 6, stat: \"debugging\", boost: 1 },\n file_create: { xp: 5, stat: \"velocity\", boost: 0 },\n file_edit: { xp: 3, stat: \"velocity\", boost: 0 },\n search: { xp: 1, stat: \"wisdom\", boost: 0 },\n large_refactor: { xp: 20, stat: \"wisdom\", boost: 2 },\n session_start: { xp: 5, stat: \"stamina\", boost: 1 },\n daily_streak: { xp: 15, stat: \"stamina\", boost: 1 },\n pet: { xp: 2, stat: null, boost: 0 },\n};\n\n// \u2500\u2500 Stat Display Names \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const STAT_DISPLAY_NAMES: Record<CodingStat, string> = {\n stamina: \"STAMINA\",\n debugging: \"DEBUGGING\",\n stability: \"STABILITY\",\n velocity: \"VELOCITY\",\n wisdom: \"WISDOM\",\n};\n\n// \u2500\u2500 Encounter Rate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** XP thresholds for encounter triggers by speed setting */\nexport const ENCOUNTER_THRESHOLDS = {\n fast: 100,\n normal: 250,\n slow: 500,\n} as const;\n\nexport type EncounterSpeed = keyof typeof ENCOUNTER_THRESHOLDS;\n\n/** Default encounter speed */\nexport const DEFAULT_ENCOUNTER_SPEED: EncounterSpeed = \"normal\";\n\n// \u2500\u2500 Reaction Cooldown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const DEFAULT_REACTION_COOLDOWN_MS = 30_000;\n\n// \u2500\u2500 Trainer Titles (by highest Pokemon level) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const TRAINER_TITLES: readonly TrainerTitle[] = [\n { minLevel: 1, title: \"Bug Catcher\" },\n { minLevel: 6, title: \"Youngster\" },\n { minLevel: 11, title: \"Hiker\" },\n { minLevel: 21, title: \"Ace Trainer\" },\n { minLevel: 31, title: \"Cooltrainer\" },\n { minLevel: 41, title: \"Veteran\" },\n { minLevel: 51, title: \"Elite Four\" },\n { minLevel: 61, title: \"Champion\" },\n { minLevel: 76, title: \"Pokemon Master\" },\n { minLevel: 91, title: \"Professor\" },\n];\n\n// \u2500\u2500 Badge Definitions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BADGES: readonly Badge[] = [\n {\n type: \"blaze\",\n name: \"Blaze Badge\",\n description: \"Fix 50 bugs \u2014 unlocks Fire Stone evolutions\",\n condition: { type: \"counter\", counter: \"bugs_fixed\", threshold: 50 },\n },\n {\n type: \"flow\",\n name: \"Flow Badge\",\n description: \"Pass 100 tests \u2014 unlocks Water Stone evolutions\",\n condition: { type: \"counter\", counter: \"tests_passed\", threshold: 100 },\n },\n {\n type: \"spark\",\n name: \"Spark Badge\",\n description: \"Make 200 commits \u2014 unlocks Thunder Stone evolutions\",\n condition: { type: \"counter\", counter: \"commits\", threshold: 200 },\n },\n {\n type: \"lunar\",\n name: \"Lunar Badge\",\n description: \"Code for 30 days (weekends off OK) \u2014 unlocks Moon Stone evolutions\",\n condition: { type: \"streak\", minDays: 30 },\n },\n {\n type: \"growth\",\n name: \"Growth Badge\",\n description: \"Edit 500 files \u2014 unlocks Leaf Stone evolutions\",\n condition: { type: \"counter\", counter: \"files_edited\", threshold: 500 },\n },\n];\n\n// \u2500\u2500 State File Paths \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Resolved at call time so tests can override HOME. Falls back to USERPROFILE on Windows. */\nexport function getStateDir(): string {\n return `${process.env[\"HOME\"] ?? process.env[\"USERPROFILE\"] ?? \"~\"}/.claudemon`;\n}\nexport function getStateFile(): string {\n return `${getStateDir()}/state.json`;\n}\nexport function getStatusFile(): string {\n return `${getStateDir()}/status.json`;\n}\n\n// \u2500\u2500 Terminal Bell \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BELL = \"\\x07\";\n", "/**\n * Singleton state manager for Claudemon.\n * All state reads/writes flow through this class.\n */\n\nimport { access as fsAccess } from \"node:fs/promises\";\nimport { constants as fsConst } from \"node:fs\";\nimport { getStateDir, getStateFile, getStatusFile } from \"../engine/constants.js\";\nimport type {\n PlayerState,\n OwnedPokemon,\n EventCounterKey,\n EventCounters,\n StreakData,\n BuddyConfig,\n PokedexState,\n WildEncounter,\n MoodType,\n} from \"../engine/types.js\";\nimport { EVENT_COUNTER_KEYS } from \"../engine/types.js\";\nimport { atomicWrite, safeRead, ensureDir, backupCorrupted, withLock } from \"./io.js\";\nimport { PlayerStateSchema } from \"./schemas.js\";\nimport { POKEMON_BY_ID } from \"../engine/pokemon-data.js\";\n\n/** Compact status payload for the shell status line script */\ninterface StatusPayload {\n name: string; // Species name (used for sprite filename lookup)\n displayName: string; // \"Nickname (Species)\" or just \"Species\" for display\n level: number;\n xpPercent: number;\n speciesId: number;\n evolutionReady: boolean;\n mood: MoodType;\n}\n\n/** Build a zeroed-out EventCounters record */\nfunction emptyCounters(): EventCounters {\n const counters = {} as Record<string, number>;\n for (const key of EVENT_COUNTER_KEYS) {\n counters[key] = 0;\n }\n return counters as EventCounters;\n}\n\n/** Build default streak data */\nfunction emptyStreak(): StreakData {\n return {\n currentStreak: 0,\n longestStreak: 0,\n lastActiveDate: null,\n totalDaysActive: 0,\n };\n}\n\n/** Build default config */\nfunction defaultConfig(): BuddyConfig {\n return {\n muted: false,\n reactionCooldownMs: 30_000,\n statusLineEnabled: true,\n bellEnabled: true,\n encounterSpeed: \"normal\",\n xpSharePercent: 25,\n };\n}\n\n/** Build empty pokedex */\nfunction emptyPokedex(): PokedexState {\n return {\n entries: {},\n totalSeen: 0,\n totalCaught: 0,\n };\n}\n\n/** Get today's date as YYYY-MM-DD in local timezone */\nfunction todayDateString(): string {\n const now = new Date();\n const year = now.getFullYear();\n const month = String(now.getMonth() + 1).padStart(2, \"0\");\n const day = String(now.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nexport class StateManager {\n private static instance: StateManager | null = null;\n private state: PlayerState | null = null;\n /** Timestamp of the last successful load from disk */\n private lastLoadTime: number = 0;\n /** How long (in ms) cached state is considered fresh before re-reading disk */\n private static readonly CACHE_TTL_MS = 1000;\n\n /** Debounce timer for writeStatus \u2014 limits disk writes to at most once per second */\n private statusWriteTimer: ReturnType<typeof setTimeout> | null = null;\n /** Payload queued for the next debounced status write */\n private pendingStatusPayload: StatusPayload | null = null;\n /** Maximum frequency for status file writes (ms) */\n private static readonly STATUS_DEBOUNCE_MS = 1000;\n\n private constructor() {}\n\n /** Get the singleton StateManager instance */\n static getInstance(): StateManager {\n if (!StateManager.instance) {\n StateManager.instance = new StateManager();\n }\n return StateManager.instance;\n }\n\n /** Load state from disk. Returns cached state if loaded within the last second. */\n async load(): Promise<PlayerState | null> {\n // Return cached state if fresh enough (avoids redundant disk reads from MCP tool calls)\n if (\n this.state &&\n this.lastLoadTime > 0 &&\n Date.now() - this.lastLoadTime < StateManager.CACHE_TTL_MS\n ) {\n return this.state;\n }\n\n await ensureDir(getStateDir());\n\n const stateFile = getStateFile();\n let fileExists = true;\n try {\n await fsAccess(stateFile, fsConst.F_OK);\n } catch {\n fileExists = false;\n }\n if (!fileExists) {\n return null;\n }\n\n const raw = await safeRead<unknown>(stateFile);\n if (raw === null) {\n // File exists but safeRead returned null \u2014 empty or invalid JSON\n const backupPath = await backupCorrupted(stateFile);\n process.stderr.write(\n `[claudemon] State file was corrupted and has been backed up to ${backupPath}\\n` +\n `[claudemon] You'll need to pick a new starter with buddy_starter.\\n`,\n );\n return null;\n }\n\n try {\n // Zod output is structurally compatible but not nominally identical to PlayerState\n const parsed = PlayerStateSchema.parse(raw) as PlayerState;\n this.state = parsed;\n this.lastLoadTime = Date.now();\n return this.state;\n } catch (err: unknown) {\n // Schema validation failed \u2014 data on disk doesn't match expected shape\n const backupPath = await backupCorrupted(stateFile);\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(\n `[claudemon] State validation failed: ${message}\\n` +\n `[claudemon] Corrupted data backed up to ${backupPath}\\n` +\n `[claudemon] You'll need to pick a new starter with buddy_starter.\\n`,\n );\n return null;\n }\n }\n\n /** Save current state to disk atomically, protected by file lock */\n async save(): Promise<void> {\n if (!this.state) {\n throw new Error(\"Cannot save: state not loaded. Call load() or initializePlayer() first.\");\n }\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n const lockPath = `${stateDir}/state.lock`;\n await withLock(lockPath, async () => {\n const json = JSON.stringify(this.state, null, 2);\n await atomicWrite(getStateFile(), json);\n });\n // After saving, in-memory state matches disk \u2014 refresh cache timestamp\n this.lastLoadTime = Date.now();\n }\n\n /** Get current state (throws if not loaded) */\n getState(): PlayerState {\n if (!this.state) {\n throw new Error(\"State not loaded. Call load() first.\");\n }\n return this.state;\n }\n\n /** Check if this is first run (no state file exists) */\n async isFirstRun(): Promise<boolean> {\n try {\n await fsAccess(getStateFile(), fsConst.F_OK);\n return false;\n } catch {\n return true;\n }\n }\n\n /** Initialize new player state after starter selection */\n async initializePlayer(\n trainerId: string,\n trainerName: string,\n starter: OwnedPokemon,\n ): Promise<PlayerState> {\n const now = new Date().toISOString();\n\n const state: PlayerState = {\n trainerId,\n trainerName,\n party: [starter],\n pcBox: [],\n pokedex: emptyPokedex(),\n badges: [],\n achievements: [],\n counters: emptyCounters(),\n streak: emptyStreak(),\n config: defaultConfig(),\n startedAt: now,\n totalXpEarned: 0,\n totalSessions: 0,\n pendingEncounter: null,\n xpSinceLastEncounter: 0,\n recentToolTypes: [],\n lastEncounterTime: 0,\n mood: \"neutral\",\n moodSetAt: 0,\n lastFedAt: 0,\n lastTrainedAt: 0,\n lastPlayedAt: 0,\n pendingQuiz: null,\n shareStats: { wins: 0, losses: 0, ties: 0 },\n };\n\n this.state = state;\n await this.save();\n return this.state;\n }\n\n /** Get the active Pokemon from the party (isActive === true) */\n getActivePokemon(): OwnedPokemon | null {\n if (!this.state) {\n return null;\n }\n return this.state.party.find((p) => p.isActive) ?? null;\n }\n\n /** Increment an event counter by amount (default 1) and save (lock-protected) */\n async incrementCounter(key: EventCounterKey, amount: number = 1): Promise<void> {\n const state = this.getState();\n state.counters[key] += amount;\n await this.save();\n }\n\n /**\n * Update daily streak with weekend grace period.\n * Allows up to 2 days off without breaking the streak (covers weekends).\n * Streak counts \"coding days\" not \"consecutive calendar days\".\n */\n async updateStreak(): Promise<void> {\n const state = this.getState();\n const today = todayDateString();\n const { streak } = state;\n\n if (streak.lastActiveDate === today) {\n return;\n }\n\n if (streak.lastActiveDate === null) {\n streak.currentStreak = 1;\n streak.totalDaysActive = 1;\n } else {\n const last = new Date(streak.lastActiveDate);\n const now = new Date(today);\n const diffMs = now.getTime() - last.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n // Grace period: up to 2 days off (covers weekends)\n // 1 day gap = next day (consecutive) \u2713\n // 2 day gap = skipped 1 day (e.g., Friday \u2192 Sunday) \u2713\n // 3 day gap = skipped 2 days (e.g., Friday \u2192 Monday) \u2713\n // 4+ day gap = streak broken\n if (diffDays <= 3) {\n streak.currentStreak += 1;\n } else {\n streak.currentStreak = 1;\n }\n streak.totalDaysActive += 1;\n }\n\n if (streak.currentStreak > streak.longestStreak) {\n streak.longestStreak = streak.currentStreak;\n }\n\n streak.lastActiveDate = today;\n await this.save();\n }\n\n /**\n * Write compact status JSON for the shell status line script.\n * Debounced: at most one disk write per STATUS_DEBOUNCE_MS.\n * The payload is computed immediately so it always reflects the latest state,\n * but the actual I/O is deferred and coalesced.\n */\n async writeStatus(evolutionReady: boolean = false): Promise<void> {\n const active = this.getActivePokemon();\n if (!active) {\n return;\n }\n\n const state = this.getState();\n\n // XP percent is currentXp as a rough percentage toward next level\n // Exact formula depends on exp group; use a simple ratio for the status line\n const xpPercent =\n active.level >= 100\n ? 100\n : Math.min(100, Math.floor((active.currentXp / Math.max(1, active.currentXp + 50)) * 100));\n\n // Look up species name for sprite lookup and display\n const species = POKEMON_BY_ID.get(active.pokemonId);\n const speciesName = species?.name ?? `Pokemon #${active.pokemonId}`;\n const displayName = active.nickname ? `${active.nickname} (${speciesName})` : speciesName;\n\n const payload: StatusPayload = {\n name: speciesName,\n displayName,\n level: active.level,\n xpPercent,\n speciesId: active.pokemonId,\n evolutionReady,\n mood: state.mood ?? \"neutral\",\n };\n\n // Always update the pending payload to the latest values\n this.pendingStatusPayload = payload;\n\n // If a write is already scheduled, it will pick up the updated payload\n if (this.statusWriteTimer) return;\n\n this.statusWriteTimer = setTimeout(() => {\n void (async () => {\n this.statusWriteTimer = null;\n if (this.pendingStatusPayload) {\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n await atomicWrite(getStatusFile(), JSON.stringify(this.pendingStatusPayload));\n this.pendingStatusPayload = null;\n }\n })();\n }, StateManager.STATUS_DEBOUNCE_MS);\n }\n\n /** Flush any pending debounced status write immediately.\n * Call before process exit to ensure the last status update is persisted. */\n async flushStatus(): Promise<void> {\n if (this.statusWriteTimer) {\n clearTimeout(this.statusWriteTimer);\n this.statusWriteTimer = null;\n }\n if (this.pendingStatusPayload) {\n const stateDir = getStateDir();\n await ensureDir(stateDir);\n await atomicWrite(getStatusFile(), JSON.stringify(this.pendingStatusPayload));\n this.pendingStatusPayload = null;\n }\n }\n\n /** Set a pending wild encounter on state. */\n setPendingEncounter(encounter: WildEncounter): void {\n const state = this.getState();\n state.pendingEncounter = encounter;\n }\n\n /** Clear the pending wild encounter from state. */\n clearPendingEncounter(): void {\n const state = this.getState();\n state.pendingEncounter = null;\n }\n\n /** Write encounter notification to status JSON so status line can show it. */\n async writeEncounterStatus(pokemonName: string): Promise<void> {\n const active = this.getActivePokemon();\n if (!active) return;\n\n const xpPercent =\n active.level >= 100\n ? 100\n : Math.min(100, Math.floor((active.currentXp / Math.max(1, active.currentXp + 50)) * 100));\n\n const species = POKEMON_BY_ID.get(active.pokemonId);\n const speciesName = species?.name ?? `Pokemon #${active.pokemonId}`;\n const displayLabel = active.nickname ? `${active.nickname} (${speciesName})` : speciesName;\n\n const payload = {\n name: speciesName,\n displayName: displayLabel,\n level: active.level,\n xpPercent,\n speciesId: active.pokemonId,\n evolutionReady: false,\n encounter: `Wild ${pokemonName} appeared!`,\n };\n\n await ensureDir(getStateDir());\n await atomicWrite(getStatusFile(), JSON.stringify(payload));\n }\n\n /** Reset singleton for testing purposes */\n static resetInstance(): void {\n StateManager.instance = null;\n }\n\n /** Invalidate the in-memory cache, forcing the next load() to read from disk */\n invalidateCache(): void {\n this.lastLoadTime = 0;\n }\n}\n", "/**\n * Core type definitions for Claudemon.\n * Single source of truth for all shared interfaces and types.\n */\n\n// \u2500\u2500 Mood Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const MOOD_TYPES = [\"happy\", \"worried\", \"sleepy\", \"energetic\", \"proud\", \"neutral\"] as const;\nexport type MoodType = (typeof MOOD_TYPES)[number];\n\n// \u2500\u2500 Pokemon Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const POKEMON_TYPES = [\n \"Normal\",\n \"Fire\",\n \"Water\",\n \"Electric\",\n \"Grass\",\n \"Ice\",\n \"Fighting\",\n \"Poison\",\n \"Ground\",\n \"Flying\",\n \"Psychic\",\n \"Bug\",\n \"Rock\",\n \"Ghost\",\n \"Dragon\",\n \"Steel\",\n \"Dark\",\n \"Fairy\",\n] as const;\n\nexport type PokemonType = (typeof POKEMON_TYPES)[number];\n\nexport const EXP_GROUPS = [\"fast\", \"medium_fast\", \"medium_slow\", \"slow\"] as const;\n\nexport type ExpGroup = (typeof EXP_GROUPS)[number];\n\nexport const RARITY_TIERS = [\"common\", \"uncommon\", \"rare\", \"legendary\", \"mythical\"] as const;\n\nexport type RarityTier = (typeof RARITY_TIERS)[number];\n\n// \u2500\u2500 Base Stats (Gen 1 layout) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface BaseStats {\n readonly hp: number;\n readonly attack: number;\n readonly defense: number;\n readonly speed: number;\n readonly special: number;\n}\n\n// \u2500\u2500 Pokemon Species (static, immutable Pokedex entry) \u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface Pokemon {\n readonly id: number;\n readonly name: string;\n readonly types: readonly [PokemonType, PokemonType?];\n readonly baseStats: BaseStats;\n readonly expGroup: ExpGroup;\n readonly evolutionChainId: number;\n readonly rarity: RarityTier;\n readonly catchRate: number; // 1-255, higher = easier to catch\n readonly description: string; // Short flavor text\n}\n\n// \u2500\u2500 Evolution \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport type EvolutionMethod =\n | { readonly type: \"level\"; readonly level: number }\n | { readonly type: \"badge\"; readonly badge: BadgeType }\n | { readonly type: \"collaboration\" }\n | { readonly type: \"stat\"; readonly stat: CodingStat; readonly minValue: number };\n\nexport interface EvolutionLink {\n readonly from: number; // Pokemon ID\n readonly to: number; // Pokemon ID\n readonly method: EvolutionMethod;\n}\n\nexport interface EvolutionChain {\n readonly id: number;\n readonly links: readonly EvolutionLink[];\n}\n\n// \u2500\u2500 Coding Stats (mapped from Gen 1 stats) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const CODING_STATS = [\"stamina\", \"debugging\", \"stability\", \"velocity\", \"wisdom\"] as const;\n\nexport type CodingStat = (typeof CODING_STATS)[number];\n\nexport interface CodingStats {\n stamina: number; // HP \u2192 session endurance, streaks\n debugging: number; // Attack \u2192 bug-finding, error fixing\n stability: number; // Defense \u2192 test coverage, build reliability\n velocity: number; // Speed \u2192 throughput, commits, edits\n wisdom: number; // Special \u2192 deep problem-solving, refactors\n}\n\n/** Maps Gen 1 base stats to coding stats for initial values */\nexport const BASE_STAT_TO_CODING: Record<keyof BaseStats, CodingStat> = {\n hp: \"stamina\",\n attack: \"debugging\",\n defense: \"stability\",\n speed: \"velocity\",\n special: \"wisdom\",\n} as const;\n\n// \u2500\u2500 Badges (replace evolution stones) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const BADGE_TYPES = [\n \"blaze\", // Fire Stone \u2192 50 bugs fixed\n \"flow\", // Water Stone \u2192 100 tests passed\n \"spark\", // Thunder Stone \u2192 200 commits\n \"lunar\", // Moon Stone \u2192 30-day streak\n \"growth\", // Leaf Stone \u2192 500 files edited\n] as const;\n\nexport type BadgeType = (typeof BADGE_TYPES)[number];\n\nexport interface Badge {\n readonly type: BadgeType;\n readonly name: string;\n readonly description: string;\n readonly condition: BadgeCondition;\n}\n\nexport type BadgeCondition =\n | { readonly type: \"counter\"; readonly counter: EventCounterKey; readonly threshold: number }\n | { readonly type: \"streak\"; readonly minDays: number };\n\n// \u2500\u2500 Owned Pokemon (user's individual Pokemon instance) \u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface OwnedPokemon {\n readonly id: string; // Unique instance ID (UUID)\n pokemonId: number;\n nickname: string | null;\n level: number;\n currentXp: number;\n totalXp: number;\n codingStats: CodingStats;\n happiness: number; // 0-255\n caughtAt: string; // ISO date\n evolvedAt: string | null;\n isActive: boolean;\n personality: string | null;\n shiny: boolean; // Future: always false in v1\n isStarter: boolean;\n}\n\n// \u2500\u2500 Player State (single source of truth) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PlayerState {\n readonly trainerId: string;\n trainerName: string;\n party: OwnedPokemon[]; // Max 6\n pcBox: OwnedPokemon[]; // Overflow storage\n pokedex: PokedexState;\n badges: BadgeType[];\n achievements: UnlockedAchievement[];\n counters: EventCounters;\n streak: StreakData;\n config: BuddyConfig;\n startedAt: string; // ISO date\n totalXpEarned: number;\n totalSessions: number;\n pendingEncounter: WildEncounter | null;\n xpSinceLastEncounter: number;\n recentToolTypes: string[]; // Track tool diversity for bonus encounters\n lastEncounterTime: number; // Timestamp of last encounter (for cooldown)\n mood: MoodType; // Current mood of the active Pokemon\n moodSetAt: number; // Timestamp when mood was last set\n lastFedAt: number; // Timestamp of last feed action\n lastTrainedAt: number; // Timestamp of last train action\n lastPlayedAt: number; // Timestamp of last play (quiz completed) action\n pendingQuiz: PendingQuiz | null; // Active quiz awaiting answer\n shareStats: ShareStats; // Win/loss/tie record from compare\n}\n\n// \u2500\u2500 Share Stats \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface ShareStats {\n wins: number;\n losses: number;\n ties: number;\n}\n\n// \u2500\u2500 Pokedex \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PokedexEntry {\n seen: boolean;\n caught: boolean;\n firstSeen: string | null; // ISO date\n firstCaught: string | null;\n}\n\nexport interface PokedexState {\n entries: Record<number, PokedexEntry>; // Keyed by Pokedex number 1-151\n totalSeen: number;\n totalCaught: number;\n}\n\n// \u2500\u2500 Achievements \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface Achievement {\n readonly id: string;\n readonly name: string;\n readonly description: string;\n readonly category: \"trainer\" | \"coding\" | \"pokemon\" | \"secret\";\n readonly condition: AchievementCondition;\n}\n\nexport type AchievementCondition =\n | { readonly type: \"counter\"; readonly counter: EventCounterKey; readonly threshold: number }\n | { readonly type: \"level\"; readonly minLevel: number }\n | { readonly type: \"pokedex\"; readonly minCaught: number }\n | { readonly type: \"streak\"; readonly minDays: number }\n | { readonly type: \"badge\"; readonly badge: BadgeType }\n | { readonly type: \"evolution\" }\n | { readonly type: \"party_size\"; readonly minSize: number };\n\nexport interface UnlockedAchievement {\n readonly achievementId: string;\n readonly unlockedAt: string; // ISO date\n}\n\n// \u2500\u2500 Event Counters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const EVENT_COUNTER_KEYS = [\n \"commits\",\n \"tests_passed\",\n \"tests_failed\",\n \"tests_written\",\n \"builds_succeeded\",\n \"builds_failed\",\n \"bugs_fixed\",\n \"lint_fixes\",\n \"files_created\",\n \"files_edited\",\n \"searches\",\n \"large_refactors\",\n \"errors_encountered\",\n \"sessions\",\n \"prs_merged\",\n] as const;\n\nexport type EventCounterKey = (typeof EVENT_COUNTER_KEYS)[number];\n\nexport type EventCounters = Record<EventCounterKey, number>;\n\n// \u2500\u2500 Streaks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface StreakData {\n currentStreak: number;\n longestStreak: number;\n lastActiveDate: string | null; // ISO date \"2026-04-13\"\n totalDaysActive: number;\n}\n\n// \u2500\u2500 Config \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface BuddyConfig {\n muted: boolean;\n reactionCooldownMs: number; // Default 30000\n statusLineEnabled: boolean;\n bellEnabled: boolean; // Terminal bell on level-up/encounters\n encounterSpeed: \"fast\" | \"normal\" | \"slow\"; // Configurable encounter frequency\n xpSharePercent: number; // 0-100, default 25. Percentage of XP shared to inactive party\n}\n\n// \u2500\u2500 XP Events (what triggers XP awards) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const XP_EVENT_TYPES = [\n \"commit\",\n \"test_pass\",\n \"test_written\",\n \"build_success\",\n \"bug_fix\",\n \"lint_fix\",\n \"file_create\",\n \"file_edit\",\n \"search\",\n \"large_refactor\",\n \"session_start\",\n \"daily_streak\",\n \"pet\",\n] as const;\n\nexport type XpEventType = (typeof XP_EVENT_TYPES)[number];\n\nexport interface XpEvent {\n readonly type: XpEventType;\n readonly xp: number;\n readonly statBoost: CodingStat | null;\n readonly boostAmount: number;\n}\n\n// \u2500\u2500 Pending Quiz (for /buddy play) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PendingQuiz {\n readonly type: \"type_matchup\" | \"stat_compare\" | \"evolution\" | \"pokedex_trivia\";\n readonly question: string;\n readonly options: readonly string[];\n readonly correctAnswer: number; // 1-4\n}\n\n// \u2500\u2500 Encounters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface WildEncounter {\n readonly pokemonId: number;\n readonly level: number;\n readonly catchCondition: CatchCondition;\n}\n\nexport interface CatchCondition {\n readonly requiredStat: CodingStat | null;\n readonly minStatValue: number;\n readonly requiredLevel: number;\n}\n\n// \u2500\u2500 Level Up Result \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface LevelUpResult {\n readonly previousLevel: number;\n readonly newLevel: number;\n readonly pendingEvolution: EvolutionLink | null;\n}\n\n// \u2500\u2500 Trainer Titles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface TrainerTitle {\n readonly minLevel: number;\n readonly title: string;\n}\n\n// \u2500\u2500 Legendary Quest \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface LegendaryQuest {\n readonly pokemonId: number;\n readonly name: string;\n readonly steps: readonly QuestStep[];\n}\n\nexport interface QuestStep {\n readonly description: string;\n readonly condition: AchievementCondition;\n}\n", "/**\n * Atomic file I/O helpers for state persistence.\n * All disk writes go through atomicWrite to prevent corruption.\n * Uses only Node.js APIs (no Bun-specific APIs) for compatibility.\n */\n\nimport {\n readFile,\n writeFile,\n rename,\n mkdir,\n copyFile,\n unlink,\n stat,\n access,\n} from \"node:fs/promises\";\nimport { constants } from \"node:fs\";\n\n/** Write data atomically via temp file + rename */\nexport async function atomicWrite(path: string, data: string): Promise<void> {\n const tmpPath = `${path}.${Date.now()}.tmp`;\n await writeFile(tmpPath, data, \"utf-8\");\n await rename(tmpPath, path);\n}\n\n/** Read and parse JSON, returning null if file doesn't exist or contains invalid JSON */\nexport async function safeRead<T>(path: string): Promise<T | null> {\n try {\n await access(path, constants.F_OK);\n } catch {\n return null;\n }\n try {\n const text = await readFile(path, \"utf-8\");\n if (!text.trim()) {\n return null;\n }\n return JSON.parse(text) as T;\n } catch {\n return null;\n }\n}\n\n/** Ensure directory exists, creating parents as needed */\nexport async function ensureDir(path: string): Promise<void> {\n await mkdir(path, { recursive: true });\n}\n\n/**\n * Backup a corrupted file by copying it to `<path>.corrupt.<timestamp>`.\n */\nexport async function backupCorrupted(path: string): Promise<string> {\n const backupPath = `${path}.corrupt.${Date.now()}`;\n try {\n await copyFile(path, backupPath);\n } catch {\n // If copy fails, nothing to back up\n }\n return backupPath;\n}\n\nconst LOCK_MAX_AGE_MS = 5000;\nconst LOCK_RETRY_DELAY_MS = 100;\n\n/**\n * Execute a function while holding a simple file lock.\n */\nexport async function withLock<T>(lockPath: string, fn: () => Promise<T>): Promise<T> {\n try {\n const lockStat = await stat(lockPath);\n const lockAge = Date.now() - lockStat.mtimeMs;\n if (lockAge < LOCK_MAX_AGE_MS) {\n await new Promise((r) => setTimeout(r, LOCK_RETRY_DELAY_MS));\n }\n } catch {\n // No lock file\n }\n\n await writeFile(lockPath, String(Date.now()), \"utf-8\");\n try {\n return await fn();\n } finally {\n try {\n await unlink(lockPath);\n } catch {\n // Ignore\n }\n }\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "/**\n * Zod validation schemas for state files.\n * Catches disk corruption early at load boundaries.\n */\n\nimport { z } from \"zod\";\n\nimport { BADGE_TYPES, CODING_STATS, EVENT_COUNTER_KEYS, MOOD_TYPES } from \"../engine/types.js\";\n\n// ---- Shared Primitives ----\n\nconst BadgeTypeSchema = z.enum(BADGE_TYPES);\n\n// ---- Coding Stats ----\n\nexport const CodingStatsSchema = z.object({\n stamina: z.number(),\n debugging: z.number(),\n stability: z.number(),\n velocity: z.number(),\n wisdom: z.number(),\n});\n\n// ---- Owned Pokemon ----\n\nexport const OwnedPokemonSchema = z.object({\n id: z.string(),\n pokemonId: z.number().int().min(1).max(905),\n nickname: z.string().nullable(),\n level: z.number().int().min(1).max(100),\n currentXp: z.number().int().min(0),\n totalXp: z.number().int().min(0),\n codingStats: CodingStatsSchema,\n happiness: z.number().int().min(0).max(255),\n caughtAt: z.string(),\n evolvedAt: z.string().nullable(),\n isActive: z.boolean(),\n personality: z.string().nullable(),\n shiny: z.boolean().default(false),\n isStarter: z.boolean().default(false),\n});\n\n// ---- Event Counters ----\n\n// Cast needed: Object.fromEntries loses key specificity, but keys are guaranteed by EVENT_COUNTER_KEYS\nexport const EventCountersSchema = z.object(\n Object.fromEntries(\n EVENT_COUNTER_KEYS.map((key) => [key, z.number().int().min(0).default(0)]),\n ) as Record<(typeof EVENT_COUNTER_KEYS)[number], z.ZodDefault<z.ZodNumber>>,\n);\n\n// ---- Streak Data ----\n\nexport const StreakDataSchema = z.object({\n currentStreak: z.number().int().min(0).default(0),\n longestStreak: z.number().int().min(0).default(0),\n lastActiveDate: z.string().nullable().default(null),\n totalDaysActive: z.number().int().min(0).default(0),\n});\n\n// ---- Buddy Config ----\n\nexport const BuddyConfigSchema = z.object({\n muted: z.boolean().default(false),\n reactionCooldownMs: z.number().int().min(0).default(30_000),\n statusLineEnabled: z.boolean().default(true),\n bellEnabled: z.boolean().default(true),\n encounterSpeed: z.enum([\"fast\", \"normal\", \"slow\"]).default(\"normal\"),\n xpSharePercent: z.number().min(0).max(100).default(25),\n});\n\n// ---- Pokedex ----\n\nexport const PokedexEntrySchema = z.object({\n seen: z.boolean(),\n caught: z.boolean(),\n firstSeen: z.string().nullable(),\n firstCaught: z.string().nullable(),\n});\n\nexport const PokedexStateSchema = z.object({\n entries: z.record(z.coerce.number(), PokedexEntrySchema).default({}),\n totalSeen: z.number().int().min(0).default(0),\n totalCaught: z.number().int().min(0).default(0),\n});\n\n// ---- Achievements ----\n\nexport const UnlockedAchievementSchema = z.object({\n achievementId: z.string(),\n unlockedAt: z.string(),\n});\n\n// ---- Share Stats ----\n\nexport const ShareStatsSchema = z.object({\n wins: z.number().int().min(0).default(0),\n losses: z.number().int().min(0).default(0),\n ties: z.number().int().min(0).default(0),\n});\n\n// ---- Pending Quiz ----\n\nexport const PendingQuizSchema = z.object({\n type: z.enum([\"type_matchup\", \"stat_compare\", \"evolution\", \"pokedex_trivia\"]),\n question: z.string(),\n options: z.array(z.string()),\n correctAnswer: z.number().int().min(1).max(4),\n});\n\n// ---- Catch Condition ----\n\nexport const CatchConditionSchema = z.object({\n requiredStat: z.enum(CODING_STATS).nullable(),\n minStatValue: z.number(),\n requiredLevel: z.number(),\n});\n\n// ---- Wild Encounter ----\n\nexport const WildEncounterSchema = z.object({\n pokemonId: z.number().int().min(1).max(905),\n level: z.number().int().min(1).max(100),\n catchCondition: CatchConditionSchema,\n});\n\n// ---- Player State (top-level) ----\n\nexport const PlayerStateSchema = z.object({\n trainerId: z.string(),\n trainerName: z.string(),\n party: z.array(OwnedPokemonSchema).max(6),\n pcBox: z.array(OwnedPokemonSchema).default([]),\n pokedex: PokedexStateSchema,\n badges: z.array(BadgeTypeSchema).default([]),\n achievements: z.array(UnlockedAchievementSchema).default([]),\n counters: EventCountersSchema,\n streak: StreakDataSchema,\n config: BuddyConfigSchema,\n startedAt: z.string(),\n totalXpEarned: z.number().int().min(0).default(0),\n totalSessions: z.number().int().min(0).default(0),\n pendingEncounter: WildEncounterSchema.nullable().default(null),\n xpSinceLastEncounter: z.number().int().min(0).default(0),\n recentToolTypes: z.array(z.string()).default([]),\n lastEncounterTime: z.number().int().min(0).default(0),\n mood: z.enum(MOOD_TYPES).default(\"neutral\"),\n moodSetAt: z.number().default(0),\n lastFedAt: z.number().default(0),\n lastTrainedAt: z.number().default(0),\n lastPlayedAt: z.number().default(0),\n pendingQuiz: PendingQuizSchema.nullable().default(null),\n shareStats: ShareStatsSchema.default({ wins: 0, losses: 0, ties: 0 }),\n});\n", "/**\n * Complete Pokedex \u2014 all 905 Pokemon (Gen 1-8) with actual base stats,\n * catch rates, and coding-themed descriptions.\n * Auto-generated from PokeAPI data.\n */\n\nimport type { Pokemon } from \"./types.js\";\n\nexport const POKEDEX: readonly Pokemon[] = [\n // \u2500\u2500 Gen 1 \u2014 Kanto (#001\u2013#151) \u2500\u2500\n {\n id: 1,\n name: \"Bulbasaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 45, attack: 49, defense: 49, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 2,\n name: \"Ivysaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 62, defense: 63, speed: 60, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 3,\n name: \"Venusaur\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 80, attack: 82, defense: 83, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 1,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 4,\n name: \"Charmander\",\n types: [\"Fire\"],\n baseStats: { hp: 39, attack: 52, defense: 43, speed: 65, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 5,\n name: \"Charmeleon\",\n types: [\"Fire\"],\n baseStats: { hp: 58, attack: 64, defense: 58, speed: 80, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 6,\n name: \"Charizard\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 78, attack: 84, defense: 78, speed: 100, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 2,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 7,\n name: \"Squirtle\",\n types: [\"Water\"],\n baseStats: { hp: 44, attack: 48, defense: 65, speed: 43, special: 64 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 8,\n name: \"Wartortle\",\n types: [\"Water\"],\n baseStats: { hp: 59, attack: 63, defense: 80, speed: 58, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 9,\n name: \"Blastoise\",\n types: [\"Water\"],\n baseStats: { hp: 79, attack: 83, defense: 100, speed: 78, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 3,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 10,\n name: \"Caterpie\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 30, defense: 35, speed: 45, special: 20 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 11,\n name: \"Metapod\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 20, defense: 55, speed: 30, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 12,\n name: \"Butterfree\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 60, attack: 45, defense: 50, speed: 70, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 4,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 13,\n name: \"Weedle\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 35, defense: 30, speed: 50, special: 20 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 14,\n name: \"Kakuna\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 45, attack: 25, defense: 50, speed: 35, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 15,\n name: \"Beedrill\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 40, speed: 75, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 5,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 16,\n name: \"Pidgey\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 56, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 17,\n name: \"Pidgeotto\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 63, attack: 60, defense: 55, speed: 71, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 18,\n name: \"Pidgeot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 83, attack: 80, defense: 75, speed: 101, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 6,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 19,\n name: \"Rattata\",\n types: [\"Normal\"],\n baseStats: { hp: 30, attack: 56, defense: 35, speed: 72, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 7,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 20,\n name: \"Raticate\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 81, defense: 60, speed: 97, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 7,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 21,\n name: \"Spearow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 60, defense: 30, speed: 70, special: 31 },\n expGroup: \"medium_fast\",\n evolutionChainId: 8,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 22,\n name: \"Fearow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 65, attack: 90, defense: 65, speed: 100, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 8,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 23,\n name: \"Ekans\",\n types: [\"Poison\"],\n baseStats: { hp: 35, attack: 60, defense: 44, speed: 55, special: 54 },\n expGroup: \"medium_fast\",\n evolutionChainId: 9,\n rarity: \"common\",\n catchRate: 255,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 24,\n name: \"Arbok\",\n types: [\"Poison\"],\n baseStats: { hp: 60, attack: 95, defense: 69, speed: 80, special: 79 },\n expGroup: \"medium_fast\",\n evolutionChainId: 9,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 25,\n name: \"Pikachu\",\n types: [\"Electric\"],\n baseStats: { hp: 35, attack: 55, defense: 40, speed: 90, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 26,\n name: \"Raichu\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 90, defense: 55, speed: 110, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 27,\n name: \"Sandshrew\",\n types: [\"Ground\"],\n baseStats: { hp: 50, attack: 75, defense: 85, speed: 40, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 11,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 28,\n name: \"Sandslash\",\n types: [\"Ground\"],\n baseStats: { hp: 75, attack: 100, defense: 110, speed: 65, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 11,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 29,\n name: \"Nidoran\u2640\",\n types: [\"Poison\"],\n baseStats: { hp: 55, attack: 47, defense: 52, speed: 41, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 30,\n name: \"Nidorina\",\n types: [\"Poison\"],\n baseStats: { hp: 70, attack: 62, defense: 67, speed: 56, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 31,\n name: \"Nidoqueen\",\n types: [\"Poison\", \"Ground\"],\n baseStats: { hp: 90, attack: 92, defense: 87, speed: 76, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 12,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 32,\n name: \"Nidoran\u2642\",\n types: [\"Poison\"],\n baseStats: { hp: 46, attack: 57, defense: 40, speed: 50, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"common\",\n catchRate: 235,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 33,\n name: \"Nidorino\",\n types: [\"Poison\"],\n baseStats: { hp: 61, attack: 72, defense: 57, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 34,\n name: \"Nidoking\",\n types: [\"Poison\", \"Ground\"],\n baseStats: { hp: 81, attack: 102, defense: 77, speed: 85, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 13,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 35,\n name: \"Clefairy\",\n types: [\"Fairy\"],\n baseStats: { hp: 70, attack: 45, defense: 48, speed: 35, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"common\",\n catchRate: 150,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 36,\n name: \"Clefable\",\n types: [\"Fairy\"],\n baseStats: { hp: 95, attack: 70, defense: 73, speed: 60, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Makes complex code look magically simple.\",\n },\n {\n id: 37,\n name: \"Vulpix\",\n types: [\"Fire\"],\n baseStats: { hp: 38, attack: 41, defense: 40, speed: 65, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 15,\n rarity: \"common\",\n catchRate: 190,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 38,\n name: \"Ninetales\",\n types: [\"Fire\"],\n baseStats: { hp: 73, attack: 76, defense: 75, speed: 100, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 15,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 39,\n name: \"Jigglypuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 115, attack: 45, defense: 20, speed: 20, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"common\",\n catchRate: 170,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 40,\n name: \"Wigglytuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 140, attack: 70, defense: 45, speed: 45, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 41,\n name: \"Zubat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 55, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"common\",\n catchRate: 255,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 42,\n name: \"Golbat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 75, attack: 80, defense: 70, speed: 90, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 43,\n name: \"Oddish\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 45, attack: 50, defense: 55, speed: 30, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 44,\n name: \"Gloom\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 65, defense: 70, speed: 40, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 45,\n name: \"Vileplume\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 75, attack: 80, defense: 85, speed: 50, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 46,\n name: \"Paras\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 35, attack: 70, defense: 55, speed: 25, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 19,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 47,\n name: \"Parasect\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 60, attack: 95, defense: 80, speed: 30, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 19,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 48,\n name: \"Venonat\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 55, defense: 50, speed: 45, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 20,\n rarity: \"common\",\n catchRate: 190,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 49,\n name: \"Venomoth\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 70, attack: 65, defense: 60, speed: 90, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 20,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 50,\n name: \"Diglett\",\n types: [\"Ground\"],\n baseStats: { hp: 10, attack: 55, defense: 25, speed: 95, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 21,\n rarity: \"common\",\n catchRate: 255,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 51,\n name: \"Dugtrio\",\n types: [\"Ground\"],\n baseStats: { hp: 35, attack: 100, defense: 50, speed: 120, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 21,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 52,\n name: \"Meowth\",\n types: [\"Normal\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 90, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 53,\n name: \"Persian\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 70, defense: 60, speed: 115, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 54,\n name: \"Psyduck\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 52, defense: 48, speed: 55, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 23,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 55,\n name: \"Golduck\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 82, defense: 78, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 23,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 56,\n name: \"Mankey\",\n types: [\"Fighting\"],\n baseStats: { hp: 40, attack: 80, defense: 35, speed: 70, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 24,\n rarity: \"common\",\n catchRate: 190,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 57,\n name: \"Primeape\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 105, defense: 60, speed: 95, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 24,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 58,\n name: \"Growlithe\",\n types: [\"Fire\"],\n baseStats: { hp: 55, attack: 70, defense: 45, speed: 60, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 25,\n rarity: \"common\",\n catchRate: 190,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 59,\n name: \"Arcanine\",\n types: [\"Fire\"],\n baseStats: { hp: 90, attack: 110, defense: 80, speed: 95, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 25,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 60,\n name: \"Poliwag\",\n types: [\"Water\"],\n baseStats: { hp: 40, attack: 50, defense: 40, speed: 90, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 61,\n name: \"Poliwhirl\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 65, defense: 65, speed: 90, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 62,\n name: \"Poliwrath\",\n types: [\"Water\", \"Fighting\"],\n baseStats: { hp: 90, attack: 95, defense: 95, speed: 70, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 63,\n name: \"Abra\",\n types: [\"Psychic\"],\n baseStats: { hp: 25, attack: 20, defense: 15, speed: 90, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 64,\n name: \"Kadabra\",\n types: [\"Psychic\"],\n baseStats: { hp: 40, attack: 35, defense: 30, speed: 105, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 65,\n name: \"Alakazam\",\n types: [\"Psychic\"],\n baseStats: { hp: 55, attack: 50, defense: 45, speed: 120, special: 135 },\n expGroup: \"medium_slow\",\n evolutionChainId: 27,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 66,\n name: \"Machop\",\n types: [\"Fighting\"],\n baseStats: { hp: 70, attack: 80, defense: 50, speed: 35, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"common\",\n catchRate: 180,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 67,\n name: \"Machoke\",\n types: [\"Fighting\"],\n baseStats: { hp: 80, attack: 100, defense: 70, speed: 45, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 68,\n name: \"Machamp\",\n types: [\"Fighting\"],\n baseStats: { hp: 90, attack: 130, defense: 80, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 28,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 69,\n name: \"Bellsprout\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 50, attack: 75, defense: 35, speed: 40, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 70,\n name: \"Weepinbell\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 50, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 71,\n name: \"Victreebel\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 80, attack: 105, defense: 65, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 29,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 72,\n name: \"Tentacool\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 40, attack: 40, defense: 35, speed: 70, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 30,\n rarity: \"common\",\n catchRate: 190,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 73,\n name: \"Tentacruel\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 80, attack: 70, defense: 65, speed: 100, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 30,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 74,\n name: \"Geodude\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 40, attack: 80, defense: 100, speed: 20, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 75,\n name: \"Graveler\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 55, attack: 95, defense: 115, speed: 35, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 76,\n name: \"Golem\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 80, attack: 120, defense: 130, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 31,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 77,\n name: \"Ponyta\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 85, defense: 55, speed: 90, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 32,\n rarity: \"common\",\n catchRate: 190,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 78,\n name: \"Rapidash\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 100, defense: 70, speed: 105, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 32,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 79,\n name: \"Slowpoke\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 90, attack: 65, defense: 65, speed: 15, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 80,\n name: \"Slowbro\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 95, attack: 75, defense: 110, speed: 30, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 81,\n name: \"Magnemite\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 25, attack: 35, defense: 70, speed: 45, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 82,\n name: \"Magneton\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 50, attack: 60, defense: 95, speed: 70, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 83,\n name: \"Farfetch'd\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 52, attack: 90, defense: 55, speed: 60, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 35,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 84,\n name: \"Doduo\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 35, attack: 85, defense: 45, speed: 75, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 36,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 85,\n name: \"Dodrio\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 110, defense: 70, speed: 110, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 36,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 86,\n name: \"Seel\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 45, defense: 55, speed: 45, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 37,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 87,\n name: \"Dewgong\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 90, attack: 70, defense: 80, speed: 70, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 37,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 88,\n name: \"Grimer\",\n types: [\"Poison\"],\n baseStats: { hp: 80, attack: 80, defense: 50, speed: 25, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 38,\n rarity: \"common\",\n catchRate: 190,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 89,\n name: \"Muk\",\n types: [\"Poison\"],\n baseStats: { hp: 105, attack: 105, defense: 75, speed: 50, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 38,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 90,\n name: \"Shellder\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 65, defense: 100, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 39,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 91,\n name: \"Cloyster\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 50, attack: 95, defense: 180, speed: 70, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 39,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 92,\n name: \"Gastly\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 30, attack: 35, defense: 30, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 93,\n name: \"Haunter\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 45, attack: 50, defense: 45, speed: 95, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 94,\n name: \"Gengar\",\n types: [\"Ghost\", \"Poison\"],\n baseStats: { hp: 60, attack: 65, defense: 60, speed: 110, special: 130 },\n expGroup: \"medium_slow\",\n evolutionChainId: 40,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 95,\n name: \"Onix\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 35, attack: 45, defense: 160, speed: 70, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 41,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 96,\n name: \"Drowzee\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 48, defense: 45, speed: 42, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 42,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 97,\n name: \"Hypno\",\n types: [\"Psychic\"],\n baseStats: { hp: 85, attack: 73, defense: 70, speed: 67, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 42,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 98,\n name: \"Krabby\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 105, defense: 90, speed: 50, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 43,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 99,\n name: \"Kingler\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 130, defense: 115, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 43,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 100,\n name: \"Voltorb\",\n types: [\"Electric\"],\n baseStats: { hp: 40, attack: 30, defense: 50, speed: 100, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 44,\n rarity: \"common\",\n catchRate: 190,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 101,\n name: \"Electrode\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 50, defense: 70, speed: 150, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 44,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 102,\n name: \"Exeggcute\",\n types: [\"Grass\", \"Psychic\"],\n baseStats: { hp: 60, attack: 40, defense: 80, speed: 40, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 45,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 103,\n name: \"Exeggutor\",\n types: [\"Grass\", \"Psychic\"],\n baseStats: { hp: 95, attack: 95, defense: 85, speed: 55, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 45,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 104,\n name: \"Cubone\",\n types: [\"Ground\"],\n baseStats: { hp: 50, attack: 50, defense: 95, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 46,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 105,\n name: \"Marowak\",\n types: [\"Ground\"],\n baseStats: { hp: 60, attack: 80, defense: 110, speed: 45, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 46,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 106,\n name: \"Hitmonlee\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 120, defense: 53, speed: 87, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 107,\n name: \"Hitmonchan\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 105, defense: 79, speed: 76, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 108,\n name: \"Lickitung\",\n types: [\"Normal\"],\n baseStats: { hp: 90, attack: 55, defense: 75, speed: 30, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 48,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 109,\n name: \"Koffing\",\n types: [\"Poison\"],\n baseStats: { hp: 40, attack: 65, defense: 95, speed: 35, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 49,\n rarity: \"common\",\n catchRate: 190,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 110,\n name: \"Weezing\",\n types: [\"Poison\"],\n baseStats: { hp: 65, attack: 90, defense: 120, speed: 60, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 49,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 111,\n name: \"Rhyhorn\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 80, attack: 85, defense: 95, speed: 25, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 112,\n name: \"Rhydon\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 105, attack: 130, defense: 120, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 113,\n name: \"Chansey\",\n types: [\"Normal\"],\n baseStats: { hp: 250, attack: 5, defense: 5, speed: 50, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 114,\n name: \"Tangela\",\n types: [\"Grass\"],\n baseStats: { hp: 65, attack: 55, defense: 115, speed: 60, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 52,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 115,\n name: \"Kangaskhan\",\n types: [\"Normal\"],\n baseStats: { hp: 105, attack: 95, defense: 80, speed: 90, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 53,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 116,\n name: \"Horsea\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 40, defense: 70, speed: 60, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"common\",\n catchRate: 225,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 117,\n name: \"Seadra\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 65, defense: 95, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 118,\n name: \"Goldeen\",\n types: [\"Water\"],\n baseStats: { hp: 45, attack: 67, defense: 60, speed: 63, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 55,\n rarity: \"common\",\n catchRate: 225,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 119,\n name: \"Seaking\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 92, defense: 65, speed: 68, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 55,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 120,\n name: \"Staryu\",\n types: [\"Water\"],\n baseStats: { hp: 30, attack: 45, defense: 55, speed: 85, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 56,\n rarity: \"common\",\n catchRate: 225,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 121,\n name: \"Starmie\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 60, attack: 75, defense: 85, speed: 115, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 56,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 122,\n name: \"Mr. Mime\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 40, attack: 45, defense: 65, speed: 90, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 123,\n name: \"Scyther\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 110, defense: 80, speed: 105, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 124,\n name: \"Jynx\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 65, attack: 50, defense: 35, speed: 95, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 59,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 125,\n name: \"Electabuzz\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 83, defense: 57, speed: 105, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 126,\n name: \"Magmar\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 95, defense: 57, speed: 93, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 127,\n name: \"Pinsir\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 125, defense: 100, speed: 85, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 62,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 128,\n name: \"Tauros\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 100, defense: 95, speed: 110, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 63,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 129,\n name: \"Magikarp\",\n types: [\"Water\"],\n baseStats: { hp: 20, attack: 10, defense: 55, speed: 80, special: 20 },\n expGroup: \"slow\",\n evolutionChainId: 64,\n rarity: \"common\",\n catchRate: 255,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 130,\n name: \"Gyarados\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 95, attack: 125, defense: 79, speed: 81, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 64,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 131,\n name: \"Lapras\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 130, attack: 85, defense: 80, speed: 60, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 65,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 132,\n name: \"Ditto\",\n types: [\"Normal\"],\n baseStats: { hp: 48, attack: 48, defense: 48, speed: 48, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 66,\n rarity: \"rare\",\n catchRate: 35,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 133,\n name: \"Eevee\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 55, defense: 50, speed: 55, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 134,\n name: \"Vaporeon\",\n types: [\"Water\"],\n baseStats: { hp: 130, attack: 65, defense: 60, speed: 65, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 135,\n name: \"Jolteon\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 65, defense: 60, speed: 130, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 136,\n name: \"Flareon\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 130, defense: 60, speed: 65, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 137,\n name: \"Porygon\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 60, defense: 70, speed: 40, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 138,\n name: \"Omanyte\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 35, attack: 40, defense: 100, speed: 35, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 69,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 139,\n name: \"Omastar\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 70, attack: 60, defense: 125, speed: 55, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 69,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 140,\n name: \"Kabuto\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 30, attack: 80, defense: 90, speed: 55, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 70,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 141,\n name: \"Kabutops\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 60, attack: 115, defense: 105, speed: 80, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 70,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 142,\n name: \"Aerodactyl\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 80, attack: 105, defense: 65, speed: 130, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 71,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 143,\n name: \"Snorlax\",\n types: [\"Normal\"],\n baseStats: { hp: 160, attack: 110, defense: 65, speed: 30, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 72,\n rarity: \"rare\",\n catchRate: 25,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 144,\n name: \"Articuno\",\n types: [\"Ice\", \"Flying\"],\n baseStats: { hp: 90, attack: 85, defense: 100, speed: 85, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 73,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 145,\n name: \"Zapdos\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 90, attack: 90, defense: 85, speed: 100, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 74,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 146,\n name: \"Moltres\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 90, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 75,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 147,\n name: \"Dratini\",\n types: [\"Dragon\"],\n baseStats: { hp: 41, attack: 64, defense: 45, speed: 50, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 148,\n name: \"Dragonair\",\n types: [\"Dragon\"],\n baseStats: { hp: 61, attack: 84, defense: 65, speed: 70, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 149,\n name: \"Dragonite\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 91, attack: 134, defense: 95, speed: 80, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 76,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 150,\n name: \"Mewtwo\",\n types: [\"Psychic\"],\n baseStats: { hp: 106, attack: 110, defense: 90, speed: 130, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 77,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 151,\n name: \"Mew\",\n types: [\"Psychic\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 78,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n\n // \u2500\u2500 Gen 2 \u2014 Johto (#152\u2013#251) \u2500\u2500\n {\n id: 152,\n name: \"Chikorita\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 49, defense: 65, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 153,\n name: \"Bayleef\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 62, defense: 80, speed: 60, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 154,\n name: \"Meganium\",\n types: [\"Grass\"],\n baseStats: { hp: 80, attack: 82, defense: 100, speed: 80, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 79,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 155,\n name: \"Cyndaquil\",\n types: [\"Fire\"],\n baseStats: { hp: 39, attack: 52, defense: 43, speed: 65, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 156,\n name: \"Quilava\",\n types: [\"Fire\"],\n baseStats: { hp: 58, attack: 64, defense: 58, speed: 80, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 157,\n name: \"Typhlosion\",\n types: [\"Fire\"],\n baseStats: { hp: 78, attack: 84, defense: 78, speed: 100, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 80,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 158,\n name: \"Totodile\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 65, defense: 64, speed: 43, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 159,\n name: \"Croconaw\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 80, defense: 80, speed: 58, special: 63 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 160,\n name: \"Feraligatr\",\n types: [\"Water\"],\n baseStats: { hp: 85, attack: 105, defense: 100, speed: 78, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 81,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 161,\n name: \"Sentret\",\n types: [\"Normal\"],\n baseStats: { hp: 35, attack: 46, defense: 34, speed: 20, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 82,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 162,\n name: \"Furret\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 76, defense: 64, speed: 90, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 82,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 163,\n name: \"Hoothoot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 30, defense: 30, speed: 50, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 83,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 164,\n name: \"Noctowl\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 100, attack: 50, defense: 50, speed: 70, special: 96 },\n expGroup: \"medium_fast\",\n evolutionChainId: 83,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 165,\n name: \"Ledyba\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 40, attack: 20, defense: 30, speed: 55, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 84,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 166,\n name: \"Ledian\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 55, attack: 35, defense: 50, speed: 85, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 84,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 167,\n name: \"Spinarak\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 60, defense: 40, speed: 30, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 85,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 168,\n name: \"Ariados\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 70, attack: 90, defense: 70, speed: 40, special: 70 },\n expGroup: \"fast\",\n evolutionChainId: 85,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 169,\n name: \"Crobat\",\n types: [\"Poison\", \"Flying\"],\n baseStats: { hp: 85, attack: 90, defense: 80, speed: 130, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 17,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 170,\n name: \"Chinchou\",\n types: [\"Water\", \"Electric\"],\n baseStats: { hp: 75, attack: 38, defense: 38, speed: 67, special: 56 },\n expGroup: \"slow\",\n evolutionChainId: 86,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 171,\n name: \"Lanturn\",\n types: [\"Water\", \"Electric\"],\n baseStats: { hp: 125, attack: 58, defense: 58, speed: 67, special: 76 },\n expGroup: \"slow\",\n evolutionChainId: 86,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 172,\n name: \"Pichu\",\n types: [\"Electric\"],\n baseStats: { hp: 20, attack: 40, defense: 15, speed: 60, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 10,\n rarity: \"common\",\n catchRate: 190,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 173,\n name: \"Cleffa\",\n types: [\"Fairy\"],\n baseStats: { hp: 50, attack: 25, defense: 28, speed: 15, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 14,\n rarity: \"common\",\n catchRate: 150,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 174,\n name: \"Igglybuff\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 90, attack: 30, defense: 15, speed: 15, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 16,\n rarity: \"common\",\n catchRate: 170,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 175,\n name: \"Togepi\",\n types: [\"Fairy\"],\n baseStats: { hp: 35, attack: 20, defense: 65, speed: 20, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 176,\n name: \"Togetic\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 55, attack: 40, defense: 85, speed: 40, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 177,\n name: \"Natu\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 40, attack: 50, defense: 45, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 88,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 178,\n name: \"Xatu\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 65, attack: 75, defense: 70, speed: 95, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 88,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 179,\n name: \"Mareep\",\n types: [\"Electric\"],\n baseStats: { hp: 55, attack: 40, defense: 40, speed: 35, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"common\",\n catchRate: 235,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 180,\n name: \"Flaaffy\",\n types: [\"Electric\"],\n baseStats: { hp: 70, attack: 55, defense: 55, speed: 45, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 181,\n name: \"Ampharos\",\n types: [\"Electric\"],\n baseStats: { hp: 90, attack: 75, defense: 85, speed: 55, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 89,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 182,\n name: \"Bellossom\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 80, defense: 95, speed: 50, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 18,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 183,\n name: \"Marill\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 70, attack: 20, defense: 50, speed: 40, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 184,\n name: \"Azumarill\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 100, attack: 50, defense: 80, speed: 50, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 185,\n name: \"Sudowoodo\",\n types: [\"Rock\"],\n baseStats: { hp: 70, attack: 100, defense: 115, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 91,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 186,\n name: \"Politoed\",\n types: [\"Water\"],\n baseStats: { hp: 90, attack: 75, defense: 75, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 26,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 187,\n name: \"Hoppip\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 35, attack: 35, defense: 40, speed: 50, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 188,\n name: \"Skiploom\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 55, attack: 45, defense: 50, speed: 80, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 189,\n name: \"Jumpluff\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 75, attack: 55, defense: 70, speed: 110, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 92,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 190,\n name: \"Aipom\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 70, defense: 55, speed: 85, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 93,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 191,\n name: \"Sunkern\",\n types: [\"Grass\"],\n baseStats: { hp: 30, attack: 30, defense: 30, speed: 30, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 94,\n rarity: \"common\",\n catchRate: 235,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 192,\n name: \"Sunflora\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 75, defense: 55, speed: 30, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 94,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 193,\n name: \"Yanma\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 65, attack: 65, defense: 45, speed: 95, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 95,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 194,\n name: \"Wooper\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 55, attack: 45, defense: 45, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 96,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 195,\n name: \"Quagsire\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 95, attack: 85, defense: 85, speed: 35, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 96,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 196,\n name: \"Espeon\",\n types: [\"Psychic\"],\n baseStats: { hp: 65, attack: 65, defense: 60, speed: 110, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 197,\n name: \"Umbreon\",\n types: [\"Dark\"],\n baseStats: { hp: 95, attack: 65, defense: 110, speed: 65, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 198,\n name: \"Murkrow\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 60, attack: 85, defense: 42, speed: 91, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 97,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 199,\n name: \"Slowking\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 95, attack: 75, defense: 80, speed: 30, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 33,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 200,\n name: \"Misdreavus\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 85, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 98,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 201,\n name: \"Unown\",\n types: [\"Psychic\"],\n baseStats: { hp: 48, attack: 72, defense: 48, speed: 48, special: 72 },\n expGroup: \"medium_fast\",\n evolutionChainId: 99,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 202,\n name: \"Wobbuffet\",\n types: [\"Psychic\"],\n baseStats: { hp: 190, attack: 33, defense: 58, speed: 33, special: 58 },\n expGroup: \"medium_fast\",\n evolutionChainId: 100,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 203,\n name: \"Girafarig\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 70, attack: 80, defense: 65, speed: 85, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 101,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 204,\n name: \"Pineco\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 65, defense: 90, speed: 15, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 102,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 205,\n name: \"Forretress\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 75, attack: 90, defense: 140, speed: 40, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 102,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 206,\n name: \"Dunsparce\",\n types: [\"Normal\"],\n baseStats: { hp: 100, attack: 70, defense: 70, speed: 45, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 103,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 207,\n name: \"Gligar\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 65, attack: 75, defense: 105, speed: 85, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 104,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 208,\n name: \"Steelix\",\n types: [\"Steel\", \"Ground\"],\n baseStats: { hp: 75, attack: 85, defense: 200, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 41,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 209,\n name: \"Snubbull\",\n types: [\"Fairy\"],\n baseStats: { hp: 60, attack: 80, defense: 50, speed: 30, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 105,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 210,\n name: \"Granbull\",\n types: [\"Fairy\"],\n baseStats: { hp: 90, attack: 120, defense: 75, speed: 45, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 105,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 211,\n name: \"Qwilfish\",\n types: [\"Water\", \"Poison\"],\n baseStats: { hp: 65, attack: 95, defense: 85, speed: 85, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 106,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 212,\n name: \"Scizor\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 70, attack: 130, defense: 100, speed: 65, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 213,\n name: \"Shuckle\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 20, attack: 10, defense: 230, speed: 5, special: 230 },\n expGroup: \"medium_slow\",\n evolutionChainId: 107,\n rarity: \"common\",\n catchRate: 190,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 214,\n name: \"Heracross\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 80, attack: 125, defense: 75, speed: 85, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 108,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 215,\n name: \"Sneasel\",\n types: [\"Dark\", \"Ice\"],\n baseStats: { hp: 55, attack: 95, defense: 55, speed: 115, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 216,\n name: \"Teddiursa\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 80, defense: 50, speed: 40, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 217,\n name: \"Ursaring\",\n types: [\"Normal\"],\n baseStats: { hp: 90, attack: 130, defense: 75, speed: 55, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 218,\n name: \"Slugma\",\n types: [\"Fire\"],\n baseStats: { hp: 40, attack: 40, defense: 40, speed: 20, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 111,\n rarity: \"common\",\n catchRate: 190,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 219,\n name: \"Magcargo\",\n types: [\"Fire\", \"Rock\"],\n baseStats: { hp: 60, attack: 50, defense: 120, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 111,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 220,\n name: \"Swinub\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 50, attack: 50, defense: 40, speed: 50, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"common\",\n catchRate: 225,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 221,\n name: \"Piloswine\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 100, attack: 100, defense: 80, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 222,\n name: \"Corsola\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 65, attack: 55, defense: 95, speed: 35, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 113,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 223,\n name: \"Remoraid\",\n types: [\"Water\"],\n baseStats: { hp: 35, attack: 65, defense: 35, speed: 65, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 114,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 224,\n name: \"Octillery\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 105, defense: 75, speed: 45, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 114,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 225,\n name: \"Delibird\",\n types: [\"Ice\", \"Flying\"],\n baseStats: { hp: 45, attack: 55, defense: 45, speed: 75, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 115,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 226,\n name: \"Mantine\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 85, attack: 40, defense: 70, speed: 70, special: 140 },\n expGroup: \"slow\",\n evolutionChainId: 116,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 227,\n name: \"Skarmory\",\n types: [\"Steel\", \"Flying\"],\n baseStats: { hp: 65, attack: 80, defense: 140, speed: 70, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 117,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 228,\n name: \"Houndour\",\n types: [\"Dark\", \"Fire\"],\n baseStats: { hp: 45, attack: 60, defense: 30, speed: 65, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 118,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 229,\n name: \"Houndoom\",\n types: [\"Dark\", \"Fire\"],\n baseStats: { hp: 75, attack: 90, defense: 50, speed: 95, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 118,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 230,\n name: \"Kingdra\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 75, attack: 95, defense: 95, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 54,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 231,\n name: \"Phanpy\",\n types: [\"Ground\"],\n baseStats: { hp: 90, attack: 60, defense: 60, speed: 40, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 119,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 232,\n name: \"Donphan\",\n types: [\"Ground\"],\n baseStats: { hp: 90, attack: 120, defense: 120, speed: 50, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 119,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 233,\n name: \"Porygon2\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 80, defense: 90, speed: 60, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 234,\n name: \"Stantler\",\n types: [\"Normal\"],\n baseStats: { hp: 73, attack: 95, defense: 62, speed: 85, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 120,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 235,\n name: \"Smeargle\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 20, defense: 35, speed: 75, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 121,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 236,\n name: \"Tyrogue\",\n types: [\"Fighting\"],\n baseStats: { hp: 35, attack: 35, defense: 35, speed: 35, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 237,\n name: \"Hitmontop\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 95, defense: 95, speed: 70, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 47,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 238,\n name: \"Smoochum\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 15, speed: 65, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 59,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 239,\n name: \"Elekid\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 63, defense: 37, speed: 95, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 240,\n name: \"Magby\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 75, defense: 37, speed: 83, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 241,\n name: \"Miltank\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 80, defense: 105, speed: 100, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 122,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 242,\n name: \"Blissey\",\n types: [\"Normal\"],\n baseStats: { hp: 255, attack: 10, defense: 10, speed: 55, special: 135 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"rare\",\n catchRate: 30,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 243,\n name: \"Raikou\",\n types: [\"Electric\"],\n baseStats: { hp: 90, attack: 85, defense: 75, speed: 115, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 123,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 244,\n name: \"Entei\",\n types: [\"Fire\"],\n baseStats: { hp: 115, attack: 115, defense: 85, speed: 100, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 124,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 245,\n name: \"Suicune\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 75, defense: 115, speed: 85, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 125,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 246,\n name: \"Larvitar\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 50, attack: 64, defense: 50, speed: 41, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 247,\n name: \"Pupitar\",\n types: [\"Rock\", \"Ground\"],\n baseStats: { hp: 70, attack: 84, defense: 70, speed: 51, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 248,\n name: \"Tyranitar\",\n types: [\"Rock\", \"Dark\"],\n baseStats: { hp: 100, attack: 134, defense: 110, speed: 61, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 126,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 249,\n name: \"Lugia\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 106, attack: 90, defense: 130, speed: 110, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 127,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 250,\n name: \"Ho-Oh\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 106, attack: 130, defense: 90, speed: 90, special: 154 },\n expGroup: \"slow\",\n evolutionChainId: 128,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 251,\n name: \"Celebi\",\n types: [\"Psychic\", \"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 129,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n\n // \u2500\u2500 Gen 3 \u2014 Hoenn (#252\u2013#386) \u2500\u2500\n {\n id: 252,\n name: \"Treecko\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 45, defense: 35, speed: 70, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 253,\n name: \"Grovyle\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 65, defense: 45, speed: 95, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 254,\n name: \"Sceptile\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 85, defense: 65, speed: 120, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 130,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 255,\n name: \"Torchic\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 60, defense: 40, speed: 45, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 256,\n name: \"Combusken\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 60, attack: 85, defense: 60, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 257,\n name: \"Blaziken\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 80, attack: 120, defense: 70, speed: 80, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 131,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 258,\n name: \"Mudkip\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 70, defense: 50, speed: 40, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 259,\n name: \"Marshtomp\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 70, attack: 85, defense: 70, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 260,\n name: \"Swampert\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 100, attack: 110, defense: 90, speed: 60, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 132,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 261,\n name: \"Poochyena\",\n types: [\"Dark\"],\n baseStats: { hp: 35, attack: 55, defense: 35, speed: 35, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 133,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 262,\n name: \"Mightyena\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 70, speed: 70, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 133,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 263,\n name: \"Zigzagoon\",\n types: [\"Normal\"],\n baseStats: { hp: 38, attack: 30, defense: 41, speed: 60, special: 41 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 264,\n name: \"Linoone\",\n types: [\"Normal\"],\n baseStats: { hp: 78, attack: 70, defense: 61, speed: 100, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 265,\n name: \"Wurmple\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 45, defense: 35, speed: 20, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 266,\n name: \"Silcoon\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 35, defense: 55, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 267,\n name: \"Beautifly\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 60, attack: 70, defense: 50, speed: 65, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 268,\n name: \"Cascoon\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 35, defense: 55, speed: 15, special: 25 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 269,\n name: \"Dustox\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 50, defense: 70, speed: 65, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 135,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 270,\n name: \"Lotad\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 40, attack: 30, defense: 30, speed: 30, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 271,\n name: \"Lombre\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 60, attack: 50, defense: 50, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 272,\n name: \"Ludicolo\",\n types: [\"Water\", \"Grass\"],\n baseStats: { hp: 80, attack: 70, defense: 70, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 136,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 273,\n name: \"Seedot\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 40, defense: 50, speed: 30, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"common\",\n catchRate: 255,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 274,\n name: \"Nuzleaf\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 70, attack: 70, defense: 40, speed: 60, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 275,\n name: \"Shiftry\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 90, attack: 100, defense: 60, speed: 80, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 137,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 276,\n name: \"Taillow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 55, defense: 30, speed: 85, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 138,\n rarity: \"common\",\n catchRate: 200,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 277,\n name: \"Swellow\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 60, attack: 85, defense: 60, speed: 125, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 138,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 278,\n name: \"Wingull\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 40, attack: 30, defense: 30, speed: 85, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 139,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 279,\n name: \"Pelipper\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 60, attack: 50, defense: 100, speed: 65, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 139,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 280,\n name: \"Ralts\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 28, attack: 25, defense: 25, speed: 40, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"common\",\n catchRate: 235,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 281,\n name: \"Kirlia\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 38, attack: 35, defense: 35, speed: 50, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 282,\n name: \"Gardevoir\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 68, attack: 65, defense: 65, speed: 80, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 283,\n name: \"Surskit\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 40, attack: 30, defense: 32, speed: 65, special: 52 },\n expGroup: \"medium_fast\",\n evolutionChainId: 141,\n rarity: \"common\",\n catchRate: 200,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 284,\n name: \"Masquerain\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 60, defense: 62, speed: 80, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 141,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 285,\n name: \"Shroomish\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 40, defense: 60, speed: 35, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 142,\n rarity: \"common\",\n catchRate: 255,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 286,\n name: \"Breloom\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 60, attack: 130, defense: 80, speed: 70, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 142,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 287,\n name: \"Slakoth\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 30, special: 35 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 288,\n name: \"Vigoroth\",\n types: [\"Normal\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 90, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 289,\n name: \"Slaking\",\n types: [\"Normal\"],\n baseStats: { hp: 150, attack: 160, defense: 100, speed: 100, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 143,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 290,\n name: \"Nincada\",\n types: [\"Bug\", \"Ground\"],\n baseStats: { hp: 31, attack: 45, defense: 90, speed: 40, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 291,\n name: \"Ninjask\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 61, attack: 90, defense: 45, speed: 160, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 292,\n name: \"Shedinja\",\n types: [\"Bug\", \"Ghost\"],\n baseStats: { hp: 1, attack: 90, defense: 45, speed: 40, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 144,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 293,\n name: \"Whismur\",\n types: [\"Normal\"],\n baseStats: { hp: 64, attack: 51, defense: 23, speed: 28, special: 51 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"common\",\n catchRate: 190,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 294,\n name: \"Loudred\",\n types: [\"Normal\"],\n baseStats: { hp: 84, attack: 71, defense: 43, speed: 48, special: 71 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 295,\n name: \"Exploud\",\n types: [\"Normal\"],\n baseStats: { hp: 104, attack: 91, defense: 63, speed: 68, special: 91 },\n expGroup: \"medium_slow\",\n evolutionChainId: 145,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 296,\n name: \"Makuhita\",\n types: [\"Fighting\"],\n baseStats: { hp: 72, attack: 60, defense: 30, speed: 25, special: 30 },\n expGroup: \"slow\",\n evolutionChainId: 146,\n rarity: \"common\",\n catchRate: 180,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 297,\n name: \"Hariyama\",\n types: [\"Fighting\"],\n baseStats: { hp: 144, attack: 120, defense: 60, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 146,\n rarity: \"common\",\n catchRate: 200,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 298,\n name: \"Azurill\",\n types: [\"Normal\", \"Fairy\"],\n baseStats: { hp: 50, attack: 20, defense: 40, speed: 20, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 90,\n rarity: \"common\",\n catchRate: 150,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 299,\n name: \"Nosepass\",\n types: [\"Rock\"],\n baseStats: { hp: 30, attack: 45, defense: 135, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 147,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 300,\n name: \"Skitty\",\n types: [\"Normal\"],\n baseStats: { hp: 50, attack: 45, defense: 45, speed: 50, special: 35 },\n expGroup: \"fast\",\n evolutionChainId: 148,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 301,\n name: \"Delcatty\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 65, defense: 65, speed: 90, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 148,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 302,\n name: \"Sableye\",\n types: [\"Dark\", \"Ghost\"],\n baseStats: { hp: 50, attack: 75, defense: 75, speed: 50, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 149,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 303,\n name: \"Mawile\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 50, attack: 85, defense: 85, speed: 50, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 150,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 304,\n name: \"Aron\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 50, attack: 70, defense: 100, speed: 30, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"common\",\n catchRate: 180,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 305,\n name: \"Lairon\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 60, attack: 90, defense: 140, speed: 40, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 306,\n name: \"Aggron\",\n types: [\"Steel\", \"Rock\"],\n baseStats: { hp: 70, attack: 110, defense: 180, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 151,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 307,\n name: \"Meditite\",\n types: [\"Fighting\", \"Psychic\"],\n baseStats: { hp: 30, attack: 40, defense: 55, speed: 60, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 152,\n rarity: \"common\",\n catchRate: 180,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 308,\n name: \"Medicham\",\n types: [\"Fighting\", \"Psychic\"],\n baseStats: { hp: 60, attack: 60, defense: 75, speed: 80, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 152,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 309,\n name: \"Electrike\",\n types: [\"Electric\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 65, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 153,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 310,\n name: \"Manectric\",\n types: [\"Electric\"],\n baseStats: { hp: 70, attack: 75, defense: 60, speed: 105, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 153,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 311,\n name: \"Plusle\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 50, defense: 40, speed: 95, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 154,\n rarity: \"common\",\n catchRate: 200,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 312,\n name: \"Minun\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 40, defense: 50, speed: 95, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 155,\n rarity: \"common\",\n catchRate: 200,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 313,\n name: \"Volbeat\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 73, defense: 75, speed: 85, special: 85 },\n expGroup: \"fast\",\n evolutionChainId: 156,\n rarity: \"common\",\n catchRate: 150,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 314,\n name: \"Illumise\",\n types: [\"Bug\"],\n baseStats: { hp: 65, attack: 47, defense: 75, speed: 85, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 157,\n rarity: \"common\",\n catchRate: 150,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 315,\n name: \"Roselia\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 50, attack: 60, defense: 45, speed: 65, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"common\",\n catchRate: 150,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 316,\n name: \"Gulpin\",\n types: [\"Poison\"],\n baseStats: { hp: 70, attack: 43, defense: 53, speed: 40, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 159,\n rarity: \"common\",\n catchRate: 225,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 317,\n name: \"Swalot\",\n types: [\"Poison\"],\n baseStats: { hp: 100, attack: 73, defense: 83, speed: 55, special: 83 },\n expGroup: \"slow\",\n evolutionChainId: 159,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 318,\n name: \"Carvanha\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 45, attack: 90, defense: 20, speed: 65, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 160,\n rarity: \"common\",\n catchRate: 225,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 319,\n name: \"Sharpedo\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 70, attack: 120, defense: 40, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 160,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 320,\n name: \"Wailmer\",\n types: [\"Water\"],\n baseStats: { hp: 130, attack: 70, defense: 35, speed: 60, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 161,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 321,\n name: \"Wailord\",\n types: [\"Water\"],\n baseStats: { hp: 170, attack: 90, defense: 45, speed: 60, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 161,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 322,\n name: \"Numel\",\n types: [\"Fire\", \"Ground\"],\n baseStats: { hp: 60, attack: 60, defense: 40, speed: 35, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 162,\n rarity: \"common\",\n catchRate: 255,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 323,\n name: \"Camerupt\",\n types: [\"Fire\", \"Ground\"],\n baseStats: { hp: 70, attack: 100, defense: 70, speed: 40, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 162,\n rarity: \"common\",\n catchRate: 150,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 324,\n name: \"Torkoal\",\n types: [\"Fire\"],\n baseStats: { hp: 70, attack: 85, defense: 140, speed: 20, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 163,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 325,\n name: \"Spoink\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 25, defense: 35, speed: 60, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 164,\n rarity: \"common\",\n catchRate: 255,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 326,\n name: \"Grumpig\",\n types: [\"Psychic\"],\n baseStats: { hp: 80, attack: 45, defense: 65, speed: 80, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 164,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 327,\n name: \"Spinda\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 60, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 165,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 328,\n name: \"Trapinch\",\n types: [\"Ground\"],\n baseStats: { hp: 45, attack: 100, defense: 45, speed: 10, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"common\",\n catchRate: 255,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 329,\n name: \"Vibrava\",\n types: [\"Ground\", \"Dragon\"],\n baseStats: { hp: 50, attack: 70, defense: 50, speed: 70, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 330,\n name: \"Flygon\",\n types: [\"Ground\", \"Dragon\"],\n baseStats: { hp: 80, attack: 100, defense: 80, speed: 100, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 166,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 331,\n name: \"Cacnea\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 85, defense: 40, speed: 35, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 167,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 332,\n name: \"Cacturne\",\n types: [\"Grass\", \"Dark\"],\n baseStats: { hp: 70, attack: 115, defense: 60, speed: 55, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 167,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 333,\n name: \"Swablu\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 45, attack: 40, defense: 60, speed: 50, special: 75 },\n expGroup: \"fast\",\n evolutionChainId: 168,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 334,\n name: \"Altaria\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 75, attack: 70, defense: 90, speed: 80, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 168,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 335,\n name: \"Zangoose\",\n types: [\"Normal\"],\n baseStats: { hp: 73, attack: 115, defense: 60, speed: 90, special: 60 },\n expGroup: \"fast\",\n evolutionChainId: 169,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 336,\n name: \"Seviper\",\n types: [\"Poison\"],\n baseStats: { hp: 73, attack: 100, defense: 60, speed: 65, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 170,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 337,\n name: \"Lunatone\",\n types: [\"Rock\", \"Psychic\"],\n baseStats: { hp: 90, attack: 55, defense: 65, speed: 70, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 171,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 338,\n name: \"Solrock\",\n types: [\"Rock\", \"Psychic\"],\n baseStats: { hp: 90, attack: 95, defense: 85, speed: 70, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 172,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 339,\n name: \"Barboach\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 50, attack: 48, defense: 43, speed: 60, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 173,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 340,\n name: \"Whiscash\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 110, attack: 78, defense: 73, speed: 60, special: 76 },\n expGroup: \"medium_fast\",\n evolutionChainId: 173,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 341,\n name: \"Corphish\",\n types: [\"Water\"],\n baseStats: { hp: 43, attack: 80, defense: 65, speed: 35, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 174,\n rarity: \"common\",\n catchRate: 205,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 342,\n name: \"Crawdaunt\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 63, attack: 120, defense: 85, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 174,\n rarity: \"common\",\n catchRate: 155,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 343,\n name: \"Baltoy\",\n types: [\"Ground\", \"Psychic\"],\n baseStats: { hp: 40, attack: 40, defense: 55, speed: 55, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 175,\n rarity: \"common\",\n catchRate: 255,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 344,\n name: \"Claydol\",\n types: [\"Ground\", \"Psychic\"],\n baseStats: { hp: 60, attack: 70, defense: 105, speed: 75, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 175,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 345,\n name: \"Lileep\",\n types: [\"Rock\", \"Grass\"],\n baseStats: { hp: 66, attack: 41, defense: 77, speed: 23, special: 87 },\n expGroup: \"fast\",\n evolutionChainId: 176,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 346,\n name: \"Cradily\",\n types: [\"Rock\", \"Grass\"],\n baseStats: { hp: 86, attack: 81, defense: 97, speed: 43, special: 107 },\n expGroup: \"fast\",\n evolutionChainId: 176,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 347,\n name: \"Anorith\",\n types: [\"Rock\", \"Bug\"],\n baseStats: { hp: 45, attack: 95, defense: 50, speed: 75, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 177,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 348,\n name: \"Armaldo\",\n types: [\"Rock\", \"Bug\"],\n baseStats: { hp: 75, attack: 125, defense: 100, speed: 45, special: 80 },\n expGroup: \"fast\",\n evolutionChainId: 177,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 349,\n name: \"Feebas\",\n types: [\"Water\"],\n baseStats: { hp: 20, attack: 15, defense: 20, speed: 80, special: 55 },\n expGroup: \"fast\",\n evolutionChainId: 178,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 350,\n name: \"Milotic\",\n types: [\"Water\"],\n baseStats: { hp: 95, attack: 60, defense: 79, speed: 81, special: 125 },\n expGroup: \"fast\",\n evolutionChainId: 178,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 351,\n name: \"Castform\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 70, defense: 70, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 179,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 352,\n name: \"Kecleon\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 90, defense: 70, speed: 40, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 180,\n rarity: \"common\",\n catchRate: 200,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 353,\n name: \"Shuppet\",\n types: [\"Ghost\"],\n baseStats: { hp: 44, attack: 75, defense: 35, speed: 45, special: 63 },\n expGroup: \"fast\",\n evolutionChainId: 181,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 354,\n name: \"Banette\",\n types: [\"Ghost\"],\n baseStats: { hp: 64, attack: 115, defense: 65, speed: 65, special: 83 },\n expGroup: \"fast\",\n evolutionChainId: 181,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 355,\n name: \"Duskull\",\n types: [\"Ghost\"],\n baseStats: { hp: 20, attack: 40, defense: 90, speed: 25, special: 90 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 356,\n name: \"Dusclops\",\n types: [\"Ghost\"],\n baseStats: { hp: 40, attack: 70, defense: 130, speed: 25, special: 130 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 357,\n name: \"Tropius\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 99, attack: 68, defense: 83, speed: 51, special: 87 },\n expGroup: \"slow\",\n evolutionChainId: 183,\n rarity: \"common\",\n catchRate: 200,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 358,\n name: \"Chimecho\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 50, defense: 80, speed: 65, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 184,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 359,\n name: \"Absol\",\n types: [\"Dark\"],\n baseStats: { hp: 65, attack: 130, defense: 60, speed: 75, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 185,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 360,\n name: \"Wynaut\",\n types: [\"Psychic\"],\n baseStats: { hp: 95, attack: 23, defense: 48, speed: 23, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 100,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 361,\n name: \"Snorunt\",\n types: [\"Ice\"],\n baseStats: { hp: 50, attack: 50, defense: 50, speed: 50, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 362,\n name: \"Glalie\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 363,\n name: \"Spheal\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 70, attack: 40, defense: 50, speed: 25, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 364,\n name: \"Sealeo\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 90, attack: 60, defense: 70, speed: 45, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 365,\n name: \"Walrein\",\n types: [\"Ice\", \"Water\"],\n baseStats: { hp: 110, attack: 80, defense: 90, speed: 65, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 187,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 366,\n name: \"Clamperl\",\n types: [\"Water\"],\n baseStats: { hp: 35, attack: 64, defense: 85, speed: 32, special: 74 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"common\",\n catchRate: 255,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 367,\n name: \"Huntail\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 104, defense: 105, speed: 52, special: 94 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 368,\n name: \"Gorebyss\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 84, defense: 105, speed: 52, special: 114 },\n expGroup: \"fast\",\n evolutionChainId: 188,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 369,\n name: \"Relicanth\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 100, attack: 90, defense: 130, speed: 55, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 189,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 370,\n name: \"Luvdisc\",\n types: [\"Water\"],\n baseStats: { hp: 43, attack: 30, defense: 55, speed: 97, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 190,\n rarity: \"common\",\n catchRate: 225,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 371,\n name: \"Bagon\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 75, defense: 60, speed: 50, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 372,\n name: \"Shelgon\",\n types: [\"Dragon\"],\n baseStats: { hp: 65, attack: 95, defense: 100, speed: 50, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 373,\n name: \"Salamence\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 95, attack: 135, defense: 80, speed: 100, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 191,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 374,\n name: \"Beldum\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 40, attack: 55, defense: 80, speed: 30, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 375,\n name: \"Metang\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 60, attack: 75, defense: 100, speed: 50, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 376,\n name: \"Metagross\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 80, attack: 135, defense: 130, speed: 70, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 192,\n rarity: \"rare\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 377,\n name: \"Regirock\",\n types: [\"Rock\"],\n baseStats: { hp: 80, attack: 100, defense: 200, speed: 50, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 193,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 378,\n name: \"Regice\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 50, defense: 100, speed: 50, special: 200 },\n expGroup: \"slow\",\n evolutionChainId: 194,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 379,\n name: \"Registeel\",\n types: [\"Steel\"],\n baseStats: { hp: 80, attack: 75, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 195,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 380,\n name: \"Latias\",\n types: [\"Dragon\", \"Psychic\"],\n baseStats: { hp: 80, attack: 80, defense: 90, speed: 110, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 196,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 381,\n name: \"Latios\",\n types: [\"Dragon\", \"Psychic\"],\n baseStats: { hp: 80, attack: 90, defense: 80, speed: 110, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 197,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 382,\n name: \"Kyogre\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 100, defense: 90, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 198,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 383,\n name: \"Groudon\",\n types: [\"Ground\"],\n baseStats: { hp: 100, attack: 150, defense: 140, speed: 90, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 199,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 384,\n name: \"Rayquaza\",\n types: [\"Dragon\", \"Flying\"],\n baseStats: { hp: 105, attack: 150, defense: 90, speed: 95, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 200,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 385,\n name: \"Jirachi\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 201,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 386,\n name: \"Deoxys-Normal\",\n types: [\"Psychic\"],\n baseStats: { hp: 50, attack: 150, defense: 50, speed: 150, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 202,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n\n // \u2500\u2500 Gen 4 \u2014 Sinnoh (#387\u2013#493) \u2500\u2500\n {\n id: 387,\n name: \"Turtwig\",\n types: [\"Grass\"],\n baseStats: { hp: 55, attack: 68, defense: 64, speed: 31, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 388,\n name: \"Grotle\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 89, defense: 85, speed: 36, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 389,\n name: \"Torterra\",\n types: [\"Grass\", \"Ground\"],\n baseStats: { hp: 95, attack: 109, defense: 105, speed: 56, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 203,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 390,\n name: \"Chimchar\",\n types: [\"Fire\"],\n baseStats: { hp: 44, attack: 58, defense: 44, speed: 61, special: 58 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 391,\n name: \"Monferno\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 64, attack: 78, defense: 52, speed: 81, special: 78 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 392,\n name: \"Infernape\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 76, attack: 104, defense: 71, speed: 108, special: 104 },\n expGroup: \"medium_slow\",\n evolutionChainId: 204,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 393,\n name: \"Piplup\",\n types: [\"Water\"],\n baseStats: { hp: 53, attack: 51, defense: 53, speed: 40, special: 61 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 394,\n name: \"Prinplup\",\n types: [\"Water\"],\n baseStats: { hp: 64, attack: 66, defense: 68, speed: 50, special: 81 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 395,\n name: \"Empoleon\",\n types: [\"Water\", \"Steel\"],\n baseStats: { hp: 84, attack: 86, defense: 88, speed: 60, special: 111 },\n expGroup: \"medium_slow\",\n evolutionChainId: 205,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 396,\n name: \"Starly\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 40, attack: 55, defense: 30, speed: 60, special: 30 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 397,\n name: \"Staravia\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 55, attack: 75, defense: 50, speed: 80, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 398,\n name: \"Staraptor\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 85, attack: 120, defense: 70, speed: 100, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 206,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 399,\n name: \"Bidoof\",\n types: [\"Normal\"],\n baseStats: { hp: 59, attack: 45, defense: 40, speed: 31, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 207,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 400,\n name: \"Bibarel\",\n types: [\"Normal\", \"Water\"],\n baseStats: { hp: 79, attack: 85, defense: 60, speed: 71, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 207,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 401,\n name: \"Kricketot\",\n types: [\"Bug\"],\n baseStats: { hp: 37, attack: 25, defense: 41, speed: 25, special: 41 },\n expGroup: \"medium_slow\",\n evolutionChainId: 208,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 402,\n name: \"Kricketune\",\n types: [\"Bug\"],\n baseStats: { hp: 77, attack: 85, defense: 51, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 208,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 403,\n name: \"Shinx\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 65, defense: 34, speed: 45, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 404,\n name: \"Luxio\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 85, defense: 49, speed: 60, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 405,\n name: \"Luxray\",\n types: [\"Electric\"],\n baseStats: { hp: 80, attack: 120, defense: 79, speed: 70, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 209,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 406,\n name: \"Budew\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 40, attack: 30, defense: 35, speed: 55, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 407,\n name: \"Roserade\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 60, attack: 70, defense: 65, speed: 90, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 158,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 408,\n name: \"Cranidos\",\n types: [\"Rock\"],\n baseStats: { hp: 67, attack: 125, defense: 40, speed: 58, special: 30 },\n expGroup: \"fast\",\n evolutionChainId: 211,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 409,\n name: \"Rampardos\",\n types: [\"Rock\"],\n baseStats: { hp: 97, attack: 165, defense: 60, speed: 58, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 211,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 410,\n name: \"Shieldon\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 30, attack: 42, defense: 118, speed: 30, special: 88 },\n expGroup: \"fast\",\n evolutionChainId: 212,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 411,\n name: \"Bastiodon\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 60, attack: 52, defense: 168, speed: 30, special: 138 },\n expGroup: \"fast\",\n evolutionChainId: 212,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 412,\n name: \"Burmy\",\n types: [\"Bug\"],\n baseStats: { hp: 40, attack: 29, defense: 45, speed: 36, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 413,\n name: \"Wormadam-Plant\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 60, attack: 59, defense: 85, speed: 36, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 414,\n name: \"Mothim\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 94, defense: 50, speed: 66, special: 94 },\n expGroup: \"medium_fast\",\n evolutionChainId: 213,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 415,\n name: \"Combee\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 30, attack: 30, defense: 42, speed: 70, special: 42 },\n expGroup: \"medium_slow\",\n evolutionChainId: 214,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 416,\n name: \"Vespiquen\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 70, attack: 80, defense: 102, speed: 40, special: 102 },\n expGroup: \"medium_slow\",\n evolutionChainId: 214,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 417,\n name: \"Pachirisu\",\n types: [\"Electric\"],\n baseStats: { hp: 60, attack: 45, defense: 70, speed: 95, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 215,\n rarity: \"common\",\n catchRate: 200,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 418,\n name: \"Buizel\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 65, defense: 35, speed: 85, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 216,\n rarity: \"common\",\n catchRate: 190,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 419,\n name: \"Floatzel\",\n types: [\"Water\"],\n baseStats: { hp: 85, attack: 105, defense: 55, speed: 115, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 216,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 420,\n name: \"Cherubi\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 35, defense: 45, speed: 35, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 217,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 421,\n name: \"Cherrim\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 60, defense: 70, speed: 85, special: 87 },\n expGroup: \"medium_fast\",\n evolutionChainId: 217,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 422,\n name: \"Shellos\",\n types: [\"Water\"],\n baseStats: { hp: 76, attack: 48, defense: 48, speed: 34, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 218,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 423,\n name: \"Gastrodon\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 111, attack: 83, defense: 68, speed: 39, special: 92 },\n expGroup: \"medium_fast\",\n evolutionChainId: 218,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 424,\n name: \"Ambipom\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 100, defense: 66, speed: 115, special: 66 },\n expGroup: \"fast\",\n evolutionChainId: 93,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 425,\n name: \"Drifloon\",\n types: [\"Ghost\", \"Flying\"],\n baseStats: { hp: 90, attack: 50, defense: 34, speed: 70, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 219,\n rarity: \"uncommon\",\n catchRate: 125,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 426,\n name: \"Drifblim\",\n types: [\"Ghost\", \"Flying\"],\n baseStats: { hp: 150, attack: 80, defense: 44, speed: 80, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 219,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 427,\n name: \"Buneary\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 66, defense: 44, speed: 85, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 220,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 428,\n name: \"Lopunny\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 76, defense: 84, speed: 105, special: 96 },\n expGroup: \"medium_fast\",\n evolutionChainId: 220,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 429,\n name: \"Mismagius\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 60, defense: 60, speed: 105, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 98,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 430,\n name: \"Honchkrow\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 100, attack: 125, defense: 52, speed: 71, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 97,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 431,\n name: \"Glameow\",\n types: [\"Normal\"],\n baseStats: { hp: 49, attack: 55, defense: 42, speed: 85, special: 42 },\n expGroup: \"fast\",\n evolutionChainId: 221,\n rarity: \"common\",\n catchRate: 190,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 432,\n name: \"Purugly\",\n types: [\"Normal\"],\n baseStats: { hp: 71, attack: 82, defense: 64, speed: 112, special: 64 },\n expGroup: \"fast\",\n evolutionChainId: 221,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 433,\n name: \"Chingling\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 50, speed: 45, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 184,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 434,\n name: \"Stunky\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 63, attack: 63, defense: 47, speed: 74, special: 41 },\n expGroup: \"medium_fast\",\n evolutionChainId: 223,\n rarity: \"common\",\n catchRate: 225,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 435,\n name: \"Skuntank\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 103, attack: 93, defense: 67, speed: 84, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 223,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 436,\n name: \"Bronzor\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 57, attack: 24, defense: 86, speed: 23, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 224,\n rarity: \"common\",\n catchRate: 255,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 437,\n name: \"Bronzong\",\n types: [\"Steel\", \"Psychic\"],\n baseStats: { hp: 67, attack: 89, defense: 116, speed: 33, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 224,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 438,\n name: \"Bonsly\",\n types: [\"Rock\"],\n baseStats: { hp: 50, attack: 80, defense: 95, speed: 10, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 91,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 439,\n name: \"Mime Jr.\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 20, attack: 25, defense: 45, speed: 60, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"uncommon\",\n catchRate: 145,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 440,\n name: \"Happiny\",\n types: [\"Normal\"],\n baseStats: { hp: 100, attack: 5, defense: 5, speed: 30, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 51,\n rarity: \"uncommon\",\n catchRate: 130,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 441,\n name: \"Chatot\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 76, attack: 65, defense: 45, speed: 91, special: 92 },\n expGroup: \"medium_slow\",\n evolutionChainId: 228,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 442,\n name: \"Spiritomb\",\n types: [\"Ghost\", \"Dark\"],\n baseStats: { hp: 50, attack: 92, defense: 108, speed: 35, special: 108 },\n expGroup: \"medium_fast\",\n evolutionChainId: 229,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 443,\n name: \"Gible\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 58, attack: 70, defense: 45, speed: 42, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 444,\n name: \"Gabite\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 68, attack: 90, defense: 65, speed: 82, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 445,\n name: \"Garchomp\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 108, attack: 130, defense: 95, speed: 102, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 230,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 446,\n name: \"Munchlax\",\n types: [\"Normal\"],\n baseStats: { hp: 135, attack: 85, defense: 40, speed: 5, special: 85 },\n expGroup: \"slow\",\n evolutionChainId: 72,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 447,\n name: \"Riolu\",\n types: [\"Fighting\"],\n baseStats: { hp: 40, attack: 70, defense: 40, speed: 60, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 232,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 448,\n name: \"Lucario\",\n types: [\"Fighting\", \"Steel\"],\n baseStats: { hp: 70, attack: 110, defense: 70, speed: 90, special: 115 },\n expGroup: \"medium_slow\",\n evolutionChainId: 232,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 449,\n name: \"Hippopotas\",\n types: [\"Ground\"],\n baseStats: { hp: 68, attack: 72, defense: 78, speed: 32, special: 42 },\n expGroup: \"slow\",\n evolutionChainId: 233,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 450,\n name: \"Hippowdon\",\n types: [\"Ground\"],\n baseStats: { hp: 108, attack: 112, defense: 118, speed: 47, special: 72 },\n expGroup: \"slow\",\n evolutionChainId: 233,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 451,\n name: \"Skorupi\",\n types: [\"Poison\", \"Bug\"],\n baseStats: { hp: 40, attack: 50, defense: 90, speed: 65, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 234,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 452,\n name: \"Drapion\",\n types: [\"Poison\", \"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 110, speed: 95, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 234,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 453,\n name: \"Croagunk\",\n types: [\"Poison\", \"Fighting\"],\n baseStats: { hp: 48, attack: 61, defense: 40, speed: 50, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 235,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 454,\n name: \"Toxicroak\",\n types: [\"Poison\", \"Fighting\"],\n baseStats: { hp: 83, attack: 106, defense: 65, speed: 85, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 235,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 455,\n name: \"Carnivine\",\n types: [\"Grass\"],\n baseStats: { hp: 74, attack: 100, defense: 72, speed: 46, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 236,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 456,\n name: \"Finneon\",\n types: [\"Water\"],\n baseStats: { hp: 49, attack: 49, defense: 56, speed: 66, special: 61 },\n expGroup: \"fast\",\n evolutionChainId: 237,\n rarity: \"common\",\n catchRate: 190,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 457,\n name: \"Lumineon\",\n types: [\"Water\"],\n baseStats: { hp: 69, attack: 69, defense: 76, speed: 91, special: 86 },\n expGroup: \"fast\",\n evolutionChainId: 237,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 458,\n name: \"Mantyke\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 45, attack: 20, defense: 50, speed: 50, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 116,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 459,\n name: \"Snover\",\n types: [\"Grass\", \"Ice\"],\n baseStats: { hp: 60, attack: 62, defense: 50, speed: 40, special: 62 },\n expGroup: \"slow\",\n evolutionChainId: 239,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 460,\n name: \"Abomasnow\",\n types: [\"Grass\", \"Ice\"],\n baseStats: { hp: 90, attack: 92, defense: 75, speed: 60, special: 92 },\n expGroup: \"slow\",\n evolutionChainId: 239,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 461,\n name: \"Weavile\",\n types: [\"Dark\", \"Ice\"],\n baseStats: { hp: 70, attack: 120, defense: 65, speed: 125, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 462,\n name: \"Magnezone\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 70, attack: 70, defense: 115, speed: 60, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 34,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 463,\n name: \"Lickilicky\",\n types: [\"Normal\"],\n baseStats: { hp: 110, attack: 85, defense: 95, speed: 50, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 48,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 464,\n name: \"Rhyperior\",\n types: [\"Ground\", \"Rock\"],\n baseStats: { hp: 115, attack: 140, defense: 130, speed: 40, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 50,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 465,\n name: \"Tangrowth\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 125, speed: 50, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 52,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 466,\n name: \"Electivire\",\n types: [\"Electric\"],\n baseStats: { hp: 75, attack: 123, defense: 67, speed: 95, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 60,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 467,\n name: \"Magmortar\",\n types: [\"Fire\"],\n baseStats: { hp: 75, attack: 95, defense: 67, speed: 83, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 61,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 468,\n name: \"Togekiss\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 85, attack: 50, defense: 95, speed: 80, special: 120 },\n expGroup: \"fast\",\n evolutionChainId: 87,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 469,\n name: \"Yanmega\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 86, attack: 76, defense: 86, speed: 95, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 95,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 470,\n name: \"Leafeon\",\n types: [\"Grass\"],\n baseStats: { hp: 65, attack: 110, defense: 130, speed: 95, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 471,\n name: \"Glaceon\",\n types: [\"Ice\"],\n baseStats: { hp: 65, attack: 60, defense: 110, speed: 65, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 472,\n name: \"Gliscor\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 75, attack: 95, defense: 125, speed: 95, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 104,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 473,\n name: \"Mamoswine\",\n types: [\"Ice\", \"Ground\"],\n baseStats: { hp: 110, attack: 130, defense: 80, speed: 80, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 112,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 474,\n name: \"Porygon-Z\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 80, defense: 70, speed: 90, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 68,\n rarity: \"rare\",\n catchRate: 30,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 475,\n name: \"Gallade\",\n types: [\"Psychic\", \"Fighting\"],\n baseStats: { hp: 68, attack: 125, defense: 65, speed: 80, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 140,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 476,\n name: \"Probopass\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 60, attack: 55, defense: 145, speed: 40, special: 150 },\n expGroup: \"medium_fast\",\n evolutionChainId: 147,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 477,\n name: \"Dusknoir\",\n types: [\"Ghost\"],\n baseStats: { hp: 45, attack: 100, defense: 135, speed: 45, special: 135 },\n expGroup: \"fast\",\n evolutionChainId: 182,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 478,\n name: \"Froslass\",\n types: [\"Ice\", \"Ghost\"],\n baseStats: { hp: 70, attack: 80, defense: 70, speed: 110, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 186,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 479,\n name: \"Rotom\",\n types: [\"Electric\", \"Ghost\"],\n baseStats: { hp: 50, attack: 50, defense: 77, speed: 91, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 240,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 480,\n name: \"Uxie\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 75, defense: 130, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 241,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 481,\n name: \"Mesprit\",\n types: [\"Psychic\"],\n baseStats: { hp: 80, attack: 105, defense: 105, speed: 80, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 242,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 482,\n name: \"Azelf\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 125, defense: 70, speed: 115, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 243,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 483,\n name: \"Dialga\",\n types: [\"Steel\", \"Dragon\"],\n baseStats: { hp: 100, attack: 120, defense: 120, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 244,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 484,\n name: \"Palkia\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 90, attack: 120, defense: 100, speed: 100, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 245,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 485,\n name: \"Heatran\",\n types: [\"Fire\", \"Steel\"],\n baseStats: { hp: 91, attack: 90, defense: 106, speed: 77, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 246,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 486,\n name: \"Regigigas\",\n types: [\"Normal\"],\n baseStats: { hp: 110, attack: 160, defense: 110, speed: 100, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 247,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 487,\n name: \"Giratina-Altered\",\n types: [\"Ghost\", \"Dragon\"],\n baseStats: { hp: 150, attack: 100, defense: 120, speed: 90, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 248,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 488,\n name: \"Cresselia\",\n types: [\"Psychic\"],\n baseStats: { hp: 120, attack: 70, defense: 110, speed: 85, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 249,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 489,\n name: \"Phione\",\n types: [\"Water\"],\n baseStats: { hp: 80, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 250,\n rarity: \"mythical\",\n catchRate: 30,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 490,\n name: \"Manaphy\",\n types: [\"Water\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 250,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 491,\n name: \"Darkrai\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 90, defense: 90, speed: 125, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 252,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 492,\n name: \"Shaymin-Land\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 253,\n rarity: \"mythical\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 493,\n name: \"Arceus\",\n types: [\"Normal\"],\n baseStats: { hp: 120, attack: 120, defense: 120, speed: 120, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 254,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"A reliable teammate in any codebase.\",\n },\n\n // \u2500\u2500 Gen 5 \u2014 Unova (#494\u2013#649) \u2500\u2500\n {\n id: 494,\n name: \"Victini\",\n types: [\"Psychic\", \"Fire\"],\n baseStats: { hp: 100, attack: 100, defense: 100, speed: 100, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 255,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 495,\n name: \"Snivy\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 45, defense: 55, speed: 63, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 496,\n name: \"Servine\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 60, defense: 75, speed: 83, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 497,\n name: \"Serperior\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 75, defense: 95, speed: 113, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 256,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 498,\n name: \"Tepig\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 63, defense: 45, speed: 45, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 499,\n name: \"Pignite\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 90, attack: 93, defense: 55, speed: 55, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 500,\n name: \"Emboar\",\n types: [\"Fire\", \"Fighting\"],\n baseStats: { hp: 110, attack: 123, defense: 65, speed: 65, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 257,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 501,\n name: \"Oshawott\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 55, defense: 45, speed: 45, special: 63 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 502,\n name: \"Dewott\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 75, defense: 60, speed: 60, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 503,\n name: \"Samurott\",\n types: [\"Water\"],\n baseStats: { hp: 95, attack: 100, defense: 85, speed: 70, special: 108 },\n expGroup: \"medium_slow\",\n evolutionChainId: 258,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 504,\n name: \"Patrat\",\n types: [\"Normal\"],\n baseStats: { hp: 45, attack: 55, defense: 39, speed: 42, special: 39 },\n expGroup: \"medium_fast\",\n evolutionChainId: 259,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 505,\n name: \"Watchog\",\n types: [\"Normal\"],\n baseStats: { hp: 60, attack: 85, defense: 69, speed: 77, special: 69 },\n expGroup: \"medium_fast\",\n evolutionChainId: 259,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 506,\n name: \"Lillipup\",\n types: [\"Normal\"],\n baseStats: { hp: 45, attack: 60, defense: 45, speed: 55, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 507,\n name: \"Herdier\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 80, defense: 65, speed: 60, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 508,\n name: \"Stoutland\",\n types: [\"Normal\"],\n baseStats: { hp: 85, attack: 110, defense: 90, speed: 80, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 260,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 509,\n name: \"Purrloin\",\n types: [\"Dark\"],\n baseStats: { hp: 41, attack: 50, defense: 37, speed: 66, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 261,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 510,\n name: \"Liepard\",\n types: [\"Dark\"],\n baseStats: { hp: 64, attack: 88, defense: 50, speed: 106, special: 88 },\n expGroup: \"medium_fast\",\n evolutionChainId: 261,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code works in ways few can understand.\",\n },\n {\n id: 511,\n name: \"Pansage\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 262,\n rarity: \"common\",\n catchRate: 190,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 512,\n name: \"Simisage\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 262,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 513,\n name: \"Pansear\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 263,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 514,\n name: \"Simisear\",\n types: [\"Fire\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 263,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 515,\n name: \"Panpour\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 48, speed: 64, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 264,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 516,\n name: \"Simipour\",\n types: [\"Water\"],\n baseStats: { hp: 75, attack: 98, defense: 63, speed: 101, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 264,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 517,\n name: \"Munna\",\n types: [\"Psychic\"],\n baseStats: { hp: 76, attack: 25, defense: 45, speed: 24, special: 67 },\n expGroup: \"fast\",\n evolutionChainId: 265,\n rarity: \"common\",\n catchRate: 190,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 518,\n name: \"Musharna\",\n types: [\"Psychic\"],\n baseStats: { hp: 116, attack: 55, defense: 85, speed: 29, special: 107 },\n expGroup: \"fast\",\n evolutionChainId: 265,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 519,\n name: \"Pidove\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 50, attack: 55, defense: 50, speed: 43, special: 36 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 520,\n name: \"Tranquill\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 62, attack: 77, defense: 62, speed: 65, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 521,\n name: \"Unfezant\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 80, attack: 115, defense: 80, speed: 93, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 266,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 522,\n name: \"Blitzle\",\n types: [\"Electric\"],\n baseStats: { hp: 45, attack: 60, defense: 32, speed: 76, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 267,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 523,\n name: \"Zebstrika\",\n types: [\"Electric\"],\n baseStats: { hp: 75, attack: 100, defense: 63, speed: 116, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 267,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 524,\n name: \"Roggenrola\",\n types: [\"Rock\"],\n baseStats: { hp: 55, attack: 75, defense: 85, speed: 15, special: 25 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 525,\n name: \"Boldore\",\n types: [\"Rock\"],\n baseStats: { hp: 70, attack: 105, defense: 105, speed: 20, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 526,\n name: \"Gigalith\",\n types: [\"Rock\"],\n baseStats: { hp: 85, attack: 135, defense: 130, speed: 25, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 268,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 527,\n name: \"Woobat\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 65, attack: 45, defense: 43, speed: 72, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 269,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 528,\n name: \"Swoobat\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 67, attack: 57, defense: 55, speed: 114, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 269,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 529,\n name: \"Drilbur\",\n types: [\"Ground\"],\n baseStats: { hp: 60, attack: 85, defense: 40, speed: 68, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 270,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 530,\n name: \"Excadrill\",\n types: [\"Ground\", \"Steel\"],\n baseStats: { hp: 110, attack: 135, defense: 60, speed: 88, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 270,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 531,\n name: \"Audino\",\n types: [\"Normal\"],\n baseStats: { hp: 103, attack: 60, defense: 86, speed: 50, special: 86 },\n expGroup: \"fast\",\n evolutionChainId: 271,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 532,\n name: \"Timburr\",\n types: [\"Fighting\"],\n baseStats: { hp: 75, attack: 80, defense: 55, speed: 35, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"common\",\n catchRate: 180,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 533,\n name: \"Gurdurr\",\n types: [\"Fighting\"],\n baseStats: { hp: 85, attack: 105, defense: 85, speed: 40, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 534,\n name: \"Conkeldurr\",\n types: [\"Fighting\"],\n baseStats: { hp: 105, attack: 140, defense: 95, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 272,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 535,\n name: \"Tympole\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 50, defense: 40, speed: 64, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"common\",\n catchRate: 255,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 536,\n name: \"Palpitoad\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 75, attack: 65, defense: 55, speed: 69, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 537,\n name: \"Seismitoad\",\n types: [\"Water\", \"Ground\"],\n baseStats: { hp: 105, attack: 95, defense: 75, speed: 74, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 273,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 538,\n name: \"Throh\",\n types: [\"Fighting\"],\n baseStats: { hp: 120, attack: 100, defense: 85, speed: 45, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 274,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 539,\n name: \"Sawk\",\n types: [\"Fighting\"],\n baseStats: { hp: 75, attack: 125, defense: 75, speed: 85, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 275,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 540,\n name: \"Sewaddle\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 45, attack: 53, defense: 70, speed: 42, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 541,\n name: \"Swadloon\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 55, attack: 63, defense: 90, speed: 42, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 542,\n name: \"Leavanny\",\n types: [\"Bug\", \"Grass\"],\n baseStats: { hp: 75, attack: 103, defense: 80, speed: 92, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 276,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 543,\n name: \"Venipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 30, attack: 45, defense: 59, speed: 57, special: 39 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"common\",\n catchRate: 255,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 544,\n name: \"Whirlipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 40, attack: 55, defense: 99, speed: 47, special: 79 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 545,\n name: \"Scolipede\",\n types: [\"Bug\", \"Poison\"],\n baseStats: { hp: 60, attack: 100, defense: 89, speed: 112, special: 69 },\n expGroup: \"medium_slow\",\n evolutionChainId: 277,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 546,\n name: \"Cottonee\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 40, attack: 27, defense: 60, speed: 66, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 278,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 547,\n name: \"Whimsicott\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 60, attack: 67, defense: 85, speed: 116, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 278,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 548,\n name: \"Petilil\",\n types: [\"Grass\"],\n baseStats: { hp: 45, attack: 35, defense: 50, speed: 30, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 279,\n rarity: \"common\",\n catchRate: 190,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 549,\n name: \"Lilligant\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 60, defense: 75, speed: 90, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 279,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 550,\n name: \"Basculin-Red-Striped\",\n types: [\"Water\"],\n baseStats: { hp: 70, attack: 92, defense: 65, speed: 98, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 280,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 551,\n name: \"Sandile\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 50, attack: 72, defense: 35, speed: 65, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"common\",\n catchRate: 180,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 552,\n name: \"Krokorok\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 60, attack: 82, defense: 45, speed: 74, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 553,\n name: \"Krookodile\",\n types: [\"Ground\", \"Dark\"],\n baseStats: { hp: 95, attack: 117, defense: 80, speed: 92, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 281,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 554,\n name: \"Darumaka\",\n types: [\"Fire\"],\n baseStats: { hp: 70, attack: 90, defense: 45, speed: 50, special: 45 },\n expGroup: \"medium_slow\",\n evolutionChainId: 282,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 555,\n name: \"Darmanitan-Standard\",\n types: [\"Fire\"],\n baseStats: { hp: 105, attack: 140, defense: 55, speed: 95, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 282,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 556,\n name: \"Maractus\",\n types: [\"Grass\"],\n baseStats: { hp: 75, attack: 86, defense: 67, speed: 60, special: 106 },\n expGroup: \"medium_fast\",\n evolutionChainId: 283,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 557,\n name: \"Dwebble\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 50, attack: 65, defense: 85, speed: 55, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 284,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 558,\n name: \"Crustle\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 70, attack: 105, defense: 125, speed: 45, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 284,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 559,\n name: \"Scraggy\",\n types: [\"Dark\", \"Fighting\"],\n baseStats: { hp: 50, attack: 75, defense: 70, speed: 48, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 285,\n rarity: \"common\",\n catchRate: 180,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 560,\n name: \"Scrafty\",\n types: [\"Dark\", \"Fighting\"],\n baseStats: { hp: 65, attack: 90, defense: 115, speed: 58, special: 115 },\n expGroup: \"medium_fast\",\n evolutionChainId: 285,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 561,\n name: \"Sigilyph\",\n types: [\"Psychic\", \"Flying\"],\n baseStats: { hp: 72, attack: 58, defense: 80, speed: 97, special: 103 },\n expGroup: \"medium_fast\",\n evolutionChainId: 286,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 562,\n name: \"Yamask\",\n types: [\"Ghost\"],\n baseStats: { hp: 38, attack: 30, defense: 85, speed: 30, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"common\",\n catchRate: 190,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 563,\n name: \"Cofagrigus\",\n types: [\"Ghost\"],\n baseStats: { hp: 58, attack: 50, defense: 145, speed: 30, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 564,\n name: \"Tirtouga\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 54, attack: 78, defense: 103, speed: 22, special: 53 },\n expGroup: \"medium_fast\",\n evolutionChainId: 288,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 565,\n name: \"Carracosta\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 74, attack: 108, defense: 133, speed: 32, special: 83 },\n expGroup: \"medium_fast\",\n evolutionChainId: 288,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 566,\n name: \"Archen\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 55, attack: 112, defense: 45, speed: 70, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 289,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 567,\n name: \"Archeops\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 75, attack: 140, defense: 65, speed: 110, special: 112 },\n expGroup: \"medium_fast\",\n evolutionChainId: 289,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 568,\n name: \"Trubbish\",\n types: [\"Poison\"],\n baseStats: { hp: 50, attack: 50, defense: 62, speed: 65, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 290,\n rarity: \"common\",\n catchRate: 190,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 569,\n name: \"Garbodor\",\n types: [\"Poison\"],\n baseStats: { hp: 80, attack: 95, defense: 82, speed: 75, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 290,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 570,\n name: \"Zorua\",\n types: [\"Dark\"],\n baseStats: { hp: 40, attack: 65, defense: 40, speed: 65, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 291,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 571,\n name: \"Zoroark\",\n types: [\"Dark\"],\n baseStats: { hp: 60, attack: 105, defense: 60, speed: 105, special: 120 },\n expGroup: \"medium_slow\",\n evolutionChainId: 291,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 572,\n name: \"Minccino\",\n types: [\"Normal\"],\n baseStats: { hp: 55, attack: 50, defense: 40, speed: 75, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 292,\n rarity: \"common\",\n catchRate: 255,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 573,\n name: \"Cinccino\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 95, defense: 60, speed: 115, special: 65 },\n expGroup: \"fast\",\n evolutionChainId: 292,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 574,\n name: \"Gothita\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 50, speed: 45, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"common\",\n catchRate: 200,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 575,\n name: \"Gothorita\",\n types: [\"Psychic\"],\n baseStats: { hp: 60, attack: 45, defense: 70, speed: 55, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 576,\n name: \"Gothitelle\",\n types: [\"Psychic\"],\n baseStats: { hp: 70, attack: 55, defense: 95, speed: 65, special: 110 },\n expGroup: \"medium_slow\",\n evolutionChainId: 293,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 577,\n name: \"Solosis\",\n types: [\"Psychic\"],\n baseStats: { hp: 45, attack: 30, defense: 40, speed: 20, special: 105 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"common\",\n catchRate: 200,\n description: \"Predicts bugs before they even appear in code.\",\n },\n {\n id: 578,\n name: \"Duosion\",\n types: [\"Psychic\"],\n baseStats: { hp: 65, attack: 40, defense: 50, speed: 30, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 579,\n name: \"Reuniclus\",\n types: [\"Psychic\"],\n baseStats: { hp: 110, attack: 65, defense: 75, speed: 30, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 294,\n rarity: \"rare\",\n catchRate: 50,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 580,\n name: \"Ducklett\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 62, attack: 44, defense: 50, speed: 55, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 295,\n rarity: \"common\",\n catchRate: 190,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 581,\n name: \"Swanna\",\n types: [\"Water\", \"Flying\"],\n baseStats: { hp: 75, attack: 87, defense: 63, speed: 98, special: 87 },\n expGroup: \"medium_fast\",\n evolutionChainId: 295,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 582,\n name: \"Vanillite\",\n types: [\"Ice\"],\n baseStats: { hp: 36, attack: 50, defense: 50, speed: 44, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"common\",\n catchRate: 255,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 583,\n name: \"Vanillish\",\n types: [\"Ice\"],\n baseStats: { hp: 51, attack: 65, defense: 65, speed: 59, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 584,\n name: \"Vanilluxe\",\n types: [\"Ice\"],\n baseStats: { hp: 71, attack: 95, defense: 85, speed: 79, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 296,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 585,\n name: \"Deerling\",\n types: [\"Normal\", \"Grass\"],\n baseStats: { hp: 60, attack: 60, defense: 50, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 297,\n rarity: \"common\",\n catchRate: 190,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 586,\n name: \"Sawsbuck\",\n types: [\"Normal\", \"Grass\"],\n baseStats: { hp: 80, attack: 100, defense: 70, speed: 95, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 297,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 587,\n name: \"Emolga\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 55, attack: 75, defense: 60, speed: 103, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 298,\n rarity: \"common\",\n catchRate: 200,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 588,\n name: \"Karrablast\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 75, defense: 45, speed: 60, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 299,\n rarity: \"common\",\n catchRate: 200,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 589,\n name: \"Escavalier\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 70, attack: 135, defense: 105, speed: 20, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 299,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 590,\n name: \"Foongus\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 69, attack: 55, defense: 45, speed: 15, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 300,\n rarity: \"common\",\n catchRate: 190,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 591,\n name: \"Amoonguss\",\n types: [\"Grass\", \"Poison\"],\n baseStats: { hp: 114, attack: 85, defense: 70, speed: 30, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 300,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 592,\n name: \"Frillish-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 55, attack: 40, defense: 50, speed: 40, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 301,\n rarity: \"common\",\n catchRate: 190,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 593,\n name: \"Jellicent-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 100, attack: 60, defense: 70, speed: 60, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 301,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 594,\n name: \"Alomomola\",\n types: [\"Water\"],\n baseStats: { hp: 165, attack: 75, defense: 80, speed: 65, special: 45 },\n expGroup: \"fast\",\n evolutionChainId: 302,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 595,\n name: \"Joltik\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 50, attack: 47, defense: 50, speed: 65, special: 57 },\n expGroup: \"medium_fast\",\n evolutionChainId: 303,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 596,\n name: \"Galvantula\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 70, attack: 77, defense: 60, speed: 108, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 303,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 597,\n name: \"Ferroseed\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 44, attack: 50, defense: 91, speed: 10, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 304,\n rarity: \"common\",\n catchRate: 255,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 598,\n name: \"Ferrothorn\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 74, attack: 94, defense: 131, speed: 20, special: 116 },\n expGroup: \"medium_fast\",\n evolutionChainId: 304,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 599,\n name: \"Klink\",\n types: [\"Steel\"],\n baseStats: { hp: 40, attack: 55, defense: 70, speed: 30, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"uncommon\",\n catchRate: 130,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 600,\n name: \"Klang\",\n types: [\"Steel\"],\n baseStats: { hp: 60, attack: 80, defense: 95, speed: 50, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 601,\n name: \"Klinklang\",\n types: [\"Steel\"],\n baseStats: { hp: 60, attack: 100, defense: 115, speed: 90, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 305,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 602,\n name: \"Tynamo\",\n types: [\"Electric\"],\n baseStats: { hp: 35, attack: 55, defense: 40, speed: 60, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"common\",\n catchRate: 190,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 603,\n name: \"Eelektrik\",\n types: [\"Electric\"],\n baseStats: { hp: 65, attack: 85, defense: 70, speed: 40, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 604,\n name: \"Eelektross\",\n types: [\"Electric\"],\n baseStats: { hp: 85, attack: 115, defense: 80, speed: 50, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 306,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 605,\n name: \"Elgyem\",\n types: [\"Psychic\"],\n baseStats: { hp: 55, attack: 55, defense: 55, speed: 30, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 307,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 606,\n name: \"Beheeyem\",\n types: [\"Psychic\"],\n baseStats: { hp: 75, attack: 75, defense: 75, speed: 40, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 307,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 607,\n name: \"Litwick\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 50, attack: 30, defense: 55, speed: 20, special: 65 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"common\",\n catchRate: 190,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 608,\n name: \"Lampent\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 60, attack: 40, defense: 60, speed: 55, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 609,\n name: \"Chandelure\",\n types: [\"Ghost\", \"Fire\"],\n baseStats: { hp: 60, attack: 55, defense: 90, speed: 80, special: 145 },\n expGroup: \"medium_slow\",\n evolutionChainId: 308,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Phases through firewalls during security audits.\",\n },\n {\n id: 610,\n name: \"Axew\",\n types: [\"Dragon\"],\n baseStats: { hp: 46, attack: 87, defense: 60, speed: 57, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 611,\n name: \"Fraxure\",\n types: [\"Dragon\"],\n baseStats: { hp: 66, attack: 117, defense: 70, speed: 67, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 612,\n name: \"Haxorus\",\n types: [\"Dragon\"],\n baseStats: { hp: 76, attack: 147, defense: 90, speed: 97, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 309,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 613,\n name: \"Cubchoo\",\n types: [\"Ice\"],\n baseStats: { hp: 55, attack: 70, defense: 40, speed: 40, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 310,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 614,\n name: \"Beartic\",\n types: [\"Ice\"],\n baseStats: { hp: 95, attack: 130, defense: 80, speed: 50, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 310,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 615,\n name: \"Cryogonal\",\n types: [\"Ice\"],\n baseStats: { hp: 80, attack: 50, defense: 50, speed: 105, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 311,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 616,\n name: \"Shelmet\",\n types: [\"Bug\"],\n baseStats: { hp: 50, attack: 40, defense: 85, speed: 25, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 312,\n rarity: \"common\",\n catchRate: 200,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 617,\n name: \"Accelgor\",\n types: [\"Bug\"],\n baseStats: { hp: 80, attack: 70, defense: 40, speed: 145, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 312,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 618,\n name: \"Stunfisk\",\n types: [\"Ground\", \"Electric\"],\n baseStats: { hp: 109, attack: 66, defense: 84, speed: 32, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 313,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 619,\n name: \"Mienfoo\",\n types: [\"Fighting\"],\n baseStats: { hp: 45, attack: 85, defense: 50, speed: 65, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 314,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 620,\n name: \"Mienshao\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 125, defense: 60, speed: 105, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 314,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 621,\n name: \"Druddigon\",\n types: [\"Dragon\"],\n baseStats: { hp: 77, attack: 120, defense: 90, speed: 48, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 315,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 622,\n name: \"Golett\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 59, attack: 74, defense: 50, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 316,\n rarity: \"common\",\n catchRate: 190,\n description: \"Lays the groundwork for scalable systems.\",\n },\n {\n id: 623,\n name: \"Golurk\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 89, attack: 124, defense: 80, speed: 55, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 316,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 624,\n name: \"Pawniard\",\n types: [\"Dark\", \"Steel\"],\n baseStats: { hp: 45, attack: 85, defense: 70, speed: 60, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 317,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 625,\n name: \"Bisharp\",\n types: [\"Dark\", \"Steel\"],\n baseStats: { hp: 65, attack: 125, defense: 100, speed: 70, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 317,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 626,\n name: \"Bouffalant\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 110, defense: 95, speed: 55, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 318,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 627,\n name: \"Rufflet\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 70, attack: 83, defense: 50, speed: 60, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 319,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 628,\n name: \"Braviary\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 100, attack: 123, defense: 75, speed: 80, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 319,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 629,\n name: \"Vullaby\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 70, attack: 55, defense: 75, speed: 60, special: 65 },\n expGroup: \"slow\",\n evolutionChainId: 320,\n rarity: \"common\",\n catchRate: 190,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 630,\n name: \"Mandibuzz\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 110, attack: 65, defense: 105, speed: 80, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 320,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 631,\n name: \"Heatmor\",\n types: [\"Fire\"],\n baseStats: { hp: 85, attack: 97, defense: 66, speed: 65, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 321,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 632,\n name: \"Durant\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 58, attack: 109, defense: 112, speed: 109, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 322,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 633,\n name: \"Deino\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 52, attack: 65, defense: 50, speed: 38, special: 50 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 634,\n name: \"Zweilous\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 72, attack: 85, defense: 70, speed: 58, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 635,\n name: \"Hydreigon\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 92, attack: 105, defense: 90, speed: 98, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 323,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 636,\n name: \"Larvesta\",\n types: [\"Bug\", \"Fire\"],\n baseStats: { hp: 55, attack: 85, defense: 55, speed: 60, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 324,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 637,\n name: \"Volcarona\",\n types: [\"Bug\", \"Fire\"],\n baseStats: { hp: 85, attack: 60, defense: 65, speed: 100, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 324,\n rarity: \"rare\",\n catchRate: 15,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 638,\n name: \"Cobalion\",\n types: [\"Steel\", \"Fighting\"],\n baseStats: { hp: 91, attack: 90, defense: 129, speed: 108, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 325,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 639,\n name: \"Terrakion\",\n types: [\"Rock\", \"Fighting\"],\n baseStats: { hp: 91, attack: 129, defense: 90, speed: 108, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 326,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 640,\n name: \"Virizion\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 91, attack: 90, defense: 72, speed: 108, special: 129 },\n expGroup: \"slow\",\n evolutionChainId: 327,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 641,\n name: \"Tornadus-Incarnate\",\n types: [\"Flying\"],\n baseStats: { hp: 79, attack: 115, defense: 70, speed: 111, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 328,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 642,\n name: \"Thundurus-Incarnate\",\n types: [\"Electric\", \"Flying\"],\n baseStats: { hp: 79, attack: 115, defense: 70, speed: 111, special: 125 },\n expGroup: \"slow\",\n evolutionChainId: 329,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 643,\n name: \"Reshiram\",\n types: [\"Dragon\", \"Fire\"],\n baseStats: { hp: 100, attack: 120, defense: 100, speed: 90, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 330,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 644,\n name: \"Zekrom\",\n types: [\"Dragon\", \"Electric\"],\n baseStats: { hp: 100, attack: 150, defense: 120, speed: 90, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 331,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 645,\n name: \"Landorus-Incarnate\",\n types: [\"Ground\", \"Flying\"],\n baseStats: { hp: 89, attack: 125, defense: 90, speed: 101, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 332,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 646,\n name: \"Kyurem\",\n types: [\"Dragon\", \"Ice\"],\n baseStats: { hp: 125, attack: 130, defense: 90, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 333,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 647,\n name: \"Keldeo-Ordinary\",\n types: [\"Water\", \"Fighting\"],\n baseStats: { hp: 91, attack: 72, defense: 90, speed: 108, special: 129 },\n expGroup: \"slow\",\n evolutionChainId: 334,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 648,\n name: \"Meloetta-Aria\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 100, attack: 77, defense: 77, speed: 90, special: 128 },\n expGroup: \"slow\",\n evolutionChainId: 335,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Solid fundamentals, no unnecessary complexity.\",\n },\n {\n id: 649,\n name: \"Genesect\",\n types: [\"Bug\", \"Steel\"],\n baseStats: { hp: 71, attack: 120, defense: 95, speed: 99, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 336,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Crawls through every edge case methodically.\",\n },\n\n // \u2500\u2500 Gen 6 \u2014 Kalos (#650\u2013#721) \u2500\u2500\n {\n id: 650,\n name: \"Chespin\",\n types: [\"Grass\"],\n baseStats: { hp: 56, attack: 61, defense: 65, speed: 38, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 651,\n name: \"Quilladin\",\n types: [\"Grass\"],\n baseStats: { hp: 61, attack: 78, defense: 95, speed: 57, special: 58 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 652,\n name: \"Chesnaught\",\n types: [\"Grass\", \"Fighting\"],\n baseStats: { hp: 88, attack: 107, defense: 122, speed: 64, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 337,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 653,\n name: \"Fennekin\",\n types: [\"Fire\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 60, special: 62 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 654,\n name: \"Braixen\",\n types: [\"Fire\"],\n baseStats: { hp: 59, attack: 59, defense: 58, speed: 73, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 655,\n name: \"Delphox\",\n types: [\"Fire\", \"Psychic\"],\n baseStats: { hp: 75, attack: 69, defense: 72, speed: 104, special: 114 },\n expGroup: \"medium_slow\",\n evolutionChainId: 338,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 656,\n name: \"Froakie\",\n types: [\"Water\"],\n baseStats: { hp: 41, attack: 56, defense: 40, speed: 71, special: 62 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 657,\n name: \"Frogadier\",\n types: [\"Water\"],\n baseStats: { hp: 54, attack: 63, defense: 52, speed: 97, special: 83 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 658,\n name: \"Greninja\",\n types: [\"Water\", \"Dark\"],\n baseStats: { hp: 72, attack: 95, defense: 67, speed: 122, special: 103 },\n expGroup: \"medium_slow\",\n evolutionChainId: 339,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 659,\n name: \"Bunnelby\",\n types: [\"Normal\"],\n baseStats: { hp: 38, attack: 36, defense: 38, speed: 57, special: 36 },\n expGroup: \"medium_fast\",\n evolutionChainId: 340,\n rarity: \"common\",\n catchRate: 255,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 660,\n name: \"Diggersby\",\n types: [\"Normal\", \"Ground\"],\n baseStats: { hp: 85, attack: 56, defense: 77, speed: 78, special: 77 },\n expGroup: \"medium_fast\",\n evolutionChainId: 340,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 661,\n name: \"Fletchling\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 45, attack: 50, defense: 43, speed: 62, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"common\",\n catchRate: 255,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 662,\n name: \"Fletchinder\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 62, attack: 73, defense: 55, speed: 84, special: 56 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 663,\n name: \"Talonflame\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 78, attack: 81, defense: 71, speed: 126, special: 74 },\n expGroup: \"medium_slow\",\n evolutionChainId: 341,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 664,\n name: \"Scatterbug\",\n types: [\"Bug\"],\n baseStats: { hp: 38, attack: 35, defense: 40, speed: 35, special: 27 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its test coverage is thorough and persistent.\",\n },\n {\n id: 665,\n name: \"Spewpa\",\n types: [\"Bug\"],\n baseStats: { hp: 45, attack: 22, defense: 60, speed: 29, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 666,\n name: \"Vivillon\",\n types: [\"Bug\", \"Flying\"],\n baseStats: { hp: 80, attack: 52, defense: 50, speed: 89, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 342,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 667,\n name: \"Litleo\",\n types: [\"Fire\", \"Normal\"],\n baseStats: { hp: 62, attack: 50, defense: 58, speed: 72, special: 73 },\n expGroup: \"medium_slow\",\n evolutionChainId: 343,\n rarity: \"common\",\n catchRate: 220,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 668,\n name: \"Pyroar-Male\",\n types: [\"Fire\", \"Normal\"],\n baseStats: { hp: 86, attack: 68, defense: 72, speed: 106, special: 109 },\n expGroup: \"medium_slow\",\n evolutionChainId: 343,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 669,\n name: \"Flabebe\",\n types: [\"Fairy\"],\n baseStats: { hp: 44, attack: 38, defense: 39, speed: 42, special: 79 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"common\",\n catchRate: 225,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 670,\n name: \"Floette\",\n types: [\"Fairy\"],\n baseStats: { hp: 54, attack: 45, defense: 47, speed: 52, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 671,\n name: \"Florges\",\n types: [\"Fairy\"],\n baseStats: { hp: 78, attack: 65, defense: 68, speed: 75, special: 154 },\n expGroup: \"medium_fast\",\n evolutionChainId: 344,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 672,\n name: \"Skiddo\",\n types: [\"Grass\"],\n baseStats: { hp: 66, attack: 65, defense: 48, speed: 52, special: 62 },\n expGroup: \"medium_fast\",\n evolutionChainId: 345,\n rarity: \"common\",\n catchRate: 200,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 673,\n name: \"Gogoat\",\n types: [\"Grass\"],\n baseStats: { hp: 123, attack: 100, defense: 62, speed: 68, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 345,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 674,\n name: \"Pancham\",\n types: [\"Fighting\"],\n baseStats: { hp: 67, attack: 82, defense: 62, speed: 43, special: 48 },\n expGroup: \"medium_fast\",\n evolutionChainId: 346,\n rarity: \"common\",\n catchRate: 220,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 675,\n name: \"Pangoro\",\n types: [\"Fighting\", \"Dark\"],\n baseStats: { hp: 95, attack: 124, defense: 78, speed: 58, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 346,\n rarity: \"uncommon\",\n catchRate: 65,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 676,\n name: \"Furfrou\",\n types: [\"Normal\"],\n baseStats: { hp: 75, attack: 80, defense: 60, speed: 102, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 347,\n rarity: \"common\",\n catchRate: 160,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 677,\n name: \"Espurr\",\n types: [\"Psychic\"],\n baseStats: { hp: 62, attack: 48, defense: 54, speed: 68, special: 63 },\n expGroup: \"medium_fast\",\n evolutionChainId: 348,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 678,\n name: \"Meowstic-Male\",\n types: [\"Psychic\"],\n baseStats: { hp: 74, attack: 48, defense: 76, speed: 104, special: 83 },\n expGroup: \"medium_fast\",\n evolutionChainId: 348,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 679,\n name: \"Honedge\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 45, attack: 80, defense: 100, speed: 28, special: 37 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 680,\n name: \"Doublade\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 59, attack: 110, defense: 150, speed: 35, special: 49 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its type system is as rigid as steel.\",\n },\n {\n id: 681,\n name: \"Aegislash-Shield\",\n types: [\"Steel\", \"Ghost\"],\n baseStats: { hp: 60, attack: 50, defense: 140, speed: 60, special: 140 },\n expGroup: \"medium_fast\",\n evolutionChainId: 349,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 682,\n name: \"Spritzee\",\n types: [\"Fairy\"],\n baseStats: { hp: 78, attack: 52, defense: 60, speed: 23, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 350,\n rarity: \"common\",\n catchRate: 200,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 683,\n name: \"Aromatisse\",\n types: [\"Fairy\"],\n baseStats: { hp: 101, attack: 72, defense: 72, speed: 29, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 350,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Sprinkles syntactic sugar that actually helps.\",\n },\n {\n id: 684,\n name: \"Swirlix\",\n types: [\"Fairy\"],\n baseStats: { hp: 62, attack: 48, defense: 66, speed: 49, special: 59 },\n expGroup: \"medium_fast\",\n evolutionChainId: 351,\n rarity: \"common\",\n catchRate: 200,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 685,\n name: \"Slurpuff\",\n types: [\"Fairy\"],\n baseStats: { hp: 82, attack: 80, defense: 86, speed: 72, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 351,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Makes complex code look magically simple.\",\n },\n {\n id: 686,\n name: \"Inkay\",\n types: [\"Dark\", \"Psychic\"],\n baseStats: { hp: 53, attack: 54, defense: 53, speed: 45, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 352,\n rarity: \"common\",\n catchRate: 190,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 687,\n name: \"Malamar\",\n types: [\"Dark\", \"Psychic\"],\n baseStats: { hp: 86, attack: 92, defense: 88, speed: 73, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 352,\n rarity: \"uncommon\",\n catchRate: 80,\n description: \"Thrives in late-night debugging sessions.\",\n },\n {\n id: 688,\n name: \"Binacle\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 42, attack: 52, defense: 67, speed: 50, special: 56 },\n expGroup: \"medium_fast\",\n evolutionChainId: 353,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 689,\n name: \"Barbaracle\",\n types: [\"Rock\", \"Water\"],\n baseStats: { hp: 72, attack: 105, defense: 115, speed: 68, special: 86 },\n expGroup: \"medium_fast\",\n evolutionChainId: 353,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 690,\n name: \"Skrelp\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 60, defense: 60, speed: 30, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 354,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 691,\n name: \"Dragalge\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 65, attack: 75, defense: 90, speed: 44, special: 123 },\n expGroup: \"medium_fast\",\n evolutionChainId: 354,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Its code reviews are sharp but constructive.\",\n },\n {\n id: 692,\n name: \"Clauncher\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 62, speed: 44, special: 63 },\n expGroup: \"slow\",\n evolutionChainId: 355,\n rarity: \"common\",\n catchRate: 225,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 693,\n name: \"Clawitzer\",\n types: [\"Water\"],\n baseStats: { hp: 71, attack: 73, defense: 88, speed: 59, special: 120 },\n expGroup: \"slow\",\n evolutionChainId: 355,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 694,\n name: \"Helioptile\",\n types: [\"Electric\", \"Normal\"],\n baseStats: { hp: 44, attack: 38, defense: 33, speed: 70, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 356,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 695,\n name: \"Heliolisk\",\n types: [\"Electric\", \"Normal\"],\n baseStats: { hp: 62, attack: 55, defense: 52, speed: 109, special: 109 },\n expGroup: \"medium_fast\",\n evolutionChainId: 356,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 696,\n name: \"Tyrunt\",\n types: [\"Rock\", \"Dragon\"],\n baseStats: { hp: 58, attack: 89, defense: 77, speed: 48, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 357,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 697,\n name: \"Tyrantrum\",\n types: [\"Rock\", \"Dragon\"],\n baseStats: { hp: 82, attack: 121, defense: 119, speed: 71, special: 69 },\n expGroup: \"medium_fast\",\n evolutionChainId: 357,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 698,\n name: \"Amaura\",\n types: [\"Rock\", \"Ice\"],\n baseStats: { hp: 77, attack: 59, defense: 50, speed: 46, special: 67 },\n expGroup: \"medium_fast\",\n evolutionChainId: 358,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 699,\n name: \"Aurorus\",\n types: [\"Rock\", \"Ice\"],\n baseStats: { hp: 123, attack: 77, defense: 72, speed: 58, special: 99 },\n expGroup: \"medium_fast\",\n evolutionChainId: 358,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 700,\n name: \"Sylveon\",\n types: [\"Fairy\"],\n baseStats: { hp: 95, attack: 65, defense: 65, speed: 60, special: 130 },\n expGroup: \"medium_fast\",\n evolutionChainId: 67,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Enchants users with delightful UX polish.\",\n },\n {\n id: 701,\n name: \"Hawlucha\",\n types: [\"Fighting\", \"Flying\"],\n baseStats: { hp: 78, attack: 92, defense: 75, speed: 118, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 359,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 702,\n name: \"Dedenne\",\n types: [\"Electric\", \"Fairy\"],\n baseStats: { hp: 67, attack: 58, defense: 57, speed: 101, special: 81 },\n expGroup: \"medium_fast\",\n evolutionChainId: 360,\n rarity: \"common\",\n catchRate: 180,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 703,\n name: \"Carbink\",\n types: [\"Rock\", \"Fairy\"],\n baseStats: { hp: 50, attack: 50, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 361,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 704,\n name: \"Goomy\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 50, defense: 35, speed: 40, special: 75 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 705,\n name: \"Sliggoo\",\n types: [\"Dragon\"],\n baseStats: { hp: 68, attack: 75, defense: 53, speed: 60, special: 113 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Breathes fire into stale, unmaintained projects.\",\n },\n {\n id: 706,\n name: \"Goodra\",\n types: [\"Dragon\"],\n baseStats: { hp: 90, attack: 100, defense: 70, speed: 80, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 362,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 707,\n name: \"Klefki\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 57, attack: 80, defense: 91, speed: 75, special: 87 },\n expGroup: \"fast\",\n evolutionChainId: 363,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 708,\n name: \"Phantump\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 43, attack: 70, defense: 48, speed: 38, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 364,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 709,\n name: \"Trevenant\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 85, attack: 110, defense: 76, speed: 56, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 364,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 710,\n name: \"Pumpkaboo-Average\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 49, attack: 66, defense: 70, speed: 51, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 365,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 711,\n name: \"Gourgeist-Average\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 65, attack: 90, defense: 122, speed: 84, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 365,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code is invisible until you need it most.\",\n },\n {\n id: 712,\n name: \"Bergmite\",\n types: [\"Ice\"],\n baseStats: { hp: 55, attack: 69, defense: 85, speed: 28, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 366,\n rarity: \"common\",\n catchRate: 190,\n description: \"Keeps cool under tight deployment deadlines.\",\n },\n {\n id: 713,\n name: \"Avalugg\",\n types: [\"Ice\"],\n baseStats: { hp: 95, attack: 117, defense: 184, speed: 28, special: 46 },\n expGroup: \"medium_fast\",\n evolutionChainId: 366,\n rarity: \"rare\",\n catchRate: 55,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 714,\n name: \"Noibat\",\n types: [\"Flying\", \"Dragon\"],\n baseStats: { hp: 40, attack: 30, defense: 35, speed: 55, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 367,\n rarity: \"common\",\n catchRate: 190,\n description: \"Zooms through code reviews at altitude.\",\n },\n {\n id: 715,\n name: \"Noivern\",\n types: [\"Flying\", \"Dragon\"],\n baseStats: { hp: 85, attack: 70, defense: 80, speed: 123, special: 97 },\n expGroup: \"medium_fast\",\n evolutionChainId: 367,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Floats above complexity with elegant solutions.\",\n },\n {\n id: 716,\n name: \"Xerneas\",\n types: [\"Fairy\"],\n baseStats: { hp: 126, attack: 131, defense: 95, speed: 99, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 368,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 717,\n name: \"Yveltal\",\n types: [\"Dark\", \"Flying\"],\n baseStats: { hp: 126, attack: 131, defense: 95, speed: 99, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 369,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 718,\n name: \"Zygarde-50\",\n types: [\"Dragon\", \"Ground\"],\n baseStats: { hp: 108, attack: 100, defense: 121, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 370,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 719,\n name: \"Diancie\",\n types: [\"Rock\", \"Fairy\"],\n baseStats: { hp: 50, attack: 100, defense: 150, speed: 50, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 371,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Withstands the heaviest traffic spikes.\",\n },\n {\n id: 720,\n name: \"Hoopa\",\n types: [\"Psychic\", \"Ghost\"],\n baseStats: { hp: 80, attack: 110, defense: 60, speed: 70, special: 150 },\n expGroup: \"slow\",\n evolutionChainId: 372,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 721,\n name: \"Volcanion\",\n types: [\"Fire\", \"Water\"],\n baseStats: { hp: 80, attack: 110, defense: 120, speed: 70, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 373,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n\n // \u2500\u2500 Gen 7 \u2014 Alola (#722\u2013#809) \u2500\u2500\n {\n id: 722,\n name: \"Rowlet\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 68, attack: 55, defense: 55, speed: 42, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 723,\n name: \"Dartrix\",\n types: [\"Grass\", \"Flying\"],\n baseStats: { hp: 78, attack: 75, defense: 75, speed: 52, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 724,\n name: \"Decidueye\",\n types: [\"Grass\", \"Ghost\"],\n baseStats: { hp: 78, attack: 107, defense: 75, speed: 70, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 374,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 725,\n name: \"Litten\",\n types: [\"Fire\"],\n baseStats: { hp: 45, attack: 65, defense: 40, speed: 70, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 726,\n name: \"Torracat\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 85, defense: 50, speed: 90, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 727,\n name: \"Incineroar\",\n types: [\"Fire\", \"Dark\"],\n baseStats: { hp: 95, attack: 115, defense: 90, speed: 60, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 375,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 728,\n name: \"Popplio\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 54, defense: 54, speed: 40, special: 66 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 729,\n name: \"Brionne\",\n types: [\"Water\"],\n baseStats: { hp: 60, attack: 69, defense: 69, speed: 50, special: 91 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 730,\n name: \"Primarina\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 80, attack: 74, defense: 74, speed: 60, special: 126 },\n expGroup: \"medium_slow\",\n evolutionChainId: 376,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 731,\n name: \"Pikipek\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 35, attack: 75, defense: 30, speed: 65, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 732,\n name: \"Trumbeak\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 55, attack: 85, defense: 50, speed: 75, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Keeps things simple and maintainable.\",\n },\n {\n id: 733,\n name: \"Toucannon\",\n types: [\"Normal\", \"Flying\"],\n baseStats: { hp: 80, attack: 120, defense: 75, speed: 60, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 377,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 734,\n name: \"Yungoos\",\n types: [\"Normal\"],\n baseStats: { hp: 48, attack: 70, defense: 30, speed: 45, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 378,\n rarity: \"common\",\n catchRate: 255,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 735,\n name: \"Gumshoos\",\n types: [\"Normal\"],\n baseStats: { hp: 88, attack: 110, defense: 60, speed: 45, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 378,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 736,\n name: \"Grubbin\",\n types: [\"Bug\"],\n baseStats: { hp: 47, attack: 62, defense: 45, speed: 46, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"common\",\n catchRate: 255,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 737,\n name: \"Charjabug\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 57, attack: 82, defense: 95, speed: 36, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 738,\n name: \"Vikavolt\",\n types: [\"Bug\", \"Electric\"],\n baseStats: { hp: 77, attack: 70, defense: 90, speed: 43, special: 145 },\n expGroup: \"medium_fast\",\n evolutionChainId: 379,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 739,\n name: \"Crabrawler\",\n types: [\"Fighting\"],\n baseStats: { hp: 47, attack: 82, defense: 57, speed: 63, special: 47 },\n expGroup: \"medium_fast\",\n evolutionChainId: 380,\n rarity: \"common\",\n catchRate: 225,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 740,\n name: \"Crabominable\",\n types: [\"Fighting\", \"Ice\"],\n baseStats: { hp: 97, attack: 132, defense: 77, speed: 43, special: 67 },\n expGroup: \"medium_fast\",\n evolutionChainId: 380,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 741,\n name: \"Oricorio-Baile\",\n types: [\"Fire\", \"Flying\"],\n baseStats: { hp: 75, attack: 70, defense: 70, speed: 93, special: 98 },\n expGroup: \"medium_fast\",\n evolutionChainId: 381,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 742,\n name: \"Cutiefly\",\n types: [\"Bug\", \"Fairy\"],\n baseStats: { hp: 40, attack: 45, defense: 40, speed: 84, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 382,\n rarity: \"common\",\n catchRate: 190,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 743,\n name: \"Ribombee\",\n types: [\"Bug\", \"Fairy\"],\n baseStats: { hp: 60, attack: 55, defense: 60, speed: 124, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 382,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 744,\n name: \"Rockruff\",\n types: [\"Rock\"],\n baseStats: { hp: 45, attack: 65, defense: 40, speed: 60, special: 40 },\n expGroup: \"medium_fast\",\n evolutionChainId: 383,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 745,\n name: \"Lycanroc-Midday\",\n types: [\"Rock\"],\n baseStats: { hp: 75, attack: 115, defense: 65, speed: 112, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 383,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 746,\n name: \"Wishiwashi-Solo\",\n types: [\"Water\"],\n baseStats: { hp: 45, attack: 20, defense: 20, speed: 40, special: 25 },\n expGroup: \"fast\",\n evolutionChainId: 384,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Cools down heated production incidents.\",\n },\n {\n id: 747,\n name: \"Mareanie\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 53, defense: 62, speed: 45, special: 52 },\n expGroup: \"medium_fast\",\n evolutionChainId: 385,\n rarity: \"common\",\n catchRate: 190,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 748,\n name: \"Toxapex\",\n types: [\"Poison\", \"Water\"],\n baseStats: { hp: 50, attack: 63, defense: 152, speed: 35, special: 142 },\n expGroup: \"medium_fast\",\n evolutionChainId: 385,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Knows every anti-pattern by heart.\",\n },\n {\n id: 749,\n name: \"Mudbray\",\n types: [\"Ground\"],\n baseStats: { hp: 70, attack: 100, defense: 70, speed: 45, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 386,\n rarity: \"common\",\n catchRate: 190,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 750,\n name: \"Mudsdale\",\n types: [\"Ground\"],\n baseStats: { hp: 100, attack: 125, defense: 100, speed: 35, special: 85 },\n expGroup: \"medium_fast\",\n evolutionChainId: 386,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 751,\n name: \"Dewpider\",\n types: [\"Water\", \"Bug\"],\n baseStats: { hp: 38, attack: 40, defense: 52, speed: 27, special: 72 },\n expGroup: \"medium_fast\",\n evolutionChainId: 387,\n rarity: \"common\",\n catchRate: 200,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 752,\n name: \"Araquanid\",\n types: [\"Water\", \"Bug\"],\n baseStats: { hp: 68, attack: 70, defense: 92, speed: 42, special: 132 },\n expGroup: \"medium_fast\",\n evolutionChainId: 387,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 753,\n name: \"Fomantis\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 55, defense: 35, speed: 35, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 388,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 754,\n name: \"Lurantis\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 105, defense: 90, speed: 45, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 388,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 755,\n name: \"Morelull\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 40, attack: 35, defense: 55, speed: 15, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 389,\n rarity: \"common\",\n catchRate: 190,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 756,\n name: \"Shiinotic\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 60, attack: 45, defense: 80, speed: 30, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 389,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 757,\n name: \"Salandit\",\n types: [\"Poison\", \"Fire\"],\n baseStats: { hp: 48, attack: 44, defense: 40, speed: 77, special: 71 },\n expGroup: \"medium_fast\",\n evolutionChainId: 390,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 758,\n name: \"Salazzle\",\n types: [\"Poison\", \"Fire\"],\n baseStats: { hp: 68, attack: 64, defense: 60, speed: 117, special: 111 },\n expGroup: \"medium_fast\",\n evolutionChainId: 390,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 759,\n name: \"Stufful\",\n types: [\"Normal\", \"Fighting\"],\n baseStats: { hp: 70, attack: 75, defense: 50, speed: 50, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 391,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 760,\n name: \"Bewear\",\n types: [\"Normal\", \"Fighting\"],\n baseStats: { hp: 120, attack: 125, defense: 80, speed: 60, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 391,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 761,\n name: \"Bounsweet\",\n types: [\"Grass\"],\n baseStats: { hp: 42, attack: 30, defense: 38, speed: 32, special: 38 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"common\",\n catchRate: 235,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 762,\n name: \"Steenee\",\n types: [\"Grass\"],\n baseStats: { hp: 52, attack: 40, defense: 48, speed: 62, special: 48 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 763,\n name: \"Tsareena\",\n types: [\"Grass\"],\n baseStats: { hp: 72, attack: 120, defense: 98, speed: 72, special: 98 },\n expGroup: \"medium_slow\",\n evolutionChainId: 392,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 764,\n name: \"Comfey\",\n types: [\"Fairy\"],\n baseStats: { hp: 51, attack: 52, defense: 90, speed: 100, special: 110 },\n expGroup: \"fast\",\n evolutionChainId: 393,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 765,\n name: \"Oranguru\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 90, attack: 60, defense: 80, speed: 60, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 394,\n rarity: \"rare\",\n catchRate: 45,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 766,\n name: \"Passimian\",\n types: [\"Fighting\"],\n baseStats: { hp: 100, attack: 120, defense: 90, speed: 80, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 395,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 767,\n name: \"Wimpod\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 25, attack: 35, defense: 40, speed: 80, special: 30 },\n expGroup: \"medium_fast\",\n evolutionChainId: 396,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 768,\n name: \"Golisopod\",\n types: [\"Bug\", \"Water\"],\n baseStats: { hp: 75, attack: 125, defense: 140, speed: 40, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 396,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 769,\n name: \"Sandygast\",\n types: [\"Ghost\", \"Ground\"],\n baseStats: { hp: 55, attack: 55, defense: 80, speed: 15, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 397,\n rarity: \"uncommon\",\n catchRate: 140,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 770,\n name: \"Palossand\",\n types: [\"Ghost\", \"Ground\"],\n baseStats: { hp: 85, attack: 75, defense: 110, speed: 35, special: 100 },\n expGroup: \"medium_fast\",\n evolutionChainId: 397,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 771,\n name: \"Pyukumuku\",\n types: [\"Water\"],\n baseStats: { hp: 55, attack: 60, defense: 130, speed: 5, special: 130 },\n expGroup: \"fast\",\n evolutionChainId: 398,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 772,\n name: \"Type: Null\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 95, defense: 95, speed: 59, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 399,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 773,\n name: \"Silvally\",\n types: [\"Normal\"],\n baseStats: { hp: 95, attack: 95, defense: 95, speed: 95, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 399,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 774,\n name: \"Minior-Red-Meteor\",\n types: [\"Rock\", \"Flying\"],\n baseStats: { hp: 60, attack: 60, defense: 100, speed: 60, special: 100 },\n expGroup: \"medium_slow\",\n evolutionChainId: 400,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 775,\n name: \"Komala\",\n types: [\"Normal\"],\n baseStats: { hp: 65, attack: 115, defense: 65, speed: 65, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 401,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A reliable teammate in any codebase.\",\n },\n {\n id: 776,\n name: \"Turtonator\",\n types: [\"Fire\", \"Dragon\"],\n baseStats: { hp: 60, attack: 78, defense: 135, speed: 36, special: 91 },\n expGroup: \"medium_fast\",\n evolutionChainId: 402,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 777,\n name: \"Togedemaru\",\n types: [\"Electric\", \"Steel\"],\n baseStats: { hp: 65, attack: 98, defense: 63, speed: 96, special: 73 },\n expGroup: \"medium_fast\",\n evolutionChainId: 403,\n rarity: \"common\",\n catchRate: 180,\n description: \"Lightning-fast response times in production.\",\n },\n {\n id: 778,\n name: \"Mimikyu-Disguised\",\n types: [\"Ghost\", \"Fairy\"],\n baseStats: { hp: 55, attack: 90, defense: 80, speed: 96, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 404,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Debugs phantom issues in production at 3 AM.\",\n },\n {\n id: 779,\n name: \"Bruxish\",\n types: [\"Water\", \"Psychic\"],\n baseStats: { hp: 68, attack: 105, defense: 70, speed: 92, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 405,\n rarity: \"uncommon\",\n catchRate: 80,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 780,\n name: \"Drampa\",\n types: [\"Normal\", \"Dragon\"],\n baseStats: { hp: 78, attack: 60, defense: 85, speed: 36, special: 135 },\n expGroup: \"medium_fast\",\n evolutionChainId: 406,\n rarity: \"uncommon\",\n catchRate: 70,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 781,\n name: \"Dhelmise\",\n types: [\"Ghost\", \"Grass\"],\n baseStats: { hp: 70, attack: 131, defense: 100, speed: 40, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 407,\n rarity: \"rare\",\n catchRate: 25,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 782,\n name: \"Jangmo-O\",\n types: [\"Dragon\"],\n baseStats: { hp: 45, attack: 55, defense: 65, speed: 45, special: 45 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 783,\n name: \"Hakamo-O\",\n types: [\"Dragon\", \"Fighting\"],\n baseStats: { hp: 55, attack: 75, defense: 90, speed: 65, special: 70 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 784,\n name: \"Kommo-O\",\n types: [\"Dragon\", \"Fighting\"],\n baseStats: { hp: 75, attack: 110, defense: 125, speed: 85, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 408,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebases are legendary in scale and power.\",\n },\n {\n id: 785,\n name: \"Tapu-Koko\",\n types: [\"Electric\", \"Fairy\"],\n baseStats: { hp: 70, attack: 115, defense: 85, speed: 130, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 409,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 786,\n name: \"Tapu-Lele\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 70, attack: 85, defense: 75, speed: 95, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 410,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 787,\n name: \"Tapu-Bulu\",\n types: [\"Grass\", \"Fairy\"],\n baseStats: { hp: 70, attack: 130, defense: 115, speed: 75, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 411,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 788,\n name: \"Tapu-Fini\",\n types: [\"Water\", \"Fairy\"],\n baseStats: { hp: 70, attack: 75, defense: 115, speed: 85, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 412,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 789,\n name: \"Cosmog\",\n types: [\"Psychic\"],\n baseStats: { hp: 43, attack: 29, defense: 31, speed: 37, special: 31 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Debugs production issues through pure intuition.\",\n },\n {\n id: 790,\n name: \"Cosmoem\",\n types: [\"Psychic\"],\n baseStats: { hp: 43, attack: 29, defense: 131, speed: 37, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 791,\n name: \"Solgaleo\",\n types: [\"Psychic\", \"Steel\"],\n baseStats: { hp: 137, attack: 137, defense: 107, speed: 97, special: 113 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 792,\n name: \"Lunala\",\n types: [\"Psychic\", \"Ghost\"],\n baseStats: { hp: 137, attack: 113, defense: 89, speed: 97, special: 137 },\n expGroup: \"slow\",\n evolutionChainId: 413,\n rarity: \"legendary\",\n catchRate: 45,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 793,\n name: \"Nihilego\",\n types: [\"Rock\", \"Poison\"],\n baseStats: { hp: 109, attack: 53, defense: 47, speed: 103, special: 131 },\n expGroup: \"slow\",\n evolutionChainId: 414,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Builds unbreakable infrastructure that lasts.\",\n },\n {\n id: 794,\n name: \"Buzzwole\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 107, attack: 139, defense: 139, speed: 79, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 415,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds bugs nobody else can spot.\",\n },\n {\n id: 795,\n name: \"Pheromosa\",\n types: [\"Bug\", \"Fighting\"],\n baseStats: { hp: 71, attack: 137, defense: 37, speed: 151, special: 137 },\n expGroup: \"slow\",\n evolutionChainId: 416,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 796,\n name: \"Xurkitree\",\n types: [\"Electric\"],\n baseStats: { hp: 83, attack: 89, defense: 71, speed: 83, special: 173 },\n expGroup: \"slow\",\n evolutionChainId: 417,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 797,\n name: \"Celesteela\",\n types: [\"Steel\", \"Flying\"],\n baseStats: { hp: 97, attack: 101, defense: 103, speed: 61, special: 107 },\n expGroup: \"slow\",\n evolutionChainId: 418,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 798,\n name: \"Kartana\",\n types: [\"Grass\", \"Steel\"],\n baseStats: { hp: 59, attack: 181, defense: 131, speed: 109, special: 59 },\n expGroup: \"slow\",\n evolutionChainId: 419,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 799,\n name: \"Guzzlord\",\n types: [\"Dark\", \"Dragon\"],\n baseStats: { hp: 223, attack: 101, defense: 53, speed: 43, special: 97 },\n expGroup: \"slow\",\n evolutionChainId: 420,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 800,\n name: \"Necrozma\",\n types: [\"Psychic\"],\n baseStats: { hp: 97, attack: 107, defense: 101, speed: 79, special: 127 },\n expGroup: \"slow\",\n evolutionChainId: 421,\n rarity: \"legendary\",\n catchRate: 255,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 801,\n name: \"Magearna\",\n types: [\"Steel\", \"Fairy\"],\n baseStats: { hp: 80, attack: 95, defense: 115, speed: 65, special: 130 },\n expGroup: \"slow\",\n evolutionChainId: 422,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Forges bulletproof APIs that never break.\",\n },\n {\n id: 802,\n name: \"Marshadow\",\n types: [\"Fighting\", \"Ghost\"],\n baseStats: { hp: 90, attack: 125, defense: 80, speed: 125, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 423,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 803,\n name: \"Poipole\",\n types: [\"Poison\"],\n baseStats: { hp: 67, attack: 73, defense: 67, speed: 73, special: 73 },\n expGroup: \"slow\",\n evolutionChainId: 424,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Injects helpful logging into legacy systems.\",\n },\n {\n id: 804,\n name: \"Naganadel\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 73, attack: 73, defense: 73, speed: 121, special: 127 },\n expGroup: \"slow\",\n evolutionChainId: 424,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Finds toxic code patterns and eliminates them.\",\n },\n {\n id: 805,\n name: \"Stakataka\",\n types: [\"Rock\", \"Steel\"],\n baseStats: { hp: 61, attack: 131, defense: 211, speed: 13, special: 101 },\n expGroup: \"slow\",\n evolutionChainId: 425,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 806,\n name: \"Blacephalon\",\n types: [\"Fire\", \"Ghost\"],\n baseStats: { hp: 53, attack: 127, defense: 53, speed: 107, special: 151 },\n expGroup: \"slow\",\n evolutionChainId: 426,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 807,\n name: \"Zeraora\",\n types: [\"Electric\"],\n baseStats: { hp: 88, attack: 112, defense: 75, speed: 143, special: 102 },\n expGroup: \"slow\",\n evolutionChainId: 427,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 808,\n name: \"Meltan\",\n types: [\"Steel\"],\n baseStats: { hp: 46, attack: 65, defense: 65, speed: 34, special: 55 },\n expGroup: \"slow\",\n evolutionChainId: 428,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Tempered by years of production hardening.\",\n },\n {\n id: 809,\n name: \"Melmetal\",\n types: [\"Steel\"],\n baseStats: { hp: 135, attack: 143, defense: 143, speed: 34, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 429,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Builds infrastructure that withstands any load.\",\n },\n\n // \u2500\u2500 Gen 8 \u2014 Galar (#810\u2013#905) \u2500\u2500\n {\n id: 810,\n name: \"Grookey\",\n types: [\"Grass\"],\n baseStats: { hp: 50, attack: 65, defense: 50, speed: 65, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Plants the seeds for sustainable architecture.\",\n },\n {\n id: 811,\n name: \"Thwackey\",\n types: [\"Grass\"],\n baseStats: { hp: 70, attack: 85, defense: 70, speed: 80, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 812,\n name: \"Rillaboom\",\n types: [\"Grass\"],\n baseStats: { hp: 100, attack: 125, defense: 90, speed: 85, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 430,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 813,\n name: \"Scorbunny\",\n types: [\"Fire\"],\n baseStats: { hp: 50, attack: 71, defense: 40, speed: 69, special: 40 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its CI pipeline is always on fire \u2014 in a good way.\",\n },\n {\n id: 814,\n name: \"Raboot\",\n types: [\"Fire\"],\n baseStats: { hp: 65, attack: 86, defense: 60, speed: 94, special: 60 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Burns through bugs with blazing speed.\",\n },\n {\n id: 815,\n name: \"Cinderace\",\n types: [\"Fire\"],\n baseStats: { hp: 80, attack: 116, defense: 75, speed: 119, special: 75 },\n expGroup: \"medium_slow\",\n evolutionChainId: 431,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Compiles so fast the CPU starts sweating.\",\n },\n {\n id: 816,\n name: \"Sobble\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 40, defense: 40, speed: 70, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 817,\n name: \"Drizzile\",\n types: [\"Water\"],\n baseStats: { hp: 65, attack: 60, defense: 55, speed: 90, special: 95 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 818,\n name: \"Inteleon\",\n types: [\"Water\"],\n baseStats: { hp: 70, attack: 85, defense: 65, speed: 120, special: 125 },\n expGroup: \"medium_slow\",\n evolutionChainId: 432,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 819,\n name: \"Skwovet\",\n types: [\"Normal\"],\n baseStats: { hp: 70, attack: 55, defense: 55, speed: 25, special: 35 },\n expGroup: \"medium_fast\",\n evolutionChainId: 433,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 820,\n name: \"Greedent\",\n types: [\"Normal\"],\n baseStats: { hp: 120, attack: 95, defense: 95, speed: 20, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 433,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 821,\n name: \"Rookidee\",\n types: [\"Flying\"],\n baseStats: { hp: 38, attack: 47, defense: 35, speed: 57, special: 35 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"common\",\n catchRate: 255,\n description: \"Migrates databases without breaking a wing.\",\n },\n {\n id: 822,\n name: \"Corvisquire\",\n types: [\"Flying\"],\n baseStats: { hp: 68, attack: 67, defense: 55, speed: 77, special: 55 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 823,\n name: \"Corviknight\",\n types: [\"Flying\", \"Steel\"],\n baseStats: { hp: 98, attack: 87, defense: 105, speed: 67, special: 85 },\n expGroup: \"medium_slow\",\n evolutionChainId: 434,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its abstractions reach impressive heights.\",\n },\n {\n id: 824,\n name: \"Blipbug\",\n types: [\"Bug\"],\n baseStats: { hp: 25, attack: 20, defense: 20, speed: 45, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"common\",\n catchRate: 255,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 825,\n name: \"Dottler\",\n types: [\"Bug\", \"Psychic\"],\n baseStats: { hp: 50, attack: 35, defense: 80, speed: 30, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Surprisingly powerful despite its small size.\",\n },\n {\n id: 826,\n name: \"Orbeetle\",\n types: [\"Bug\", \"Psychic\"],\n baseStats: { hp: 60, attack: 45, defense: 110, speed: 90, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 435,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Crawls through every edge case methodically.\",\n },\n {\n id: 827,\n name: \"Nickit\",\n types: [\"Dark\"],\n baseStats: { hp: 40, attack: 28, defense: 28, speed: 50, special: 52 },\n expGroup: \"fast\",\n evolutionChainId: 436,\n rarity: \"common\",\n catchRate: 255,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 828,\n name: \"Thievul\",\n types: [\"Dark\"],\n baseStats: { hp: 70, attack: 58, defense: 58, speed: 90, special: 92 },\n expGroup: \"fast\",\n evolutionChainId: 436,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 829,\n name: \"Gossifleur\",\n types: [\"Grass\"],\n baseStats: { hp: 40, attack: 40, defense: 60, speed: 10, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 437,\n rarity: \"common\",\n catchRate: 190,\n description: \"Its codebase flourishes with careful nurturing.\",\n },\n {\n id: 830,\n name: \"Eldegoss\",\n types: [\"Grass\"],\n baseStats: { hp: 60, attack: 50, defense: 90, speed: 60, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 437,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Grows features organically from a solid foundation.\",\n },\n {\n id: 831,\n name: \"Wooloo\",\n types: [\"Normal\"],\n baseStats: { hp: 42, attack: 40, defense: 55, speed: 48, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 438,\n rarity: \"common\",\n catchRate: 255,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 832,\n name: \"Dubwool\",\n types: [\"Normal\"],\n baseStats: { hp: 72, attack: 80, defense: 100, speed: 88, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 438,\n rarity: \"uncommon\",\n catchRate: 127,\n description: \"Writes clean, readable code that just works.\",\n },\n {\n id: 833,\n name: \"Chewtle\",\n types: [\"Water\"],\n baseStats: { hp: 50, attack: 64, defense: 50, speed: 44, special: 38 },\n expGroup: \"medium_fast\",\n evolutionChainId: 439,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 834,\n name: \"Drednaw\",\n types: [\"Water\", \"Rock\"],\n baseStats: { hp: 90, attack: 115, defense: 90, speed: 74, special: 68 },\n expGroup: \"medium_fast\",\n evolutionChainId: 439,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its code flows naturally from function to function.\",\n },\n {\n id: 835,\n name: \"Yamper\",\n types: [\"Electric\"],\n baseStats: { hp: 59, attack: 45, defense: 50, speed: 26, special: 50 },\n expGroup: \"fast\",\n evolutionChainId: 440,\n rarity: \"common\",\n catchRate: 255,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 836,\n name: \"Boltund\",\n types: [\"Electric\"],\n baseStats: { hp: 69, attack: 90, defense: 60, speed: 121, special: 90 },\n expGroup: \"fast\",\n evolutionChainId: 440,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 837,\n name: \"Rolycoly\",\n types: [\"Rock\"],\n baseStats: { hp: 30, attack: 40, defense: 50, speed: 30, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"common\",\n catchRate: 255,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 838,\n name: \"Carkol\",\n types: [\"Rock\", \"Fire\"],\n baseStats: { hp: 80, attack: 60, defense: 90, speed: 50, special: 70 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Dependable like bedrock under your deployment.\",\n },\n {\n id: 839,\n name: \"Coalossal\",\n types: [\"Rock\", \"Fire\"],\n baseStats: { hp: 110, attack: 80, defense: 120, speed: 30, special: 90 },\n expGroup: \"medium_slow\",\n evolutionChainId: 441,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its code is hardened against every attack vector.\",\n },\n {\n id: 840,\n name: \"Applin\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 40, attack: 40, defense: 80, speed: 20, special: 40 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"common\",\n catchRate: 255,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 841,\n name: \"Flapple\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 70, attack: 110, defense: 80, speed: 70, special: 95 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Photosynthesizes coffee into clean code.\",\n },\n {\n id: 842,\n name: \"Appletun\",\n types: [\"Grass\", \"Dragon\"],\n baseStats: { hp: 110, attack: 85, defense: 80, speed: 30, special: 100 },\n expGroup: \"fast\",\n evolutionChainId: 442,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Branches out into new features with natural ease.\",\n },\n {\n id: 843,\n name: \"Silicobra\",\n types: [\"Ground\"],\n baseStats: { hp: 52, attack: 57, defense: 75, speed: 46, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 443,\n rarity: \"common\",\n catchRate: 255,\n description: \"Stable as the earth beneath your server rack.\",\n },\n {\n id: 844,\n name: \"Sandaconda\",\n types: [\"Ground\"],\n baseStats: { hp: 72, attack: 107, defense: 125, speed: 71, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 443,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Builds rock-solid foundations for any project.\",\n },\n {\n id: 845,\n name: \"Cramorant\",\n types: [\"Flying\", \"Water\"],\n baseStats: { hp: 70, attack: 85, defense: 55, speed: 85, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 444,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Floats above complexity with elegant solutions.\",\n },\n {\n id: 846,\n name: \"Arrokuda\",\n types: [\"Water\"],\n baseStats: { hp: 41, attack: 63, defense: 40, speed: 66, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 445,\n rarity: \"common\",\n catchRate: 255,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 847,\n name: \"Barraskewda\",\n types: [\"Water\"],\n baseStats: { hp: 61, attack: 123, defense: 60, speed: 136, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 445,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 848,\n name: \"Toxel\",\n types: [\"Electric\", \"Poison\"],\n baseStats: { hp: 40, attack: 38, defense: 35, speed: 40, special: 54 },\n expGroup: \"medium_slow\",\n evolutionChainId: 446,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 849,\n name: \"Toxtricity-Amped\",\n types: [\"Electric\", \"Poison\"],\n baseStats: { hp: 75, attack: 98, defense: 70, speed: 75, special: 114 },\n expGroup: \"medium_slow\",\n evolutionChainId: 446,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 850,\n name: \"Sizzlipede\",\n types: [\"Fire\", \"Bug\"],\n baseStats: { hp: 50, attack: 65, defense: 45, speed: 45, special: 50 },\n expGroup: \"medium_fast\",\n evolutionChainId: 447,\n rarity: \"common\",\n catchRate: 190,\n description: \"Rewrites legacy code with explosive energy.\",\n },\n {\n id: 851,\n name: \"Centiskorch\",\n types: [\"Fire\", \"Bug\"],\n baseStats: { hp: 100, attack: 115, defense: 65, speed: 65, special: 90 },\n expGroup: \"medium_fast\",\n evolutionChainId: 447,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Hotfixes deployed before you finish your coffee.\",\n },\n {\n id: 852,\n name: \"Clobbopus\",\n types: [\"Fighting\"],\n baseStats: { hp: 50, attack: 68, defense: 60, speed: 32, special: 50 },\n expGroup: \"medium_slow\",\n evolutionChainId: 448,\n rarity: \"common\",\n catchRate: 180,\n description: \"Trains hard on algorithmic challenges daily.\",\n },\n {\n id: 853,\n name: \"Grapploct\",\n types: [\"Fighting\"],\n baseStats: { hp: 80, attack: 118, defense: 90, speed: 42, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 448,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 854,\n name: \"Sinistea\",\n types: [\"Ghost\"],\n baseStats: { hp: 40, attack: 45, defense: 45, speed: 50, special: 74 },\n expGroup: \"medium_fast\",\n evolutionChainId: 449,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 855,\n name: \"Polteageist\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 65, defense: 65, speed: 70, special: 134 },\n expGroup: \"medium_fast\",\n evolutionChainId: 449,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 856,\n name: \"Hatenna\",\n types: [\"Psychic\"],\n baseStats: { hp: 42, attack: 30, defense: 45, speed: 39, special: 56 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"common\",\n catchRate: 235,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 857,\n name: \"Hattrem\",\n types: [\"Psychic\"],\n baseStats: { hp: 57, attack: 40, defense: 65, speed: 49, special: 86 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Its architecture decisions are eerily prescient.\",\n },\n {\n id: 858,\n name: \"Hatterene\",\n types: [\"Psychic\", \"Fairy\"],\n baseStats: { hp: 57, attack: 90, defense: 95, speed: 29, special: 136 },\n expGroup: \"slow\",\n evolutionChainId: 450,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Mentally models complex distributed systems.\",\n },\n {\n id: 859,\n name: \"Impidimp\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 45, attack: 45, defense: 30, speed: 50, special: 55 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"common\",\n catchRate: 255,\n description: \"Finds vulnerabilities hidden in the shadows.\",\n },\n {\n id: 860,\n name: \"Morgrem\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 65, attack: 60, defense: 45, speed: 70, special: 75 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"uncommon\",\n catchRate: 120,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 861,\n name: \"Grimmsnarl\",\n types: [\"Dark\", \"Fairy\"],\n baseStats: { hp: 95, attack: 120, defense: 65, speed: 60, special: 95 },\n expGroup: \"medium_fast\",\n evolutionChainId: 451,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 862,\n name: \"Obstagoon\",\n types: [\"Dark\", \"Normal\"],\n baseStats: { hp: 93, attack: 90, defense: 101, speed: 95, special: 81 },\n expGroup: \"medium_fast\",\n evolutionChainId: 134,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 863,\n name: \"Perrserker\",\n types: [\"Steel\"],\n baseStats: { hp: 70, attack: 110, defense: 100, speed: 50, special: 60 },\n expGroup: \"medium_fast\",\n evolutionChainId: 22,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 864,\n name: \"Cursola\",\n types: [\"Ghost\"],\n baseStats: { hp: 60, attack: 95, defense: 50, speed: 30, special: 145 },\n expGroup: \"fast\",\n evolutionChainId: 113,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Appears silently in git blame for critical fixes.\",\n },\n {\n id: 865,\n name: \"Sirfetch'd\",\n types: [\"Fighting\"],\n baseStats: { hp: 62, attack: 135, defense: 95, speed: 65, special: 82 },\n expGroup: \"medium_fast\",\n evolutionChainId: 35,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 866,\n name: \"Mr. Rime\",\n types: [\"Ice\", \"Psychic\"],\n baseStats: { hp: 80, attack: 85, defense: 75, speed: 70, special: 110 },\n expGroup: \"medium_fast\",\n evolutionChainId: 57,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 867,\n name: \"Runerigus\",\n types: [\"Ground\", \"Ghost\"],\n baseStats: { hp: 58, attack: 95, defense: 145, speed: 30, special: 105 },\n expGroup: \"medium_fast\",\n evolutionChainId: 287,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Grounded in best practices and design patterns.\",\n },\n {\n id: 868,\n name: \"Milcery\",\n types: [\"Fairy\"],\n baseStats: { hp: 45, attack: 40, defense: 40, speed: 34, special: 61 },\n expGroup: \"medium_fast\",\n evolutionChainId: 452,\n rarity: \"common\",\n catchRate: 200,\n description: \"Transforms ugly hacks into elegant solutions.\",\n },\n {\n id: 869,\n name: \"Alcremie\",\n types: [\"Fairy\"],\n baseStats: { hp: 65, attack: 60, defense: 75, speed: 64, special: 121 },\n expGroup: \"medium_fast\",\n evolutionChainId: 452,\n rarity: \"uncommon\",\n catchRate: 100,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 870,\n name: \"Falinks\",\n types: [\"Fighting\"],\n baseStats: { hp: 65, attack: 100, defense: 100, speed: 75, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 453,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Its PR reviews pack a punch.\",\n },\n {\n id: 871,\n name: \"Pincurchin\",\n types: [\"Electric\"],\n baseStats: { hp: 48, attack: 101, defense: 95, speed: 15, special: 91 },\n expGroup: \"medium_fast\",\n evolutionChainId: 454,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Sparks innovation with every commit.\",\n },\n {\n id: 872,\n name: \"Snom\",\n types: [\"Ice\", \"Bug\"],\n baseStats: { hp: 30, attack: 25, defense: 35, speed: 20, special: 45 },\n expGroup: \"medium_fast\",\n evolutionChainId: 455,\n rarity: \"common\",\n catchRate: 190,\n description: \"Crystallizes complex requirements into clear specs.\",\n },\n {\n id: 873,\n name: \"Frosmoth\",\n types: [\"Ice\", \"Bug\"],\n baseStats: { hp: 70, attack: 65, defense: 60, speed: 65, special: 125 },\n expGroup: \"medium_fast\",\n evolutionChainId: 455,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Preserves backward compatibility like a glacier.\",\n },\n {\n id: 874,\n name: \"Stonjourner\",\n types: [\"Rock\"],\n baseStats: { hp: 100, attack: 125, defense: 135, speed: 70, special: 20 },\n expGroup: \"slow\",\n evolutionChainId: 456,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Solid as a load-bearing wall in the architecture.\",\n },\n {\n id: 875,\n name: \"Eiscue-Ice\",\n types: [\"Ice\"],\n baseStats: { hp: 75, attack: 80, defense: 110, speed: 50, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 457,\n rarity: \"uncommon\",\n catchRate: 60,\n description: \"Its test suite is ice-cold \u2014 nothing gets through.\",\n },\n {\n id: 876,\n name: \"Indeedee-Male\",\n types: [\"Psychic\", \"Normal\"],\n baseStats: { hp: 60, attack: 65, defense: 55, speed: 95, special: 105 },\n expGroup: \"fast\",\n evolutionChainId: 458,\n rarity: \"rare\",\n catchRate: 30,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 877,\n name: \"Morpeko-Full-Belly\",\n types: [\"Electric\", \"Dark\"],\n baseStats: { hp: 58, attack: 95, defense: 58, speed: 97, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 459,\n rarity: \"common\",\n catchRate: 180,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 878,\n name: \"Cufant\",\n types: [\"Steel\"],\n baseStats: { hp: 72, attack: 80, defense: 49, speed: 40, special: 49 },\n expGroup: \"medium_fast\",\n evolutionChainId: 460,\n rarity: \"common\",\n catchRate: 190,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 879,\n name: \"Copperajah\",\n types: [\"Steel\"],\n baseStats: { hp: 122, attack: 130, defense: 69, speed: 30, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 460,\n rarity: \"uncommon\",\n catchRate: 90,\n description: \"Builds infrastructure that withstands any load.\",\n },\n {\n id: 880,\n name: \"Dracozolt\",\n types: [\"Electric\", \"Dragon\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 75, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 461,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Charges up the team with electrifying demos.\",\n },\n {\n id: 881,\n name: \"Arctozolt\",\n types: [\"Electric\", \"Ice\"],\n baseStats: { hp: 90, attack: 100, defense: 90, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 462,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Powers through async operations effortlessly.\",\n },\n {\n id: 882,\n name: \"Dracovish\",\n types: [\"Water\", \"Dragon\"],\n baseStats: { hp: 90, attack: 90, defense: 100, speed: 75, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 463,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Streams data like a well-configured message queue.\",\n },\n {\n id: 883,\n name: \"Arctovish\",\n types: [\"Water\", \"Ice\"],\n baseStats: { hp: 90, attack: 90, defense: 100, speed: 55, special: 90 },\n expGroup: \"slow\",\n evolutionChainId: 464,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Flows through complex data pipelines with ease.\",\n },\n {\n id: 884,\n name: \"Duraludon\",\n types: [\"Steel\", \"Dragon\"],\n baseStats: { hp: 70, attack: 95, defense: 115, speed: 85, special: 120 },\n expGroup: \"medium_fast\",\n evolutionChainId: 465,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hardens every endpoint against injection attacks.\",\n },\n {\n id: 885,\n name: \"Dreepy\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 28, attack: 60, defense: 30, speed: 82, special: 40 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"Hoards knowledge of ancient APIs and protocols.\",\n },\n {\n id: 886,\n name: \"Drakloak\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 68, attack: 80, defense: 50, speed: 102, special: 60 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 887,\n name: \"Dragapult\",\n types: [\"Dragon\", \"Ghost\"],\n baseStats: { hp: 88, attack: 120, defense: 75, speed: 142, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 466,\n rarity: \"rare\",\n catchRate: 45,\n description: \"A rare sight, but unstoppable when deployed.\",\n },\n {\n id: 888,\n name: \"Zacian\",\n types: [\"Fairy\"],\n baseStats: { hp: 92, attack: 120, defense: 115, speed: 138, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 467,\n rarity: \"legendary\",\n catchRate: 10,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n {\n id: 889,\n name: \"Zamazenta\",\n types: [\"Fighting\"],\n baseStats: { hp: 92, attack: 120, defense: 115, speed: 138, special: 115 },\n expGroup: \"slow\",\n evolutionChainId: 468,\n rarity: \"legendary\",\n catchRate: 10,\n description: \"Fights through technical debt with determination.\",\n },\n {\n id: 890,\n name: \"Eternatus\",\n types: [\"Poison\", \"Dragon\"],\n baseStats: { hp: 140, attack: 85, defense: 95, speed: 130, special: 145 },\n expGroup: \"slow\",\n evolutionChainId: 469,\n rarity: \"legendary\",\n catchRate: 255,\n description: \"Detoxifies spaghetti code into clean modules.\",\n },\n {\n id: 891,\n name: \"Kubfu\",\n types: [\"Fighting\"],\n baseStats: { hp: 60, attack: 90, defense: 60, speed: 72, special: 53 },\n expGroup: \"slow\",\n evolutionChainId: 470,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 892,\n name: \"Urshifu-Single-Strike\",\n types: [\"Fighting\", \"Dark\"],\n baseStats: { hp: 100, attack: 130, defense: 100, speed: 97, special: 63 },\n expGroup: \"slow\",\n evolutionChainId: 470,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Never backs down from a complex refactor.\",\n },\n {\n id: 893,\n name: \"Zarude\",\n types: [\"Dark\", \"Grass\"],\n baseStats: { hp: 105, attack: 120, defense: 105, speed: 105, special: 95 },\n expGroup: \"slow\",\n evolutionChainId: 471,\n rarity: \"mythical\",\n catchRate: 3,\n description: \"Operates best when everyone else has logged off.\",\n },\n {\n id: 894,\n name: \"Regieleki\",\n types: [\"Electric\"],\n baseStats: { hp: 80, attack: 100, defense: 50, speed: 200, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 472,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its event loop never blocks.\",\n },\n {\n id: 895,\n name: \"Regidrago\",\n types: [\"Dragon\"],\n baseStats: { hp: 200, attack: 100, defense: 50, speed: 80, special: 100 },\n expGroup: \"slow\",\n evolutionChainId: 473,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Commands massive distributed systems with authority.\",\n },\n {\n id: 896,\n name: \"Glastrier\",\n types: [\"Ice\"],\n baseStats: { hp: 100, attack: 145, defense: 130, speed: 30, special: 110 },\n expGroup: \"slow\",\n evolutionChainId: 474,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Freezes bugs in their tracks before production.\",\n },\n {\n id: 897,\n name: \"Spectrier\",\n types: [\"Ghost\"],\n baseStats: { hp: 100, attack: 65, defense: 60, speed: 130, special: 145 },\n expGroup: \"slow\",\n evolutionChainId: 475,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Haunts legacy codebases seeking forgotten bugs.\",\n },\n {\n id: 898,\n name: \"Calyrex\",\n types: [\"Psychic\", \"Grass\"],\n baseStats: { hp: 100, attack: 80, defense: 80, speed: 80, special: 80 },\n expGroup: \"slow\",\n evolutionChainId: 476,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Reads stack traces like reading minds.\",\n },\n {\n id: 899,\n name: \"Wyrdeer\",\n types: [\"Normal\", \"Psychic\"],\n baseStats: { hp: 103, attack: 105, defense: 72, speed: 65, special: 105 },\n expGroup: \"slow\",\n evolutionChainId: 120,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"The everyday workhorse of any development team.\",\n },\n {\n id: 900,\n name: \"Kleavor\",\n types: [\"Bug\", \"Rock\"],\n baseStats: { hp: 70, attack: 135, defense: 95, speed: 85, special: 70 },\n expGroup: \"medium_fast\",\n evolutionChainId: 58,\n rarity: \"uncommon\",\n catchRate: 115,\n description: \"Metamorphoses codebases through careful refactoring.\",\n },\n {\n id: 901,\n name: \"Ursaluna\",\n types: [\"Ground\", \"Normal\"],\n baseStats: { hp: 130, attack: 140, defense: 105, speed: 50, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 110,\n rarity: \"uncommon\",\n catchRate: 75,\n description: \"Digs deep into root cause analysis.\",\n },\n {\n id: 902,\n name: \"Basculegion-Male\",\n types: [\"Water\", \"Ghost\"],\n baseStats: { hp: 120, attack: 112, defense: 65, speed: 78, special: 80 },\n expGroup: \"medium_fast\",\n evolutionChainId: 280,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Handles backpressure like a pro.\",\n },\n {\n id: 903,\n name: \"Sneasler\",\n types: [\"Fighting\", \"Poison\"],\n baseStats: { hp: 80, attack: 130, defense: 60, speed: 120, special: 80 },\n expGroup: \"medium_slow\",\n evolutionChainId: 109,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Punches through blockers in code review.\",\n },\n {\n id: 904,\n name: \"Overqwil\",\n types: [\"Dark\", \"Poison\"],\n baseStats: { hp: 85, attack: 115, defense: 95, speed: 85, special: 65 },\n expGroup: \"medium_fast\",\n evolutionChainId: 106,\n rarity: \"uncommon\",\n catchRate: 135,\n description: \"Masters the dark arts of regex and bitwise ops.\",\n },\n {\n id: 905,\n name: \"Enamorus-Incarnate\",\n types: [\"Fairy\", \"Flying\"],\n baseStats: { hp: 74, attack: 115, defense: 70, speed: 106, special: 135 },\n expGroup: \"slow\",\n evolutionChainId: 477,\n rarity: \"legendary\",\n catchRate: 3,\n description: \"Its code reviews leave everyone feeling enchanted.\",\n },\n] as const satisfies readonly Pokemon[];\n\n/** Lookup map: Pokemon ID \u2192 Pokemon data. Built once at module load. */\nexport const POKEMON_BY_ID: ReadonlyMap<number, Pokemon> = new Map(POKEDEX.map((p) => [p.id, p]));\n\n/** Lookup map: lowercase name \u2192 Pokemon data. Built once at module load. */\nexport const POKEMON_BY_NAME: ReadonlyMap<string, Pokemon> = new Map(\n POKEDEX.map((p) => [p.name.toLowerCase(), p]),\n);\n", "/**\n * XP and leveling engine for Claudemon.\n * Implements Gen 1 experience growth rate formulas.\n */\n\nimport type {\n ExpGroup,\n OwnedPokemon,\n Pokemon,\n LevelUpResult,\n XpEventType,\n XpEvent,\n} from \"./types.js\";\nimport { MAX_LEVEL, XP_AWARDS } from \"./constants.js\";\n\n/**\n * Total cumulative XP required to reach a given level.\n * @param level - Target level (1-100)\n * @param group - Experience growth rate group\n * @returns Cumulative XP needed to reach that level\n */\nexport function cumulativeXpForLevel(level: number, group: ExpGroup): number {\n const n = level;\n const n3 = n * n * n;\n\n switch (group) {\n case \"fast\":\n return Math.floor(0.8 * n3);\n case \"medium_fast\":\n return n3;\n case \"medium_slow\": {\n const raw = 1.2 * n3 - 15 * n * n + 100 * n - 140;\n return Math.max(0, Math.floor(raw));\n }\n case \"slow\":\n return Math.floor(1.25 * n3);\n }\n}\n\n/**\n * XP delta needed to advance from currentLevel to currentLevel + 1.\n * @param currentLevel - The pokemon's current level (1-99)\n * @param group - Experience growth rate group\n * @returns XP needed for the next level, or 0 if already at MAX_LEVEL\n */\nexport function xpToNextLevel(currentLevel: number, group: ExpGroup): number {\n if (currentLevel >= MAX_LEVEL) {\n return 0;\n }\n return cumulativeXpForLevel(currentLevel + 1, group) - cumulativeXpForLevel(currentLevel, group);\n}\n\n/**\n * Apply XP to an owned pokemon, handling level-ups (including multi-level).\n * Mutates the pokemon's currentXp, totalXp, and level fields.\n * @param pokemon - The owned pokemon instance to award XP to\n * @param amount - XP amount to add\n * @param pokemonData - The species data for this pokemon\n * @returns Level-up result if the pokemon leveled up, or null\n */\nexport function addXp(\n pokemon: OwnedPokemon,\n amount: number,\n pokemonData: Pokemon,\n): LevelUpResult | null {\n if (amount <= 0 || pokemon.level >= MAX_LEVEL) {\n return null;\n }\n\n const previousLevel = pokemon.level;\n const group = pokemonData.expGroup;\n\n pokemon.totalXp += amount;\n pokemon.currentXp += amount;\n\n // Check for level-ups (possibly multiple from large XP gains)\n while (pokemon.level < MAX_LEVEL) {\n const xpNeeded = xpToNextLevel(pokemon.level, group);\n if (xpNeeded <= 0 || pokemon.currentXp < xpNeeded) {\n break;\n }\n pokemon.currentXp -= xpNeeded;\n pokemon.level += 1;\n }\n\n // Clamp at max level: any overflow XP is discarded\n if (pokemon.level >= MAX_LEVEL) {\n pokemon.currentXp = 0;\n }\n\n if (pokemon.level === previousLevel) {\n return null;\n }\n\n // TODO(phase-2): check evolution triggers and populate pendingEvolution\n return {\n previousLevel,\n newLevel: pokemon.level,\n pendingEvolution: null,\n };\n}\n\n/**\n * Calculate progress percentage toward the next level.\n * @param pokemon - The owned pokemon instance\n * @param pokemonData - The species data for this pokemon\n * @returns Percentage (0-100) of progress to next level\n */\nexport function xpProgressPercent(pokemon: OwnedPokemon, pokemonData: Pokemon): number {\n if (pokemon.level >= MAX_LEVEL) {\n return 100;\n }\n\n const needed = xpToNextLevel(pokemon.level, pokemonData.expGroup);\n if (needed <= 0) {\n return 100;\n }\n\n return Math.min(100, Math.floor((pokemon.currentXp / needed) * 100));\n}\n\n/**\n * Create an XP event descriptor from an event type, using constants.\n * @param type - The XP event type\n * @returns A fully populated XpEvent\n */\nexport function createXpEvent(type: XpEventType): XpEvent {\n const award = XP_AWARDS[type];\n return {\n type,\n xp: award.xp,\n statBoost: award.stat,\n boostAmount: award.boost,\n };\n}\n", "/**\n * Coding stat system for Claudemon.\n * Maps Gen 1 base stats to coding-themed stats with display utilities.\n */\n\nimport type { BaseStats, CodingStats, CodingStat, OwnedPokemon } from \"./types.js\";\nimport { BASE_STAT_TO_CODING } from \"./types.js\";\nimport { TRAINER_TITLES } from \"./constants.js\";\n\n/** Filled portion of stat bar (ASCII-safe for MCP text output) */\nconst BLOCK_FILLED = \"#\";\n\n/** Empty portion of stat bar (ASCII-safe for MCP text output) */\nconst BLOCK_EMPTY = \"-\";\n\n/**\n * Create initial coding stats from a pokemon's base stats.\n * Scaled to ~50% of base value since starters begin at level 5.\n * @param baseStats - The species' base stat block\n * @returns Initial coding stats for a newly caught pokemon\n */\nexport function initCodingStats(baseStats: BaseStats): CodingStats {\n const stats: CodingStats = {\n stamina: 0,\n debugging: 0,\n stability: 0,\n velocity: 0,\n wisdom: 0,\n };\n\n for (const [baseStat, codingStat] of Object.entries(BASE_STAT_TO_CODING) as Array<\n [keyof BaseStats, CodingStat]\n >) {\n stats[codingStat] = Math.floor(baseStats[baseStat] * 0.5);\n }\n\n return stats;\n}\n\n/**\n * Calculate the effective display value of a coding stat.\n * Formula: floor(baseStat * (0.5 + level/200)) + activityBonus\n * @param baseStat - The species' base stat value\n * @param level - The pokemon's current level\n * @param activityBonus - Accumulated bonus from coding activity\n * @returns The effective stat value for display\n */\nexport function calculateDisplayStat(\n baseStat: number,\n level: number,\n activityBonus: number,\n): number {\n return Math.floor(baseStat * (0.5 + level / 200)) + activityBonus;\n}\n\n/**\n * Increment a coding stat's activity bonus on an owned pokemon. Mutates in place.\n * @param pokemon - The owned pokemon instance to boost\n * @param stat - Which coding stat to boost\n * @param amount - How much to add to the stat\n */\nexport function applyStatBoost(pokemon: OwnedPokemon, stat: CodingStat, amount: number): void {\n pokemon.codingStats[stat] += amount;\n}\n\n/**\n * Render an ASCII progress bar for a stat value.\n * Uses '#' and '-' for MCP text output compatibility.\n * @param value - Stat value (0-100 range)\n * @param maxWidth - Character width of the bar (default 10)\n * @returns ASCII bar string like \"######----\"\n */\nexport function renderStatBar(value: number, maxWidth: number = 10): string {\n const clamped = Math.max(0, Math.min(100, value));\n const filled = Math.round((clamped / 100) * maxWidth);\n const empty = maxWidth - filled;\n return BLOCK_FILLED.repeat(filled) + BLOCK_EMPTY.repeat(empty);\n}\n\n/**\n * Get the trainer title based on highest pokemon level.\n * @param highestLevel - The highest level among the trainer's pokemon\n * @returns The trainer's title string\n */\nexport function getTrainerTitle(highestLevel: number): string {\n // Titles are sorted ascending by minLevel; find the last one that qualifies\n let title = \"Bug Catcher\"; // Fallback for level 0\n\n for (const entry of TRAINER_TITLES) {\n if (highestLevel >= entry.minLevel) {\n title = entry.title;\n } else {\n break;\n }\n }\n\n return title;\n}\n", "/**\n * Evolution chains for all 151 Gen 1 Pokemon.\n * Stone evolutions are mapped to badge-based methods.\n * Trade evolutions become collaboration events.\n */\n\nimport type { EvolutionChain } from \"./types.js\";\n\nexport const EVOLUTION_CHAINS: readonly EvolutionChain[] = [\n // \u2500\u2500 Chain 1: Bulbasaur \u2192 Ivysaur \u2192 Venusaur \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 1,\n links: [\n { from: 1, to: 2, method: { type: \"level\", level: 16 } },\n { from: 2, to: 3, method: { type: \"level\", level: 32 } },\n ],\n },\n\n // \u2500\u2500 Chain 2: Charmander \u2192 Charmeleon \u2192 Charizard \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 2,\n links: [\n { from: 4, to: 5, method: { type: \"level\", level: 16 } },\n { from: 5, to: 6, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 3: Squirtle \u2192 Wartortle \u2192 Blastoise \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 3,\n links: [\n { from: 7, to: 8, method: { type: \"level\", level: 16 } },\n { from: 8, to: 9, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 4: Caterpie \u2192 Metapod \u2192 Butterfree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 4,\n links: [\n { from: 10, to: 11, method: { type: \"level\", level: 7 } },\n { from: 11, to: 12, method: { type: \"level\", level: 10 } },\n ],\n },\n\n // \u2500\u2500 Chain 5: Weedle \u2192 Kakuna \u2192 Beedrill \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 5,\n links: [\n { from: 13, to: 14, method: { type: \"level\", level: 7 } },\n { from: 14, to: 15, method: { type: \"level\", level: 10 } },\n ],\n },\n\n // \u2500\u2500 Chain 6: Pidgey \u2192 Pidgeotto \u2192 Pidgeot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 6,\n links: [\n { from: 16, to: 17, method: { type: \"level\", level: 18 } },\n { from: 17, to: 18, method: { type: \"level\", level: 36 } },\n ],\n },\n\n // \u2500\u2500 Chain 7: Rattata \u2192 Raticate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 7,\n links: [{ from: 19, to: 20, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 8: Spearow \u2192 Fearow \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 8,\n links: [{ from: 21, to: 22, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 9: Ekans \u2192 Arbok \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 9,\n links: [{ from: 23, to: 24, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 10: Pikachu \u2192 Raichu (Thunder Stone \u2192 spark) \u2500\u2500\u2500\n {\n id: 10,\n links: [{ from: 25, to: 26, method: { type: \"badge\", badge: \"spark\" } }],\n },\n\n // \u2500\u2500 Chain 11: Sandshrew \u2192 Sandslash \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 11,\n links: [{ from: 27, to: 28, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 12: Nidoran\u2640 \u2192 Nidorina \u2192 Nidoqueen (Moon Stone)\n {\n id: 12,\n links: [\n { from: 29, to: 30, method: { type: \"level\", level: 16 } },\n { from: 30, to: 31, method: { type: \"badge\", badge: \"lunar\" } },\n ],\n },\n\n // \u2500\u2500 Chain 13: Nidoran\u2642 \u2192 Nidorino \u2192 Nidoking (Moon Stone)\n {\n id: 13,\n links: [\n { from: 32, to: 33, method: { type: \"level\", level: 16 } },\n { from: 33, to: 34, method: { type: \"badge\", badge: \"lunar\" } },\n ],\n },\n\n // \u2500\u2500 Chain 14: Clefairy \u2192 Clefable (Moon Stone \u2192 lunar) \u2500\u2500\u2500\n {\n id: 14,\n links: [{ from: 35, to: 36, method: { type: \"badge\", badge: \"lunar\" } }],\n },\n\n // \u2500\u2500 Chain 15: Vulpix \u2192 Ninetales (Fire Stone \u2192 blaze) \u2500\u2500\u2500\u2500\n {\n id: 15,\n links: [{ from: 37, to: 38, method: { type: \"badge\", badge: \"blaze\" } }],\n },\n\n // \u2500\u2500 Chain 16: Jigglypuff \u2192 Wigglytuff (Moon Stone \u2192 lunar)\n {\n id: 16,\n links: [{ from: 39, to: 40, method: { type: \"badge\", badge: \"lunar\" } }],\n },\n\n // \u2500\u2500 Chain 17: Zubat \u2192 Golbat \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 17,\n links: [{ from: 41, to: 42, method: { type: \"level\", level: 22 } }],\n },\n\n // \u2500\u2500 Chain 18: Oddish \u2192 Gloom \u2192 Vileplume (Leaf Stone \u2192 growth)\n {\n id: 18,\n links: [\n { from: 43, to: 44, method: { type: \"level\", level: 21 } },\n { from: 44, to: 45, method: { type: \"badge\", badge: \"growth\" } },\n ],\n },\n\n // \u2500\u2500 Chain 19: Paras \u2192 Parasect \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 19,\n links: [{ from: 46, to: 47, method: { type: \"level\", level: 24 } }],\n },\n\n // \u2500\u2500 Chain 20: Venonat \u2192 Venomoth \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 20,\n links: [{ from: 48, to: 49, method: { type: \"level\", level: 31 } }],\n },\n\n // \u2500\u2500 Chain 21: Diglett \u2192 Dugtrio \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 21,\n links: [{ from: 50, to: 51, method: { type: \"level\", level: 26 } }],\n },\n\n // \u2500\u2500 Chain 22: Meowth \u2192 Persian \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 22,\n links: [{ from: 52, to: 53, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 23: Psyduck \u2192 Golduck \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 23,\n links: [{ from: 54, to: 55, method: { type: \"level\", level: 33 } }],\n },\n\n // \u2500\u2500 Chain 24: Mankey \u2192 Primeape \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 24,\n links: [{ from: 56, to: 57, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 25: Growlithe \u2192 Arcanine (Fire Stone \u2192 blaze) \u2500\u2500\n {\n id: 25,\n links: [{ from: 58, to: 59, method: { type: \"badge\", badge: \"blaze\" } }],\n },\n\n // \u2500\u2500 Chain 26: Poliwag \u2192 Poliwhirl \u2192 Poliwrath (Water Stone \u2192 flow)\n {\n id: 26,\n links: [\n { from: 60, to: 61, method: { type: \"level\", level: 25 } },\n { from: 61, to: 62, method: { type: \"badge\", badge: \"flow\" } },\n ],\n },\n\n // \u2500\u2500 Chain 27: Abra \u2192 Kadabra \u2192 Alakazam (trade \u2192 collaboration)\n {\n id: 27,\n links: [\n { from: 63, to: 64, method: { type: \"level\", level: 16 } },\n { from: 64, to: 65, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 28: Machop \u2192 Machoke \u2192 Machamp (trade \u2192 collaboration)\n {\n id: 28,\n links: [\n { from: 66, to: 67, method: { type: \"level\", level: 28 } },\n { from: 67, to: 68, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 29: Bellsprout \u2192 Weepinbell \u2192 Victreebel (Leaf Stone \u2192 growth)\n {\n id: 29,\n links: [\n { from: 69, to: 70, method: { type: \"level\", level: 21 } },\n { from: 70, to: 71, method: { type: \"badge\", badge: \"growth\" } },\n ],\n },\n\n // \u2500\u2500 Chain 30: Tentacool \u2192 Tentacruel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 30,\n links: [{ from: 72, to: 73, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 31: Geodude \u2192 Graveler \u2192 Golem (trade \u2192 collaboration)\n {\n id: 31,\n links: [\n { from: 74, to: 75, method: { type: \"level\", level: 25 } },\n { from: 75, to: 76, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 32: Ponyta \u2192 Rapidash \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 32,\n links: [{ from: 77, to: 78, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 33: Slowpoke \u2192 Slowbro \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 33,\n links: [{ from: 79, to: 80, method: { type: \"level\", level: 37 } }],\n },\n\n // \u2500\u2500 Chain 34: Magnemite \u2192 Magneton \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 34,\n links: [{ from: 81, to: 82, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 35: Farfetch'd (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 35,\n links: [],\n },\n\n // \u2500\u2500 Chain 36: Doduo \u2192 Dodrio \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 36,\n links: [{ from: 84, to: 85, method: { type: \"level\", level: 31 } }],\n },\n\n // \u2500\u2500 Chain 37: Seel \u2192 Dewgong \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 37,\n links: [{ from: 86, to: 87, method: { type: \"level\", level: 34 } }],\n },\n\n // \u2500\u2500 Chain 38: Grimer \u2192 Muk \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 38,\n links: [{ from: 88, to: 89, method: { type: \"level\", level: 38 } }],\n },\n\n // \u2500\u2500 Chain 39: Shellder \u2192 Cloyster (Water Stone \u2192 flow) \u2500\u2500\u2500\n {\n id: 39,\n links: [{ from: 90, to: 91, method: { type: \"badge\", badge: \"flow\" } }],\n },\n\n // \u2500\u2500 Chain 40: Gastly \u2192 Haunter \u2192 Gengar (trade \u2192 collaboration)\n {\n id: 40,\n links: [\n { from: 92, to: 93, method: { type: \"level\", level: 25 } },\n { from: 93, to: 94, method: { type: \"collaboration\" } },\n ],\n },\n\n // \u2500\u2500 Chain 41: Onix (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 41,\n links: [],\n },\n\n // \u2500\u2500 Chain 42: Drowzee \u2192 Hypno \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 42,\n links: [{ from: 96, to: 97, method: { type: \"level\", level: 26 } }],\n },\n\n // \u2500\u2500 Chain 43: Krabby \u2192 Kingler \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 43,\n links: [{ from: 98, to: 99, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 44: Voltorb \u2192 Electrode \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 44,\n links: [{ from: 100, to: 101, method: { type: \"level\", level: 30 } }],\n },\n\n // \u2500\u2500 Chain 45: Exeggcute \u2192 Exeggutor (Leaf Stone \u2192 growth)\n {\n id: 45,\n links: [{ from: 102, to: 103, method: { type: \"badge\", badge: \"growth\" } }],\n },\n\n // \u2500\u2500 Chain 46: Cubone \u2192 Marowak \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 46,\n links: [{ from: 104, to: 105, method: { type: \"level\", level: 28 } }],\n },\n\n // \u2500\u2500 Chain 47: Hitmonlee (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 47,\n links: [],\n },\n\n // \u2500\u2500 Chain 48: Hitmonchan (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 48,\n links: [],\n },\n\n // \u2500\u2500 Chain 49: Lickitung (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 49,\n links: [],\n },\n\n // \u2500\u2500 Chain 50: Koffing \u2192 Weezing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 50,\n links: [{ from: 109, to: 110, method: { type: \"level\", level: 35 } }],\n },\n\n // \u2500\u2500 Chain 51: Rhyhorn \u2192 Rhydon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 51,\n links: [{ from: 111, to: 112, method: { type: \"level\", level: 42 } }],\n },\n\n // \u2500\u2500 Chain 52: Chansey (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 52,\n links: [],\n },\n\n // \u2500\u2500 Chain 53: Tangela (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 53,\n links: [],\n },\n\n // \u2500\u2500 Chain 54: Kangaskhan (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 54,\n links: [],\n },\n\n // \u2500\u2500 Chain 55: Horsea \u2192 Seadra \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 55,\n links: [{ from: 116, to: 117, method: { type: \"level\", level: 32 } }],\n },\n\n // \u2500\u2500 Chain 56: Goldeen \u2192 Seaking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 56,\n links: [{ from: 118, to: 119, method: { type: \"level\", level: 33 } }],\n },\n\n // \u2500\u2500 Chain 57: Staryu \u2192 Starmie (Water Stone \u2192 flow) \u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 57,\n links: [{ from: 120, to: 121, method: { type: \"badge\", badge: \"flow\" } }],\n },\n\n // \u2500\u2500 Chain 58: Mr. Mime (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 58,\n links: [],\n },\n\n // \u2500\u2500 Chain 59: Scyther (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 59,\n links: [],\n },\n\n // \u2500\u2500 Chain 60: Jynx (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 60,\n links: [],\n },\n\n // \u2500\u2500 Chain 61: Electabuzz (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 61,\n links: [],\n },\n\n // \u2500\u2500 Chain 62: Magmar (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 62,\n links: [],\n },\n\n // \u2500\u2500 Chain 63: Pinsir (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 63,\n links: [],\n },\n\n // \u2500\u2500 Chain 64: Tauros (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 64,\n links: [],\n },\n\n // \u2500\u2500 Chain 65: Magikarp \u2192 Gyarados \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 65,\n links: [{ from: 129, to: 130, method: { type: \"level\", level: 20 } }],\n },\n\n // \u2500\u2500 Chain 66: Lapras (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 66,\n links: [],\n },\n\n // \u2500\u2500 Chain 67: Ditto (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 67,\n links: [],\n },\n\n // \u2500\u2500 Chain 68: Eevee \u2192 Vaporeon / Jolteon / Flareon (stat-based)\n {\n id: 68,\n links: [\n { from: 133, to: 134, method: { type: \"stat\", stat: \"stability\", minValue: 50 } },\n { from: 133, to: 135, method: { type: \"stat\", stat: \"velocity\", minValue: 50 } },\n { from: 133, to: 136, method: { type: \"stat\", stat: \"debugging\", minValue: 50 } },\n ],\n },\n\n // \u2500\u2500 Chain 69: Porygon (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 69,\n links: [],\n },\n\n // \u2500\u2500 Chain 70: Omanyte \u2192 Omastar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 70,\n links: [{ from: 138, to: 139, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 71: Kabuto \u2192 Kabutops \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 71,\n links: [{ from: 140, to: 141, method: { type: \"level\", level: 40 } }],\n },\n\n // \u2500\u2500 Chain 72: Aerodactyl (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 72,\n links: [],\n },\n\n // \u2500\u2500 Chain 73: Snorlax (no evolution in Gen 1) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 73,\n links: [],\n },\n\n // \u2500\u2500 Chain 74: Articuno (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 74,\n links: [],\n },\n\n // \u2500\u2500 Chain 75: Zapdos (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 75,\n links: [],\n },\n\n // \u2500\u2500 Chain 76: Moltres (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 76,\n links: [],\n },\n\n // \u2500\u2500 Chain 77: Dratini \u2192 Dragonair \u2192 Dragonite \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 77,\n links: [\n { from: 147, to: 148, method: { type: \"level\", level: 30 } },\n { from: 148, to: 149, method: { type: \"level\", level: 55 } },\n ],\n },\n\n // \u2500\u2500 Chain 78: Mewtwo (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 78,\n links: [],\n },\n\n // \u2500\u2500 Chain 79: Mew (no evolution) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n {\n id: 79,\n links: [],\n },\n // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n // Gen 2-8 Evolution Chains (auto-generated from PokeAPI)\n // \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n {\n id: 80,\n links: [\n { from: 155, to: 156, method: { type: \"level\", level: 14 } },\n { from: 156, to: 157, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 81,\n links: [\n { from: 158, to: 159, method: { type: \"level\", level: 18 } },\n { from: 159, to: 160, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 82,\n links: [{ from: 161, to: 162, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 83,\n links: [{ from: 163, to: 164, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 84,\n links: [{ from: 165, to: 166, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 85,\n links: [{ from: 167, to: 168, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 86,\n links: [{ from: 170, to: 171, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 87,\n links: [\n { from: 175, to: 176, method: { type: \"level\", level: 30 } },\n { from: 176, to: 468, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 88,\n links: [{ from: 177, to: 178, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 89,\n links: [\n { from: 179, to: 180, method: { type: \"level\", level: 15 } },\n { from: 180, to: 181, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 90,\n links: [\n { from: 298, to: 183, method: { type: \"level\", level: 30 } },\n { from: 183, to: 184, method: { type: \"level\", level: 18 } },\n ],\n },\n {\n id: 91,\n links: [{ from: 438, to: 185, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 92,\n links: [\n { from: 187, to: 188, method: { type: \"level\", level: 18 } },\n { from: 188, to: 189, method: { type: \"level\", level: 27 } },\n ],\n },\n {\n id: 93,\n links: [{ from: 190, to: 424, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 94,\n links: [{ from: 191, to: 192, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 95,\n links: [{ from: 193, to: 469, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 97,\n links: [{ from: 198, to: 430, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 98,\n links: [{ from: 200, to: 429, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 100,\n links: [{ from: 360, to: 202, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 102,\n links: [{ from: 204, to: 205, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 104,\n links: [{ from: 207, to: 472, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 105,\n links: [{ from: 209, to: 210, method: { type: \"level\", level: 23 } }],\n },\n {\n id: 106,\n links: [{ from: 211, to: 904, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 109,\n links: [\n { from: 215, to: 461, method: { type: \"level\", level: 30 } },\n { from: 215, to: 903, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 110,\n links: [\n { from: 216, to: 217, method: { type: \"level\", level: 30 } },\n { from: 217, to: 901, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 111,\n links: [{ from: 218, to: 219, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 112,\n links: [\n { from: 220, to: 221, method: { type: \"level\", level: 33 } },\n { from: 221, to: 473, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 113,\n links: [{ from: 222, to: 864, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 114,\n links: [{ from: 223, to: 224, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 116,\n links: [{ from: 458, to: 226, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 118,\n links: [{ from: 228, to: 229, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 119,\n links: [{ from: 231, to: 232, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 120,\n links: [{ from: 234, to: 899, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 126,\n links: [\n { from: 246, to: 247, method: { type: \"level\", level: 30 } },\n { from: 247, to: 248, method: { type: \"level\", level: 55 } },\n ],\n },\n {\n id: 130,\n links: [\n { from: 252, to: 253, method: { type: \"level\", level: 16 } },\n { from: 253, to: 254, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 131,\n links: [\n { from: 255, to: 256, method: { type: \"level\", level: 16 } },\n { from: 256, to: 257, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 132,\n links: [\n { from: 258, to: 259, method: { type: \"level\", level: 16 } },\n { from: 259, to: 260, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 133,\n links: [{ from: 261, to: 262, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 134,\n links: [\n { from: 263, to: 264, method: { type: \"level\", level: 20 } },\n { from: 264, to: 862, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 135,\n links: [\n { from: 265, to: 266, method: { type: \"level\", level: 7 } },\n { from: 266, to: 267, method: { type: \"level\", level: 10 } },\n { from: 265, to: 268, method: { type: \"level\", level: 7 } },\n { from: 268, to: 269, method: { type: \"level\", level: 10 } },\n ],\n },\n {\n id: 136,\n links: [\n { from: 270, to: 271, method: { type: \"level\", level: 14 } },\n { from: 271, to: 272, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 137,\n links: [\n { from: 273, to: 274, method: { type: \"level\", level: 14 } },\n { from: 274, to: 275, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 138,\n links: [{ from: 276, to: 277, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 139,\n links: [{ from: 278, to: 279, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 140,\n links: [\n { from: 280, to: 281, method: { type: \"level\", level: 20 } },\n { from: 281, to: 282, method: { type: \"level\", level: 30 } },\n { from: 281, to: 475, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 141,\n links: [{ from: 283, to: 284, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 142,\n links: [{ from: 285, to: 286, method: { type: \"level\", level: 23 } }],\n },\n {\n id: 143,\n links: [\n { from: 287, to: 288, method: { type: \"level\", level: 18 } },\n { from: 288, to: 289, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 144,\n links: [\n { from: 290, to: 291, method: { type: \"level\", level: 20 } },\n { from: 290, to: 292, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 145,\n links: [\n { from: 293, to: 294, method: { type: \"level\", level: 20 } },\n { from: 294, to: 295, method: { type: \"level\", level: 40 } },\n ],\n },\n {\n id: 146,\n links: [{ from: 296, to: 297, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 147,\n links: [{ from: 299, to: 476, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 148,\n links: [{ from: 300, to: 301, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 151,\n links: [\n { from: 304, to: 305, method: { type: \"level\", level: 32 } },\n { from: 305, to: 306, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 152,\n links: [{ from: 307, to: 308, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 153,\n links: [{ from: 309, to: 310, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 158,\n links: [\n { from: 406, to: 315, method: { type: \"level\", level: 30 } },\n { from: 315, to: 407, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 159,\n links: [{ from: 316, to: 317, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 160,\n links: [{ from: 318, to: 319, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 161,\n links: [{ from: 320, to: 321, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 162,\n links: [{ from: 322, to: 323, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 164,\n links: [{ from: 325, to: 326, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 166,\n links: [\n { from: 328, to: 329, method: { type: \"level\", level: 35 } },\n { from: 329, to: 330, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 167,\n links: [{ from: 331, to: 332, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 168,\n links: [{ from: 333, to: 334, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 173,\n links: [{ from: 339, to: 340, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 174,\n links: [{ from: 341, to: 342, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 175,\n links: [{ from: 343, to: 344, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 176,\n links: [{ from: 345, to: 346, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 177,\n links: [{ from: 347, to: 348, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 178,\n links: [{ from: 349, to: 350, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 181,\n links: [{ from: 353, to: 354, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 182,\n links: [\n { from: 355, to: 356, method: { type: \"level\", level: 37 } },\n { from: 356, to: 477, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 184,\n links: [{ from: 433, to: 358, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 186,\n links: [\n { from: 361, to: 362, method: { type: \"level\", level: 42 } },\n { from: 361, to: 478, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 187,\n links: [\n { from: 363, to: 364, method: { type: \"level\", level: 32 } },\n { from: 364, to: 365, method: { type: \"level\", level: 44 } },\n ],\n },\n {\n id: 188,\n links: [\n { from: 366, to: 367, method: { type: \"level\", level: 30 } },\n { from: 366, to: 368, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 191,\n links: [\n { from: 371, to: 372, method: { type: \"level\", level: 30 } },\n { from: 372, to: 373, method: { type: \"level\", level: 50 } },\n ],\n },\n {\n id: 192,\n links: [\n { from: 374, to: 375, method: { type: \"level\", level: 20 } },\n { from: 375, to: 376, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 203,\n links: [\n { from: 387, to: 388, method: { type: \"level\", level: 18 } },\n { from: 388, to: 389, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 204,\n links: [\n { from: 390, to: 391, method: { type: \"level\", level: 14 } },\n { from: 391, to: 392, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 205,\n links: [\n { from: 393, to: 394, method: { type: \"level\", level: 16 } },\n { from: 394, to: 395, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 206,\n links: [\n { from: 396, to: 397, method: { type: \"level\", level: 14 } },\n { from: 397, to: 398, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 207,\n links: [{ from: 399, to: 400, method: { type: \"level\", level: 15 } }],\n },\n {\n id: 208,\n links: [{ from: 401, to: 402, method: { type: \"level\", level: 10 } }],\n },\n {\n id: 209,\n links: [\n { from: 403, to: 404, method: { type: \"level\", level: 15 } },\n { from: 404, to: 405, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 211,\n links: [{ from: 408, to: 409, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 212,\n links: [{ from: 410, to: 411, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 213,\n links: [\n { from: 412, to: 413, method: { type: \"level\", level: 20 } },\n { from: 412, to: 414, method: { type: \"level\", level: 20 } },\n ],\n },\n {\n id: 214,\n links: [{ from: 415, to: 416, method: { type: \"level\", level: 21 } }],\n },\n {\n id: 216,\n links: [{ from: 418, to: 419, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 217,\n links: [{ from: 420, to: 421, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 218,\n links: [{ from: 422, to: 423, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 219,\n links: [{ from: 425, to: 426, method: { type: \"level\", level: 28 } }],\n },\n {\n id: 220,\n links: [{ from: 427, to: 428, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 221,\n links: [{ from: 431, to: 432, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 223,\n links: [{ from: 434, to: 435, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 224,\n links: [{ from: 436, to: 437, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 230,\n links: [\n { from: 443, to: 444, method: { type: \"level\", level: 24 } },\n { from: 444, to: 445, method: { type: \"level\", level: 48 } },\n ],\n },\n {\n id: 232,\n links: [{ from: 447, to: 448, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 233,\n links: [{ from: 449, to: 450, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 234,\n links: [{ from: 451, to: 452, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 235,\n links: [{ from: 453, to: 454, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 237,\n links: [{ from: 456, to: 457, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 239,\n links: [{ from: 459, to: 460, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 250,\n links: [{ from: 489, to: 490, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 256,\n links: [\n { from: 495, to: 496, method: { type: \"level\", level: 17 } },\n { from: 496, to: 497, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 257,\n links: [\n { from: 498, to: 499, method: { type: \"level\", level: 17 } },\n { from: 499, to: 500, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 258,\n links: [\n { from: 501, to: 502, method: { type: \"level\", level: 17 } },\n { from: 502, to: 503, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 259,\n links: [{ from: 504, to: 505, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 260,\n links: [\n { from: 506, to: 507, method: { type: \"level\", level: 16 } },\n { from: 507, to: 508, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 261,\n links: [{ from: 509, to: 510, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 262,\n links: [{ from: 511, to: 512, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 263,\n links: [{ from: 513, to: 514, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 264,\n links: [{ from: 515, to: 516, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 265,\n links: [{ from: 517, to: 518, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 266,\n links: [\n { from: 519, to: 520, method: { type: \"level\", level: 21 } },\n { from: 520, to: 521, method: { type: \"level\", level: 32 } },\n ],\n },\n {\n id: 267,\n links: [{ from: 522, to: 523, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 268,\n links: [\n { from: 524, to: 525, method: { type: \"level\", level: 25 } },\n { from: 525, to: 526, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 269,\n links: [{ from: 527, to: 528, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 270,\n links: [{ from: 529, to: 530, method: { type: \"level\", level: 31 } }],\n },\n {\n id: 272,\n links: [\n { from: 532, to: 533, method: { type: \"level\", level: 25 } },\n { from: 533, to: 534, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 273,\n links: [\n { from: 535, to: 536, method: { type: \"level\", level: 25 } },\n { from: 536, to: 537, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 276,\n links: [\n { from: 540, to: 541, method: { type: \"level\", level: 20 } },\n { from: 541, to: 542, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 277,\n links: [\n { from: 543, to: 544, method: { type: \"level\", level: 22 } },\n { from: 544, to: 545, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 278,\n links: [{ from: 546, to: 547, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 279,\n links: [{ from: 548, to: 549, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 280,\n links: [{ from: 550, to: 902, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 281,\n links: [\n { from: 551, to: 552, method: { type: \"level\", level: 29 } },\n { from: 552, to: 553, method: { type: \"level\", level: 40 } },\n ],\n },\n {\n id: 282,\n links: [{ from: 554, to: 555, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 284,\n links: [{ from: 557, to: 558, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 285,\n links: [{ from: 559, to: 560, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 287,\n links: [\n { from: 562, to: 563, method: { type: \"level\", level: 34 } },\n { from: 562, to: 867, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 288,\n links: [{ from: 564, to: 565, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 289,\n links: [{ from: 566, to: 567, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 290,\n links: [{ from: 568, to: 569, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 291,\n links: [{ from: 570, to: 571, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 292,\n links: [{ from: 572, to: 573, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 293,\n links: [\n { from: 574, to: 575, method: { type: \"level\", level: 32 } },\n { from: 575, to: 576, method: { type: \"level\", level: 41 } },\n ],\n },\n {\n id: 294,\n links: [\n { from: 577, to: 578, method: { type: \"level\", level: 32 } },\n { from: 578, to: 579, method: { type: \"level\", level: 41 } },\n ],\n },\n {\n id: 295,\n links: [{ from: 580, to: 581, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 296,\n links: [\n { from: 582, to: 583, method: { type: \"level\", level: 35 } },\n { from: 583, to: 584, method: { type: \"level\", level: 47 } },\n ],\n },\n {\n id: 297,\n links: [{ from: 585, to: 586, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 299,\n links: [{ from: 588, to: 589, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 300,\n links: [{ from: 590, to: 591, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 301,\n links: [{ from: 592, to: 593, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 303,\n links: [{ from: 595, to: 596, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 304,\n links: [{ from: 597, to: 598, method: { type: \"level\", level: 40 } }],\n },\n {\n id: 305,\n links: [\n { from: 599, to: 600, method: { type: \"level\", level: 38 } },\n { from: 600, to: 601, method: { type: \"level\", level: 49 } },\n ],\n },\n {\n id: 306,\n links: [\n { from: 602, to: 603, method: { type: \"level\", level: 39 } },\n { from: 603, to: 604, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 307,\n links: [{ from: 605, to: 606, method: { type: \"level\", level: 42 } }],\n },\n {\n id: 308,\n links: [\n { from: 607, to: 608, method: { type: \"level\", level: 41 } },\n { from: 608, to: 609, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 309,\n links: [\n { from: 610, to: 611, method: { type: \"level\", level: 38 } },\n { from: 611, to: 612, method: { type: \"level\", level: 48 } },\n ],\n },\n {\n id: 310,\n links: [{ from: 613, to: 614, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 312,\n links: [{ from: 616, to: 617, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 314,\n links: [{ from: 619, to: 620, method: { type: \"level\", level: 50 } }],\n },\n {\n id: 316,\n links: [{ from: 622, to: 623, method: { type: \"level\", level: 43 } }],\n },\n {\n id: 319,\n links: [{ from: 627, to: 628, method: { type: \"level\", level: 54 } }],\n },\n {\n id: 320,\n links: [{ from: 629, to: 630, method: { type: \"level\", level: 54 } }],\n },\n {\n id: 323,\n links: [\n { from: 633, to: 634, method: { type: \"level\", level: 50 } },\n { from: 634, to: 635, method: { type: \"level\", level: 64 } },\n ],\n },\n {\n id: 324,\n links: [{ from: 636, to: 637, method: { type: \"level\", level: 59 } }],\n },\n {\n id: 337,\n links: [\n { from: 650, to: 651, method: { type: \"level\", level: 16 } },\n { from: 651, to: 652, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 338,\n links: [\n { from: 653, to: 654, method: { type: \"level\", level: 16 } },\n { from: 654, to: 655, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 339,\n links: [\n { from: 656, to: 657, method: { type: \"level\", level: 16 } },\n { from: 657, to: 658, method: { type: \"level\", level: 36 } },\n ],\n },\n {\n id: 340,\n links: [{ from: 659, to: 660, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 341,\n links: [\n { from: 661, to: 662, method: { type: \"level\", level: 17 } },\n { from: 662, to: 663, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 342,\n links: [\n { from: 664, to: 665, method: { type: \"level\", level: 9 } },\n { from: 665, to: 666, method: { type: \"level\", level: 12 } },\n ],\n },\n {\n id: 343,\n links: [{ from: 667, to: 668, method: { type: \"level\", level: 35 } }],\n },\n {\n id: 344,\n links: [\n { from: 669, to: 670, method: { type: \"level\", level: 19 } },\n { from: 670, to: 671, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 345,\n links: [{ from: 672, to: 673, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 346,\n links: [{ from: 674, to: 675, method: { type: \"level\", level: 32 } }],\n },\n {\n id: 348,\n links: [{ from: 677, to: 678, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 349,\n links: [\n { from: 679, to: 680, method: { type: \"level\", level: 35 } },\n { from: 680, to: 681, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 350,\n links: [{ from: 682, to: 683, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 351,\n links: [{ from: 684, to: 685, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 352,\n links: [{ from: 686, to: 687, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 353,\n links: [{ from: 688, to: 689, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 354,\n links: [{ from: 690, to: 691, method: { type: \"level\", level: 48 } }],\n },\n {\n id: 355,\n links: [{ from: 692, to: 693, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 356,\n links: [{ from: 694, to: 695, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 357,\n links: [{ from: 696, to: 697, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 358,\n links: [{ from: 698, to: 699, method: { type: \"level\", level: 39 } }],\n },\n {\n id: 362,\n links: [\n { from: 704, to: 705, method: { type: \"level\", level: 40 } },\n { from: 705, to: 706, method: { type: \"level\", level: 50 } },\n ],\n },\n {\n id: 364,\n links: [{ from: 708, to: 709, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 365,\n links: [{ from: 710, to: 711, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 366,\n links: [{ from: 712, to: 713, method: { type: \"level\", level: 37 } }],\n },\n {\n id: 367,\n links: [{ from: 714, to: 715, method: { type: \"level\", level: 48 } }],\n },\n {\n id: 374,\n links: [\n { from: 722, to: 723, method: { type: \"level\", level: 17 } },\n { from: 723, to: 724, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 375,\n links: [\n { from: 725, to: 726, method: { type: \"level\", level: 17 } },\n { from: 726, to: 727, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 376,\n links: [\n { from: 728, to: 729, method: { type: \"level\", level: 17 } },\n { from: 729, to: 730, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 377,\n links: [\n { from: 731, to: 732, method: { type: \"level\", level: 14 } },\n { from: 732, to: 733, method: { type: \"level\", level: 28 } },\n ],\n },\n {\n id: 378,\n links: [{ from: 734, to: 735, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 379,\n links: [\n { from: 736, to: 737, method: { type: \"level\", level: 20 } },\n { from: 737, to: 738, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 380,\n links: [{ from: 739, to: 740, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 382,\n links: [{ from: 742, to: 743, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 383,\n links: [{ from: 744, to: 745, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 385,\n links: [{ from: 747, to: 748, method: { type: \"level\", level: 38 } }],\n },\n {\n id: 386,\n links: [{ from: 749, to: 750, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 387,\n links: [{ from: 751, to: 752, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 388,\n links: [{ from: 753, to: 754, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 389,\n links: [{ from: 755, to: 756, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 390,\n links: [{ from: 757, to: 758, method: { type: \"level\", level: 33 } }],\n },\n {\n id: 391,\n links: [{ from: 759, to: 760, method: { type: \"level\", level: 27 } }],\n },\n {\n id: 392,\n links: [\n { from: 761, to: 762, method: { type: \"level\", level: 18 } },\n { from: 762, to: 763, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 396,\n links: [{ from: 767, to: 768, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 397,\n links: [{ from: 769, to: 770, method: { type: \"level\", level: 42 } }],\n },\n {\n id: 399,\n links: [{ from: 772, to: 773, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 408,\n links: [\n { from: 782, to: 783, method: { type: \"level\", level: 35 } },\n { from: 783, to: 784, method: { type: \"level\", level: 45 } },\n ],\n },\n {\n id: 413,\n links: [\n { from: 789, to: 790, method: { type: \"level\", level: 43 } },\n { from: 790, to: 791, method: { type: \"level\", level: 53 } },\n { from: 790, to: 792, method: { type: \"level\", level: 53 } },\n ],\n },\n {\n id: 424,\n links: [{ from: 803, to: 804, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 430,\n links: [\n { from: 810, to: 811, method: { type: \"level\", level: 16 } },\n { from: 811, to: 812, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 431,\n links: [\n { from: 813, to: 814, method: { type: \"level\", level: 16 } },\n { from: 814, to: 815, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 432,\n links: [\n { from: 816, to: 817, method: { type: \"level\", level: 16 } },\n { from: 817, to: 818, method: { type: \"level\", level: 35 } },\n ],\n },\n {\n id: 433,\n links: [{ from: 819, to: 820, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 434,\n links: [\n { from: 821, to: 822, method: { type: \"level\", level: 18 } },\n { from: 822, to: 823, method: { type: \"level\", level: 38 } },\n ],\n },\n {\n id: 435,\n links: [\n { from: 824, to: 825, method: { type: \"level\", level: 10 } },\n { from: 825, to: 826, method: { type: \"level\", level: 30 } },\n ],\n },\n {\n id: 436,\n links: [{ from: 827, to: 828, method: { type: \"level\", level: 18 } }],\n },\n {\n id: 437,\n links: [{ from: 829, to: 830, method: { type: \"level\", level: 20 } }],\n },\n {\n id: 438,\n links: [{ from: 831, to: 832, method: { type: \"level\", level: 24 } }],\n },\n {\n id: 439,\n links: [{ from: 833, to: 834, method: { type: \"level\", level: 22 } }],\n },\n {\n id: 440,\n links: [{ from: 835, to: 836, method: { type: \"level\", level: 25 } }],\n },\n {\n id: 441,\n links: [\n { from: 837, to: 838, method: { type: \"level\", level: 18 } },\n { from: 838, to: 839, method: { type: \"level\", level: 34 } },\n ],\n },\n {\n id: 443,\n links: [{ from: 843, to: 844, method: { type: \"level\", level: 36 } }],\n },\n {\n id: 445,\n links: [{ from: 846, to: 847, method: { type: \"level\", level: 26 } }],\n },\n {\n id: 446,\n links: [{ from: 848, to: 849, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 447,\n links: [{ from: 850, to: 851, method: { type: \"level\", level: 28 } }],\n },\n {\n id: 448,\n links: [{ from: 852, to: 853, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 449,\n links: [{ from: 854, to: 855, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 450,\n links: [\n { from: 856, to: 857, method: { type: \"level\", level: 32 } },\n { from: 857, to: 858, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 451,\n links: [\n { from: 859, to: 860, method: { type: \"level\", level: 32 } },\n { from: 860, to: 861, method: { type: \"level\", level: 42 } },\n ],\n },\n {\n id: 452,\n links: [{ from: 868, to: 869, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 455,\n links: [{ from: 872, to: 873, method: { type: \"level\", level: 30 } }],\n },\n {\n id: 460,\n links: [{ from: 878, to: 879, method: { type: \"level\", level: 34 } }],\n },\n {\n id: 466,\n links: [\n { from: 885, to: 886, method: { type: \"level\", level: 50 } },\n { from: 886, to: 887, method: { type: \"level\", level: 60 } },\n ],\n },\n {\n id: 470,\n links: [{ from: 891, to: 892, method: { type: \"level\", level: 30 } }],\n },\n] as const satisfies readonly EvolutionChain[];\n", "/**\n * Evolution engine for Claudemon.\n * Handles evolution eligibility checks, stat-based branching (Eevee),\n * badge earning, and the transformation of owned Pokemon.\n */\n\nimport type {\n EvolutionChain,\n EvolutionLink,\n EvolutionMethod,\n OwnedPokemon,\n PlayerState,\n BadgeType,\n BadgeCondition,\n CodingStat,\n CodingStats,\n BaseStats,\n} from \"./types.js\";\nimport { BASE_STAT_TO_CODING } from \"./types.js\";\nimport { EVOLUTION_CHAINS } from \"./evolution-data.js\";\nimport { POKEMON_BY_ID } from \"./pokemon-data.js\";\nimport { BADGES } from \"./constants.js\";\n\n// \u2500\u2500 Eevee Branching Constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Minimum level required for Eevee stat-based evolution. */\nconst EEVEE_MIN_LEVEL = 25;\n\n/** Pokemon ID for Eevee. */\nconst EEVEE_ID = 133;\n\n/** Maps a dominant coding stat to the corresponding Eeveelution ID. */\nconst EEVEE_STAT_MAP: Readonly<Record<string, number>> = {\n debugging: 136, // Flareon\n stability: 134, // Vaporeon\n velocity: 135, // Jolteon\n} as const;\n\n/** The three stats used for Eevee branching. */\nconst EEVEE_BRANCH_STATS: readonly CodingStat[] = [\"debugging\", \"stability\", \"velocity\"];\n\n// \u2500\u2500 Precomputed Lookup Index \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Maps every Pokemon ID that appears in an evolution chain\n * to the chain that contains it. Built once at module load.\n */\nconst chainByPokemonId: ReadonlyMap<number, EvolutionChain> = buildChainIndex();\n\nfunction buildChainIndex(): Map<number, EvolutionChain> {\n const index = new Map<number, EvolutionChain>();\n for (const chain of EVOLUTION_CHAINS) {\n for (const link of chain.links) {\n index.set(link.from, chain);\n index.set(link.to, chain);\n }\n }\n return index;\n}\n\n// \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Find the evolution chain that contains a given Pokemon.\n * Returns null if the Pokemon has no evolution chain or the chain has no links.\n */\nexport function findEvolutionChain(pokemonId: number): EvolutionChain | null {\n return chainByPokemonId.get(pokemonId) ?? null;\n}\n\n/**\n * Get all possible evolution links FROM a given Pokemon.\n * A Pokemon might have multiple paths (e.g., Eevee has 3).\n * Returns an empty array if there are no outgoing links.\n */\nexport function getEvolutionLinks(pokemonId: number): readonly EvolutionLink[] {\n const chain = findEvolutionChain(pokemonId);\n if (!chain) {\n return [];\n }\n return chain.links.filter((link) => link.from === pokemonId);\n}\n\n/**\n * Check if a Pokemon is eligible to evolve right now.\n * Evaluates the evolution method against current state.\n * Returns the first eligible EvolutionLink, or null.\n *\n * For Eevee (stat-based): returns the link matching the dominant stat.\n * If stats are tied, returns null (user must boost one stat to break the tie).\n */\nexport function checkEvolution(pokemon: OwnedPokemon, state: PlayerState): EvolutionLink | null {\n const links = getEvolutionLinks(pokemon.pokemonId);\n if (links.length === 0) {\n return null;\n }\n\n // Special handling for Eevee: stat-based branching with tie-breaking\n if (pokemon.pokemonId === EEVEE_ID) {\n return checkEeveeEvolution(pokemon, state);\n }\n\n // Standard path: return the first satisfied link\n for (const link of links) {\n if (isMethodSatisfied(link.method, pokemon, state)) {\n return link;\n }\n }\n\n return null;\n}\n\n/**\n * Check a specific evolution method against current state.\n */\nfunction isMethodSatisfied(\n method: EvolutionMethod,\n pokemon: OwnedPokemon,\n state: PlayerState,\n): boolean {\n switch (method.type) {\n case \"level\":\n return pokemon.level >= method.level;\n\n case \"badge\":\n return state.badges.includes(method.badge);\n\n case \"collaboration\":\n return state.counters.prs_merged >= 10;\n\n case \"stat\":\n return (\n pokemon.level >= EEVEE_MIN_LEVEL && pokemon.codingStats[method.stat] >= method.minValue\n );\n }\n}\n\n/**\n * Apply an evolution: transform the Pokemon to its new species.\n * - Updates pokemonId to the target species\n * - Recalculates coding stats with new base stats (preserves activity bonuses)\n * - Sets evolvedAt timestamp\n * - Returns the new species name and types for display\n *\n * Does not change: nickname, happiness, totalXp, currentXp, level, shiny, isStarter, id.\n */\nexport function applyEvolution(\n pokemon: OwnedPokemon,\n targetId: number,\n): { newName: string; newTypes: readonly [string, string?] } {\n const oldSpecies = POKEMON_BY_ID.get(pokemon.pokemonId);\n const newSpecies = POKEMON_BY_ID.get(targetId);\n\n if (!oldSpecies) {\n throw new Error(`Unknown source Pokemon ID: ${pokemon.pokemonId}`);\n }\n if (!newSpecies) {\n throw new Error(`Unknown target Pokemon ID: ${targetId}`);\n }\n\n // Preserve activity bonuses: subtract old base contribution, add new base contribution\n const updatedStats = recalculateStats(\n pokemon.codingStats,\n oldSpecies.baseStats,\n newSpecies.baseStats,\n );\n\n pokemon.pokemonId = targetId;\n pokemon.codingStats = updatedStats;\n pokemon.evolvedAt = new Date().toISOString();\n\n return {\n newName: newSpecies.name,\n newTypes: newSpecies.types,\n };\n}\n\n/**\n * Get the dominant coding stat for Eevee branching.\n * Only considers debugging, stability, and velocity.\n * Returns null if there is a tie between the top stats.\n */\nexport function getDominantStat(stats: CodingStats): CodingStat | null {\n let maxValue = -Infinity;\n let dominant: CodingStat | null = null;\n let tied = false;\n\n for (const stat of EEVEE_BRANCH_STATS) {\n const value = stats[stat];\n if (value > maxValue) {\n maxValue = value;\n dominant = stat;\n tied = false;\n } else if (value === maxValue) {\n tied = true;\n }\n }\n\n return tied ? null : dominant;\n}\n\n/** Check if a specific badge has been earned based on player state. */\nexport function isBadgeEarned(badge: BadgeType, state: PlayerState): boolean {\n const badgeDef = BADGES.find((b) => b.type === badge);\n if (!badgeDef) return false;\n return isBadgeConditionMet(badgeDef.condition, state);\n}\n\n/**\n * Get all badges the player has earned but not yet collected.\n * Compares earned conditions against state.badges array.\n */\nexport function getNewlyEarnedBadges(state: PlayerState): BadgeType[] {\n const newBadges: BadgeType[] = [];\n\n for (const badgeDef of BADGES) {\n // Skip badges the player already has\n if (state.badges.includes(badgeDef.type)) {\n continue;\n }\n if (isBadgeConditionMet(badgeDef.condition, state)) {\n newBadges.push(badgeDef.type);\n }\n }\n\n return newBadges;\n}\n\n// \u2500\u2500 Internal Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Eevee-specific evolution check.\n * Requires level >= 25 and a clear dominant stat (no ties).\n */\nfunction checkEeveeEvolution(pokemon: OwnedPokemon, state: PlayerState): EvolutionLink | null {\n if (pokemon.level < EEVEE_MIN_LEVEL) {\n return null;\n }\n\n const dominant = getDominantStat(pokemon.codingStats);\n if (dominant === null) {\n return null;\n }\n\n const targetId = EEVEE_STAT_MAP[dominant];\n if (targetId === undefined) {\n return null;\n }\n\n // Find the matching link and verify the stat threshold is met\n const links = getEvolutionLinks(pokemon.pokemonId);\n const matchingLink = links.find((link) => link.to === targetId);\n if (!matchingLink) {\n return null;\n }\n\n if (isMethodSatisfied(matchingLink.method, pokemon, state)) {\n return matchingLink;\n }\n\n return null;\n}\n\n/**\n * Evaluate a badge condition against player state.\n */\nfunction isBadgeConditionMet(condition: BadgeCondition, state: PlayerState): boolean {\n switch (condition.type) {\n case \"counter\":\n return state.counters[condition.counter] >= condition.threshold;\n case \"streak\":\n return state.streak.currentStreak >= condition.minDays;\n }\n}\n\n/**\n * Recalculate coding stats when evolving to a new species.\n * Extracts activity bonuses from current stats by removing the old base\n * contribution, then applies the new base contribution.\n *\n * Formula per stat:\n * activityBonus = currentStat - floor(oldBaseStat * 0.5)\n * newStat = floor(newBaseStat * 0.5) + activityBonus\n *\n * Activity bonuses are floored at 0 to prevent negative values.\n */\nfunction recalculateStats(\n currentStats: CodingStats,\n oldBase: BaseStats,\n newBase: BaseStats,\n): CodingStats {\n const result: CodingStats = {\n stamina: 0,\n debugging: 0,\n stability: 0,\n velocity: 0,\n wisdom: 0,\n };\n\n for (const [baseStat, codingStat] of Object.entries(BASE_STAT_TO_CODING) as Array<\n [keyof BaseStats, CodingStat]\n >) {\n const oldBaseContribution = Math.floor(oldBase[baseStat] * 0.5);\n const activityBonus = Math.max(0, currentStats[codingStat] - oldBaseContribution);\n const newBaseContribution = Math.floor(newBase[baseStat] * 0.5);\n result[codingStat] = newBaseContribution + activityBonus;\n }\n\n return result;\n}\n", "/**\n * Pre-built encounter pools \u2014 computed once at module load.\n * Provides all base-stage wild-eligible Pokemon grouped by rarity,\n * with helper lookups by type and generation for smart weighting.\n */\n\nimport type { PokemonType, RarityTier } from \"./types.js\";\nimport { POKEDEX } from \"./pokemon-data.js\";\nimport { EVOLUTION_CHAINS } from \"./evolution-data.js\";\n\n// \u2500\u2500 Identify evolved Pokemon (targets of any evolution link) \u2500\u2500\n\nconst EVOLVED_IDS: ReadonlySet<number> = new Set(\n EVOLUTION_CHAINS.flatMap((chain) => chain.links.map((link) => link.to)),\n);\n\n/** Returns true if the Pokemon is the base stage of its evolution chain. */\nfunction isBaseStage(pokemonId: number): boolean {\n return !EVOLVED_IDS.has(pokemonId);\n}\n\n// \u2500\u2500 Rarity tiers eligible for wild encounters \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst WILD_RARITIES: ReadonlySet<RarityTier> = new Set([\"common\", \"uncommon\", \"rare\"]);\n\n// \u2500\u2500 Generation ranges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const GEN_RANGES: readonly { gen: number; start: number; end: number }[] = [\n { gen: 1, start: 1, end: 151 },\n { gen: 2, start: 152, end: 251 },\n { gen: 3, start: 252, end: 386 },\n { gen: 4, start: 387, end: 493 },\n { gen: 5, start: 494, end: 649 },\n { gen: 6, start: 650, end: 721 },\n { gen: 7, start: 722, end: 809 },\n { gen: 8, start: 810, end: 905 },\n];\n\n/** Get the generation number for a Pokemon ID. */\nexport function getGeneration(pokemonId: number): number {\n for (const { gen, start, end } of GEN_RANGES) {\n if (pokemonId >= start && pokemonId <= end) return gen;\n }\n return 1; // fallback\n}\n\n// \u2500\u2500 Build pools at module load \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface RarityPool {\n readonly common: readonly number[];\n readonly uncommon: readonly number[];\n readonly rare: readonly number[];\n}\n\n/** All wild-eligible base-stage Pokemon, grouped by rarity. */\nfunction buildAllPool(): RarityPool {\n const common: number[] = [];\n const uncommon: number[] = [];\n const rare: number[] = [];\n\n for (const pokemon of POKEDEX) {\n if (!isBaseStage(pokemon.id)) continue;\n if (!WILD_RARITIES.has(pokemon.rarity)) continue;\n\n const rarity = pokemon.rarity as \"common\" | \"uncommon\" | \"rare\";\n if (rarity === \"common\") common.push(pokemon.id);\n else if (rarity === \"uncommon\") uncommon.push(pokemon.id);\n else rare.push(pokemon.id);\n }\n\n return {\n common: Object.freeze(common),\n uncommon: Object.freeze(uncommon),\n rare: Object.freeze(rare),\n };\n}\n\n/** Type-indexed pools for legacy compatibility and type lookups. */\nfunction buildTypePools(): ReadonlyMap<PokemonType, RarityPool> {\n const pools = new Map<PokemonType, { common: number[]; uncommon: number[]; rare: number[] }>();\n\n for (const pokemon of POKEDEX) {\n if (!isBaseStage(pokemon.id)) continue;\n if (!WILD_RARITIES.has(pokemon.rarity)) continue;\n\n for (const pokemonType of pokemon.types) {\n if (pokemonType === undefined) continue;\n\n let pool = pools.get(pokemonType);\n if (!pool) {\n pool = { common: [], uncommon: [], rare: [] };\n pools.set(pokemonType, pool);\n }\n\n const rarity = pokemon.rarity as \"common\" | \"uncommon\" | \"rare\";\n pool[rarity].push(pokemon.id);\n }\n }\n\n const frozen = new Map<PokemonType, RarityPool>();\n for (const [type, pool] of pools) {\n frozen.set(type, {\n common: Object.freeze(pool.common),\n uncommon: Object.freeze(pool.uncommon),\n rare: Object.freeze(pool.rare),\n });\n }\n\n return frozen;\n}\n\n/** Map of PokemonType to Pokemon IDs of that type, grouped by rarity. */\nexport const TYPE_POOLS: ReadonlyMap<PokemonType, RarityPool> = buildTypePools();\n\n/** All wild-eligible base-stage Pokemon, grouped by rarity (type-agnostic). */\nexport const ALL_WILD_POOL: RarityPool = buildAllPool();\n", "/**\n * Wild encounter system.\n * 100% random encounters with Pokedex-aware smart weighting.\n * No activity-type or time-of-day bias \u2014 any Pokemon can appear anytime.\n * Unseen types, gens, and species are boosted to fill the Pokedex faster.\n */\n\nimport type {\n XpEventType,\n PokemonType,\n PlayerState,\n WildEncounter,\n OwnedPokemon,\n CatchCondition,\n CodingStat,\n RarityTier,\n} from \"./types.js\";\nimport { POKEMON_TYPES } from \"./types.js\";\nimport { ENCOUNTER_THRESHOLDS } from \"./constants.js\";\nimport type { EncounterSpeed } from \"./constants.js\";\nimport { POKEMON_BY_ID } from \"./pokemon-data.js\";\nimport { ALL_WILD_POOL, getGeneration, GEN_RANGES } from \"./encounter-pool.js\";\n\n// \u2500\u2500 Encounter Context \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface EncounterContext {\n xpSinceLastEncounter: number;\n encounterSpeed: EncounterSpeed;\n currentStreak: number;\n recentToolTypes: string[];\n currentHour: number;\n}\n\n// \u2500\u2500 Encounter Trigger \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Check if a wild encounter should trigger based on XP earned,\n * encounter speed setting, and streak bonus.\n * Streak bonus: 7+ day streak halves the threshold.\n */\nexport function shouldTriggerEncounter(ctx: EncounterContext): boolean {\n const threshold = ENCOUNTER_THRESHOLDS[ctx.encounterSpeed];\n const streakMultiplier = ctx.currentStreak >= 7 ? 0.5 : 1;\n const effectiveThreshold = Math.floor(threshold * streakMultiplier);\n\n return ctx.xpSinceLastEncounter >= effectiveThreshold;\n}\n\n/** Check for bonus encounter (10% chance after a regular encounter). */\nexport function shouldBonusEncounter(): boolean {\n return Math.random() < 0.1;\n}\n\n/** Check for activity diversity bonus (3+ unique tool types in recent history). */\nexport function shouldDiversityBonus(recentToolTypes: string[]): boolean {\n const uniqueTypes = new Set(recentToolTypes);\n return uniqueTypes.size >= 3;\n}\n\n// \u2500\u2500 Rarity Weights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst RARITY_WEIGHTS: Readonly<Record<\"common\" | \"uncommon\" | \"rare\", number>> = {\n common: 70,\n uncommon: 25,\n rare: 5,\n};\n\n// \u2500\u2500 Catch Condition Mapping \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst TYPE_TO_STAT: Readonly<Record<PokemonType, CodingStat>> = {\n Normal: \"velocity\",\n Fire: \"debugging\",\n Water: \"stability\",\n Electric: \"velocity\",\n Grass: \"stamina\",\n Ice: \"stability\",\n Fighting: \"debugging\",\n Poison: \"debugging\",\n Ground: \"stability\",\n Flying: \"velocity\",\n Psychic: \"wisdom\",\n Bug: \"debugging\",\n Rock: \"stability\",\n Ghost: \"wisdom\",\n Dragon: \"wisdom\",\n Steel: \"stability\",\n Dark: \"debugging\",\n Fairy: \"wisdom\",\n};\n\nconst RARITY_STAT_THRESHOLD: Readonly<Record<RarityTier, number>> = {\n common: 0,\n uncommon: 20,\n rare: 40,\n legendary: 60,\n mythical: 80,\n};\n\nconst RARITY_LEVEL_THRESHOLD: Readonly<Record<RarityTier, number>> = {\n common: 1,\n uncommon: 10,\n rare: 25,\n legendary: 50,\n mythical: 75,\n};\n\n// \u2500\u2500 Catch Condition \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function getCatchCondition(pokemonId: number): CatchCondition {\n const pokemon = POKEMON_BY_ID.get(pokemonId);\n if (!pokemon) {\n return { requiredStat: null, minStatValue: 0, requiredLevel: 1 };\n }\n\n const rarity = pokemon.rarity;\n const requiredLevel = RARITY_LEVEL_THRESHOLD[rarity];\n const minStatValue = RARITY_STAT_THRESHOLD[rarity];\n\n if (rarity === \"common\") {\n return { requiredStat: null, minStatValue: 0, requiredLevel };\n }\n\n const primaryType = pokemon.types[0];\n const requiredStat = TYPE_TO_STAT[primaryType];\n\n return { requiredStat, minStatValue, requiredLevel };\n}\n\n// \u2500\u2500 Pokedex Analysis \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Count how many caught Pokemon the player has of each type. */\nfunction getTypeCounts(state: PlayerState): Map<PokemonType, number> {\n const counts = new Map<PokemonType, number>();\n for (const t of POKEMON_TYPES) counts.set(t, 0);\n\n for (const [idStr, entry] of Object.entries(state.pokedex.entries)) {\n if (!entry.caught) continue;\n const pokemon = POKEMON_BY_ID.get(Number(idStr));\n if (!pokemon) continue;\n for (const t of pokemon.types) {\n if (t !== undefined) counts.set(t, (counts.get(t) ?? 0) + 1);\n }\n }\n return counts;\n}\n\n/** Count how many caught Pokemon the player has from each generation. */\nfunction getGenCounts(state: PlayerState): Map<number, number> {\n const counts = new Map<number, number>();\n for (const { gen } of GEN_RANGES) counts.set(gen, 0);\n\n for (const [idStr, entry] of Object.entries(state.pokedex.entries)) {\n if (!entry.caught) continue;\n const gen = getGeneration(Number(idStr));\n counts.set(gen, (counts.get(gen) ?? 0) + 1);\n }\n return counts;\n}\n\n// \u2500\u2500 Smart Candidate Pool \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Build a weighted candidate pool from ALL wild-eligible Pokemon.\n * Weighting considers:\n * - Rarity (common 70, uncommon 25, rare 5)\n * - Unseen species boost (2x if not seen, 4x in early game)\n * - Type diversity (3x if player has 0 caught of this type)\n * - Gen diversity (2x if player has < 3 caught from this gen)\n * - 10% \"same again\" chance (pure random, no diversity boosts)\n */\nfunction buildSmartPool(state: PlayerState): { id: number; weight: number }[] {\n const candidates: { id: number; weight: number }[] = [];\n\n const starterPokemon = [...state.party, ...state.pcBox].find((p) => p.isStarter);\n const starterPokemonId = starterPokemon?.pokemonId ?? -1;\n\n const caughtIds = new Set<number>();\n const seenIds = new Set<number>();\n for (const [idStr, entry] of Object.entries(state.pokedex.entries)) {\n const id = Number(idStr);\n if (entry.caught) caughtIds.add(id);\n if (entry.seen) seenIds.add(id);\n }\n\n const totalCaught = state.pokedex.totalCaught ?? 0;\n const isEarlyGame = totalCaught < 50;\n\n // 10% chance: pure random (no diversity boosting)\n const seed = Math.floor(Date.now() / 1000);\n const sameAgainRoll = seededRandom(seed + 99);\n const applyDiversity = sameAgainRoll >= 0.1;\n\n // Pre-compute diversity data only when needed\n let typeCounts: Map<PokemonType, number> | null = null;\n let genCounts: Map<number, number> | null = null;\n if (applyDiversity) {\n typeCounts = getTypeCounts(state);\n genCounts = getGenCounts(state);\n }\n\n for (const rarity of [\"common\", \"uncommon\", \"rare\"] as const) {\n const ids = ALL_WILD_POOL[rarity];\n const baseWeight = RARITY_WEIGHTS[rarity];\n\n for (const id of ids) {\n // Exclude starter\n if (id === starterPokemonId) continue;\n\n // Uncommon+: skip if already caught (one-time only)\n if (rarity !== \"common\" && caughtIds.has(id)) continue;\n\n let weight = baseWeight;\n\n if (applyDiversity) {\n const pokemon = POKEMON_BY_ID.get(id);\n if (pokemon) {\n // Unseen species boost\n if (!seenIds.has(id)) {\n weight *= isEarlyGame ? 4 : 2;\n }\n\n // Type diversity: boost types player hasn't caught much\n const primaryType = pokemon.types[0];\n const typeCount = typeCounts!.get(primaryType) ?? 0;\n if (typeCount === 0) {\n weight *= 3; // Never caught this type\n } else if (typeCount < 3) {\n weight *= 1.5; // Few of this type\n }\n\n // Gen diversity: boost underrepresented generations\n const gen = getGeneration(id);\n const genCount = genCounts!.get(gen) ?? 0;\n if (genCount === 0) {\n weight *= 2; // Never caught from this gen\n } else if (genCount < 3) {\n weight *= 1.3; // Few from this gen\n }\n }\n }\n\n candidates.push({ id, weight: Math.round(weight) });\n }\n }\n\n return candidates;\n}\n\n// \u2500\u2500 PRNG \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction seededRandom(seed: number): number {\n let t = (seed + 0x6d2b79f5) | 0;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n}\n\nfunction weightedSelect(\n candidates: readonly { id: number; weight: number }[],\n seed: number,\n): number | null {\n if (candidates.length === 0) return null;\n\n const totalWeight = candidates.reduce((sum, c) => sum + c.weight, 0);\n const roll = seededRandom(seed) * totalWeight;\n\n let cumulative = 0;\n for (const candidate of candidates) {\n cumulative += candidate.weight;\n if (roll < cumulative) {\n return candidate.id;\n }\n }\n\n return candidates[candidates.length - 1]!.id;\n}\n\n// \u2500\u2500 Level Determination \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction determineEncounterLevel(state: PlayerState, seed: number): number {\n const allPokemon = [...state.party, ...state.pcBox];\n const maxLevel = allPokemon.reduce((max, p) => Math.max(max, p.level), 1);\n\n const minLevel = Math.max(2, Math.floor(maxLevel * 0.6));\n const range = Math.max(1, maxLevel - minLevel + 1);\n const level = minLevel + Math.floor(seededRandom(seed + 7) * range);\n\n return Math.min(level, 100);\n}\n\n// \u2500\u2500 Encounter Generation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Generate a wild encounter \u2014 100% random with Pokedex-aware weighting.\n * No activity-type or time-of-day bias. Any Pokemon can appear anytime.\n * Unseen types, gens, and species are boosted to fill the Pokedex faster.\n *\n * The eventType parameter is kept for API compatibility but is not used\n * for type selection.\n */\nexport function generateEncounter(\n _eventType: XpEventType,\n state: PlayerState,\n _timeOfDayTypes?: readonly PokemonType[],\n): WildEncounter | null {\n const candidates = buildSmartPool(state);\n\n if (candidates.length === 0) return null;\n\n const seed = Math.floor(Date.now() / 1000);\n const pokemonId = weightedSelect(candidates, seed);\n\n if (pokemonId === null) return null;\n\n const level = determineEncounterLevel(state, seed);\n const catchCondition = getCatchCondition(pokemonId);\n\n return { pokemonId, level, catchCondition };\n}\n\n// \u2500\u2500 Catch Evaluation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function canCatch(\n encounter: WildEncounter,\n activePokemon: OwnedPokemon,\n): { success: boolean; reason: string } {\n const pokemon = POKEMON_BY_ID.get(encounter.pokemonId);\n if (!pokemon) {\n return { success: false, reason: \"Unknown Pokemon\" };\n }\n\n const { requiredStat, minStatValue, requiredLevel } = encounter.catchCondition;\n\n if (activePokemon.level < requiredLevel) {\n return {\n success: false,\n reason: `Need level ${requiredLevel} to catch ${pokemon.rarity} Pokemon (currently level ${activePokemon.level})`,\n };\n }\n\n if (requiredStat !== null) {\n const currentStat = activePokemon.codingStats[requiredStat];\n if (currentStat < minStatValue) {\n const primaryType = pokemon.types[0];\n return {\n success: false,\n reason: `Need ${requiredStat.toUpperCase()} at ${minStatValue} to catch ${primaryType} types (currently ${currentStat})`,\n };\n }\n }\n\n const seed = Math.floor(Date.now() / 1000);\n const roll = seededRandom(seed + encounter.pokemonId) * 255;\n const success = pokemon.catchRate > roll;\n\n if (success) {\n return { success: true, reason: `Caught ${pokemon.name}!` };\n }\n\n return { success: false, reason: `${pokemon.name} broke free!` };\n}\n", "/**\n * Mood engine for Claudemon.\n * Pure functions that calculate mood based on recent events, time of day,\n * and special triggers (evolution, achievements, catches).\n */\n\nimport type { MoodType, EventCounters } from \"./types.js\";\n\n// \u2500\u2500 Mood Decay Durations (milliseconds) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** How long each mood lasts before decaying back to neutral */\nconst MOOD_DECAY_MS: Record<MoodType, number> = {\n happy: 600_000, // 10 minutes\n worried: 300_000, // 5 minutes\n sleepy: Infinity, // Resets based on time-of-day, not duration\n energetic: 900_000, // 15 minutes\n proud: 600_000, // 10 minutes\n neutral: Infinity, // Never decays (it IS the default)\n};\n\n// \u2500\u2500 XP Event Types That Trigger Moods \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst POSITIVE_EVENTS = new Set([\"test_pass\", \"build_success\", \"commit\"]);\n\nconst NEGATIVE_EVENTS = new Set([\"test_fail\", \"build_fail\", \"error\"]);\n\n// \u2500\u2500 Mood Calculation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Calculate the current mood based on recent events, time, and special triggers.\n *\n * Priority order:\n * 1. Sleepy (midnight to 5 AM)\n * 2. Proud (just evolved/achieved/caught)\n * 3. Worried (recent negative event)\n * 4. Happy (recent positive event)\n * 5. Energetic (morning + active streak)\n * 6. Keep current mood if it hasn't decayed\n * 7. Neutral (default fallback)\n *\n * @param recentEvent - The last XP event type, or null\n * @param counters - Current event counters (for context)\n * @param currentHour - Hour of day (0-23)\n * @param lastMood - The previous mood\n * @param moodSetAt - Timestamp when last mood was set\n * @param hadEvolution - Whether the Pokemon just evolved\n * @param hadAchievement - Whether the player just unlocked an achievement\n * @param hadCatch - Whether the player just caught a Pokemon\n * @returns The calculated mood\n */\nexport function calculateMood(\n recentEvent: string | null,\n counters: EventCounters,\n currentHour: number,\n lastMood: MoodType,\n moodSetAt: number,\n hadEvolution: boolean,\n hadAchievement: boolean,\n hadCatch: boolean,\n): MoodType {\n // 1. Sleepy: midnight to 5 AM (hours 0-4)\n if (currentHour >= 0 && currentHour < 5) {\n return \"sleepy\";\n }\n\n // 2. Proud: just evolved, achieved, or caught a Pokemon\n if (hadEvolution || hadAchievement || hadCatch) {\n return \"proud\";\n }\n\n // 3. Worried: recent negative event\n if (recentEvent !== null && NEGATIVE_EVENTS.has(recentEvent)) {\n return \"worried\";\n }\n\n // 4. Happy: recent positive event\n if (recentEvent !== null && POSITIVE_EVENTS.has(recentEvent)) {\n return \"happy\";\n }\n\n // 5. Energetic: morning coding (5 AM - 10 AM) with an active streak\n if (currentHour >= 5 && currentHour < 10) {\n // Use a simple heuristic: if there have been any sessions, consider it an active streak\n const hasStreak = counters.sessions > 0;\n if (hasStreak) {\n return \"energetic\";\n }\n }\n\n // 6. Keep current mood if it hasn't decayed\n if (!hasMoodDecayed(lastMood, moodSetAt, Date.now())) {\n return lastMood;\n }\n\n // 7. Default fallback\n return \"neutral\";\n}\n\n/**\n * Check whether a mood has expired based on its decay duration.\n *\n * @param mood - The mood to check\n * @param setAt - Timestamp when the mood was set\n * @param now - Current timestamp\n * @returns true if the mood has decayed (expired)\n */\nexport function hasMoodDecayed(mood: MoodType, setAt: number, now: number): boolean {\n const duration = MOOD_DECAY_MS[mood];\n if (duration === Infinity) {\n // Sleepy decays when it's no longer midnight-5 AM (handled in calculateMood)\n // Neutral never decays\n return false;\n }\n return now - setAt >= duration;\n}\n\n// \u2500\u2500 Mood Speeches \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Mood-specific speech lines for the status line. Name placeholder {name} is replaced at call time. */\nconst MOOD_SPEECHES: Record<MoodType, readonly string[]> = {\n happy: [\n \"*{name} is beaming with pride!*\",\n \"*{name} does a little victory dance*\",\n \"*{name} radiates positive energy*\",\n \"*{name} bounces happily*\",\n \"*{name} gives you a thumbs up*\",\n ],\n worried: [\n \"*{name} looks concerned...*\",\n \"*{name} nervously watches the errors*\",\n \"*{name} hides behind the terminal*\",\n \"*{name} paces back and forth*\",\n \"*{name} offers you a virtual hug*\",\n ],\n sleepy: [\n \"*{name} yawns widely*\",\n \"*{name} dozes off... zzz*\",\n \"*{name} rubs its eyes*\",\n \"*{name} curls up near the keyboard*\",\n \"*{name} mumbles in its sleep*\",\n ],\n energetic: [\n \"*{name} is fired up! Let's go!*\",\n \"*{name} bounces off the walls*\",\n \"*{name} can't sit still!*\",\n \"*{name} is ready to code all day!*\",\n \"*{name} stretches and flexes*\",\n ],\n proud: [\n \"*{name} puffs up with pride*\",\n \"*{name} strikes a victory pose*\",\n \"*{name} shows off to everyone*\",\n \"*{name} earned bragging rights!*\",\n \"*{name} stands tall and proud*\",\n ],\n neutral: [\n \"*{name} looks at your code curiously*\",\n \"*{name} nods along as you type*\",\n \"*{name} is watching closely*\",\n \"*{name} hums softly*\",\n \"*{name} waits patiently*\",\n \"*{name} tilts head at the screen*\",\n \"*{name} chirps encouragingly*\",\n \"*{name} peers at a variable name*\",\n ],\n};\n\n/**\n * Get mood-specific speech messages with the Pokemon's name filled in.\n *\n * @param name - The Pokemon's display name\n * @param mood - The current mood\n * @returns Array of speech strings with the name interpolated\n */\nexport function getMoodSpeeches(name: string, mood: MoodType): string[] {\n const templates = MOOD_SPEECHES[mood];\n return templates.map((t) => t.replace(\"{name}\", name));\n}\n\n// \u2500\u2500 Mood Display Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Emoji representation for each mood */\nconst MOOD_EMOJIS: Record<MoodType, string> = {\n happy: \"\\u{1F60A}\", // \uD83D\uDE0A\n worried: \"\\u{1F61F}\", // \uD83D\uDE1F\n sleepy: \"\\u{1F634}\", // \uD83D\uDE34\n energetic: \"\\u{26A1}\", // \u26A1\n proud: \"\\u{1F451}\", // \uD83D\uDC51\n neutral: \"\\u{1F610}\", // \uD83D\uDE10\n};\n\n/** Human-readable mood descriptions */\nconst MOOD_DESCRIPTIONS: Record<MoodType, string> = {\n happy: \"Happy\",\n worried: \"Worried\",\n sleepy: \"Sleepy\",\n energetic: \"Energetic\",\n proud: \"Proud\",\n neutral: \"Neutral\",\n};\n\n/**\n * Get the emoji for a mood.\n *\n * @param mood - The mood type\n * @returns The emoji string\n */\nexport function getMoodEmoji(mood: MoodType): string {\n return MOOD_EMOJIS[mood];\n}\n\n/**\n * Get a human-readable description for a mood.\n *\n * @param mood - The mood type\n * @returns The description string (e.g. \"Happy\")\n */\nexport function getMoodDescription(mood: MoodType): string {\n return MOOD_DESCRIPTIONS[mood];\n}\n", "/**\n * award-xp.ts \u2014 Lightweight bun script called by the PostToolUse hook.\n * Usage: bun run award-xp.ts <event_type> <counter_key>\n *\n * Loads state, awards XP to the active Pokemon, applies stat boosts,\n * increments the event counter, updates the streak, and saves.\n * Supports enhanced encounter triggers: streak bonuses, time-of-day bias,\n * bonus encounters (10%), and tool diversity encounters.\n * Emits a terminal bell on level-up.\n */\n\nimport type { XpEventType, EventCounterKey } from \"../engine/types.js\";\nimport { BELL } from \"../engine/constants.js\";\nimport { StateManager } from \"../state/state-manager.js\";\nimport { addXp, createXpEvent } from \"../engine/xp.js\";\nimport { applyStatBoost } from \"../engine/stats.js\";\nimport { POKEMON_BY_ID } from \"../engine/pokemon-data.js\";\nimport { checkEvolution, getNewlyEarnedBadges } from \"../engine/evolution.js\";\nimport {\n shouldTriggerEncounter,\n generateEncounter,\n shouldBonusEncounter,\n shouldDiversityBonus,\n} from \"../engine/encounters.js\";\nimport type { EncounterContext } from \"../engine/encounters.js\";\nimport { calculateMood } from \"../engine/mood.js\";\n\nconst MAX_RECENT_TOOL_TYPES = 20;\n\nconst eventType = process.argv[2] as XpEventType;\nconst counterKey = process.argv[3] as EventCounterKey | undefined;\n\nif (!eventType) {\n process.exit(0);\n}\n\nconst stateManager = StateManager.getInstance();\nconst state = await stateManager.load();\n\n// No state file = first run, nothing to do yet\nif (!state) {\n process.exit(0);\n}\n\nconst pokemon = stateManager.getActivePokemon();\nif (!pokemon) {\n process.exit(0);\n}\n\nconst pokemonData = POKEMON_BY_ID.get(pokemon.pokemonId);\nif (!pokemonData) {\n process.exit(0);\n}\n\n// Create XP event from the event type\nconst xpEvent = createXpEvent(eventType);\n\n// Award XP and check for level-up\nconst levelUp = addXp(pokemon, xpEvent.xp, pokemonData);\n\n// Apply stat boost if the event provides one\nif (xpEvent.statBoost && xpEvent.boostAmount > 0) {\n applyStatBoost(pokemon, xpEvent.statBoost, xpEvent.boostAmount);\n}\n\n// XP sharing: give inactive party members a percentage\nconst sharePercent = state.config.xpSharePercent ?? 0;\nif (sharePercent > 0 && state.party.length > 1) {\n const sharedXp = Math.floor((xpEvent.xp * sharePercent) / 100);\n if (sharedXp > 0) {\n for (const member of state.party) {\n if (member.isActive) continue;\n const memberSpecies = POKEMON_BY_ID.get(member.pokemonId);\n if (memberSpecies) {\n addXp(member, sharedXp, memberSpecies);\n }\n }\n }\n}\n\n// Track total XP earned by the trainer\nstate.totalXpEarned += xpEvent.xp;\n\n// Increment the event counter directly on state (avoids extra save from incrementCounter)\nif (counterKey) {\n state.counters[counterKey] += 1;\n}\n\n// Track tool type for diversity bonus (keep last MAX_RECENT_TOOL_TYPES entries)\nconst recentToolTypes = state.recentToolTypes ?? [];\nrecentToolTypes.push(eventType);\nif (recentToolTypes.length > MAX_RECENT_TOOL_TYPES) {\n recentToolTypes.splice(0, recentToolTypes.length - MAX_RECENT_TOOL_TYPES);\n}\nstate.recentToolTypes = recentToolTypes;\n\n// Update the daily coding streak\n// Inline the streak logic to avoid the extra save from updateStreak()\nconst today = new Date();\nconst todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, \"0\")}-${String(today.getDate()).padStart(2, \"0\")}`;\nconst { streak } = state;\n\nif (streak.lastActiveDate !== todayStr) {\n if (streak.lastActiveDate === null) {\n streak.currentStreak = 1;\n streak.totalDaysActive = 1;\n } else {\n const last = new Date(streak.lastActiveDate);\n const now = new Date(todayStr);\n const diffMs = now.getTime() - last.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 1) {\n streak.currentStreak += 1;\n } else {\n streak.currentStreak = 1;\n }\n streak.totalDaysActive += 1;\n }\n\n if (streak.currentStreak > streak.longestStreak) {\n streak.longestStreak = streak.currentStreak;\n }\n\n streak.lastActiveDate = todayStr;\n}\n\n// Check for newly earned badges\nconst newBadges = getNewlyEarnedBadges(state);\nfor (const badge of newBadges) {\n state.badges.push(badge);\n}\n\n// Check if evolution is available (sets flag in status for status line indicator)\nconst evolutionReady = checkEvolution(pokemon, state) !== null;\n\n// Build encounter context for the enhanced trigger system\nconst encounterSpeed = state.config.encounterSpeed ?? \"normal\";\nconst currentHour = new Date().getHours();\n\nconst encounterCtx: EncounterContext = {\n xpSinceLastEncounter: (state.xpSinceLastEncounter ?? 0) + xpEvent.xp,\n encounterSpeed,\n currentStreak: streak.currentStreak,\n recentToolTypes: state.recentToolTypes,\n currentHour,\n};\n\n// Track XP toward next encounter\nstate.xpSinceLastEncounter = encounterCtx.xpSinceLastEncounter;\nlet encounterTriggered = false;\n\nif (shouldTriggerEncounter(encounterCtx) && !state.pendingEncounter) {\n const encounter = generateEncounter(eventType, state);\n if (encounter) {\n state.pendingEncounter = encounter;\n state.xpSinceLastEncounter = 0;\n state.lastEncounterTime = Date.now();\n encounterTriggered = true;\n\n // 10% chance for a bonus encounter after a regular one\n // (bonus replaces the pending encounter with a second roll)\n if (shouldBonusEncounter()) {\n const bonusEncounter = generateEncounter(eventType, state);\n if (bonusEncounter) {\n // The bonus encounter replaces the first; first is already set as pending\n // In practice the player still sees one encounter per trigger,\n // but the bonus gives them a fresh roll (potentially rarer Pokemon)\n state.pendingEncounter = bonusEncounter;\n }\n }\n }\n}\n\n// Tool diversity bonus: if 3+ unique tool types used recently and no pending encounter,\n// grant an extra encounter opportunity\nif (!encounterTriggered && !state.pendingEncounter && shouldDiversityBonus(state.recentToolTypes)) {\n const diversityEncounter = generateEncounter(eventType, state);\n if (diversityEncounter) {\n state.pendingEncounter = diversityEncounter;\n state.xpSinceLastEncounter = 0;\n state.lastEncounterTime = Date.now();\n // Clear recent tool types after diversity bonus triggers\n state.recentToolTypes = [];\n encounterTriggered = true;\n }\n}\n\n// Calculate mood based on the event that just happened\nconst newMood = calculateMood(\n eventType,\n state.counters,\n currentHour,\n state.mood ?? \"neutral\",\n state.moodSetAt ?? 0,\n evolutionReady, // evolution ready counts as a proud trigger\n false, // achievements are checked in catch/evolve tools\n false, // catches are handled in the catch tool\n);\n\nif (newMood !== (state.mood ?? \"neutral\")) {\n state.mood = newMood;\n state.moodSetAt = Date.now();\n}\n\n// Single atomic save for all mutations\nawait stateManager.save();\n\n// Write status for the status line (includes evolution flag and encounter notification)\nif (encounterTriggered && state.pendingEncounter) {\n const encSpecies = POKEMON_BY_ID.get(state.pendingEncounter.pokemonId);\n const encName = encSpecies?.name ?? \"???\";\n await stateManager.writeEncounterStatus(encName);\n} else {\n await stateManager.writeStatus(evolutionReady);\n}\n\n// Flush any pending debounced status write before the process exits\nawait stateManager.flushStatus();\n\n// Terminal bell on level-up, evolution available, or encounter (written to stderr so it reaches the terminal)\nif ((levelUp || evolutionReady || encounterTriggered) && state.config.bellEnabled) {\n process.stderr.write(BELL);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["util", "objectUtil", "errorUtil", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "state", "today", "streak", "evolutionReady", "pokemon", "pokemonData", "pokemon", "stat", "pokemon", "state", "stat", "state", "newBadges", "pokemon", "pokemon", "recentToolTypes", "pokemon", "state", "currentHour"]
7
7
  }