diff --git a/README.md b/README.md index a769416bd7..403e0779ba 100644 --- a/README.md +++ b/README.md @@ -79,14 +79,14 @@ The Rivet Engine supports: ## Examples - AI Agent — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/ai-agent) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/ai-agent) -- Chat Room — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/chat-room) -- Collab (Yjs) — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/crdt) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/crdt) -- Multiplayer Game — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/game) +- Realtime Docs — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/crdt) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/crdt) +- Workflows — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/workflows) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/workflows) - Local-First Sync — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/sync) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/sync) -- Rate Limiter — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/rate) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/rate) -- Per-User DB — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/database) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/database) -- Multi-Tenant SaaS — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/tenant) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/tenant) -- Stream Processing — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/stream) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/stream) +- Per-User Database — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/database) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/database) +- Background Jobs — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/background-jobs) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/background-jobs) +- Rate Limiting — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/rate) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/rate) +- Multiplayer Game — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/game) +- Bots — [GitHub](https://github.com/rivet-dev/rivetkit/tree/main/examples/bots) · [StackBlitz](https://stackblitz.com/github/rivet-dev/rivetkit/tree/main/examples/bots) ## Running Rivet @@ -100,12 +100,12 @@ For enterprise use cases, [get in touch](https://rivet.gg/sales) about using Riv Join thousands of developers building with Rivet Actors today: -- [Discord](https://rivet.gg/discord) - Chat with the community +- [Discord](https://rivet.dev/discord) - Chat with the community - [X/Twitter](https://x.com/rivet_dev) - Follow for updates - [Bluesky](https://bsky.app/profile/rivet.gg) - Follow for updates - [GitHub Discussions](https://github.com/rivet-dev/rivetkit/discussions) - Ask questions and share ideas - [GitHub Issues](https://github.com/rivet-dev/rivetkit/issues) - Report bugs and request features -- [Talk to an engineer](https://rivet.gg/talk-to-an-engineer) - Discuss your technical needs, current stack, and how Rivet can help with your infrastructure challenges +- [Talk to an engineer](https://rivet.dev/talk-to-an-engineer) - Discuss your technical needs, current stack, and how Rivet can help with your infrastructure challenges ## Technologies diff --git a/frontend/packages/icons/manifest.json b/frontend/packages/icons/manifest.json index 5cb0d45a5f..ba07e044ee 100644 --- a/frontend/packages/icons/manifest.json +++ b/frontend/packages/icons/manifest.json @@ -1 +1 @@ -{"@fortawesome/free-solid-svg-icons":{"icons":[{"icon":"fa0","aliases":[]},{"icon":"fa1","aliases":[]},{"icon":"fa2","aliases":[]},{"icon":"fa3","aliases":[]},{"icon":"fa4","aliases":[]},{"icon":"fa5","aliases":[]},{"icon":"fa6","aliases":[]},{"icon":"fa7","aliases":[]},{"icon":"fa8","aliases":[]},{"icon":"fa9","aliases":[]},{"icon":"faA","aliases":[]},{"icon":"faAd","aliases":["faAd"]},{"icon":"faAdd","aliases":["faAdd"]},{"icon":"faAddressBook","aliases":["faContactBook"]},{"icon":"faAddressCard","aliases":["faContactCard","faVcard"]},{"icon":"faAdjust","aliases":["faAdjust"]},{"icon":"faAirFreshener","aliases":["faAirFreshener"]},{"icon":"faAlignCenter","aliases":[]},{"icon":"faAlignJustify","aliases":[]},{"icon":"faAlignLeft","aliases":[]},{"icon":"faAlignRight","aliases":[]},{"icon":"faAllergies","aliases":["faAllergies"]},{"icon":"faAmbulance","aliases":["faAmbulance"]},{"icon":"faAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAnchor","aliases":[]},{"icon":"faAnchorCircleCheck","aliases":[]},{"icon":"faAnchorCircleExclamation","aliases":[]},{"icon":"faAnchorCircleXmark","aliases":[]},{"icon":"faAnchorLock","aliases":[]},{"icon":"faAngleDoubleDown","aliases":["faAngleDoubleDown"]},{"icon":"faAngleDoubleLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAngleDoubleRight","aliases":["faAngleDoubleRight"]},{"icon":"faAngleDoubleUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngleDown","aliases":[]},{"icon":"faAngleLeft","aliases":[]},{"icon":"faAngleRight","aliases":[]},{"icon":"faAngleUp","aliases":[]},{"icon":"faAnglesDown","aliases":["faAngleDoubleDown"]},{"icon":"faAnglesLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAnglesRight","aliases":["faAngleDoubleRight"]},{"icon":"faAnglesUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngry","aliases":["faAngry"]},{"icon":"faAnkh","aliases":[]},{"icon":"faAppleAlt","aliases":["faAppleAlt"]},{"icon":"faAppleWhole","aliases":["faAppleAlt"]},{"icon":"faArchive","aliases":["faArchive"]},{"icon":"faArchway","aliases":[]},{"icon":"faAreaChart","aliases":["faAreaChart"]},{"icon":"faArrowAltCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faArrowAltCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faArrowAltCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faArrowAltCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faArrowCircleDown","aliases":["faArrowCircleDown"]},{"icon":"faArrowCircleLeft","aliases":["faArrowCircleLeft"]},{"icon":"faArrowCircleRight","aliases":["faArrowCircleRight"]},{"icon":"faArrowCircleUp","aliases":["faArrowCircleUp"]},{"icon":"faArrowDown","aliases":[]},{"icon":"faArrowDown19","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faArrowDown91","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faArrowDownAZ","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faArrowDownLong","aliases":["faLongArrowDown"]},{"icon":"faArrowDownShortWide","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faArrowDownUpAcrossLine","aliases":[]},{"icon":"faArrowDownUpLock","aliases":[]},{"icon":"faArrowDownWideShort","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faArrowDownZA","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faArrowLeft","aliases":[]},{"icon":"faArrowLeftLong","aliases":["faLongArrowLeft"]},{"icon":"faArrowLeftRotate","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowPointer","aliases":["faMousePointer"]},{"icon":"faArrowRight","aliases":[]},{"icon":"faArrowRightArrowLeft","aliases":["faExchange"]},{"icon":"faArrowRightFromBracket","aliases":["faSignOut"]},{"icon":"faArrowRightFromFile","aliases":["faArrowRightFromFile"]},{"icon":"faArrowRightLong","aliases":["faLongArrowRight"]},{"icon":"faArrowRightRotate","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRightToBracket","aliases":["faSignIn"]},{"icon":"faArrowRightToCity","aliases":[]},{"icon":"faArrowRightToFile","aliases":["faArrowRightToFile"]},{"icon":"faArrowRotateBack","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateBackward","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateForward","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRotateLeft","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateRight","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowTrendDown","aliases":[]},{"icon":"faArrowTrendUp","aliases":[]},{"icon":"faArrowTurnDown","aliases":["faLevelDown"]},{"icon":"faArrowTurnUp","aliases":["faLevelUp"]},{"icon":"faArrowUp","aliases":[]},{"icon":"faArrowUp19","aliases":["faSortNumericUp"]},{"icon":"faArrowUp91","aliases":["faSortNumericUpAlt"]},{"icon":"faArrowUpAZ","aliases":["faSortAlphaUp"]},{"icon":"faArrowUpFromBracket","aliases":[]},{"icon":"faArrowUpFromGroundWater","aliases":[]},{"icon":"faArrowUpFromWaterPump","aliases":[]},{"icon":"faArrowUpLong","aliases":["faLongArrowUp"]},{"icon":"faArrowUpRightDots","aliases":[]},{"icon":"faArrowUpRightFromSquare","aliases":["faExternalLink"]},{"icon":"faArrowUpShortWide","aliases":["faSortAmountUpAlt"]},{"icon":"faArrowUpWideShort","aliases":["faSortAmountUp"]},{"icon":"faArrowUpZA","aliases":["faSortAlphaUpAlt"]},{"icon":"faArrows","aliases":["faArrows"]},{"icon":"faArrowsAlt","aliases":["faArrowsAlt"]},{"icon":"faArrowsAltH","aliases":["faArrowsAltH"]},{"icon":"faArrowsAltV","aliases":["faArrowsAltV"]},{"icon":"faArrowsDownToLine","aliases":[]},{"icon":"faArrowsDownToPeople","aliases":[]},{"icon":"faArrowsH","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRight","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRightToLine","aliases":[]},{"icon":"faArrowsRotate","aliases":["faRefresh","faSync"]},{"icon":"faArrowsSpin","aliases":[]},{"icon":"faArrowsSplitUpAndLeft","aliases":[]},{"icon":"faArrowsToCircle","aliases":[]},{"icon":"faArrowsToDot","aliases":[]},{"icon":"faArrowsToEye","aliases":[]},{"icon":"faArrowsTurnRight","aliases":[]},{"icon":"faArrowsTurnToDots","aliases":[]},{"icon":"faArrowsUpDown","aliases":["faArrowsV"]},{"icon":"faArrowsUpDownLeftRight","aliases":["faArrows"]},{"icon":"faArrowsUpToLine","aliases":[]},{"icon":"faArrowsV","aliases":["faArrowsV"]},{"icon":"faAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAssistiveListeningSystems","aliases":["faAssistiveListeningSystems"]},{"icon":"faAsterisk","aliases":[]},{"icon":"faAt","aliases":[]},{"icon":"faAtlas","aliases":["faAtlas"]},{"icon":"faAtom","aliases":[]},{"icon":"faAudioDescription","aliases":[]},{"icon":"faAustralSign","aliases":[]},{"icon":"faAutomobile","aliases":["faAutomobile"]},{"icon":"faAward","aliases":[]},{"icon":"faB","aliases":[]},{"icon":"faBaby","aliases":[]},{"icon":"faBabyCarriage","aliases":["faCarriageBaby"]},{"icon":"faBackspace","aliases":["faBackspace"]},{"icon":"faBackward","aliases":[]},{"icon":"faBackwardFast","aliases":["faFastBackward"]},{"icon":"faBackwardStep","aliases":["faStepBackward"]},{"icon":"faBacon","aliases":[]},{"icon":"faBacteria","aliases":[]},{"icon":"faBacterium","aliases":[]},{"icon":"faBagShopping","aliases":["faShoppingBag"]},{"icon":"faBahai","aliases":["faHaykal"]},{"icon":"faBahtSign","aliases":[]},{"icon":"faBalanceScale","aliases":["faBalanceScale"]},{"icon":"faBalanceScaleLeft","aliases":["faBalanceScaleLeft"]},{"icon":"faBalanceScaleRight","aliases":["faBalanceScaleRight"]},{"icon":"faBan","aliases":["faCancel"]},{"icon":"faBanSmoking","aliases":["faSmokingBan"]},{"icon":"faBandAid","aliases":["faBandAid"]},{"icon":"faBandage","aliases":["faBandAid"]},{"icon":"faBangladeshiTakaSign","aliases":[]},{"icon":"faBank","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBarChart","aliases":["faBarChart"]},{"icon":"faBarcode","aliases":[]},{"icon":"faBars","aliases":["faNavicon"]},{"icon":"faBarsProgress","aliases":["faTasksAlt"]},{"icon":"faBarsStaggered","aliases":["faReorder","faStream"]},{"icon":"faBaseball","aliases":["faBaseballBall"]},{"icon":"faBaseballBall","aliases":["faBaseballBall"]},{"icon":"faBaseballBatBall","aliases":[]},{"icon":"faBasketShopping","aliases":["faShoppingBasket"]},{"icon":"faBasketball","aliases":["faBasketballBall"]},{"icon":"faBasketballBall","aliases":["faBasketballBall"]},{"icon":"faBath","aliases":["faBathtub"]},{"icon":"faBathtub","aliases":["faBathtub"]},{"icon":"faBattery","aliases":["faBattery","faBattery5"]},{"icon":"faBattery0","aliases":["faBattery0"]},{"icon":"faBattery2","aliases":["faBattery2"]},{"icon":"faBattery3","aliases":["faBattery3"]},{"icon":"faBattery4","aliases":["faBattery4"]},{"icon":"faBattery5","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryCar","aliases":["faBatteryCar"]},{"icon":"faBatteryEmpty","aliases":["faBattery0"]},{"icon":"faBatteryFull","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryHalf","aliases":["faBattery3"]},{"icon":"faBatteryQuarter","aliases":["faBattery2"]},{"icon":"faBatteryThreeQuarters","aliases":["faBattery4"]},{"icon":"faBed","aliases":[]},{"icon":"faBedPulse","aliases":["faProcedures"]},{"icon":"faBeer","aliases":["faBeer"]},{"icon":"faBeerMugEmpty","aliases":["faBeer"]},{"icon":"faBell","aliases":[]},{"icon":"faBellConcierge","aliases":["faConciergeBell"]},{"icon":"faBellSlash","aliases":[]},{"icon":"faBezierCurve","aliases":[]},{"icon":"faBible","aliases":["faBible"]},{"icon":"faBicycle","aliases":[]},{"icon":"faBiking","aliases":["faBiking"]},{"icon":"faBinoculars","aliases":[]},{"icon":"faBiohazard","aliases":[]},{"icon":"faBirthdayCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faBitcoinSign","aliases":[]},{"icon":"faBlackboard","aliases":["faBlackboard"]},{"icon":"faBlender","aliases":[]},{"icon":"faBlenderPhone","aliases":[]},{"icon":"faBlind","aliases":["faBlind"]},{"icon":"faBlog","aliases":[]},{"icon":"faBold","aliases":[]},{"icon":"faBolt","aliases":["faZap"]},{"icon":"faBoltLightning","aliases":[]},{"icon":"faBomb","aliases":[]},{"icon":"faBone","aliases":[]},{"icon":"faBong","aliases":[]},{"icon":"faBook","aliases":[]},{"icon":"faBookAtlas","aliases":["faAtlas"]},{"icon":"faBookBible","aliases":["faBible"]},{"icon":"faBookBookmark","aliases":[]},{"icon":"faBookDead","aliases":["faBookDead"]},{"icon":"faBookJournalWhills","aliases":["faJournalWhills"]},{"icon":"faBookMedical","aliases":[]},{"icon":"faBookOpen","aliases":[]},{"icon":"faBookOpenReader","aliases":["faBookReader"]},{"icon":"faBookQuran","aliases":["faQuran"]},{"icon":"faBookReader","aliases":["faBookReader"]},{"icon":"faBookSkull","aliases":["faBookDead"]},{"icon":"faBookTanakh","aliases":["faTanakh"]},{"icon":"faBookmark","aliases":[]},{"icon":"faBorderAll","aliases":[]},{"icon":"faBorderNone","aliases":[]},{"icon":"faBorderStyle","aliases":["faBorderStyle"]},{"icon":"faBorderTopLeft","aliases":["faBorderStyle"]},{"icon":"faBoreHole","aliases":[]},{"icon":"faBottleDroplet","aliases":[]},{"icon":"faBottleWater","aliases":[]},{"icon":"faBowlFood","aliases":[]},{"icon":"faBowlRice","aliases":[]},{"icon":"faBowlingBall","aliases":[]},{"icon":"faBox","aliases":[]},{"icon":"faBoxArchive","aliases":["faArchive"]},{"icon":"faBoxOpen","aliases":[]},{"icon":"faBoxTissue","aliases":[]},{"icon":"faBoxes","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesAlt","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesPacking","aliases":[]},{"icon":"faBoxesStacked","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBraille","aliases":[]},{"icon":"faBrain","aliases":[]},{"icon":"faBrazilianRealSign","aliases":[]},{"icon":"faBreadSlice","aliases":[]},{"icon":"faBridge","aliases":[]},{"icon":"faBridgeCircleCheck","aliases":[]},{"icon":"faBridgeCircleExclamation","aliases":[]},{"icon":"faBridgeCircleXmark","aliases":[]},{"icon":"faBridgeLock","aliases":[]},{"icon":"faBridgeWater","aliases":[]},{"icon":"faBriefcase","aliases":[]},{"icon":"faBriefcaseClock","aliases":["faBriefcaseClock"]},{"icon":"faBriefcaseMedical","aliases":[]},{"icon":"faBroadcastTower","aliases":["faBroadcastTower"]},{"icon":"faBroom","aliases":[]},{"icon":"faBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faBrush","aliases":[]},{"icon":"faBucket","aliases":[]},{"icon":"faBug","aliases":[]},{"icon":"faBugSlash","aliases":[]},{"icon":"faBugs","aliases":[]},{"icon":"faBuilding","aliases":[]},{"icon":"faBuildingCircleArrowRight","aliases":[]},{"icon":"faBuildingCircleCheck","aliases":[]},{"icon":"faBuildingCircleExclamation","aliases":[]},{"icon":"faBuildingCircleXmark","aliases":[]},{"icon":"faBuildingColumns","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBuildingFlag","aliases":[]},{"icon":"faBuildingLock","aliases":[]},{"icon":"faBuildingNgo","aliases":[]},{"icon":"faBuildingShield","aliases":[]},{"icon":"faBuildingUn","aliases":[]},{"icon":"faBuildingUser","aliases":[]},{"icon":"faBuildingWheat","aliases":[]},{"icon":"faBullhorn","aliases":[]},{"icon":"faBullseye","aliases":[]},{"icon":"faBurger","aliases":["faHamburger"]},{"icon":"faBurn","aliases":["faBurn"]},{"icon":"faBurst","aliases":[]},{"icon":"faBus","aliases":[]},{"icon":"faBusAlt","aliases":["faBusAlt"]},{"icon":"faBusSimple","aliases":["faBusAlt"]},{"icon":"faBusinessTime","aliases":["faBriefcaseClock"]},{"icon":"faC","aliases":[]},{"icon":"faCab","aliases":["faCab"]},{"icon":"faCableCar","aliases":["faTram"]},{"icon":"faCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeCandles","aliases":["faBirthdayCake","faCake"]},{"icon":"faCalculator","aliases":[]},{"icon":"faCalendar","aliases":[]},{"icon":"faCalendarAlt","aliases":["faCalendarAlt"]},{"icon":"faCalendarCheck","aliases":[]},{"icon":"faCalendarDay","aliases":[]},{"icon":"faCalendarDays","aliases":["faCalendarAlt"]},{"icon":"faCalendarMinus","aliases":[]},{"icon":"faCalendarPlus","aliases":[]},{"icon":"faCalendarTimes","aliases":["faCalendarTimes"]},{"icon":"faCalendarWeek","aliases":[]},{"icon":"faCalendarXmark","aliases":["faCalendarTimes"]},{"icon":"faCamera","aliases":["faCameraAlt"]},{"icon":"faCameraAlt","aliases":["faCameraAlt"]},{"icon":"faCameraRetro","aliases":[]},{"icon":"faCameraRotate","aliases":[]},{"icon":"faCampground","aliases":[]},{"icon":"faCancel","aliases":["faCancel"]},{"icon":"faCandyCane","aliases":[]},{"icon":"faCannabis","aliases":[]},{"icon":"faCapsules","aliases":[]},{"icon":"faCar","aliases":["faAutomobile"]},{"icon":"faCarAlt","aliases":["faCarAlt"]},{"icon":"faCarBattery","aliases":["faBatteryCar"]},{"icon":"faCarBurst","aliases":["faCarCrash"]},{"icon":"faCarCrash","aliases":["faCarCrash"]},{"icon":"faCarOn","aliases":[]},{"icon":"faCarRear","aliases":["faCarAlt"]},{"icon":"faCarSide","aliases":[]},{"icon":"faCarTunnel","aliases":[]},{"icon":"faCaravan","aliases":[]},{"icon":"faCaretDown","aliases":[]},{"icon":"faCaretLeft","aliases":[]},{"icon":"faCaretRight","aliases":[]},{"icon":"faCaretSquareDown","aliases":["faCaretSquareDown"]},{"icon":"faCaretSquareLeft","aliases":["faCaretSquareLeft"]},{"icon":"faCaretSquareRight","aliases":["faCaretSquareRight"]},{"icon":"faCaretSquareUp","aliases":["faCaretSquareUp"]},{"icon":"faCaretUp","aliases":[]},{"icon":"faCarriageBaby","aliases":["faCarriageBaby"]},{"icon":"faCarrot","aliases":[]},{"icon":"faCartArrowDown","aliases":[]},{"icon":"faCartFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faCartFlatbedSuitcase","aliases":["faLuggageCart"]},{"icon":"faCartPlus","aliases":[]},{"icon":"faCartShopping","aliases":["faShoppingCart"]},{"icon":"faCashRegister","aliases":[]},{"icon":"faCat","aliases":[]},{"icon":"faCediSign","aliases":[]},{"icon":"faCentSign","aliases":[]},{"icon":"faCertificate","aliases":[]},{"icon":"faChain","aliases":["faChain"]},{"icon":"faChainBroken","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChainSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChair","aliases":[]},{"icon":"faChalkboard","aliases":["faBlackboard"]},{"icon":"faChalkboardTeacher","aliases":["faChalkboardTeacher"]},{"icon":"faChalkboardUser","aliases":["faChalkboardTeacher"]},{"icon":"faChampagneGlasses","aliases":["faGlassCheers"]},{"icon":"faChargingStation","aliases":[]},{"icon":"faChartArea","aliases":["faAreaChart"]},{"icon":"faChartBar","aliases":["faBarChart"]},{"icon":"faChartColumn","aliases":[]},{"icon":"faChartDiagram","aliases":[]},{"icon":"faChartGantt","aliases":[]},{"icon":"faChartLine","aliases":["faLineChart"]},{"icon":"faChartPie","aliases":["faPieChart"]},{"icon":"faChartSimple","aliases":[]},{"icon":"faCheck","aliases":[]},{"icon":"faCheckCircle","aliases":["faCheckCircle"]},{"icon":"faCheckDouble","aliases":[]},{"icon":"faCheckSquare","aliases":["faCheckSquare"]},{"icon":"faCheckToSlot","aliases":["faVoteYea"]},{"icon":"faCheese","aliases":[]},{"icon":"faChess","aliases":[]},{"icon":"faChessBishop","aliases":[]},{"icon":"faChessBoard","aliases":[]},{"icon":"faChessKing","aliases":[]},{"icon":"faChessKnight","aliases":[]},{"icon":"faChessPawn","aliases":[]},{"icon":"faChessQueen","aliases":[]},{"icon":"faChessRook","aliases":[]},{"icon":"faChevronCircleDown","aliases":["faChevronCircleDown"]},{"icon":"faChevronCircleLeft","aliases":["faChevronCircleLeft"]},{"icon":"faChevronCircleRight","aliases":["faChevronCircleRight"]},{"icon":"faChevronCircleUp","aliases":["faChevronCircleUp"]},{"icon":"faChevronDown","aliases":[]},{"icon":"faChevronLeft","aliases":[]},{"icon":"faChevronRight","aliases":[]},{"icon":"faChevronUp","aliases":[]},{"icon":"faChild","aliases":[]},{"icon":"faChildCombatant","aliases":["faChildRifle"]},{"icon":"faChildDress","aliases":[]},{"icon":"faChildReaching","aliases":[]},{"icon":"faChildRifle","aliases":["faChildRifle"]},{"icon":"faChildren","aliases":[]},{"icon":"faChurch","aliases":[]},{"icon":"faCircle","aliases":[]},{"icon":"faCircleArrowDown","aliases":["faArrowCircleDown"]},{"icon":"faCircleArrowLeft","aliases":["faArrowCircleLeft"]},{"icon":"faCircleArrowRight","aliases":["faArrowCircleRight"]},{"icon":"faCircleArrowUp","aliases":["faArrowCircleUp"]},{"icon":"faCircleCheck","aliases":["faCheckCircle"]},{"icon":"faCircleChevronDown","aliases":["faChevronCircleDown"]},{"icon":"faCircleChevronLeft","aliases":["faChevronCircleLeft"]},{"icon":"faCircleChevronRight","aliases":["faChevronCircleRight"]},{"icon":"faCircleChevronUp","aliases":["faChevronCircleUp"]},{"icon":"faCircleDollarToSlot","aliases":["faDonate"]},{"icon":"faCircleDot","aliases":["faDotCircle"]},{"icon":"faCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faCircleExclamation","aliases":["faExclamationCircle"]},{"icon":"faCircleH","aliases":["faHospitalSymbol"]},{"icon":"faCircleHalfStroke","aliases":["faAdjust"]},{"icon":"faCircleInfo","aliases":["faInfoCircle"]},{"icon":"faCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faCircleMinus","aliases":["faMinusCircle"]},{"icon":"faCircleNodes","aliases":[]},{"icon":"faCircleNotch","aliases":[]},{"icon":"faCirclePause","aliases":["faPauseCircle"]},{"icon":"faCirclePlay","aliases":["faPlayCircle"]},{"icon":"faCirclePlus","aliases":["faPlusCircle"]},{"icon":"faCircleQuestion","aliases":["faQuestionCircle"]},{"icon":"faCircleRadiation","aliases":["faRadiationAlt"]},{"icon":"faCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faCircleStop","aliases":["faStopCircle"]},{"icon":"faCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faCircleUser","aliases":["faUserCircle"]},{"icon":"faCircleXmark","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faCity","aliases":[]},{"icon":"faClapperboard","aliases":[]},{"icon":"faClinicMedical","aliases":["faClinicMedical"]},{"icon":"faClipboard","aliases":[]},{"icon":"faClipboardCheck","aliases":[]},{"icon":"faClipboardList","aliases":[]},{"icon":"faClipboardQuestion","aliases":[]},{"icon":"faClipboardUser","aliases":[]},{"icon":"faClock","aliases":["faClockFour"]},{"icon":"faClockFour","aliases":["faClockFour"]},{"icon":"faClockRotateLeft","aliases":["faHistory"]},{"icon":"faClone","aliases":[]},{"icon":"faClose","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faClosedCaptioning","aliases":[]},{"icon":"faCloud","aliases":[]},{"icon":"faCloudArrowDown","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudArrowUp","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudBolt","aliases":["faThunderstorm"]},{"icon":"faCloudDownload","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDownloadAlt","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudMeatball","aliases":[]},{"icon":"faCloudMoon","aliases":[]},{"icon":"faCloudMoonRain","aliases":[]},{"icon":"faCloudRain","aliases":[]},{"icon":"faCloudShowersHeavy","aliases":[]},{"icon":"faCloudShowersWater","aliases":[]},{"icon":"faCloudSun","aliases":[]},{"icon":"faCloudSunRain","aliases":[]},{"icon":"faCloudUpload","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudUploadAlt","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faClover","aliases":[]},{"icon":"faCny","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faCocktail","aliases":["faCocktail"]},{"icon":"faCode","aliases":[]},{"icon":"faCodeBranch","aliases":[]},{"icon":"faCodeCommit","aliases":[]},{"icon":"faCodeCompare","aliases":[]},{"icon":"faCodeFork","aliases":[]},{"icon":"faCodeMerge","aliases":[]},{"icon":"faCodePullRequest","aliases":[]},{"icon":"faCoffee","aliases":["faCoffee"]},{"icon":"faCog","aliases":["faCog"]},{"icon":"faCogs","aliases":["faCogs"]},{"icon":"faCoins","aliases":[]},{"icon":"faColonSign","aliases":[]},{"icon":"faColumns","aliases":["faColumns"]},{"icon":"faComment","aliases":[]},{"icon":"faCommentAlt","aliases":["faCommentAlt"]},{"icon":"faCommentDollar","aliases":[]},{"icon":"faCommentDots","aliases":["faCommenting"]},{"icon":"faCommentMedical","aliases":[]},{"icon":"faCommentNodes","aliases":[]},{"icon":"faCommentSlash","aliases":[]},{"icon":"faCommentSms","aliases":["faSms"]},{"icon":"faCommenting","aliases":["faCommenting"]},{"icon":"faComments","aliases":[]},{"icon":"faCommentsDollar","aliases":[]},{"icon":"faCompactDisc","aliases":[]},{"icon":"faCompass","aliases":[]},{"icon":"faCompassDrafting","aliases":["faDraftingCompass"]},{"icon":"faCompress","aliases":[]},{"icon":"faCompressAlt","aliases":["faCompressAlt"]},{"icon":"faCompressArrowsAlt","aliases":["faCompressArrowsAlt"]},{"icon":"faComputer","aliases":[]},{"icon":"faComputerMouse","aliases":["faMouse"]},{"icon":"faConciergeBell","aliases":["faConciergeBell"]},{"icon":"faContactBook","aliases":["faContactBook"]},{"icon":"faContactCard","aliases":["faContactCard","faVcard"]},{"icon":"faCookie","aliases":[]},{"icon":"faCookieBite","aliases":[]},{"icon":"faCopy","aliases":[]},{"icon":"faCopyright","aliases":[]},{"icon":"faCouch","aliases":[]},{"icon":"faCow","aliases":[]},{"icon":"faCreditCard","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardAlt","aliases":["faCreditCardAlt"]},{"icon":"faCrop","aliases":[]},{"icon":"faCropAlt","aliases":["faCropAlt"]},{"icon":"faCropSimple","aliases":["faCropAlt"]},{"icon":"faCross","aliases":[]},{"icon":"faCrosshairs","aliases":[]},{"icon":"faCrow","aliases":[]},{"icon":"faCrown","aliases":[]},{"icon":"faCrutch","aliases":[]},{"icon":"faCruzeiroSign","aliases":[]},{"icon":"faCube","aliases":[]},{"icon":"faCubes","aliases":[]},{"icon":"faCubesStacked","aliases":[]},{"icon":"faCut","aliases":["faCut"]},{"icon":"faCutlery","aliases":["faCutlery"]},{"icon":"faD","aliases":[]},{"icon":"faDashboard","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faDatabase","aliases":[]},{"icon":"faDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDeafness","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDedent","aliases":["faDedent"]},{"icon":"faDeleteLeft","aliases":["faBackspace"]},{"icon":"faDemocrat","aliases":[]},{"icon":"faDesktop","aliases":["faDesktopAlt"]},{"icon":"faDesktopAlt","aliases":["faDesktopAlt"]},{"icon":"faDharmachakra","aliases":[]},{"icon":"faDiagnoses","aliases":["faDiagnoses"]},{"icon":"faDiagramNext","aliases":[]},{"icon":"faDiagramPredecessor","aliases":[]},{"icon":"faDiagramProject","aliases":["faProjectDiagram"]},{"icon":"faDiagramSuccessor","aliases":[]},{"icon":"faDiamond","aliases":[]},{"icon":"faDiamondTurnRight","aliases":["faDirections"]},{"icon":"faDice","aliases":[]},{"icon":"faDiceD20","aliases":[]},{"icon":"faDiceD6","aliases":[]},{"icon":"faDiceFive","aliases":[]},{"icon":"faDiceFour","aliases":[]},{"icon":"faDiceOne","aliases":[]},{"icon":"faDiceSix","aliases":[]},{"icon":"faDiceThree","aliases":[]},{"icon":"faDiceTwo","aliases":[]},{"icon":"faDigging","aliases":["faDigging"]},{"icon":"faDigitalTachograph","aliases":["faDigitalTachograph"]},{"icon":"faDirections","aliases":["faDirections"]},{"icon":"faDisease","aliases":[]},{"icon":"faDisplay","aliases":[]},{"icon":"faDivide","aliases":[]},{"icon":"faDizzy","aliases":["faDizzy"]},{"icon":"faDna","aliases":[]},{"icon":"faDog","aliases":[]},{"icon":"faDollar","aliases":["faDollar","faUsd"]},{"icon":"faDollarSign","aliases":["faDollar","faUsd"]},{"icon":"faDolly","aliases":["faDollyBox"]},{"icon":"faDollyBox","aliases":["faDollyBox"]},{"icon":"faDollyFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faDonate","aliases":["faDonate"]},{"icon":"faDongSign","aliases":[]},{"icon":"faDoorClosed","aliases":[]},{"icon":"faDoorOpen","aliases":[]},{"icon":"faDotCircle","aliases":["faDotCircle"]},{"icon":"faDove","aliases":[]},{"icon":"faDownLeftAndUpRightToCenter","aliases":["faCompressAlt"]},{"icon":"faDownLong","aliases":["faLongArrowAltDown"]},{"icon":"faDownload","aliases":[]},{"icon":"faDraftingCompass","aliases":["faDraftingCompass"]},{"icon":"faDragon","aliases":[]},{"icon":"faDrawPolygon","aliases":[]},{"icon":"faDriversLicense","aliases":["faDriversLicense"]},{"icon":"faDroplet","aliases":["faTint"]},{"icon":"faDropletSlash","aliases":["faTintSlash"]},{"icon":"faDrum","aliases":[]},{"icon":"faDrumSteelpan","aliases":[]},{"icon":"faDrumstickBite","aliases":[]},{"icon":"faDumbbell","aliases":[]},{"icon":"faDumpster","aliases":[]},{"icon":"faDumpsterFire","aliases":[]},{"icon":"faDungeon","aliases":[]},{"icon":"faE","aliases":[]},{"icon":"faEarDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faEarListen","aliases":["faAssistiveListeningSystems"]},{"icon":"faEarth","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAfrica","aliases":["faGlobeAfrica"]},{"icon":"faEarthAmerica","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAsia","aliases":["faGlobeAsia"]},{"icon":"faEarthEurope","aliases":["faGlobeEurope"]},{"icon":"faEarthOceania","aliases":["faGlobeOceania"]},{"icon":"faEdit","aliases":["faEdit"]},{"icon":"faEgg","aliases":[]},{"icon":"faEject","aliases":[]},{"icon":"faElevator","aliases":[]},{"icon":"faEllipsis","aliases":["faEllipsisH"]},{"icon":"faEllipsisH","aliases":["faEllipsisH"]},{"icon":"faEllipsisV","aliases":["faEllipsisV"]},{"icon":"faEllipsisVertical","aliases":["faEllipsisV"]},{"icon":"faEnvelope","aliases":[]},{"icon":"faEnvelopeCircleCheck","aliases":[]},{"icon":"faEnvelopeOpen","aliases":[]},{"icon":"faEnvelopeOpenText","aliases":[]},{"icon":"faEnvelopeSquare","aliases":["faEnvelopeSquare"]},{"icon":"faEnvelopesBulk","aliases":["faMailBulk"]},{"icon":"faEquals","aliases":[]},{"icon":"faEraser","aliases":[]},{"icon":"faEthernet","aliases":[]},{"icon":"faEur","aliases":["faEur","faEuro"]},{"icon":"faEuro","aliases":["faEur","faEuro"]},{"icon":"faEuroSign","aliases":["faEur","faEuro"]},{"icon":"faExchange","aliases":["faExchange"]},{"icon":"faExchangeAlt","aliases":["faExchangeAlt"]},{"icon":"faExclamation","aliases":[]},{"icon":"faExclamationCircle","aliases":["faExclamationCircle"]},{"icon":"faExclamationTriangle","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faExpand","aliases":[]},{"icon":"faExpandAlt","aliases":["faExpandAlt"]},{"icon":"faExpandArrowsAlt","aliases":["faExpandArrowsAlt"]},{"icon":"faExplosion","aliases":[]},{"icon":"faExternalLink","aliases":["faExternalLink"]},{"icon":"faExternalLinkAlt","aliases":["faExternalLinkAlt"]},{"icon":"faExternalLinkSquare","aliases":["faExternalLinkSquare"]},{"icon":"faExternalLinkSquareAlt","aliases":["faExternalLinkSquareAlt"]},{"icon":"faEye","aliases":[]},{"icon":"faEyeDropper","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperEmpty","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeLowVision","aliases":["faLowVision"]},{"icon":"faEyeSlash","aliases":[]},{"icon":"faF","aliases":[]},{"icon":"faFaceAngry","aliases":["faAngry"]},{"icon":"faFaceDizzy","aliases":["faDizzy"]},{"icon":"faFaceFlushed","aliases":["faFlushed"]},{"icon":"faFaceFrown","aliases":["faFrown"]},{"icon":"faFaceFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFaceGrimace","aliases":["faGrimace"]},{"icon":"faFaceGrin","aliases":["faGrin"]},{"icon":"faFaceGrinBeam","aliases":["faGrinBeam"]},{"icon":"faFaceGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faFaceGrinHearts","aliases":["faGrinHearts"]},{"icon":"faFaceGrinSquint","aliases":["faGrinSquint"]},{"icon":"faFaceGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faFaceGrinStars","aliases":["faGrinStars"]},{"icon":"faFaceGrinTears","aliases":["faGrinTears"]},{"icon":"faFaceGrinTongue","aliases":["faGrinTongue"]},{"icon":"faFaceGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faFaceGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faFaceGrinWide","aliases":["faGrinAlt"]},{"icon":"faFaceGrinWink","aliases":["faGrinWink"]},{"icon":"faFaceKiss","aliases":["faKiss"]},{"icon":"faFaceKissBeam","aliases":["faKissBeam"]},{"icon":"faFaceKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faFaceLaugh","aliases":["faLaugh"]},{"icon":"faFaceLaughBeam","aliases":["faLaughBeam"]},{"icon":"faFaceLaughSquint","aliases":["faLaughSquint"]},{"icon":"faFaceLaughWink","aliases":["faLaughWink"]},{"icon":"faFaceMeh","aliases":["faMeh"]},{"icon":"faFaceMehBlank","aliases":["faMehBlank"]},{"icon":"faFaceRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faFaceSadCry","aliases":["faSadCry"]},{"icon":"faFaceSadTear","aliases":["faSadTear"]},{"icon":"faFaceSmile","aliases":["faSmile"]},{"icon":"faFaceSmileBeam","aliases":["faSmileBeam"]},{"icon":"faFaceSmileWink","aliases":["faSmileWink"]},{"icon":"faFaceSurprise","aliases":["faSurprise"]},{"icon":"faFaceTired","aliases":["faTired"]},{"icon":"faFan","aliases":[]},{"icon":"faFastBackward","aliases":["faFastBackward"]},{"icon":"faFastForward","aliases":["faFastForward"]},{"icon":"faFaucet","aliases":[]},{"icon":"faFaucetDrip","aliases":[]},{"icon":"faFax","aliases":[]},{"icon":"faFeather","aliases":[]},{"icon":"faFeatherAlt","aliases":["faFeatherAlt"]},{"icon":"faFeatherPointed","aliases":["faFeatherAlt"]},{"icon":"faFeed","aliases":["faFeed"]},{"icon":"faFemale","aliases":["faFemale"]},{"icon":"faFerry","aliases":[]},{"icon":"faFighterJet","aliases":["faFighterJet"]},{"icon":"faFile","aliases":[]},{"icon":"faFileAlt","aliases":["faFileAlt","faFileText"]},{"icon":"faFileArchive","aliases":["faFileArchive"]},{"icon":"faFileArrowDown","aliases":["faFileDownload"]},{"icon":"faFileArrowUp","aliases":["faFileUpload"]},{"icon":"faFileAudio","aliases":[]},{"icon":"faFileCircleCheck","aliases":[]},{"icon":"faFileCircleExclamation","aliases":[]},{"icon":"faFileCircleMinus","aliases":[]},{"icon":"faFileCirclePlus","aliases":[]},{"icon":"faFileCircleQuestion","aliases":[]},{"icon":"faFileCircleXmark","aliases":[]},{"icon":"faFileClipboard","aliases":["faFileClipboard"]},{"icon":"faFileCode","aliases":[]},{"icon":"faFileContract","aliases":[]},{"icon":"faFileCsv","aliases":[]},{"icon":"faFileDownload","aliases":["faFileDownload"]},{"icon":"faFileEdit","aliases":["faFileEdit"]},{"icon":"faFileExcel","aliases":[]},{"icon":"faFileExport","aliases":["faArrowRightFromFile"]},{"icon":"faFileFragment","aliases":[]},{"icon":"faFileHalfDashed","aliases":[]},{"icon":"faFileImage","aliases":[]},{"icon":"faFileImport","aliases":["faArrowRightToFile"]},{"icon":"faFileInvoice","aliases":[]},{"icon":"faFileInvoiceDollar","aliases":[]},{"icon":"faFileLines","aliases":["faFileAlt","faFileText"]},{"icon":"faFileMedical","aliases":[]},{"icon":"faFileMedicalAlt","aliases":["faFileMedicalAlt"]},{"icon":"faFilePdf","aliases":[]},{"icon":"faFilePen","aliases":["faFileEdit"]},{"icon":"faFilePowerpoint","aliases":[]},{"icon":"faFilePrescription","aliases":[]},{"icon":"faFileShield","aliases":[]},{"icon":"faFileSignature","aliases":[]},{"icon":"faFileText","aliases":["faFileAlt","faFileText"]},{"icon":"faFileUpload","aliases":["faFileUpload"]},{"icon":"faFileVideo","aliases":[]},{"icon":"faFileWaveform","aliases":["faFileMedicalAlt"]},{"icon":"faFileWord","aliases":[]},{"icon":"faFileZipper","aliases":["faFileArchive"]},{"icon":"faFill","aliases":[]},{"icon":"faFillDrip","aliases":[]},{"icon":"faFilm","aliases":[]},{"icon":"faFilter","aliases":[]},{"icon":"faFilterCircleDollar","aliases":["faFunnelDollar"]},{"icon":"faFilterCircleXmark","aliases":[]},{"icon":"faFingerprint","aliases":[]},{"icon":"faFire","aliases":[]},{"icon":"faFireAlt","aliases":["faFireAlt"]},{"icon":"faFireBurner","aliases":[]},{"icon":"faFireExtinguisher","aliases":[]},{"icon":"faFireFlameCurved","aliases":["faFireAlt"]},{"icon":"faFireFlameSimple","aliases":["faBurn"]},{"icon":"faFirstAid","aliases":["faFirstAid"]},{"icon":"faFish","aliases":[]},{"icon":"faFishFins","aliases":[]},{"icon":"faFistRaised","aliases":["faFistRaised"]},{"icon":"faFlag","aliases":[]},{"icon":"faFlagCheckered","aliases":[]},{"icon":"faFlagUsa","aliases":[]},{"icon":"faFlask","aliases":[]},{"icon":"faFlaskVial","aliases":[]},{"icon":"faFloppyDisk","aliases":["faSave"]},{"icon":"faFlorinSign","aliases":[]},{"icon":"faFlushed","aliases":["faFlushed"]},{"icon":"faFolder","aliases":["faFolderBlank"]},{"icon":"faFolderBlank","aliases":["faFolderBlank"]},{"icon":"faFolderClosed","aliases":[]},{"icon":"faFolderMinus","aliases":[]},{"icon":"faFolderOpen","aliases":[]},{"icon":"faFolderPlus","aliases":[]},{"icon":"faFolderTree","aliases":[]},{"icon":"faFont","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFootball","aliases":["faFootballBall"]},{"icon":"faFootballBall","aliases":["faFootballBall"]},{"icon":"faForward","aliases":[]},{"icon":"faForwardFast","aliases":["faFastForward"]},{"icon":"faForwardStep","aliases":["faStepForward"]},{"icon":"faFrancSign","aliases":[]},{"icon":"faFrog","aliases":[]},{"icon":"faFrown","aliases":["faFrown"]},{"icon":"faFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFunnelDollar","aliases":["faFunnelDollar"]},{"icon":"faFutbol","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faFutbolBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faG","aliases":[]},{"icon":"faGamepad","aliases":[]},{"icon":"faGasPump","aliases":[]},{"icon":"faGauge","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeHigh","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faGaugeMed","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeSimple","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleHigh","aliases":["faTachometer","faTachometerFast"]},{"icon":"faGaugeSimpleMed","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGavel","aliases":["faLegal"]},{"icon":"faGbp","aliases":["faGbp","faPoundSign"]},{"icon":"faGear","aliases":["faCog"]},{"icon":"faGears","aliases":["faCogs"]},{"icon":"faGem","aliases":[]},{"icon":"faGenderless","aliases":[]},{"icon":"faGhost","aliases":[]},{"icon":"faGift","aliases":[]},{"icon":"faGifts","aliases":[]},{"icon":"faGlassCheers","aliases":["faGlassCheers"]},{"icon":"faGlassMartini","aliases":["faGlassMartini"]},{"icon":"faGlassMartiniAlt","aliases":["faGlassMartiniAlt"]},{"icon":"faGlassWater","aliases":[]},{"icon":"faGlassWaterDroplet","aliases":[]},{"icon":"faGlassWhiskey","aliases":["faGlassWhiskey"]},{"icon":"faGlasses","aliases":[]},{"icon":"faGlobe","aliases":[]},{"icon":"faGlobeAfrica","aliases":["faGlobeAfrica"]},{"icon":"faGlobeAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faGlobeAsia","aliases":["faGlobeAsia"]},{"icon":"faGlobeEurope","aliases":["faGlobeEurope"]},{"icon":"faGlobeOceania","aliases":["faGlobeOceania"]},{"icon":"faGolfBall","aliases":["faGolfBall"]},{"icon":"faGolfBallTee","aliases":["faGolfBall"]},{"icon":"faGopuram","aliases":[]},{"icon":"faGraduationCap","aliases":["faMortarBoard"]},{"icon":"faGreaterThan","aliases":[]},{"icon":"faGreaterThanEqual","aliases":[]},{"icon":"faGrimace","aliases":["faGrimace"]},{"icon":"faGrin","aliases":["faGrin"]},{"icon":"faGrinAlt","aliases":["faGrinAlt"]},{"icon":"faGrinBeam","aliases":["faGrinBeam"]},{"icon":"faGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faGrinHearts","aliases":["faGrinHearts"]},{"icon":"faGrinSquint","aliases":["faGrinSquint"]},{"icon":"faGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faGrinStars","aliases":["faGrinStars"]},{"icon":"faGrinTears","aliases":["faGrinTears"]},{"icon":"faGrinTongue","aliases":["faGrinTongue"]},{"icon":"faGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faGrinWink","aliases":["faGrinWink"]},{"icon":"faGrip","aliases":["faGripHorizontal"]},{"icon":"faGripHorizontal","aliases":["faGripHorizontal"]},{"icon":"faGripLines","aliases":[]},{"icon":"faGripLinesVertical","aliases":[]},{"icon":"faGripVertical","aliases":[]},{"icon":"faGroupArrowsRotate","aliases":[]},{"icon":"faGuaraniSign","aliases":[]},{"icon":"faGuitar","aliases":[]},{"icon":"faGun","aliases":[]},{"icon":"faH","aliases":[]},{"icon":"faHSquare","aliases":["faHSquare"]},{"icon":"faHamburger","aliases":["faHamburger"]},{"icon":"faHammer","aliases":[]},{"icon":"faHamsa","aliases":[]},{"icon":"faHand","aliases":["faHandPaper"]},{"icon":"faHandBackFist","aliases":["faHandRock"]},{"icon":"faHandDots","aliases":["faAllergies"]},{"icon":"faHandFist","aliases":["faFistRaised"]},{"icon":"faHandHolding","aliases":[]},{"icon":"faHandHoldingDollar","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingDroplet","aliases":["faHandHoldingWater"]},{"icon":"faHandHoldingHand","aliases":[]},{"icon":"faHandHoldingHeart","aliases":[]},{"icon":"faHandHoldingMedical","aliases":[]},{"icon":"faHandHoldingUsd","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingWater","aliases":["faHandHoldingWater"]},{"icon":"faHandLizard","aliases":[]},{"icon":"faHandMiddleFinger","aliases":[]},{"icon":"faHandPaper","aliases":["faHandPaper"]},{"icon":"faHandPeace","aliases":[]},{"icon":"faHandPointDown","aliases":[]},{"icon":"faHandPointLeft","aliases":[]},{"icon":"faHandPointRight","aliases":[]},{"icon":"faHandPointUp","aliases":[]},{"icon":"faHandPointer","aliases":[]},{"icon":"faHandRock","aliases":["faHandRock"]},{"icon":"faHandScissors","aliases":[]},{"icon":"faHandSparkles","aliases":[]},{"icon":"faHandSpock","aliases":[]},{"icon":"faHandcuffs","aliases":[]},{"icon":"faHands","aliases":["faSignLanguage","faSigning"]},{"icon":"faHandsAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsBound","aliases":[]},{"icon":"faHandsBubbles","aliases":["faHandsWash"]},{"icon":"faHandsClapping","aliases":[]},{"icon":"faHandsHelping","aliases":["faHandsHelping"]},{"icon":"faHandsHolding","aliases":[]},{"icon":"faHandsHoldingChild","aliases":[]},{"icon":"faHandsHoldingCircle","aliases":[]},{"icon":"faHandsPraying","aliases":["faPrayingHands"]},{"icon":"faHandsWash","aliases":["faHandsWash"]},{"icon":"faHandshake","aliases":[]},{"icon":"faHandshakeAlt","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeAltSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeAngle","aliases":["faHandsHelping"]},{"icon":"faHandshakeSimple","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeSimpleSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeSlash","aliases":[]},{"icon":"faHanukiah","aliases":[]},{"icon":"faHardDrive","aliases":["faHdd"]},{"icon":"faHardHat","aliases":["faHardHat","faHatHard"]},{"icon":"faHardOfHearing","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faHashtag","aliases":[]},{"icon":"faHatCowboy","aliases":[]},{"icon":"faHatCowboySide","aliases":[]},{"icon":"faHatHard","aliases":["faHardHat","faHatHard"]},{"icon":"faHatWizard","aliases":[]},{"icon":"faHaykal","aliases":["faHaykal"]},{"icon":"faHdd","aliases":["faHdd"]},{"icon":"faHeadSideCough","aliases":[]},{"icon":"faHeadSideCoughSlash","aliases":[]},{"icon":"faHeadSideMask","aliases":[]},{"icon":"faHeadSideVirus","aliases":[]},{"icon":"faHeader","aliases":["faHeader"]},{"icon":"faHeading","aliases":["faHeader"]},{"icon":"faHeadphones","aliases":[]},{"icon":"faHeadphonesAlt","aliases":["faHeadphonesAlt"]},{"icon":"faHeadphonesSimple","aliases":["faHeadphonesAlt"]},{"icon":"faHeadset","aliases":[]},{"icon":"faHeart","aliases":[]},{"icon":"faHeartBroken","aliases":["faHeartBroken"]},{"icon":"faHeartCircleBolt","aliases":[]},{"icon":"faHeartCircleCheck","aliases":[]},{"icon":"faHeartCircleExclamation","aliases":[]},{"icon":"faHeartCircleMinus","aliases":[]},{"icon":"faHeartCirclePlus","aliases":[]},{"icon":"faHeartCircleXmark","aliases":[]},{"icon":"faHeartCrack","aliases":["faHeartBroken"]},{"icon":"faHeartMusicCameraBolt","aliases":["faHeartMusicCameraBolt"]},{"icon":"faHeartPulse","aliases":["faHeartbeat"]},{"icon":"faHeartbeat","aliases":["faHeartbeat"]},{"icon":"faHelicopter","aliases":[]},{"icon":"faHelicopterSymbol","aliases":[]},{"icon":"faHelmetSafety","aliases":["faHardHat","faHatHard"]},{"icon":"faHelmetUn","aliases":[]},{"icon":"faHexagonNodes","aliases":[]},{"icon":"faHexagonNodesBolt","aliases":[]},{"icon":"faHighlighter","aliases":[]},{"icon":"faHiking","aliases":["faHiking"]},{"icon":"faHillAvalanche","aliases":[]},{"icon":"faHillRockslide","aliases":[]},{"icon":"faHippo","aliases":[]},{"icon":"faHistory","aliases":["faHistory"]},{"icon":"faHockeyPuck","aliases":[]},{"icon":"faHollyBerry","aliases":[]},{"icon":"faHome","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeLg","aliases":["faHomeLg"]},{"icon":"faHomeLgAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeUser","aliases":["faHomeUser"]},{"icon":"faHorse","aliases":[]},{"icon":"faHorseHead","aliases":[]},{"icon":"faHospital","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalAlt","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalSymbol","aliases":["faHospitalSymbol"]},{"icon":"faHospitalUser","aliases":[]},{"icon":"faHospitalWide","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHotTub","aliases":["faHotTub"]},{"icon":"faHotTubPerson","aliases":["faHotTub"]},{"icon":"faHotdog","aliases":[]},{"icon":"faHotel","aliases":[]},{"icon":"faHourglass","aliases":["faHourglassEmpty"]},{"icon":"faHourglass1","aliases":["faHourglass1"]},{"icon":"faHourglass2","aliases":["faHourglass2"]},{"icon":"faHourglass3","aliases":["faHourglass3"]},{"icon":"faHourglassEmpty","aliases":["faHourglassEmpty"]},{"icon":"faHourglassEnd","aliases":["faHourglass3"]},{"icon":"faHourglassHalf","aliases":["faHourglass2"]},{"icon":"faHourglassStart","aliases":["faHourglass1"]},{"icon":"faHouse","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHouseChimney","aliases":["faHomeLg"]},{"icon":"faHouseChimneyCrack","aliases":["faHouseDamage"]},{"icon":"faHouseChimneyMedical","aliases":["faClinicMedical"]},{"icon":"faHouseChimneyUser","aliases":[]},{"icon":"faHouseChimneyWindow","aliases":[]},{"icon":"faHouseCircleCheck","aliases":[]},{"icon":"faHouseCircleExclamation","aliases":[]},{"icon":"faHouseCircleXmark","aliases":[]},{"icon":"faHouseCrack","aliases":[]},{"icon":"faHouseDamage","aliases":["faHouseDamage"]},{"icon":"faHouseFire","aliases":[]},{"icon":"faHouseFlag","aliases":[]},{"icon":"faHouseFloodWater","aliases":[]},{"icon":"faHouseFloodWaterCircleArrowRight","aliases":[]},{"icon":"faHouseLaptop","aliases":["faLaptopHouse"]},{"icon":"faHouseLock","aliases":[]},{"icon":"faHouseMedical","aliases":[]},{"icon":"faHouseMedicalCircleCheck","aliases":[]},{"icon":"faHouseMedicalCircleExclamation","aliases":[]},{"icon":"faHouseMedicalCircleXmark","aliases":[]},{"icon":"faHouseMedicalFlag","aliases":[]},{"icon":"faHouseSignal","aliases":[]},{"icon":"faHouseTsunami","aliases":[]},{"icon":"faHouseUser","aliases":["faHomeUser"]},{"icon":"faHryvnia","aliases":["faHryvnia"]},{"icon":"faHryvniaSign","aliases":["faHryvnia"]},{"icon":"faHurricane","aliases":[]},{"icon":"faI","aliases":[]},{"icon":"faICursor","aliases":[]},{"icon":"faIceCream","aliases":[]},{"icon":"faIcicles","aliases":[]},{"icon":"faIcons","aliases":["faHeartMusicCameraBolt"]},{"icon":"faIdBadge","aliases":[]},{"icon":"faIdCard","aliases":["faDriversLicense"]},{"icon":"faIdCardAlt","aliases":["faIdCardAlt"]},{"icon":"faIdCardClip","aliases":["faIdCardAlt"]},{"icon":"faIgloo","aliases":[]},{"icon":"faIls","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faImage","aliases":[]},{"icon":"faImagePortrait","aliases":["faPortrait"]},{"icon":"faImages","aliases":[]},{"icon":"faInbox","aliases":[]},{"icon":"faIndent","aliases":[]},{"icon":"faIndianRupee","aliases":["faIndianRupee","faInr"]},{"icon":"faIndianRupeeSign","aliases":["faIndianRupee","faInr"]},{"icon":"faIndustry","aliases":[]},{"icon":"faInfinity","aliases":[]},{"icon":"faInfo","aliases":[]},{"icon":"faInfoCircle","aliases":["faInfoCircle"]},{"icon":"faInr","aliases":["faIndianRupee","faInr"]},{"icon":"faInstitution","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faItalic","aliases":[]},{"icon":"faJ","aliases":[]},{"icon":"faJar","aliases":[]},{"icon":"faJarWheat","aliases":[]},{"icon":"faJedi","aliases":[]},{"icon":"faJetFighter","aliases":["faFighterJet"]},{"icon":"faJetFighterUp","aliases":[]},{"icon":"faJoint","aliases":[]},{"icon":"faJournalWhills","aliases":["faJournalWhills"]},{"icon":"faJpy","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faJugDetergent","aliases":[]},{"icon":"faK","aliases":[]},{"icon":"faKaaba","aliases":[]},{"icon":"faKey","aliases":[]},{"icon":"faKeyboard","aliases":[]},{"icon":"faKhanda","aliases":[]},{"icon":"faKipSign","aliases":[]},{"icon":"faKiss","aliases":["faKiss"]},{"icon":"faKissBeam","aliases":["faKissBeam"]},{"icon":"faKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faKitMedical","aliases":["faFirstAid"]},{"icon":"faKitchenSet","aliases":[]},{"icon":"faKiwiBird","aliases":[]},{"icon":"faKrw","aliases":["faKrw","faWon"]},{"icon":"faL","aliases":[]},{"icon":"faLadderWater","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faLandMineOn","aliases":[]},{"icon":"faLandmark","aliases":[]},{"icon":"faLandmarkAlt","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkDome","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkFlag","aliases":[]},{"icon":"faLanguage","aliases":[]},{"icon":"faLaptop","aliases":[]},{"icon":"faLaptopCode","aliases":[]},{"icon":"faLaptopFile","aliases":[]},{"icon":"faLaptopHouse","aliases":["faLaptopHouse"]},{"icon":"faLaptopMedical","aliases":[]},{"icon":"faLariSign","aliases":[]},{"icon":"faLaugh","aliases":["faLaugh"]},{"icon":"faLaughBeam","aliases":["faLaughBeam"]},{"icon":"faLaughSquint","aliases":["faLaughSquint"]},{"icon":"faLaughWink","aliases":["faLaughWink"]},{"icon":"faLayerGroup","aliases":[]},{"icon":"faLeaf","aliases":[]},{"icon":"faLeftLong","aliases":["faLongArrowAltLeft"]},{"icon":"faLeftRight","aliases":["faArrowsAltH"]},{"icon":"faLegal","aliases":["faLegal"]},{"icon":"faLemon","aliases":[]},{"icon":"faLessThan","aliases":[]},{"icon":"faLessThanEqual","aliases":[]},{"icon":"faLevelDown","aliases":["faLevelDown"]},{"icon":"faLevelDownAlt","aliases":["faLevelDownAlt"]},{"icon":"faLevelUp","aliases":["faLevelUp"]},{"icon":"faLevelUpAlt","aliases":["faLevelUpAlt"]},{"icon":"faLifeRing","aliases":[]},{"icon":"faLightbulb","aliases":[]},{"icon":"faLineChart","aliases":["faLineChart"]},{"icon":"faLinesLeaning","aliases":[]},{"icon":"faLink","aliases":["faChain"]},{"icon":"faLinkSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faLiraSign","aliases":[]},{"icon":"faList","aliases":["faListSquares"]},{"icon":"faList12","aliases":["faList12","faListNumeric"]},{"icon":"faListAlt","aliases":["faListAlt"]},{"icon":"faListCheck","aliases":["faTasks"]},{"icon":"faListDots","aliases":["faListDots"]},{"icon":"faListNumeric","aliases":["faList12","faListNumeric"]},{"icon":"faListOl","aliases":["faList12","faListNumeric"]},{"icon":"faListSquares","aliases":["faListSquares"]},{"icon":"faListUl","aliases":["faListDots"]},{"icon":"faLitecoinSign","aliases":[]},{"icon":"faLocation","aliases":["faLocation"]},{"icon":"faLocationArrow","aliases":[]},{"icon":"faLocationCrosshairs","aliases":["faLocation"]},{"icon":"faLocationDot","aliases":["faMapMarkerAlt"]},{"icon":"faLocationPin","aliases":["faMapMarker"]},{"icon":"faLocationPinLock","aliases":[]},{"icon":"faLock","aliases":[]},{"icon":"faLockOpen","aliases":[]},{"icon":"faLocust","aliases":[]},{"icon":"faLongArrowAltDown","aliases":["faLongArrowAltDown"]},{"icon":"faLongArrowAltLeft","aliases":["faLongArrowAltLeft"]},{"icon":"faLongArrowAltRight","aliases":["faLongArrowAltRight"]},{"icon":"faLongArrowAltUp","aliases":["faLongArrowAltUp"]},{"icon":"faLongArrowDown","aliases":["faLongArrowDown"]},{"icon":"faLongArrowLeft","aliases":["faLongArrowLeft"]},{"icon":"faLongArrowRight","aliases":["faLongArrowRight"]},{"icon":"faLongArrowUp","aliases":["faLongArrowUp"]},{"icon":"faLowVision","aliases":["faLowVision"]},{"icon":"faLuggageCart","aliases":["faLuggageCart"]},{"icon":"faLungs","aliases":[]},{"icon":"faLungsVirus","aliases":[]},{"icon":"faM","aliases":[]},{"icon":"faMagic","aliases":["faMagic"]},{"icon":"faMagicWandSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faMagnet","aliases":[]},{"icon":"faMagnifyingGlass","aliases":["faSearch"]},{"icon":"faMagnifyingGlassArrowRight","aliases":[]},{"icon":"faMagnifyingGlassChart","aliases":[]},{"icon":"faMagnifyingGlassDollar","aliases":["faSearchDollar"]},{"icon":"faMagnifyingGlassLocation","aliases":["faSearchLocation"]},{"icon":"faMagnifyingGlassMinus","aliases":["faSearchMinus"]},{"icon":"faMagnifyingGlassPlus","aliases":["faSearchPlus"]},{"icon":"faMailBulk","aliases":["faMailBulk"]},{"icon":"faMailForward","aliases":["faMailForward"]},{"icon":"faMailReply","aliases":["faMailReply"]},{"icon":"faMailReplyAll","aliases":["faMailReplyAll"]},{"icon":"faMale","aliases":["faMale"]},{"icon":"faManatSign","aliases":[]},{"icon":"faMap","aliases":[]},{"icon":"faMapLocation","aliases":["faMapMarked"]},{"icon":"faMapLocationDot","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarked","aliases":["faMapMarked"]},{"icon":"faMapMarkedAlt","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarker","aliases":["faMapMarker"]},{"icon":"faMapMarkerAlt","aliases":["faMapMarkerAlt"]},{"icon":"faMapPin","aliases":[]},{"icon":"faMapSigns","aliases":["faMapSigns"]},{"icon":"faMarker","aliases":[]},{"icon":"faMars","aliases":[]},{"icon":"faMarsAndVenus","aliases":[]},{"icon":"faMarsAndVenusBurst","aliases":[]},{"icon":"faMarsDouble","aliases":[]},{"icon":"faMarsStroke","aliases":[]},{"icon":"faMarsStrokeH","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeRight","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeUp","aliases":["faMarsStrokeV"]},{"icon":"faMarsStrokeV","aliases":["faMarsStrokeV"]},{"icon":"faMartiniGlass","aliases":["faGlassMartiniAlt"]},{"icon":"faMartiniGlassCitrus","aliases":["faCocktail"]},{"icon":"faMartiniGlassEmpty","aliases":["faGlassMartini"]},{"icon":"faMask","aliases":[]},{"icon":"faMaskFace","aliases":[]},{"icon":"faMaskVentilator","aliases":[]},{"icon":"faMasksTheater","aliases":["faTheaterMasks"]},{"icon":"faMattressPillow","aliases":[]},{"icon":"faMaximize","aliases":["faExpandArrowsAlt"]},{"icon":"faMedal","aliases":[]},{"icon":"faMedkit","aliases":["faMedkit"]},{"icon":"faMeh","aliases":["faMeh"]},{"icon":"faMehBlank","aliases":["faMehBlank"]},{"icon":"faMehRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faMemory","aliases":[]},{"icon":"faMenorah","aliases":[]},{"icon":"faMercury","aliases":[]},{"icon":"faMessage","aliases":["faCommentAlt"]},{"icon":"faMeteor","aliases":[]},{"icon":"faMicrochip","aliases":[]},{"icon":"faMicrophone","aliases":[]},{"icon":"faMicrophoneAlt","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneAltSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneLines","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneLinesSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneSlash","aliases":[]},{"icon":"faMicroscope","aliases":[]},{"icon":"faMillSign","aliases":[]},{"icon":"faMinimize","aliases":["faCompressArrowsAlt"]},{"icon":"faMinus","aliases":["faSubtract"]},{"icon":"faMinusCircle","aliases":["faMinusCircle"]},{"icon":"faMinusSquare","aliases":["faMinusSquare"]},{"icon":"faMitten","aliases":[]},{"icon":"faMobile","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAlt","aliases":["faMobileAlt"]},{"icon":"faMobileAndroid","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAndroidAlt","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileButton","aliases":[]},{"icon":"faMobilePhone","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileRetro","aliases":[]},{"icon":"faMobileScreen","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileScreenButton","aliases":["faMobileAlt"]},{"icon":"faMoneyBill","aliases":[]},{"icon":"faMoneyBill1","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBill1Wave","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillAlt","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBillTransfer","aliases":[]},{"icon":"faMoneyBillTrendUp","aliases":[]},{"icon":"faMoneyBillWave","aliases":[]},{"icon":"faMoneyBillWaveAlt","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillWheat","aliases":[]},{"icon":"faMoneyBills","aliases":[]},{"icon":"faMoneyCheck","aliases":[]},{"icon":"faMoneyCheckAlt","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollar","aliases":["faMoneyCheckAlt"]},{"icon":"faMonument","aliases":[]},{"icon":"faMoon","aliases":[]},{"icon":"faMortarBoard","aliases":["faMortarBoard"]},{"icon":"faMortarPestle","aliases":[]},{"icon":"faMosque","aliases":[]},{"icon":"faMosquito","aliases":[]},{"icon":"faMosquitoNet","aliases":[]},{"icon":"faMotorcycle","aliases":[]},{"icon":"faMound","aliases":[]},{"icon":"faMountain","aliases":[]},{"icon":"faMountainCity","aliases":[]},{"icon":"faMountainSun","aliases":[]},{"icon":"faMouse","aliases":["faMouse"]},{"icon":"faMousePointer","aliases":["faMousePointer"]},{"icon":"faMugHot","aliases":[]},{"icon":"faMugSaucer","aliases":["faCoffee"]},{"icon":"faMultiply","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faMuseum","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faMusic","aliases":[]},{"icon":"faN","aliases":[]},{"icon":"faNairaSign","aliases":[]},{"icon":"faNavicon","aliases":["faNavicon"]},{"icon":"faNetworkWired","aliases":[]},{"icon":"faNeuter","aliases":[]},{"icon":"faNewspaper","aliases":[]},{"icon":"faNotEqual","aliases":[]},{"icon":"faNotdef","aliases":[]},{"icon":"faNoteSticky","aliases":["faStickyNote"]},{"icon":"faNotesMedical","aliases":[]},{"icon":"faO","aliases":[]},{"icon":"faObjectGroup","aliases":[]},{"icon":"faObjectUngroup","aliases":[]},{"icon":"faOilCan","aliases":[]},{"icon":"faOilWell","aliases":[]},{"icon":"faOm","aliases":[]},{"icon":"faOtter","aliases":[]},{"icon":"faOutdent","aliases":["faDedent"]},{"icon":"faP","aliases":[]},{"icon":"faPager","aliases":[]},{"icon":"faPaintRoller","aliases":[]},{"icon":"faPaintbrush","aliases":["faPaintBrush"]},{"icon":"faPalette","aliases":[]},{"icon":"faPallet","aliases":[]},{"icon":"faPanorama","aliases":[]},{"icon":"faPaperPlane","aliases":[]},{"icon":"faPaperclip","aliases":[]},{"icon":"faParachuteBox","aliases":[]},{"icon":"faParagraph","aliases":[]},{"icon":"faParking","aliases":["faParking"]},{"icon":"faPassport","aliases":[]},{"icon":"faPastafarianism","aliases":["faPastafarianism"]},{"icon":"faPaste","aliases":["faFileClipboard"]},{"icon":"faPause","aliases":[]},{"icon":"faPauseCircle","aliases":["faPauseCircle"]},{"icon":"faPaw","aliases":[]},{"icon":"faPeace","aliases":[]},{"icon":"faPen","aliases":[]},{"icon":"faPenAlt","aliases":["faPenAlt"]},{"icon":"faPenClip","aliases":["faPenAlt"]},{"icon":"faPenFancy","aliases":[]},{"icon":"faPenNib","aliases":[]},{"icon":"faPenRuler","aliases":["faPencilRuler"]},{"icon":"faPenSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPenToSquare","aliases":["faEdit"]},{"icon":"faPencil","aliases":["faPencilAlt"]},{"icon":"faPencilAlt","aliases":["faPencilAlt"]},{"icon":"faPencilRuler","aliases":["faPencilRuler"]},{"icon":"faPencilSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPeopleArrows","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleArrowsLeftRight","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleCarry","aliases":["faPeopleCarry"]},{"icon":"faPeopleCarryBox","aliases":["faPeopleCarry"]},{"icon":"faPeopleGroup","aliases":[]},{"icon":"faPeopleLine","aliases":[]},{"icon":"faPeoplePulling","aliases":[]},{"icon":"faPeopleRobbery","aliases":[]},{"icon":"faPeopleRoof","aliases":[]},{"icon":"faPepperHot","aliases":[]},{"icon":"faPercent","aliases":["faPercentage"]},{"icon":"faPercentage","aliases":["faPercentage"]},{"icon":"faPerson","aliases":["faMale"]},{"icon":"faPersonArrowDownToLine","aliases":[]},{"icon":"faPersonArrowUpFromLine","aliases":[]},{"icon":"faPersonBiking","aliases":["faBiking"]},{"icon":"faPersonBooth","aliases":[]},{"icon":"faPersonBreastfeeding","aliases":[]},{"icon":"faPersonBurst","aliases":[]},{"icon":"faPersonCane","aliases":[]},{"icon":"faPersonChalkboard","aliases":[]},{"icon":"faPersonCircleCheck","aliases":[]},{"icon":"faPersonCircleExclamation","aliases":[]},{"icon":"faPersonCircleMinus","aliases":[]},{"icon":"faPersonCirclePlus","aliases":[]},{"icon":"faPersonCircleQuestion","aliases":[]},{"icon":"faPersonCircleXmark","aliases":[]},{"icon":"faPersonDigging","aliases":["faDigging"]},{"icon":"faPersonDotsFromLine","aliases":["faDiagnoses"]},{"icon":"faPersonDress","aliases":["faFemale"]},{"icon":"faPersonDressBurst","aliases":[]},{"icon":"faPersonDrowning","aliases":[]},{"icon":"faPersonFalling","aliases":[]},{"icon":"faPersonFallingBurst","aliases":[]},{"icon":"faPersonHalfDress","aliases":[]},{"icon":"faPersonHarassing","aliases":[]},{"icon":"faPersonHiking","aliases":["faHiking"]},{"icon":"faPersonMilitaryPointing","aliases":[]},{"icon":"faPersonMilitaryRifle","aliases":[]},{"icon":"faPersonMilitaryToPerson","aliases":[]},{"icon":"faPersonPraying","aliases":["faPray"]},{"icon":"faPersonPregnant","aliases":[]},{"icon":"faPersonRays","aliases":[]},{"icon":"faPersonRifle","aliases":[]},{"icon":"faPersonRunning","aliases":["faRunning"]},{"icon":"faPersonShelter","aliases":[]},{"icon":"faPersonSkating","aliases":["faSkating"]},{"icon":"faPersonSkiing","aliases":["faSkiing"]},{"icon":"faPersonSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faPersonSnowboarding","aliases":["faSnowboarding"]},{"icon":"faPersonSwimming","aliases":["faSwimmer"]},{"icon":"faPersonThroughWindow","aliases":[]},{"icon":"faPersonWalking","aliases":["faWalking"]},{"icon":"faPersonWalkingArrowLoopLeft","aliases":[]},{"icon":"faPersonWalkingArrowRight","aliases":[]},{"icon":"faPersonWalkingDashedLineArrowRight","aliases":[]},{"icon":"faPersonWalkingLuggage","aliases":[]},{"icon":"faPersonWalkingWithCane","aliases":["faBlind"]},{"icon":"faPesetaSign","aliases":[]},{"icon":"faPesoSign","aliases":[]},{"icon":"faPhone","aliases":[]},{"icon":"faPhoneAlt","aliases":["faPhoneAlt"]},{"icon":"faPhoneFlip","aliases":["faPhoneAlt"]},{"icon":"faPhoneSlash","aliases":[]},{"icon":"faPhoneSquare","aliases":["faPhoneSquare"]},{"icon":"faPhoneSquareAlt","aliases":["faPhoneSquareAlt"]},{"icon":"faPhoneVolume","aliases":["faVolumeControlPhone"]},{"icon":"faPhotoFilm","aliases":["faPhotoVideo"]},{"icon":"faPhotoVideo","aliases":["faPhotoVideo"]},{"icon":"faPieChart","aliases":["faPieChart"]},{"icon":"faPiggyBank","aliases":[]},{"icon":"faPills","aliases":[]},{"icon":"faPingPongPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faPizzaSlice","aliases":[]},{"icon":"faPlaceOfWorship","aliases":[]},{"icon":"faPlane","aliases":[]},{"icon":"faPlaneArrival","aliases":[]},{"icon":"faPlaneCircleCheck","aliases":[]},{"icon":"faPlaneCircleExclamation","aliases":[]},{"icon":"faPlaneCircleXmark","aliases":[]},{"icon":"faPlaneDeparture","aliases":[]},{"icon":"faPlaneLock","aliases":[]},{"icon":"faPlaneSlash","aliases":[]},{"icon":"faPlaneUp","aliases":[]},{"icon":"faPlantWilt","aliases":[]},{"icon":"faPlateWheat","aliases":[]},{"icon":"faPlay","aliases":[]},{"icon":"faPlayCircle","aliases":["faPlayCircle"]},{"icon":"faPlug","aliases":[]},{"icon":"faPlugCircleBolt","aliases":[]},{"icon":"faPlugCircleCheck","aliases":[]},{"icon":"faPlugCircleExclamation","aliases":[]},{"icon":"faPlugCircleMinus","aliases":[]},{"icon":"faPlugCirclePlus","aliases":[]},{"icon":"faPlugCircleXmark","aliases":[]},{"icon":"faPlus","aliases":["faAdd"]},{"icon":"faPlusCircle","aliases":["faPlusCircle"]},{"icon":"faPlusMinus","aliases":[]},{"icon":"faPlusSquare","aliases":["faPlusSquare"]},{"icon":"faPodcast","aliases":[]},{"icon":"faPoll","aliases":["faPoll"]},{"icon":"faPollH","aliases":["faPollH"]},{"icon":"faPoo","aliases":[]},{"icon":"faPooBolt","aliases":["faPooBolt"]},{"icon":"faPooStorm","aliases":["faPooBolt"]},{"icon":"faPoop","aliases":[]},{"icon":"faPortrait","aliases":["faPortrait"]},{"icon":"faPoundSign","aliases":["faGbp","faPoundSign"]},{"icon":"faPowerOff","aliases":[]},{"icon":"faPray","aliases":["faPray"]},{"icon":"faPrayingHands","aliases":["faPrayingHands"]},{"icon":"faPrescription","aliases":[]},{"icon":"faPrescriptionBottle","aliases":[]},{"icon":"faPrescriptionBottleAlt","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottleMedical","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrint","aliases":[]},{"icon":"faProcedures","aliases":["faProcedures"]},{"icon":"faProjectDiagram","aliases":["faProjectDiagram"]},{"icon":"faPumpMedical","aliases":[]},{"icon":"faPumpSoap","aliases":[]},{"icon":"faPuzzlePiece","aliases":[]},{"icon":"faQ","aliases":[]},{"icon":"faQrcode","aliases":[]},{"icon":"faQuestion","aliases":[]},{"icon":"faQuestionCircle","aliases":["faQuestionCircle"]},{"icon":"faQuidditch","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuidditchBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuoteLeft","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteLeftAlt","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteRight","aliases":["faQuoteRightAlt"]},{"icon":"faQuoteRightAlt","aliases":["faQuoteRightAlt"]},{"icon":"faQuran","aliases":["faQuran"]},{"icon":"faR","aliases":[]},{"icon":"faRadiation","aliases":[]},{"icon":"faRadiationAlt","aliases":["faRadiationAlt"]},{"icon":"faRadio","aliases":[]},{"icon":"faRainbow","aliases":[]},{"icon":"faRandom","aliases":["faRandom"]},{"icon":"faRankingStar","aliases":[]},{"icon":"faReceipt","aliases":[]},{"icon":"faRecordVinyl","aliases":[]},{"icon":"faRectangleAd","aliases":["faAd"]},{"icon":"faRectangleList","aliases":["faListAlt"]},{"icon":"faRectangleTimes","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectangleXmark","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRecycle","aliases":[]},{"icon":"faRedo","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faRedoAlt","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRefresh","aliases":["faRefresh","faSync"]},{"icon":"faRegistered","aliases":[]},{"icon":"faRemove","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faRemoveFormat","aliases":["faRemoveFormat"]},{"icon":"faReorder","aliases":["faReorder","faStream"]},{"icon":"faRepeat","aliases":[]},{"icon":"faReply","aliases":["faMailReply"]},{"icon":"faReplyAll","aliases":["faMailReplyAll"]},{"icon":"faRepublican","aliases":[]},{"icon":"faRestroom","aliases":[]},{"icon":"faRetweet","aliases":[]},{"icon":"faRibbon","aliases":[]},{"icon":"faRightFromBracket","aliases":["faSignOutAlt"]},{"icon":"faRightLeft","aliases":["faExchangeAlt"]},{"icon":"faRightLong","aliases":["faLongArrowAltRight"]},{"icon":"faRightToBracket","aliases":["faSignInAlt"]},{"icon":"faRing","aliases":[]},{"icon":"faRmb","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faRoad","aliases":[]},{"icon":"faRoadBarrier","aliases":[]},{"icon":"faRoadBridge","aliases":[]},{"icon":"faRoadCircleCheck","aliases":[]},{"icon":"faRoadCircleExclamation","aliases":[]},{"icon":"faRoadCircleXmark","aliases":[]},{"icon":"faRoadLock","aliases":[]},{"icon":"faRoadSpikes","aliases":[]},{"icon":"faRobot","aliases":[]},{"icon":"faRocket","aliases":[]},{"icon":"faRodAsclepius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRodSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRotate","aliases":["faSyncAlt"]},{"icon":"faRotateBack","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateBackward","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateForward","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRotateLeft","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateRight","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRouble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRoute","aliases":[]},{"icon":"faRss","aliases":["faFeed"]},{"icon":"faRssSquare","aliases":["faRssSquare"]},{"icon":"faRub","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRuble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRubleSign","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRug","aliases":[]},{"icon":"faRuler","aliases":[]},{"icon":"faRulerCombined","aliases":[]},{"icon":"faRulerHorizontal","aliases":[]},{"icon":"faRulerVertical","aliases":[]},{"icon":"faRunning","aliases":["faRunning"]},{"icon":"faRupee","aliases":["faRupee"]},{"icon":"faRupeeSign","aliases":["faRupee"]},{"icon":"faRupiahSign","aliases":[]},{"icon":"faS","aliases":[]},{"icon":"faSackDollar","aliases":[]},{"icon":"faSackXmark","aliases":[]},{"icon":"faSadCry","aliases":["faSadCry"]},{"icon":"faSadTear","aliases":["faSadTear"]},{"icon":"faSailboat","aliases":[]},{"icon":"faSatellite","aliases":[]},{"icon":"faSatelliteDish","aliases":[]},{"icon":"faSave","aliases":["faSave"]},{"icon":"faScaleBalanced","aliases":["faBalanceScale"]},{"icon":"faScaleUnbalanced","aliases":["faBalanceScaleLeft"]},{"icon":"faScaleUnbalancedFlip","aliases":["faBalanceScaleRight"]},{"icon":"faSchool","aliases":[]},{"icon":"faSchoolCircleCheck","aliases":[]},{"icon":"faSchoolCircleExclamation","aliases":[]},{"icon":"faSchoolCircleXmark","aliases":[]},{"icon":"faSchoolFlag","aliases":[]},{"icon":"faSchoolLock","aliases":[]},{"icon":"faScissors","aliases":["faCut"]},{"icon":"faScrewdriver","aliases":[]},{"icon":"faScrewdriverWrench","aliases":["faTools"]},{"icon":"faScroll","aliases":[]},{"icon":"faScrollTorah","aliases":["faTorah"]},{"icon":"faSdCard","aliases":[]},{"icon":"faSearch","aliases":["faSearch"]},{"icon":"faSearchDollar","aliases":["faSearchDollar"]},{"icon":"faSearchLocation","aliases":["faSearchLocation"]},{"icon":"faSearchMinus","aliases":["faSearchMinus"]},{"icon":"faSearchPlus","aliases":["faSearchPlus"]},{"icon":"faSection","aliases":[]},{"icon":"faSeedling","aliases":["faSprout"]},{"icon":"faServer","aliases":[]},{"icon":"faShapes","aliases":["faTriangleCircleSquare"]},{"icon":"faShare","aliases":["faMailForward"]},{"icon":"faShareAlt","aliases":["faShareAlt"]},{"icon":"faShareAltSquare","aliases":["faShareAltSquare"]},{"icon":"faShareFromSquare","aliases":["faShareSquare"]},{"icon":"faShareNodes","aliases":["faShareAlt"]},{"icon":"faShareSquare","aliases":["faShareSquare"]},{"icon":"faSheetPlastic","aliases":[]},{"icon":"faShekel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShekelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShield","aliases":["faShieldBlank"]},{"icon":"faShieldAlt","aliases":["faShieldAlt"]},{"icon":"faShieldBlank","aliases":["faShieldBlank"]},{"icon":"faShieldCat","aliases":[]},{"icon":"faShieldDog","aliases":[]},{"icon":"faShieldHalved","aliases":["faShieldAlt"]},{"icon":"faShieldHeart","aliases":[]},{"icon":"faShieldVirus","aliases":[]},{"icon":"faShip","aliases":[]},{"icon":"faShippingFast","aliases":["faShippingFast"]},{"icon":"faShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faShoePrints","aliases":[]},{"icon":"faShop","aliases":["faStoreAlt"]},{"icon":"faShopLock","aliases":[]},{"icon":"faShopSlash","aliases":["faStoreAltSlash"]},{"icon":"faShoppingBag","aliases":["faShoppingBag"]},{"icon":"faShoppingBasket","aliases":["faShoppingBasket"]},{"icon":"faShoppingCart","aliases":["faShoppingCart"]},{"icon":"faShower","aliases":[]},{"icon":"faShrimp","aliases":[]},{"icon":"faShuffle","aliases":["faRandom"]},{"icon":"faShuttleSpace","aliases":["faSpaceShuttle"]},{"icon":"faShuttleVan","aliases":["faShuttleVan"]},{"icon":"faSign","aliases":["faSign"]},{"icon":"faSignHanging","aliases":["faSign"]},{"icon":"faSignIn","aliases":["faSignIn"]},{"icon":"faSignInAlt","aliases":["faSignInAlt"]},{"icon":"faSignLanguage","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignOut","aliases":["faSignOut"]},{"icon":"faSignOutAlt","aliases":["faSignOutAlt"]},{"icon":"faSignal","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignal5","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalPerfect","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignature","aliases":[]},{"icon":"faSigning","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignsPost","aliases":["faMapSigns"]},{"icon":"faSimCard","aliases":[]},{"icon":"faSink","aliases":[]},{"icon":"faSitemap","aliases":[]},{"icon":"faSkating","aliases":["faSkating"]},{"icon":"faSkiing","aliases":["faSkiing"]},{"icon":"faSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faSkull","aliases":[]},{"icon":"faSkullCrossbones","aliases":[]},{"icon":"faSlash","aliases":[]},{"icon":"faSleigh","aliases":[]},{"icon":"faSliders","aliases":["faSlidersH"]},{"icon":"faSlidersH","aliases":["faSlidersH"]},{"icon":"faSmile","aliases":["faSmile"]},{"icon":"faSmileBeam","aliases":["faSmileBeam"]},{"icon":"faSmileWink","aliases":["faSmileWink"]},{"icon":"faSmog","aliases":[]},{"icon":"faSmoking","aliases":[]},{"icon":"faSmokingBan","aliases":["faSmokingBan"]},{"icon":"faSms","aliases":["faSms"]},{"icon":"faSnowboarding","aliases":["faSnowboarding"]},{"icon":"faSnowflake","aliases":[]},{"icon":"faSnowman","aliases":[]},{"icon":"faSnowplow","aliases":[]},{"icon":"faSoap","aliases":[]},{"icon":"faSoccerBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faSocks","aliases":[]},{"icon":"faSolarPanel","aliases":[]},{"icon":"faSort","aliases":["faUnsorted"]},{"icon":"faSortAlphaAsc","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDesc","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaDown","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDownAlt","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaUp","aliases":["faSortAlphaUp"]},{"icon":"faSortAlphaUpAlt","aliases":["faSortAlphaUpAlt"]},{"icon":"faSortAmountAsc","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDesc","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountDown","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDownAlt","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountUp","aliases":["faSortAmountUp"]},{"icon":"faSortAmountUpAlt","aliases":["faSortAmountUpAlt"]},{"icon":"faSortAsc","aliases":["faSortAsc"]},{"icon":"faSortDesc","aliases":["faSortDesc"]},{"icon":"faSortDown","aliases":["faSortDesc"]},{"icon":"faSortNumericAsc","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDesc","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericDown","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDownAlt","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericUp","aliases":["faSortNumericUp"]},{"icon":"faSortNumericUpAlt","aliases":["faSortNumericUpAlt"]},{"icon":"faSortUp","aliases":["faSortAsc"]},{"icon":"faSpa","aliases":[]},{"icon":"faSpaceShuttle","aliases":["faSpaceShuttle"]},{"icon":"faSpaghettiMonsterFlying","aliases":["faPastafarianism"]},{"icon":"faSpellCheck","aliases":[]},{"icon":"faSpider","aliases":[]},{"icon":"faSpinner","aliases":[]},{"icon":"faSplotch","aliases":[]},{"icon":"faSpoon","aliases":["faUtensilSpoon"]},{"icon":"faSprayCan","aliases":[]},{"icon":"faSprayCanSparkles","aliases":["faAirFreshener"]},{"icon":"faSprout","aliases":["faSprout"]},{"icon":"faSquare","aliases":[]},{"icon":"faSquareArrowUpRight","aliases":["faExternalLinkSquare"]},{"icon":"faSquareBinary","aliases":[]},{"icon":"faSquareCaretDown","aliases":["faCaretSquareDown"]},{"icon":"faSquareCaretLeft","aliases":["faCaretSquareLeft"]},{"icon":"faSquareCaretRight","aliases":["faCaretSquareRight"]},{"icon":"faSquareCaretUp","aliases":["faCaretSquareUp"]},{"icon":"faSquareCheck","aliases":["faCheckSquare"]},{"icon":"faSquareEnvelope","aliases":["faEnvelopeSquare"]},{"icon":"faSquareFull","aliases":[]},{"icon":"faSquareH","aliases":["faHSquare"]},{"icon":"faSquareMinus","aliases":["faMinusSquare"]},{"icon":"faSquareNfi","aliases":[]},{"icon":"faSquareParking","aliases":["faParking"]},{"icon":"faSquarePen","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faSquarePersonConfined","aliases":[]},{"icon":"faSquarePhone","aliases":["faPhoneSquare"]},{"icon":"faSquarePhoneFlip","aliases":["faPhoneSquareAlt"]},{"icon":"faSquarePlus","aliases":["faPlusSquare"]},{"icon":"faSquarePollHorizontal","aliases":["faPollH"]},{"icon":"faSquarePollVertical","aliases":["faPoll"]},{"icon":"faSquareRootAlt","aliases":["faSquareRootAlt"]},{"icon":"faSquareRootVariable","aliases":["faSquareRootAlt"]},{"icon":"faSquareRss","aliases":["faRssSquare"]},{"icon":"faSquareShareNodes","aliases":["faShareAltSquare"]},{"icon":"faSquareUpRight","aliases":["faExternalLinkSquareAlt"]},{"icon":"faSquareVirus","aliases":[]},{"icon":"faSquareXmark","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faStaffAesculapius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStaffSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStairs","aliases":[]},{"icon":"faStamp","aliases":[]},{"icon":"faStapler","aliases":[]},{"icon":"faStar","aliases":[]},{"icon":"faStarAndCrescent","aliases":[]},{"icon":"faStarHalf","aliases":[]},{"icon":"faStarHalfAlt","aliases":["faStarHalfAlt"]},{"icon":"faStarHalfStroke","aliases":["faStarHalfAlt"]},{"icon":"faStarOfDavid","aliases":[]},{"icon":"faStarOfLife","aliases":[]},{"icon":"faStepBackward","aliases":["faStepBackward"]},{"icon":"faStepForward","aliases":["faStepForward"]},{"icon":"faSterlingSign","aliases":["faGbp","faPoundSign"]},{"icon":"faStethoscope","aliases":[]},{"icon":"faStickyNote","aliases":["faStickyNote"]},{"icon":"faStop","aliases":[]},{"icon":"faStopCircle","aliases":["faStopCircle"]},{"icon":"faStopwatch","aliases":[]},{"icon":"faStopwatch20","aliases":[]},{"icon":"faStore","aliases":[]},{"icon":"faStoreAlt","aliases":["faStoreAlt"]},{"icon":"faStoreAltSlash","aliases":["faStoreAltSlash"]},{"icon":"faStoreSlash","aliases":[]},{"icon":"faStream","aliases":["faReorder","faStream"]},{"icon":"faStreetView","aliases":[]},{"icon":"faStrikethrough","aliases":[]},{"icon":"faStroopwafel","aliases":[]},{"icon":"faSubscript","aliases":[]},{"icon":"faSubtract","aliases":["faSubtract"]},{"icon":"faSubway","aliases":["faSubway"]},{"icon":"faSuitcase","aliases":[]},{"icon":"faSuitcaseMedical","aliases":["faMedkit"]},{"icon":"faSuitcaseRolling","aliases":[]},{"icon":"faSun","aliases":[]},{"icon":"faSunPlantWilt","aliases":[]},{"icon":"faSuperscript","aliases":[]},{"icon":"faSurprise","aliases":["faSurprise"]},{"icon":"faSwatchbook","aliases":[]},{"icon":"faSwimmer","aliases":["faSwimmer"]},{"icon":"faSwimmingPool","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faSynagogue","aliases":[]},{"icon":"faSync","aliases":["faRefresh","faSync"]},{"icon":"faSyncAlt","aliases":["faSyncAlt"]},{"icon":"faSyringe","aliases":[]},{"icon":"faT","aliases":[]},{"icon":"faTShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faTable","aliases":[]},{"icon":"faTableCells","aliases":["faTh"]},{"icon":"faTableCellsColumnLock","aliases":[]},{"icon":"faTableCellsLarge","aliases":["faThLarge"]},{"icon":"faTableCellsRowLock","aliases":[]},{"icon":"faTableCellsRowUnlock","aliases":[]},{"icon":"faTableColumns","aliases":["faColumns"]},{"icon":"faTableList","aliases":["faThList"]},{"icon":"faTableTennis","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTennisPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTablet","aliases":["faTabletAndroid"]},{"icon":"faTabletAlt","aliases":["faTabletAlt"]},{"icon":"faTabletAndroid","aliases":["faTabletAndroid"]},{"icon":"faTabletButton","aliases":[]},{"icon":"faTabletScreenButton","aliases":["faTabletAlt"]},{"icon":"faTablets","aliases":[]},{"icon":"faTachographDigital","aliases":["faDigitalTachograph"]},{"icon":"faTachometer","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerAlt","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltAverage","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faTachometerAltFast","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAverage","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faTachometerFast","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTag","aliases":[]},{"icon":"faTags","aliases":[]},{"icon":"faTanakh","aliases":["faTanakh"]},{"icon":"faTape","aliases":[]},{"icon":"faTarp","aliases":[]},{"icon":"faTarpDroplet","aliases":[]},{"icon":"faTasks","aliases":["faTasks"]},{"icon":"faTasksAlt","aliases":["faTasksAlt"]},{"icon":"faTaxi","aliases":["faCab"]},{"icon":"faTeeth","aliases":[]},{"icon":"faTeethOpen","aliases":[]},{"icon":"faTeletype","aliases":["faTeletype"]},{"icon":"faTelevision","aliases":["faTelevision","faTvAlt"]},{"icon":"faTemperature0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperature1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperature2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperature3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperature4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureArrowDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureArrowUp","aliases":["faTemperatureUp"]},{"icon":"faTemperatureDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperatureFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperatureHigh","aliases":[]},{"icon":"faTemperatureLow","aliases":[]},{"icon":"faTemperatureQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperatureThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperatureUp","aliases":["faTemperatureUp"]},{"icon":"faTenge","aliases":["faTenge"]},{"icon":"faTengeSign","aliases":["faTenge"]},{"icon":"faTent","aliases":[]},{"icon":"faTentArrowDownToLine","aliases":[]},{"icon":"faTentArrowLeftRight","aliases":[]},{"icon":"faTentArrowTurnLeft","aliases":[]},{"icon":"faTentArrowsDown","aliases":[]},{"icon":"faTents","aliases":[]},{"icon":"faTerminal","aliases":[]},{"icon":"faTextHeight","aliases":[]},{"icon":"faTextSlash","aliases":["faRemoveFormat"]},{"icon":"faTextWidth","aliases":[]},{"icon":"faTh","aliases":["faTh"]},{"icon":"faThLarge","aliases":["faThLarge"]},{"icon":"faThList","aliases":["faThList"]},{"icon":"faTheaterMasks","aliases":["faTheaterMasks"]},{"icon":"faThermometer","aliases":[]},{"icon":"faThermometer0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometer1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometer2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometer3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThermometer4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometerFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometerQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometerThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThumbsDown","aliases":[]},{"icon":"faThumbsUp","aliases":[]},{"icon":"faThumbtack","aliases":["faThumbTack"]},{"icon":"faThumbtackSlash","aliases":["faThumbTackSlash"]},{"icon":"faThunderstorm","aliases":["faThunderstorm"]},{"icon":"faTicket","aliases":[]},{"icon":"faTicketAlt","aliases":["faTicketAlt"]},{"icon":"faTicketSimple","aliases":["faTicketAlt"]},{"icon":"faTimeline","aliases":[]},{"icon":"faTimes","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faTimesCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faTimesRectangle","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faTimesSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faTint","aliases":["faTint"]},{"icon":"faTintSlash","aliases":["faTintSlash"]},{"icon":"faTired","aliases":["faTired"]},{"icon":"faToggleOff","aliases":[]},{"icon":"faToggleOn","aliases":[]},{"icon":"faToilet","aliases":[]},{"icon":"faToiletPaper","aliases":[]},{"icon":"faToiletPaperSlash","aliases":[]},{"icon":"faToiletPortable","aliases":[]},{"icon":"faToiletsPortable","aliases":[]},{"icon":"faToolbox","aliases":[]},{"icon":"faTools","aliases":["faTools"]},{"icon":"faTooth","aliases":[]},{"icon":"faTorah","aliases":["faTorah"]},{"icon":"faToriiGate","aliases":[]},{"icon":"faTornado","aliases":[]},{"icon":"faTowerBroadcast","aliases":["faBroadcastTower"]},{"icon":"faTowerCell","aliases":[]},{"icon":"faTowerObservation","aliases":[]},{"icon":"faTractor","aliases":[]},{"icon":"faTrademark","aliases":[]},{"icon":"faTrafficLight","aliases":[]},{"icon":"faTrailer","aliases":[]},{"icon":"faTrain","aliases":[]},{"icon":"faTrainSubway","aliases":["faSubway"]},{"icon":"faTrainTram","aliases":[]},{"icon":"faTram","aliases":["faTram"]},{"icon":"faTransgender","aliases":["faTransgenderAlt"]},{"icon":"faTransgenderAlt","aliases":["faTransgenderAlt"]},{"icon":"faTrash","aliases":[]},{"icon":"faTrashAlt","aliases":["faTrashAlt"]},{"icon":"faTrashArrowUp","aliases":["faTrashRestore"]},{"icon":"faTrashCan","aliases":["faTrashAlt"]},{"icon":"faTrashCanArrowUp","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashRestore","aliases":["faTrashRestore"]},{"icon":"faTrashRestoreAlt","aliases":["faTrashRestoreAlt"]},{"icon":"faTree","aliases":[]},{"icon":"faTreeCity","aliases":[]},{"icon":"faTriangleCircleSquare","aliases":["faTriangleCircleSquare"]},{"icon":"faTriangleExclamation","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faTrophy","aliases":[]},{"icon":"faTrowel","aliases":[]},{"icon":"faTrowelBricks","aliases":[]},{"icon":"faTruck","aliases":[]},{"icon":"faTruckArrowRight","aliases":[]},{"icon":"faTruckDroplet","aliases":[]},{"icon":"faTruckFast","aliases":["faShippingFast"]},{"icon":"faTruckField","aliases":[]},{"icon":"faTruckFieldUn","aliases":[]},{"icon":"faTruckFront","aliases":[]},{"icon":"faTruckLoading","aliases":["faTruckLoading"]},{"icon":"faTruckMedical","aliases":["faAmbulance"]},{"icon":"faTruckMonster","aliases":[]},{"icon":"faTruckMoving","aliases":[]},{"icon":"faTruckPickup","aliases":[]},{"icon":"faTruckPlane","aliases":[]},{"icon":"faTruckRampBox","aliases":["faTruckLoading"]},{"icon":"faTry","aliases":["faTry","faTurkishLira"]},{"icon":"faTty","aliases":["faTeletype"]},{"icon":"faTurkishLira","aliases":["faTry","faTurkishLira"]},{"icon":"faTurkishLiraSign","aliases":["faTry","faTurkishLira"]},{"icon":"faTurnDown","aliases":["faLevelDownAlt"]},{"icon":"faTurnUp","aliases":["faLevelUpAlt"]},{"icon":"faTv","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvAlt","aliases":["faTelevision","faTvAlt"]},{"icon":"faU","aliases":[]},{"icon":"faUmbrella","aliases":[]},{"icon":"faUmbrellaBeach","aliases":[]},{"icon":"faUnderline","aliases":[]},{"icon":"faUndo","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faUndoAlt","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faUniversalAccess","aliases":[]},{"icon":"faUniversity","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faUnlink","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faUnlock","aliases":[]},{"icon":"faUnlockAlt","aliases":["faUnlockAlt"]},{"icon":"faUnlockKeyhole","aliases":["faUnlockAlt"]},{"icon":"faUnsorted","aliases":["faUnsorted"]},{"icon":"faUpDown","aliases":["faArrowsAltV"]},{"icon":"faUpDownLeftRight","aliases":["faArrowsAlt"]},{"icon":"faUpLong","aliases":["faLongArrowAltUp"]},{"icon":"faUpRightAndDownLeftFromCenter","aliases":["faExpandAlt"]},{"icon":"faUpRightFromSquare","aliases":["faExternalLinkAlt"]},{"icon":"faUpload","aliases":[]},{"icon":"faUsd","aliases":["faDollar","faUsd"]},{"icon":"faUser","aliases":[]},{"icon":"faUserAlt","aliases":["faUserAlt"]},{"icon":"faUserAltSlash","aliases":["faUserAltSlash"]},{"icon":"faUserAstronaut","aliases":[]},{"icon":"faUserCheck","aliases":[]},{"icon":"faUserCircle","aliases":["faUserCircle"]},{"icon":"faUserClock","aliases":[]},{"icon":"faUserCog","aliases":["faUserCog"]},{"icon":"faUserDoctor","aliases":["faUserMd"]},{"icon":"faUserEdit","aliases":["faUserEdit"]},{"icon":"faUserFriends","aliases":["faUserFriends"]},{"icon":"faUserGear","aliases":["faUserCog"]},{"icon":"faUserGraduate","aliases":[]},{"icon":"faUserGroup","aliases":["faUserFriends"]},{"icon":"faUserInjured","aliases":[]},{"icon":"faUserLarge","aliases":["faUserAlt"]},{"icon":"faUserLargeSlash","aliases":["faUserAltSlash"]},{"icon":"faUserLock","aliases":[]},{"icon":"faUserMd","aliases":["faUserMd"]},{"icon":"faUserMinus","aliases":[]},{"icon":"faUserNinja","aliases":[]},{"icon":"faUserNurse","aliases":[]},{"icon":"faUserPen","aliases":["faUserEdit"]},{"icon":"faUserPlus","aliases":[]},{"icon":"faUserSecret","aliases":[]},{"icon":"faUserShield","aliases":[]},{"icon":"faUserSlash","aliases":[]},{"icon":"faUserTag","aliases":[]},{"icon":"faUserTie","aliases":[]},{"icon":"faUserTimes","aliases":["faUserTimes"]},{"icon":"faUserXmark","aliases":["faUserTimes"]},{"icon":"faUsers","aliases":[]},{"icon":"faUsersBetweenLines","aliases":[]},{"icon":"faUsersCog","aliases":["faUsersCog"]},{"icon":"faUsersGear","aliases":["faUsersCog"]},{"icon":"faUsersLine","aliases":[]},{"icon":"faUsersRays","aliases":[]},{"icon":"faUsersRectangle","aliases":[]},{"icon":"faUsersSlash","aliases":[]},{"icon":"faUsersViewfinder","aliases":[]},{"icon":"faUtensilSpoon","aliases":["faUtensilSpoon"]},{"icon":"faUtensils","aliases":["faCutlery"]},{"icon":"faV","aliases":[]},{"icon":"faVanShuttle","aliases":["faShuttleVan"]},{"icon":"faVault","aliases":[]},{"icon":"faVcard","aliases":["faContactCard","faVcard"]},{"icon":"faVectorSquare","aliases":[]},{"icon":"faVenus","aliases":[]},{"icon":"faVenusDouble","aliases":[]},{"icon":"faVenusMars","aliases":[]},{"icon":"faVest","aliases":[]},{"icon":"faVestPatches","aliases":[]},{"icon":"faVial","aliases":[]},{"icon":"faVialCircleCheck","aliases":[]},{"icon":"faVialVirus","aliases":[]},{"icon":"faVials","aliases":[]},{"icon":"faVideo","aliases":["faVideoCamera"]},{"icon":"faVideoCamera","aliases":["faVideoCamera"]},{"icon":"faVideoSlash","aliases":[]},{"icon":"faVihara","aliases":[]},{"icon":"faVirus","aliases":[]},{"icon":"faVirusCovid","aliases":[]},{"icon":"faVirusCovidSlash","aliases":[]},{"icon":"faVirusSlash","aliases":[]},{"icon":"faViruses","aliases":[]},{"icon":"faVoicemail","aliases":[]},{"icon":"faVolcano","aliases":[]},{"icon":"faVolleyball","aliases":["faVolleyballBall"]},{"icon":"faVolleyballBall","aliases":["faVolleyballBall"]},{"icon":"faVolumeControlPhone","aliases":["faVolumeControlPhone"]},{"icon":"faVolumeDown","aliases":["faVolumeDown"]},{"icon":"faVolumeHigh","aliases":["faVolumeUp"]},{"icon":"faVolumeLow","aliases":["faVolumeDown"]},{"icon":"faVolumeMute","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeOff","aliases":[]},{"icon":"faVolumeTimes","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeUp","aliases":["faVolumeUp"]},{"icon":"faVolumeXmark","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVoteYea","aliases":["faVoteYea"]},{"icon":"faVrCardboard","aliases":[]},{"icon":"faW","aliases":[]},{"icon":"faWalkieTalkie","aliases":[]},{"icon":"faWalking","aliases":["faWalking"]},{"icon":"faWallet","aliases":[]},{"icon":"faWandMagic","aliases":["faMagic"]},{"icon":"faWandMagicSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faWandSparkles","aliases":[]},{"icon":"faWarehouse","aliases":[]},{"icon":"faWarning","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faWater","aliases":[]},{"icon":"faWaterLadder","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faWaveSquare","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWeight","aliases":["faWeight"]},{"icon":"faWeightHanging","aliases":[]},{"icon":"faWeightScale","aliases":["faWeight"]},{"icon":"faWheatAlt","aliases":["faWheatAlt"]},{"icon":"faWheatAwn","aliases":["faWheatAlt"]},{"icon":"faWheatAwnCircleExclamation","aliases":[]},{"icon":"faWheelchair","aliases":[]},{"icon":"faWheelchairAlt","aliases":["faWheelchairAlt"]},{"icon":"faWheelchairMove","aliases":["faWheelchairAlt"]},{"icon":"faWhiskeyGlass","aliases":["faGlassWhiskey"]},{"icon":"faWifi","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifi3","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiStrong","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWind","aliases":[]},{"icon":"faWindowClose","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faWindowMaximize","aliases":[]},{"icon":"faWindowMinimize","aliases":[]},{"icon":"faWindowRestore","aliases":[]},{"icon":"faWineBottle","aliases":[]},{"icon":"faWineGlass","aliases":[]},{"icon":"faWineGlassAlt","aliases":["faWineGlassAlt"]},{"icon":"faWineGlassEmpty","aliases":["faWineGlassAlt"]},{"icon":"faWon","aliases":["faKrw","faWon"]},{"icon":"faWonSign","aliases":["faKrw","faWon"]},{"icon":"faWorm","aliases":[]},{"icon":"faWrench","aliases":[]},{"icon":"faX","aliases":[]},{"icon":"faXRay","aliases":[]},{"icon":"faXmark","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faXmarkCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faXmarkSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faXmarksLines","aliases":[]},{"icon":"faY","aliases":[]},{"icon":"faYen","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYenSign","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYinYang","aliases":[]},{"icon":"faZ","aliases":[]},{"icon":"faZap","aliases":["faZap"]}],"prefix":"fas"},"@fortawesome/free-brands-svg-icons":{"icons":[{"icon":"fa42Group","aliases":["faInnosoft"]},{"icon":"fa500px","aliases":[]},{"icon":"faAccessibleIcon","aliases":[]},{"icon":"faAccusoft","aliases":[]},{"icon":"faAdn","aliases":[]},{"icon":"faAdversal","aliases":[]},{"icon":"faAffiliatetheme","aliases":[]},{"icon":"faAirbnb","aliases":[]},{"icon":"faAlgolia","aliases":[]},{"icon":"faAlipay","aliases":[]},{"icon":"faAmazon","aliases":[]},{"icon":"faAmazonPay","aliases":[]},{"icon":"faAmilia","aliases":[]},{"icon":"faAndroid","aliases":[]},{"icon":"faAngellist","aliases":[]},{"icon":"faAngrycreative","aliases":[]},{"icon":"faAngular","aliases":[]},{"icon":"faAppStore","aliases":[]},{"icon":"faAppStoreIos","aliases":[]},{"icon":"faApper","aliases":[]},{"icon":"faApple","aliases":[]},{"icon":"faApplePay","aliases":[]},{"icon":"faArtstation","aliases":[]},{"icon":"faAsymmetrik","aliases":[]},{"icon":"faAtlassian","aliases":[]},{"icon":"faAudible","aliases":[]},{"icon":"faAutoprefixer","aliases":[]},{"icon":"faAvianex","aliases":[]},{"icon":"faAviato","aliases":[]},{"icon":"faAws","aliases":[]},{"icon":"faBandcamp","aliases":[]},{"icon":"faBattleNet","aliases":[]},{"icon":"faBehance","aliases":[]},{"icon":"faBehanceSquare","aliases":["faBehanceSquare"]},{"icon":"faBilibili","aliases":[]},{"icon":"faBimobject","aliases":[]},{"icon":"faBitbucket","aliases":[]},{"icon":"faBitcoin","aliases":[]},{"icon":"faBity","aliases":[]},{"icon":"faBlackTie","aliases":[]},{"icon":"faBlackberry","aliases":[]},{"icon":"faBlogger","aliases":[]},{"icon":"faBloggerB","aliases":[]},{"icon":"faBluesky","aliases":[]},{"icon":"faBluetooth","aliases":[]},{"icon":"faBluetoothB","aliases":[]},{"icon":"faBootstrap","aliases":[]},{"icon":"faBots","aliases":[]},{"icon":"faBrave","aliases":[]},{"icon":"faBraveReverse","aliases":[]},{"icon":"faBtc","aliases":[]},{"icon":"faBuffer","aliases":[]},{"icon":"faBuromobelexperte","aliases":[]},{"icon":"faBuyNLarge","aliases":[]},{"icon":"faBuysellads","aliases":[]},{"icon":"faCanadianMapleLeaf","aliases":[]},{"icon":"faCcAmazonPay","aliases":[]},{"icon":"faCcAmex","aliases":[]},{"icon":"faCcApplePay","aliases":[]},{"icon":"faCcDinersClub","aliases":[]},{"icon":"faCcDiscover","aliases":[]},{"icon":"faCcJcb","aliases":[]},{"icon":"faCcMastercard","aliases":[]},{"icon":"faCcPaypal","aliases":[]},{"icon":"faCcStripe","aliases":[]},{"icon":"faCcVisa","aliases":[]},{"icon":"faCentercode","aliases":[]},{"icon":"faCentos","aliases":[]},{"icon":"faChrome","aliases":[]},{"icon":"faChromecast","aliases":[]},{"icon":"faCloudflare","aliases":[]},{"icon":"faCloudscale","aliases":[]},{"icon":"faCloudsmith","aliases":[]},{"icon":"faCloudversify","aliases":[]},{"icon":"faCmplid","aliases":[]},{"icon":"faCodepen","aliases":[]},{"icon":"faCodiepie","aliases":[]},{"icon":"faConfluence","aliases":[]},{"icon":"faConnectdevelop","aliases":[]},{"icon":"faContao","aliases":[]},{"icon":"faCottonBureau","aliases":[]},{"icon":"faCpanel","aliases":[]},{"icon":"faCreativeCommons","aliases":[]},{"icon":"faCreativeCommonsBy","aliases":[]},{"icon":"faCreativeCommonsNc","aliases":[]},{"icon":"faCreativeCommonsNcEu","aliases":[]},{"icon":"faCreativeCommonsNcJp","aliases":[]},{"icon":"faCreativeCommonsNd","aliases":[]},{"icon":"faCreativeCommonsPd","aliases":[]},{"icon":"faCreativeCommonsPdAlt","aliases":[]},{"icon":"faCreativeCommonsRemix","aliases":[]},{"icon":"faCreativeCommonsSa","aliases":[]},{"icon":"faCreativeCommonsSampling","aliases":[]},{"icon":"faCreativeCommonsSamplingPlus","aliases":[]},{"icon":"faCreativeCommonsShare","aliases":[]},{"icon":"faCreativeCommonsZero","aliases":[]},{"icon":"faCriticalRole","aliases":[]},{"icon":"faCss","aliases":[]},{"icon":"faCss3","aliases":[]},{"icon":"faCss3Alt","aliases":[]},{"icon":"faCuttlefish","aliases":[]},{"icon":"faDAndD","aliases":[]},{"icon":"faDAndDBeyond","aliases":[]},{"icon":"faDailymotion","aliases":[]},{"icon":"faDartLang","aliases":[]},{"icon":"faDashcube","aliases":[]},{"icon":"faDebian","aliases":[]},{"icon":"faDeezer","aliases":[]},{"icon":"faDelicious","aliases":[]},{"icon":"faDeploydog","aliases":[]},{"icon":"faDeskpro","aliases":[]},{"icon":"faDev","aliases":[]},{"icon":"faDeviantart","aliases":[]},{"icon":"faDhl","aliases":[]},{"icon":"faDiaspora","aliases":[]},{"icon":"faDigg","aliases":[]},{"icon":"faDigitalOcean","aliases":[]},{"icon":"faDiscord","aliases":[]},{"icon":"faDiscourse","aliases":[]},{"icon":"faDochub","aliases":[]},{"icon":"faDocker","aliases":[]},{"icon":"faDraft2digital","aliases":[]},{"icon":"faDribbble","aliases":[]},{"icon":"faDribbbleSquare","aliases":["faDribbbleSquare"]},{"icon":"faDropbox","aliases":[]},{"icon":"faDrupal","aliases":[]},{"icon":"faDyalog","aliases":[]},{"icon":"faEarlybirds","aliases":[]},{"icon":"faEbay","aliases":[]},{"icon":"faEdge","aliases":[]},{"icon":"faEdgeLegacy","aliases":[]},{"icon":"faElementor","aliases":[]},{"icon":"faEllo","aliases":[]},{"icon":"faEmber","aliases":[]},{"icon":"faEmpire","aliases":[]},{"icon":"faEnvira","aliases":[]},{"icon":"faErlang","aliases":[]},{"icon":"faEthereum","aliases":[]},{"icon":"faEtsy","aliases":[]},{"icon":"faEvernote","aliases":[]},{"icon":"faExpeditedssl","aliases":[]},{"icon":"faFacebook","aliases":[]},{"icon":"faFacebookF","aliases":[]},{"icon":"faFacebookMessenger","aliases":[]},{"icon":"faFacebookSquare","aliases":["faFacebookSquare"]},{"icon":"faFantasyFlightGames","aliases":[]},{"icon":"faFedex","aliases":[]},{"icon":"faFedora","aliases":[]},{"icon":"faFigma","aliases":[]},{"icon":"faFilesPinwheel","aliases":[]},{"icon":"faFirefox","aliases":[]},{"icon":"faFirefoxBrowser","aliases":[]},{"icon":"faFirstOrder","aliases":[]},{"icon":"faFirstOrderAlt","aliases":[]},{"icon":"faFirstdraft","aliases":[]},{"icon":"faFlickr","aliases":[]},{"icon":"faFlipboard","aliases":[]},{"icon":"faFlutter","aliases":[]},{"icon":"faFly","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeAlt","aliases":["faFontAwesomeAlt"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFonticons","aliases":[]},{"icon":"faFonticonsFi","aliases":[]},{"icon":"faFortAwesome","aliases":[]},{"icon":"faFortAwesomeAlt","aliases":[]},{"icon":"faForumbee","aliases":[]},{"icon":"faFoursquare","aliases":[]},{"icon":"faFreeCodeCamp","aliases":[]},{"icon":"faFreebsd","aliases":[]},{"icon":"faFulcrum","aliases":[]},{"icon":"faGalacticRepublic","aliases":[]},{"icon":"faGalacticSenate","aliases":[]},{"icon":"faGetPocket","aliases":[]},{"icon":"faGg","aliases":[]},{"icon":"faGgCircle","aliases":[]},{"icon":"faGit","aliases":[]},{"icon":"faGitAlt","aliases":[]},{"icon":"faGitSquare","aliases":["faGitSquare"]},{"icon":"faGithub","aliases":[]},{"icon":"faGithubAlt","aliases":[]},{"icon":"faGithubSquare","aliases":["faGithubSquare"]},{"icon":"faGitkraken","aliases":[]},{"icon":"faGitlab","aliases":[]},{"icon":"faGitlabSquare","aliases":["faGitlabSquare"]},{"icon":"faGitter","aliases":[]},{"icon":"faGlide","aliases":[]},{"icon":"faGlideG","aliases":[]},{"icon":"faGofore","aliases":[]},{"icon":"faGolang","aliases":[]},{"icon":"faGoodreads","aliases":[]},{"icon":"faGoodreadsG","aliases":[]},{"icon":"faGoogle","aliases":[]},{"icon":"faGoogleDrive","aliases":[]},{"icon":"faGooglePay","aliases":[]},{"icon":"faGooglePlay","aliases":[]},{"icon":"faGooglePlus","aliases":[]},{"icon":"faGooglePlusG","aliases":[]},{"icon":"faGooglePlusSquare","aliases":["faGooglePlusSquare"]},{"icon":"faGoogleScholar","aliases":[]},{"icon":"faGoogleWallet","aliases":[]},{"icon":"faGratipay","aliases":[]},{"icon":"faGrav","aliases":[]},{"icon":"faGripfire","aliases":[]},{"icon":"faGrunt","aliases":[]},{"icon":"faGuilded","aliases":[]},{"icon":"faGulp","aliases":[]},{"icon":"faHackerNews","aliases":[]},{"icon":"faHackerNewsSquare","aliases":["faHackerNewsSquare"]},{"icon":"faHackerrank","aliases":[]},{"icon":"faHashnode","aliases":[]},{"icon":"faHips","aliases":[]},{"icon":"faHireAHelper","aliases":[]},{"icon":"faHive","aliases":[]},{"icon":"faHooli","aliases":[]},{"icon":"faHornbill","aliases":[]},{"icon":"faHotjar","aliases":[]},{"icon":"faHouzz","aliases":[]},{"icon":"faHtml5","aliases":[]},{"icon":"faHubspot","aliases":[]},{"icon":"faIdeal","aliases":[]},{"icon":"faImdb","aliases":[]},{"icon":"faInnosoft","aliases":["faInnosoft"]},{"icon":"faInstagram","aliases":[]},{"icon":"faInstagramSquare","aliases":["faInstagramSquare"]},{"icon":"faInstalod","aliases":[]},{"icon":"faIntercom","aliases":[]},{"icon":"faInternetExplorer","aliases":[]},{"icon":"faInvision","aliases":[]},{"icon":"faIoxhost","aliases":[]},{"icon":"faItchIo","aliases":[]},{"icon":"faItunes","aliases":[]},{"icon":"faItunesNote","aliases":[]},{"icon":"faJava","aliases":[]},{"icon":"faJediOrder","aliases":[]},{"icon":"faJenkins","aliases":[]},{"icon":"faJira","aliases":[]},{"icon":"faJoget","aliases":[]},{"icon":"faJoomla","aliases":[]},{"icon":"faJs","aliases":[]},{"icon":"faJsSquare","aliases":["faJsSquare"]},{"icon":"faJsfiddle","aliases":[]},{"icon":"faJxl","aliases":[]},{"icon":"faKaggle","aliases":[]},{"icon":"faKeybase","aliases":[]},{"icon":"faKeycdn","aliases":[]},{"icon":"faKickstarter","aliases":["faSquareKickstarter"]},{"icon":"faKickstarterK","aliases":[]},{"icon":"faKorvue","aliases":[]},{"icon":"faLaravel","aliases":[]},{"icon":"faLastfm","aliases":[]},{"icon":"faLastfmSquare","aliases":["faLastfmSquare"]},{"icon":"faLeanpub","aliases":[]},{"icon":"faLess","aliases":[]},{"icon":"faLetterboxd","aliases":[]},{"icon":"faLine","aliases":[]},{"icon":"faLinkedin","aliases":[]},{"icon":"faLinkedinIn","aliases":[]},{"icon":"faLinode","aliases":[]},{"icon":"faLinux","aliases":[]},{"icon":"faLyft","aliases":[]},{"icon":"faMagento","aliases":[]},{"icon":"faMailchimp","aliases":[]},{"icon":"faMandalorian","aliases":[]},{"icon":"faMarkdown","aliases":[]},{"icon":"faMastodon","aliases":[]},{"icon":"faMaxcdn","aliases":[]},{"icon":"faMdb","aliases":[]},{"icon":"faMedapps","aliases":[]},{"icon":"faMedium","aliases":["faMediumM"]},{"icon":"faMediumM","aliases":["faMediumM"]},{"icon":"faMedrt","aliases":[]},{"icon":"faMeetup","aliases":[]},{"icon":"faMegaport","aliases":[]},{"icon":"faMendeley","aliases":[]},{"icon":"faMeta","aliases":[]},{"icon":"faMicroblog","aliases":[]},{"icon":"faMicrosoft","aliases":[]},{"icon":"faMintbit","aliases":[]},{"icon":"faMix","aliases":[]},{"icon":"faMixcloud","aliases":[]},{"icon":"faMixer","aliases":[]},{"icon":"faMizuni","aliases":[]},{"icon":"faModx","aliases":[]},{"icon":"faMonero","aliases":[]},{"icon":"faNapster","aliases":[]},{"icon":"faNeos","aliases":[]},{"icon":"faNfcDirectional","aliases":[]},{"icon":"faNfcSymbol","aliases":[]},{"icon":"faNimblr","aliases":[]},{"icon":"faNode","aliases":[]},{"icon":"faNodeJs","aliases":[]},{"icon":"faNpm","aliases":[]},{"icon":"faNs8","aliases":[]},{"icon":"faNutritionix","aliases":[]},{"icon":"faOctopusDeploy","aliases":[]},{"icon":"faOdnoklassniki","aliases":[]},{"icon":"faOdnoklassnikiSquare","aliases":["faOdnoklassnikiSquare"]},{"icon":"faOdysee","aliases":[]},{"icon":"faOldRepublic","aliases":[]},{"icon":"faOpencart","aliases":[]},{"icon":"faOpenid","aliases":[]},{"icon":"faOpensuse","aliases":[]},{"icon":"faOpera","aliases":[]},{"icon":"faOptinMonster","aliases":[]},{"icon":"faOrcid","aliases":[]},{"icon":"faOsi","aliases":[]},{"icon":"faPadlet","aliases":[]},{"icon":"faPage4","aliases":[]},{"icon":"faPagelines","aliases":[]},{"icon":"faPalfed","aliases":[]},{"icon":"faPatreon","aliases":[]},{"icon":"faPaypal","aliases":[]},{"icon":"faPerbyte","aliases":[]},{"icon":"faPeriscope","aliases":[]},{"icon":"faPhabricator","aliases":[]},{"icon":"faPhoenixFramework","aliases":[]},{"icon":"faPhoenixSquadron","aliases":[]},{"icon":"faPhp","aliases":[]},{"icon":"faPiedPiper","aliases":[]},{"icon":"faPiedPiperAlt","aliases":[]},{"icon":"faPiedPiperHat","aliases":[]},{"icon":"faPiedPiperPp","aliases":[]},{"icon":"faPiedPiperSquare","aliases":["faPiedPiperSquare"]},{"icon":"faPinterest","aliases":[]},{"icon":"faPinterestP","aliases":[]},{"icon":"faPinterestSquare","aliases":["faPinterestSquare"]},{"icon":"faPix","aliases":[]},{"icon":"faPixiv","aliases":[]},{"icon":"faPlaystation","aliases":[]},{"icon":"faProductHunt","aliases":[]},{"icon":"faPushed","aliases":[]},{"icon":"faPython","aliases":[]},{"icon":"faQq","aliases":[]},{"icon":"faQuinscape","aliases":[]},{"icon":"faQuora","aliases":[]},{"icon":"faRProject","aliases":[]},{"icon":"faRaspberryPi","aliases":[]},{"icon":"faRavelry","aliases":[]},{"icon":"faReact","aliases":[]},{"icon":"faReacteurope","aliases":[]},{"icon":"faReadme","aliases":[]},{"icon":"faRebel","aliases":[]},{"icon":"faRedRiver","aliases":[]},{"icon":"faReddit","aliases":[]},{"icon":"faRedditAlien","aliases":[]},{"icon":"faRedditSquare","aliases":["faRedditSquare"]},{"icon":"faRedhat","aliases":[]},{"icon":"faRendact","aliases":["faRendact"]},{"icon":"faRenren","aliases":[]},{"icon":"faReplyd","aliases":[]},{"icon":"faResearchgate","aliases":[]},{"icon":"faResolving","aliases":[]},{"icon":"faRev","aliases":[]},{"icon":"faRocketchat","aliases":[]},{"icon":"faRockrms","aliases":[]},{"icon":"faRust","aliases":[]},{"icon":"faSafari","aliases":[]},{"icon":"faSalesforce","aliases":[]},{"icon":"faSass","aliases":[]},{"icon":"faSchlix","aliases":[]},{"icon":"faScreenpal","aliases":[]},{"icon":"faScribd","aliases":[]},{"icon":"faSearchengin","aliases":[]},{"icon":"faSellcast","aliases":[]},{"icon":"faSellsy","aliases":[]},{"icon":"faServicestack","aliases":[]},{"icon":"faShirtsinbulk","aliases":[]},{"icon":"faShoelace","aliases":[]},{"icon":"faShopify","aliases":[]},{"icon":"faShopware","aliases":[]},{"icon":"faSignalMessenger","aliases":[]},{"icon":"faSimplybuilt","aliases":[]},{"icon":"faSistrix","aliases":[]},{"icon":"faSith","aliases":[]},{"icon":"faSitrox","aliases":[]},{"icon":"faSketch","aliases":[]},{"icon":"faSkyatlas","aliases":[]},{"icon":"faSkype","aliases":[]},{"icon":"faSlack","aliases":["faSlackHash"]},{"icon":"faSlackHash","aliases":["faSlackHash"]},{"icon":"faSlideshare","aliases":[]},{"icon":"faSnapchat","aliases":["faSnapchatGhost"]},{"icon":"faSnapchatGhost","aliases":["faSnapchatGhost"]},{"icon":"faSnapchatSquare","aliases":["faSnapchatSquare"]},{"icon":"faSoundcloud","aliases":[]},{"icon":"faSourcetree","aliases":[]},{"icon":"faSpaceAwesome","aliases":[]},{"icon":"faSpeakap","aliases":[]},{"icon":"faSpeakerDeck","aliases":[]},{"icon":"faSpotify","aliases":[]},{"icon":"faSquareBehance","aliases":["faBehanceSquare"]},{"icon":"faSquareBluesky","aliases":[]},{"icon":"faSquareDribbble","aliases":["faDribbbleSquare"]},{"icon":"faSquareFacebook","aliases":["faFacebookSquare"]},{"icon":"faSquareFontAwesome","aliases":[]},{"icon":"faSquareFontAwesomeStroke","aliases":["faFontAwesomeAlt"]},{"icon":"faSquareGit","aliases":["faGitSquare"]},{"icon":"faSquareGithub","aliases":["faGithubSquare"]},{"icon":"faSquareGitlab","aliases":["faGitlabSquare"]},{"icon":"faSquareGooglePlus","aliases":["faGooglePlusSquare"]},{"icon":"faSquareHackerNews","aliases":["faHackerNewsSquare"]},{"icon":"faSquareInstagram","aliases":["faInstagramSquare"]},{"icon":"faSquareJs","aliases":["faJsSquare"]},{"icon":"faSquareKickstarter","aliases":["faSquareKickstarter"]},{"icon":"faSquareLastfm","aliases":["faLastfmSquare"]},{"icon":"faSquareLetterboxd","aliases":[]},{"icon":"faSquareOdnoklassniki","aliases":["faOdnoklassnikiSquare"]},{"icon":"faSquarePiedPiper","aliases":["faPiedPiperSquare"]},{"icon":"faSquarePinterest","aliases":["faPinterestSquare"]},{"icon":"faSquareReddit","aliases":["faRedditSquare"]},{"icon":"faSquareSnapchat","aliases":["faSnapchatSquare"]},{"icon":"faSquareSteam","aliases":["faSteamSquare"]},{"icon":"faSquareThreads","aliases":[]},{"icon":"faSquareTumblr","aliases":["faTumblrSquare"]},{"icon":"faSquareTwitter","aliases":["faTwitterSquare"]},{"icon":"faSquareUpwork","aliases":[]},{"icon":"faSquareViadeo","aliases":["faViadeoSquare"]},{"icon":"faSquareVimeo","aliases":["faVimeoSquare"]},{"icon":"faSquareWebAwesome","aliases":[]},{"icon":"faSquareWebAwesomeStroke","aliases":[]},{"icon":"faSquareWhatsapp","aliases":["faWhatsappSquare"]},{"icon":"faSquareXTwitter","aliases":[]},{"icon":"faSquareXing","aliases":["faXingSquare"]},{"icon":"faSquareYoutube","aliases":["faYoutubeSquare"]},{"icon":"faSquarespace","aliases":[]},{"icon":"faStackExchange","aliases":[]},{"icon":"faStackOverflow","aliases":[]},{"icon":"faStackpath","aliases":[]},{"icon":"faStaylinked","aliases":[]},{"icon":"faSteam","aliases":[]},{"icon":"faSteamSquare","aliases":["faSteamSquare"]},{"icon":"faSteamSymbol","aliases":[]},{"icon":"faStickerMule","aliases":[]},{"icon":"faStrava","aliases":[]},{"icon":"faStripe","aliases":[]},{"icon":"faStripeS","aliases":[]},{"icon":"faStubber","aliases":[]},{"icon":"faStudiovinari","aliases":[]},{"icon":"faStumbleupon","aliases":[]},{"icon":"faStumbleuponCircle","aliases":[]},{"icon":"faSuperpowers","aliases":[]},{"icon":"faSupple","aliases":[]},{"icon":"faSuse","aliases":[]},{"icon":"faSwift","aliases":[]},{"icon":"faSymfony","aliases":[]},{"icon":"faTeamspeak","aliases":[]},{"icon":"faTelegram","aliases":["faTelegramPlane"]},{"icon":"faTelegramPlane","aliases":["faTelegramPlane"]},{"icon":"faTencentWeibo","aliases":[]},{"icon":"faTheRedYeti","aliases":[]},{"icon":"faThemeco","aliases":[]},{"icon":"faThemeisle","aliases":[]},{"icon":"faThinkPeaks","aliases":[]},{"icon":"faThreads","aliases":[]},{"icon":"faTiktok","aliases":[]},{"icon":"faTradeFederation","aliases":[]},{"icon":"faTrello","aliases":[]},{"icon":"faTumblr","aliases":[]},{"icon":"faTumblrSquare","aliases":["faTumblrSquare"]},{"icon":"faTwitch","aliases":[]},{"icon":"faTwitter","aliases":[]},{"icon":"faTwitterSquare","aliases":["faTwitterSquare"]},{"icon":"faTypo3","aliases":[]},{"icon":"faUber","aliases":[]},{"icon":"faUbuntu","aliases":[]},{"icon":"faUikit","aliases":[]},{"icon":"faUmbraco","aliases":[]},{"icon":"faUncharted","aliases":[]},{"icon":"faUniregistry","aliases":[]},{"icon":"faUnity","aliases":[]},{"icon":"faUnsplash","aliases":[]},{"icon":"faUntappd","aliases":[]},{"icon":"faUps","aliases":[]},{"icon":"faUpwork","aliases":[]},{"icon":"faUsb","aliases":[]},{"icon":"faUsps","aliases":[]},{"icon":"faUssunnah","aliases":[]},{"icon":"faVaadin","aliases":[]},{"icon":"faViacoin","aliases":[]},{"icon":"faViadeo","aliases":[]},{"icon":"faViadeoSquare","aliases":["faViadeoSquare"]},{"icon":"faViber","aliases":[]},{"icon":"faVimeo","aliases":[]},{"icon":"faVimeoSquare","aliases":["faVimeoSquare"]},{"icon":"faVimeoV","aliases":[]},{"icon":"faVine","aliases":[]},{"icon":"faVk","aliases":[]},{"icon":"faVnv","aliases":[]},{"icon":"faVuejs","aliases":[]},{"icon":"faWatchmanMonitoring","aliases":[]},{"icon":"faWaze","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWebflow","aliases":[]},{"icon":"faWeebly","aliases":[]},{"icon":"faWeibo","aliases":[]},{"icon":"faWeixin","aliases":[]},{"icon":"faWhatsapp","aliases":[]},{"icon":"faWhatsappSquare","aliases":["faWhatsappSquare"]},{"icon":"faWhmcs","aliases":[]},{"icon":"faWikipediaW","aliases":[]},{"icon":"faWindows","aliases":[]},{"icon":"faWirsindhandwerk","aliases":["faWsh"]},{"icon":"faWix","aliases":[]},{"icon":"faWizardsOfTheCoast","aliases":[]},{"icon":"faWodu","aliases":[]},{"icon":"faWolfPackBattalion","aliases":[]},{"icon":"faWordpress","aliases":[]},{"icon":"faWordpressSimple","aliases":[]},{"icon":"faWpbeginner","aliases":[]},{"icon":"faWpexplorer","aliases":[]},{"icon":"faWpforms","aliases":[]},{"icon":"faWpressr","aliases":["faRendact"]},{"icon":"faWsh","aliases":["faWsh"]},{"icon":"faXTwitter","aliases":[]},{"icon":"faXbox","aliases":[]},{"icon":"faXing","aliases":[]},{"icon":"faXingSquare","aliases":["faXingSquare"]},{"icon":"faYCombinator","aliases":[]},{"icon":"faYahoo","aliases":[]},{"icon":"faYammer","aliases":[]},{"icon":"faYandex","aliases":[]},{"icon":"faYandexInternational","aliases":[]},{"icon":"faYarn","aliases":[]},{"icon":"faYelp","aliases":[]},{"icon":"faYoast","aliases":[]},{"icon":"faYoutube","aliases":[]},{"icon":"faYoutubeSquare","aliases":["faYoutubeSquare"]},{"icon":"faZhihu","aliases":[]}],"prefix":"fab"},"@fortawesome/pro-solid-svg-icons":{"icons":[{"icon":"fa0","aliases":[]},{"icon":"fa00","aliases":[]},{"icon":"fa1","aliases":[]},{"icon":"fa100","aliases":["fa100"]},{"icon":"fa2","aliases":[]},{"icon":"fa3","aliases":[]},{"icon":"fa360Degrees","aliases":[]},{"icon":"fa4","aliases":[]},{"icon":"fa5","aliases":[]},{"icon":"fa6","aliases":[]},{"icon":"fa7","aliases":[]},{"icon":"fa8","aliases":[]},{"icon":"fa9","aliases":[]},{"icon":"faA","aliases":[]},{"icon":"faAbacus","aliases":[]},{"icon":"faAccentGrave","aliases":[]},{"icon":"faAcorn","aliases":[]},{"icon":"faAd","aliases":["faAd"]},{"icon":"faAdd","aliases":["faAdd"]},{"icon":"faAddressBook","aliases":["faContactBook"]},{"icon":"faAddressCard","aliases":["faContactCard","faVcard"]},{"icon":"faAdjust","aliases":["faAdjust"]},{"icon":"faAirConditioner","aliases":[]},{"icon":"faAirFreshener","aliases":["faAirFreshener"]},{"icon":"faAirplay","aliases":[]},{"icon":"faAlarmClock","aliases":[]},{"icon":"faAlarmExclamation","aliases":[]},{"icon":"faAlarmPlus","aliases":[]},{"icon":"faAlarmSnooze","aliases":[]},{"icon":"faAlbum","aliases":[]},{"icon":"faAlbumCirclePlus","aliases":[]},{"icon":"faAlbumCircleUser","aliases":[]},{"icon":"faAlbumCollection","aliases":[]},{"icon":"faAlbumCollectionCirclePlus","aliases":[]},{"icon":"faAlbumCollectionCircleUser","aliases":[]},{"icon":"faAlicorn","aliases":[]},{"icon":"faAlien","aliases":[]},{"icon":"faAlien8bit","aliases":["faAlienMonster"]},{"icon":"faAlienMonster","aliases":["faAlienMonster"]},{"icon":"faAlignCenter","aliases":[]},{"icon":"faAlignJustify","aliases":[]},{"icon":"faAlignLeft","aliases":[]},{"icon":"faAlignRight","aliases":[]},{"icon":"faAlignSlash","aliases":[]},{"icon":"faAllergies","aliases":["faAllergies"]},{"icon":"faAlt","aliases":[]},{"icon":"faAmbulance","aliases":["faAmbulance"]},{"icon":"faAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAmpGuitar","aliases":[]},{"icon":"faAmpersand","aliases":[]},{"icon":"faAnalytics","aliases":["faAnalytics"]},{"icon":"faAnchor","aliases":[]},{"icon":"faAnchorCircleCheck","aliases":[]},{"icon":"faAnchorCircleExclamation","aliases":[]},{"icon":"faAnchorCircleXmark","aliases":[]},{"icon":"faAnchorLock","aliases":[]},{"icon":"faAngel","aliases":[]},{"icon":"faAngle","aliases":[]},{"icon":"faAngle90","aliases":[]},{"icon":"faAngleDoubleDown","aliases":["faAngleDoubleDown"]},{"icon":"faAngleDoubleLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAngleDoubleRight","aliases":["faAngleDoubleRight"]},{"icon":"faAngleDoubleUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngleDown","aliases":[]},{"icon":"faAngleLeft","aliases":[]},{"icon":"faAngleRight","aliases":[]},{"icon":"faAngleUp","aliases":[]},{"icon":"faAnglesDown","aliases":["faAngleDoubleDown"]},{"icon":"faAnglesLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAnglesRight","aliases":["faAngleDoubleRight"]},{"icon":"faAnglesUp","aliases":["faAngleDoubleUp"]},{"icon":"faAnglesUpDown","aliases":[]},{"icon":"faAngry","aliases":["faAngry"]},{"icon":"faAnkh","aliases":[]},{"icon":"faAnt","aliases":[]},{"icon":"faApartment","aliases":[]},{"icon":"faAperture","aliases":[]},{"icon":"faApostrophe","aliases":[]},{"icon":"faAppleAlt","aliases":["faAppleAlt"]},{"icon":"faAppleCore","aliases":[]},{"icon":"faAppleCrate","aliases":["faAppleCrate"]},{"icon":"faAppleWhole","aliases":["faAppleAlt"]},{"icon":"faArchive","aliases":["faArchive"]},{"icon":"faArchway","aliases":[]},{"icon":"faAreaChart","aliases":["faAreaChart"]},{"icon":"faArrowAltCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faArrowAltCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faArrowAltCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faArrowAltCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faArrowAltDown","aliases":["faArrowAltDown"]},{"icon":"faArrowAltFromBottom","aliases":["faArrowAltFromBottom"]},{"icon":"faArrowAltFromLeft","aliases":["faArrowAltFromLeft"]},{"icon":"faArrowAltFromRight","aliases":["faArrowAltFromRight"]},{"icon":"faArrowAltFromTop","aliases":["faArrowAltFromTop"]},{"icon":"faArrowAltLeft","aliases":["faArrowAltLeft"]},{"icon":"faArrowAltRight","aliases":["faArrowAltRight"]},{"icon":"faArrowAltSquareDown","aliases":["faArrowAltSquareDown"]},{"icon":"faArrowAltSquareLeft","aliases":["faArrowAltSquareLeft"]},{"icon":"faArrowAltSquareRight","aliases":["faArrowAltSquareRight"]},{"icon":"faArrowAltSquareUp","aliases":["faArrowAltSquareUp"]},{"icon":"faArrowAltToBottom","aliases":["faArrowAltToBottom"]},{"icon":"faArrowAltToLeft","aliases":["faArrowAltToLeft"]},{"icon":"faArrowAltToRight","aliases":["faArrowAltToRight"]},{"icon":"faArrowAltToTop","aliases":["faArrowAltToTop"]},{"icon":"faArrowAltUp","aliases":["faArrowAltUp"]},{"icon":"faArrowCircleDown","aliases":["faArrowCircleDown"]},{"icon":"faArrowCircleLeft","aliases":["faArrowCircleLeft"]},{"icon":"faArrowCircleRight","aliases":["faArrowCircleRight"]},{"icon":"faArrowCircleUp","aliases":["faArrowCircleUp"]},{"icon":"faArrowDown","aliases":[]},{"icon":"faArrowDown19","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faArrowDown91","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faArrowDownAZ","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faArrowDownArrowUp","aliases":["faSortAlt"]},{"icon":"faArrowDownBigSmall","aliases":["faSortSizeDown"]},{"icon":"faArrowDownFromArc","aliases":[]},{"icon":"faArrowDownFromBracket","aliases":[]},{"icon":"faArrowDownFromDottedLine","aliases":[]},{"icon":"faArrowDownFromLine","aliases":["faArrowFromTop"]},{"icon":"faArrowDownLeft","aliases":[]},{"icon":"faArrowDownLeftAndArrowUpRightToCenter","aliases":[]},{"icon":"faArrowDownLong","aliases":["faLongArrowDown"]},{"icon":"faArrowDownRight","aliases":[]},{"icon":"faArrowDownShortWide","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faArrowDownSmallBig","aliases":["faSortSizeDownAlt"]},{"icon":"faArrowDownSquareTriangle","aliases":["faSortShapesDownAlt"]},{"icon":"faArrowDownToArc","aliases":[]},{"icon":"faArrowDownToBracket","aliases":[]},{"icon":"faArrowDownToDottedLine","aliases":[]},{"icon":"faArrowDownToLine","aliases":["faArrowToBottom"]},{"icon":"faArrowDownToSquare","aliases":[]},{"icon":"faArrowDownTriangleSquare","aliases":["faSortShapesDown"]},{"icon":"faArrowDownUpAcrossLine","aliases":[]},{"icon":"faArrowDownUpLock","aliases":[]},{"icon":"faArrowDownWideShort","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faArrowDownZA","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faArrowFromBottom","aliases":["faArrowFromBottom"]},{"icon":"faArrowFromLeft","aliases":["faArrowFromLeft"]},{"icon":"faArrowFromRight","aliases":["faArrowFromRight"]},{"icon":"faArrowFromTop","aliases":["faArrowFromTop"]},{"icon":"faArrowLeft","aliases":[]},{"icon":"faArrowLeftFromArc","aliases":[]},{"icon":"faArrowLeftFromBracket","aliases":[]},{"icon":"faArrowLeftFromLine","aliases":["faArrowFromRight"]},{"icon":"faArrowLeftLong","aliases":["faLongArrowLeft"]},{"icon":"faArrowLeftLongToLine","aliases":[]},{"icon":"faArrowLeftRotate","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowLeftToArc","aliases":[]},{"icon":"faArrowLeftToBracket","aliases":[]},{"icon":"faArrowLeftToLine","aliases":["faArrowToLeft"]},{"icon":"faArrowPointer","aliases":["faMousePointer"]},{"icon":"faArrowProgress","aliases":[]},{"icon":"faArrowRight","aliases":[]},{"icon":"faArrowRightArrowLeft","aliases":["faExchange"]},{"icon":"faArrowRightFromArc","aliases":[]},{"icon":"faArrowRightFromBracket","aliases":["faSignOut"]},{"icon":"faArrowRightFromFile","aliases":["faArrowRightFromFile"]},{"icon":"faArrowRightFromLine","aliases":["faArrowFromLeft"]},{"icon":"faArrowRightLong","aliases":["faLongArrowRight"]},{"icon":"faArrowRightLongToLine","aliases":[]},{"icon":"faArrowRightRotate","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRightToArc","aliases":[]},{"icon":"faArrowRightToBracket","aliases":["faSignIn"]},{"icon":"faArrowRightToCity","aliases":[]},{"icon":"faArrowRightToFile","aliases":["faArrowRightToFile"]},{"icon":"faArrowRightToLine","aliases":["faArrowToRight"]},{"icon":"faArrowRotateBack","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateBackward","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateForward","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRotateLeft","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateRight","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowSquareDown","aliases":["faArrowSquareDown"]},{"icon":"faArrowSquareLeft","aliases":["faArrowSquareLeft"]},{"icon":"faArrowSquareRight","aliases":["faArrowSquareRight"]},{"icon":"faArrowSquareUp","aliases":["faArrowSquareUp"]},{"icon":"faArrowToBottom","aliases":["faArrowToBottom"]},{"icon":"faArrowToLeft","aliases":["faArrowToLeft"]},{"icon":"faArrowToRight","aliases":["faArrowToRight"]},{"icon":"faArrowToTop","aliases":["faArrowToTop"]},{"icon":"faArrowTrendDown","aliases":[]},{"icon":"faArrowTrendUp","aliases":[]},{"icon":"faArrowTurnDown","aliases":["faLevelDown"]},{"icon":"faArrowTurnDownLeft","aliases":[]},{"icon":"faArrowTurnDownRight","aliases":[]},{"icon":"faArrowTurnLeft","aliases":[]},{"icon":"faArrowTurnLeftDown","aliases":[]},{"icon":"faArrowTurnLeftUp","aliases":[]},{"icon":"faArrowTurnRight","aliases":[]},{"icon":"faArrowTurnUp","aliases":["faLevelUp"]},{"icon":"faArrowUp","aliases":[]},{"icon":"faArrowUp19","aliases":["faSortNumericUp"]},{"icon":"faArrowUp91","aliases":["faSortNumericUpAlt"]},{"icon":"faArrowUpAZ","aliases":["faSortAlphaUp"]},{"icon":"faArrowUpArrowDown","aliases":["faSortUpDown"]},{"icon":"faArrowUpBigSmall","aliases":["faSortSizeUp"]},{"icon":"faArrowUpFromArc","aliases":[]},{"icon":"faArrowUpFromBracket","aliases":[]},{"icon":"faArrowUpFromDottedLine","aliases":[]},{"icon":"faArrowUpFromGroundWater","aliases":[]},{"icon":"faArrowUpFromLine","aliases":["faArrowFromBottom"]},{"icon":"faArrowUpFromSquare","aliases":[]},{"icon":"faArrowUpFromWaterPump","aliases":[]},{"icon":"faArrowUpLeft","aliases":[]},{"icon":"faArrowUpLeftFromCircle","aliases":[]},{"icon":"faArrowUpLong","aliases":["faLongArrowUp"]},{"icon":"faArrowUpRight","aliases":[]},{"icon":"faArrowUpRightAndArrowDownLeftFromCenter","aliases":[]},{"icon":"faArrowUpRightDots","aliases":[]},{"icon":"faArrowUpRightFromSquare","aliases":["faExternalLink"]},{"icon":"faArrowUpShortWide","aliases":["faSortAmountUpAlt"]},{"icon":"faArrowUpSmallBig","aliases":["faSortSizeUpAlt"]},{"icon":"faArrowUpSquareTriangle","aliases":["faSortShapesUpAlt"]},{"icon":"faArrowUpToArc","aliases":[]},{"icon":"faArrowUpToBracket","aliases":[]},{"icon":"faArrowUpToDottedLine","aliases":[]},{"icon":"faArrowUpToLine","aliases":["faArrowToTop"]},{"icon":"faArrowUpTriangleSquare","aliases":["faSortShapesUp"]},{"icon":"faArrowUpWideShort","aliases":["faSortAmountUp"]},{"icon":"faArrowUpZA","aliases":["faSortAlphaUpAlt"]},{"icon":"faArrows","aliases":["faArrows"]},{"icon":"faArrowsAlt","aliases":["faArrowsAlt"]},{"icon":"faArrowsAltH","aliases":["faArrowsAltH"]},{"icon":"faArrowsAltV","aliases":["faArrowsAltV"]},{"icon":"faArrowsCross","aliases":[]},{"icon":"faArrowsDownToLine","aliases":[]},{"icon":"faArrowsDownToPeople","aliases":[]},{"icon":"faArrowsFromDottedLine","aliases":[]},{"icon":"faArrowsFromLine","aliases":[]},{"icon":"faArrowsH","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRight","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRightToLine","aliases":[]},{"icon":"faArrowsMaximize","aliases":["faExpandArrows"]},{"icon":"faArrowsMinimize","aliases":["faCompressArrows"]},{"icon":"faArrowsRepeat","aliases":["faRepeatAlt"]},{"icon":"faArrowsRepeat1","aliases":["faRepeat1Alt"]},{"icon":"faArrowsRetweet","aliases":["faRetweetAlt"]},{"icon":"faArrowsRotate","aliases":["faRefresh","faSync"]},{"icon":"faArrowsRotateReverse","aliases":[]},{"icon":"faArrowsSpin","aliases":[]},{"icon":"faArrowsSplitUpAndLeft","aliases":[]},{"icon":"faArrowsToCircle","aliases":[]},{"icon":"faArrowsToDot","aliases":[]},{"icon":"faArrowsToDottedLine","aliases":[]},{"icon":"faArrowsToEye","aliases":[]},{"icon":"faArrowsToLine","aliases":[]},{"icon":"faArrowsTurnRight","aliases":[]},{"icon":"faArrowsTurnToDots","aliases":[]},{"icon":"faArrowsUpDown","aliases":["faArrowsV"]},{"icon":"faArrowsUpDownLeftRight","aliases":["faArrows"]},{"icon":"faArrowsUpToLine","aliases":[]},{"icon":"faArrowsV","aliases":["faArrowsV"]},{"icon":"faAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAssistiveListeningSystems","aliases":["faAssistiveListeningSystems"]},{"icon":"faAsterisk","aliases":[]},{"icon":"faAt","aliases":[]},{"icon":"faAtlas","aliases":["faAtlas"]},{"icon":"faAtom","aliases":[]},{"icon":"faAtomAlt","aliases":["faAtomAlt"]},{"icon":"faAtomSimple","aliases":["faAtomAlt"]},{"icon":"faAudioDescription","aliases":[]},{"icon":"faAudioDescriptionSlash","aliases":[]},{"icon":"faAustralSign","aliases":[]},{"icon":"faAutomobile","aliases":["faAutomobile"]},{"icon":"faAvocado","aliases":[]},{"icon":"faAward","aliases":[]},{"icon":"faAwardSimple","aliases":[]},{"icon":"faAxe","aliases":[]},{"icon":"faAxeBattle","aliases":[]},{"icon":"faB","aliases":[]},{"icon":"faBaby","aliases":[]},{"icon":"faBabyCarriage","aliases":["faCarriageBaby"]},{"icon":"faBackpack","aliases":[]},{"icon":"faBackspace","aliases":["faBackspace"]},{"icon":"faBackward","aliases":[]},{"icon":"faBackwardFast","aliases":["faFastBackward"]},{"icon":"faBackwardStep","aliases":["faStepBackward"]},{"icon":"faBacon","aliases":[]},{"icon":"faBacteria","aliases":[]},{"icon":"faBacterium","aliases":[]},{"icon":"faBadge","aliases":[]},{"icon":"faBadgeCheck","aliases":[]},{"icon":"faBadgeDollar","aliases":[]},{"icon":"faBadgePercent","aliases":[]},{"icon":"faBadgeSheriff","aliases":[]},{"icon":"faBadgerHoney","aliases":[]},{"icon":"faBadminton","aliases":[]},{"icon":"faBagSeedling","aliases":[]},{"icon":"faBagShopping","aliases":["faShoppingBag"]},{"icon":"faBagShoppingMinus","aliases":[]},{"icon":"faBagShoppingPlus","aliases":[]},{"icon":"faBagel","aliases":[]},{"icon":"faBagsShopping","aliases":[]},{"icon":"faBaguette","aliases":[]},{"icon":"faBahai","aliases":["faHaykal"]},{"icon":"faBahtSign","aliases":[]},{"icon":"faBalanceScale","aliases":["faBalanceScale"]},{"icon":"faBalanceScaleLeft","aliases":["faBalanceScaleLeft"]},{"icon":"faBalanceScaleRight","aliases":["faBalanceScaleRight"]},{"icon":"faBallPile","aliases":[]},{"icon":"faBalloon","aliases":[]},{"icon":"faBalloons","aliases":[]},{"icon":"faBallot","aliases":[]},{"icon":"faBallotCheck","aliases":[]},{"icon":"faBan","aliases":["faCancel"]},{"icon":"faBanBug","aliases":["faDebug"]},{"icon":"faBanParking","aliases":["faParkingCircleSlash"]},{"icon":"faBanSmoking","aliases":["faSmokingBan"]},{"icon":"faBanana","aliases":[]},{"icon":"faBandAid","aliases":["faBandAid"]},{"icon":"faBandage","aliases":["faBandAid"]},{"icon":"faBangladeshiTakaSign","aliases":[]},{"icon":"faBanjo","aliases":[]},{"icon":"faBank","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBarChart","aliases":["faBarChart"]},{"icon":"faBarcode","aliases":[]},{"icon":"faBarcodeAlt","aliases":["faBarcodeAlt"]},{"icon":"faBarcodeRead","aliases":[]},{"icon":"faBarcodeScan","aliases":[]},{"icon":"faBarnSilo","aliases":["faBarnSilo"]},{"icon":"faBars","aliases":["faNavicon"]},{"icon":"faBarsFilter","aliases":[]},{"icon":"faBarsProgress","aliases":["faTasksAlt"]},{"icon":"faBarsSort","aliases":[]},{"icon":"faBarsStaggered","aliases":["faReorder","faStream"]},{"icon":"faBaseball","aliases":["faBaseballBall"]},{"icon":"faBaseballBall","aliases":["faBaseballBall"]},{"icon":"faBaseballBatBall","aliases":[]},{"icon":"faBasketShopping","aliases":["faShoppingBasket"]},{"icon":"faBasketShoppingMinus","aliases":[]},{"icon":"faBasketShoppingPlus","aliases":[]},{"icon":"faBasketShoppingSimple","aliases":["faShoppingBasketAlt"]},{"icon":"faBasketball","aliases":["faBasketballBall"]},{"icon":"faBasketballBall","aliases":["faBasketballBall"]},{"icon":"faBasketballHoop","aliases":[]},{"icon":"faBat","aliases":[]},{"icon":"faBath","aliases":["faBathtub"]},{"icon":"faBathtub","aliases":["faBathtub"]},{"icon":"faBattery","aliases":["faBattery","faBattery5"]},{"icon":"faBattery0","aliases":["faBattery0"]},{"icon":"faBattery1","aliases":["faBattery1"]},{"icon":"faBattery2","aliases":["faBattery2"]},{"icon":"faBattery3","aliases":["faBattery3"]},{"icon":"faBattery4","aliases":["faBattery4"]},{"icon":"faBattery5","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryBolt","aliases":[]},{"icon":"faBatteryCar","aliases":["faBatteryCar"]},{"icon":"faBatteryEmpty","aliases":["faBattery0"]},{"icon":"faBatteryExclamation","aliases":[]},{"icon":"faBatteryFull","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryHalf","aliases":["faBattery3"]},{"icon":"faBatteryLow","aliases":["faBattery1"]},{"icon":"faBatteryQuarter","aliases":["faBattery2"]},{"icon":"faBatterySlash","aliases":[]},{"icon":"faBatteryThreeQuarters","aliases":["faBattery4"]},{"icon":"faBed","aliases":[]},{"icon":"faBedAlt","aliases":["faBedAlt"]},{"icon":"faBedBunk","aliases":[]},{"icon":"faBedEmpty","aliases":[]},{"icon":"faBedFront","aliases":["faBedAlt"]},{"icon":"faBedPulse","aliases":["faProcedures"]},{"icon":"faBee","aliases":[]},{"icon":"faBeer","aliases":["faBeer"]},{"icon":"faBeerFoam","aliases":["faBeerFoam"]},{"icon":"faBeerMug","aliases":["faBeerFoam"]},{"icon":"faBeerMugEmpty","aliases":["faBeer"]},{"icon":"faBell","aliases":[]},{"icon":"faBellConcierge","aliases":["faConciergeBell"]},{"icon":"faBellExclamation","aliases":[]},{"icon":"faBellOn","aliases":[]},{"icon":"faBellPlus","aliases":[]},{"icon":"faBellRing","aliases":[]},{"icon":"faBellSchool","aliases":[]},{"icon":"faBellSchoolSlash","aliases":[]},{"icon":"faBellSlash","aliases":[]},{"icon":"faBells","aliases":[]},{"icon":"faBenchTree","aliases":[]},{"icon":"faBetamax","aliases":["faBetamax"]},{"icon":"faBezierCurve","aliases":[]},{"icon":"faBible","aliases":["faBible"]},{"icon":"faBicycle","aliases":[]},{"icon":"faBiking","aliases":["faBiking"]},{"icon":"faBikingMountain","aliases":["faBikingMountain"]},{"icon":"faBillboard","aliases":[]},{"icon":"faBinBottles","aliases":[]},{"icon":"faBinBottlesRecycle","aliases":[]},{"icon":"faBinRecycle","aliases":[]},{"icon":"faBinary","aliases":[]},{"icon":"faBinaryCircleCheck","aliases":[]},{"icon":"faBinaryLock","aliases":[]},{"icon":"faBinarySlash","aliases":[]},{"icon":"faBinoculars","aliases":[]},{"icon":"faBiohazard","aliases":[]},{"icon":"faBird","aliases":[]},{"icon":"faBirthdayCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faBitcoinSign","aliases":[]},{"icon":"faBlackboard","aliases":["faBlackboard"]},{"icon":"faBlanket","aliases":[]},{"icon":"faBlanketFire","aliases":[]},{"icon":"faBlender","aliases":[]},{"icon":"faBlenderPhone","aliases":[]},{"icon":"faBlind","aliases":["faBlind"]},{"icon":"faBlinds","aliases":[]},{"icon":"faBlindsOpen","aliases":[]},{"icon":"faBlindsRaised","aliases":[]},{"icon":"faBlock","aliases":[]},{"icon":"faBlockBrick","aliases":["faWallBrick"]},{"icon":"faBlockBrickFire","aliases":["faFirewall"]},{"icon":"faBlockQuestion","aliases":[]},{"icon":"faBlockQuote","aliases":[]},{"icon":"faBlog","aliases":[]},{"icon":"faBlueberries","aliases":[]},{"icon":"faBluetooth","aliases":[]},{"icon":"faBold","aliases":[]},{"icon":"faBolt","aliases":["faZap"]},{"icon":"faBoltAuto","aliases":[]},{"icon":"faBoltLightning","aliases":[]},{"icon":"faBoltSlash","aliases":[]},{"icon":"faBomb","aliases":[]},{"icon":"faBone","aliases":[]},{"icon":"faBoneBreak","aliases":[]},{"icon":"faBong","aliases":[]},{"icon":"faBook","aliases":[]},{"icon":"faBookAlt","aliases":["faBookAlt"]},{"icon":"faBookArrowRight","aliases":[]},{"icon":"faBookArrowUp","aliases":[]},{"icon":"faBookAtlas","aliases":["faAtlas"]},{"icon":"faBookBible","aliases":["faBible"]},{"icon":"faBookBlank","aliases":["faBookAlt"]},{"icon":"faBookBookmark","aliases":[]},{"icon":"faBookCircle","aliases":["faBookCircle"]},{"icon":"faBookCircleArrowRight","aliases":[]},{"icon":"faBookCircleArrowUp","aliases":[]},{"icon":"faBookCopy","aliases":[]},{"icon":"faBookDead","aliases":["faBookDead"]},{"icon":"faBookFont","aliases":[]},{"icon":"faBookHeart","aliases":[]},{"icon":"faBookJournalWhills","aliases":["faJournalWhills"]},{"icon":"faBookLaw","aliases":["faBookLaw"]},{"icon":"faBookMedical","aliases":[]},{"icon":"faBookOpen","aliases":[]},{"icon":"faBookOpenAlt","aliases":["faBookOpenAlt"]},{"icon":"faBookOpenCover","aliases":["faBookOpenAlt"]},{"icon":"faBookOpenReader","aliases":["faBookReader"]},{"icon":"faBookQuran","aliases":["faQuran"]},{"icon":"faBookReader","aliases":["faBookReader"]},{"icon":"faBookSection","aliases":["faBookLaw"]},{"icon":"faBookSkull","aliases":["faBookDead"]},{"icon":"faBookSparkles","aliases":["faBookSpells"]},{"icon":"faBookSpells","aliases":["faBookSpells"]},{"icon":"faBookTanakh","aliases":["faTanakh"]},{"icon":"faBookUser","aliases":[]},{"icon":"faBookmark","aliases":[]},{"icon":"faBookmarkCircle","aliases":["faBookmarkCircle"]},{"icon":"faBookmarkSlash","aliases":[]},{"icon":"faBooks","aliases":[]},{"icon":"faBooksMedical","aliases":[]},{"icon":"faBoombox","aliases":[]},{"icon":"faBoot","aliases":[]},{"icon":"faBootHeeled","aliases":[]},{"icon":"faBoothCurtain","aliases":[]},{"icon":"faBorderAll","aliases":[]},{"icon":"faBorderBottom","aliases":[]},{"icon":"faBorderBottomRight","aliases":["faBorderStyleAlt"]},{"icon":"faBorderCenterH","aliases":[]},{"icon":"faBorderCenterV","aliases":[]},{"icon":"faBorderInner","aliases":[]},{"icon":"faBorderLeft","aliases":[]},{"icon":"faBorderNone","aliases":[]},{"icon":"faBorderOuter","aliases":[]},{"icon":"faBorderRight","aliases":[]},{"icon":"faBorderStyle","aliases":["faBorderStyle"]},{"icon":"faBorderStyleAlt","aliases":["faBorderStyleAlt"]},{"icon":"faBorderTop","aliases":[]},{"icon":"faBorderTopLeft","aliases":["faBorderStyle"]},{"icon":"faBoreHole","aliases":[]},{"icon":"faBottleBaby","aliases":[]},{"icon":"faBottleDroplet","aliases":[]},{"icon":"faBottleWater","aliases":[]},{"icon":"faBowArrow","aliases":[]},{"icon":"faBowlChopsticks","aliases":[]},{"icon":"faBowlChopsticksNoodles","aliases":[]},{"icon":"faBowlFood","aliases":[]},{"icon":"faBowlHot","aliases":["faSoup"]},{"icon":"faBowlRice","aliases":[]},{"icon":"faBowlSalad","aliases":["faBowlSalad"]},{"icon":"faBowlScoop","aliases":["faBowlShavedIce"]},{"icon":"faBowlScoops","aliases":[]},{"icon":"faBowlShavedIce","aliases":["faBowlShavedIce"]},{"icon":"faBowlSoftServe","aliases":[]},{"icon":"faBowlSpoon","aliases":[]},{"icon":"faBowlingBall","aliases":[]},{"icon":"faBowlingBallPin","aliases":[]},{"icon":"faBowlingPins","aliases":[]},{"icon":"faBox","aliases":[]},{"icon":"faBoxAlt","aliases":["faBoxAlt"]},{"icon":"faBoxArchive","aliases":["faArchive"]},{"icon":"faBoxBallot","aliases":[]},{"icon":"faBoxCheck","aliases":[]},{"icon":"faBoxCircleCheck","aliases":[]},{"icon":"faBoxDollar","aliases":["faBoxUsd"]},{"icon":"faBoxFragile","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faBoxFull","aliases":["faBoxFull"]},{"icon":"faBoxHeart","aliases":[]},{"icon":"faBoxOpen","aliases":[]},{"icon":"faBoxOpenFull","aliases":["faBoxFull"]},{"icon":"faBoxTaped","aliases":["faBoxAlt"]},{"icon":"faBoxTissue","aliases":[]},{"icon":"faBoxUp","aliases":["faBoxUp"]},{"icon":"faBoxUsd","aliases":["faBoxUsd"]},{"icon":"faBoxes","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesAlt","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesPacking","aliases":[]},{"icon":"faBoxesStacked","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxingGlove","aliases":["faGloveBoxing"]},{"icon":"faBracket","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketCurly","aliases":["faBracketCurlyLeft"]},{"icon":"faBracketCurlyLeft","aliases":["faBracketCurlyLeft"]},{"icon":"faBracketCurlyRight","aliases":[]},{"icon":"faBracketLeft","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketRound","aliases":["faParenthesis"]},{"icon":"faBracketRoundRight","aliases":[]},{"icon":"faBracketSquare","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketSquareRight","aliases":[]},{"icon":"faBrackets","aliases":["faBrackets"]},{"icon":"faBracketsCurly","aliases":[]},{"icon":"faBracketsRound","aliases":["faParentheses"]},{"icon":"faBracketsSquare","aliases":["faBrackets"]},{"icon":"faBraille","aliases":[]},{"icon":"faBrain","aliases":[]},{"icon":"faBrainArrowCurvedRight","aliases":["faMindShare"]},{"icon":"faBrainCircuit","aliases":[]},{"icon":"faBrakeWarning","aliases":[]},{"icon":"faBrazilianRealSign","aliases":[]},{"icon":"faBreadLoaf","aliases":[]},{"icon":"faBreadSlice","aliases":[]},{"icon":"faBreadSliceButter","aliases":[]},{"icon":"faBridge","aliases":[]},{"icon":"faBridgeCircleCheck","aliases":[]},{"icon":"faBridgeCircleExclamation","aliases":[]},{"icon":"faBridgeCircleXmark","aliases":[]},{"icon":"faBridgeLock","aliases":[]},{"icon":"faBridgeSuspension","aliases":[]},{"icon":"faBridgeWater","aliases":[]},{"icon":"faBriefcase","aliases":[]},{"icon":"faBriefcaseArrowRight","aliases":[]},{"icon":"faBriefcaseBlank","aliases":[]},{"icon":"faBriefcaseClock","aliases":["faBriefcaseClock"]},{"icon":"faBriefcaseMedical","aliases":[]},{"icon":"faBrightness","aliases":[]},{"icon":"faBrightnessLow","aliases":[]},{"icon":"faBringForward","aliases":[]},{"icon":"faBringFront","aliases":[]},{"icon":"faBroadcastTower","aliases":["faBroadcastTower"]},{"icon":"faBroccoli","aliases":[]},{"icon":"faBroom","aliases":[]},{"icon":"faBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faBroomWide","aliases":[]},{"icon":"faBrowser","aliases":[]},{"icon":"faBrowsers","aliases":[]},{"icon":"faBrush","aliases":[]},{"icon":"faBucket","aliases":[]},{"icon":"faBug","aliases":[]},{"icon":"faBugSlash","aliases":[]},{"icon":"faBugs","aliases":[]},{"icon":"faBuilding","aliases":[]},{"icon":"faBuildingCircleArrowRight","aliases":[]},{"icon":"faBuildingCircleCheck","aliases":[]},{"icon":"faBuildingCircleExclamation","aliases":[]},{"icon":"faBuildingCircleXmark","aliases":[]},{"icon":"faBuildingColumns","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBuildingFlag","aliases":[]},{"icon":"faBuildingLock","aliases":[]},{"icon":"faBuildingMagnifyingGlass","aliases":[]},{"icon":"faBuildingMemo","aliases":[]},{"icon":"faBuildingNgo","aliases":[]},{"icon":"faBuildingShield","aliases":[]},{"icon":"faBuildingUn","aliases":[]},{"icon":"faBuildingUser","aliases":[]},{"icon":"faBuildingWheat","aliases":[]},{"icon":"faBuildings","aliases":[]},{"icon":"faBulldozer","aliases":[]},{"icon":"faBullhorn","aliases":[]},{"icon":"faBullseye","aliases":[]},{"icon":"faBullseyeArrow","aliases":[]},{"icon":"faBullseyePointer","aliases":[]},{"icon":"faBuoy","aliases":[]},{"icon":"faBuoyMooring","aliases":[]},{"icon":"faBurger","aliases":["faHamburger"]},{"icon":"faBurgerCheese","aliases":["faCheeseburger"]},{"icon":"faBurgerFries","aliases":[]},{"icon":"faBurgerGlass","aliases":[]},{"icon":"faBurgerLettuce","aliases":[]},{"icon":"faBurgerSoda","aliases":[]},{"icon":"faBurn","aliases":["faBurn"]},{"icon":"faBurrito","aliases":[]},{"icon":"faBurst","aliases":[]},{"icon":"faBus","aliases":[]},{"icon":"faBusAlt","aliases":["faBusAlt"]},{"icon":"faBusSchool","aliases":[]},{"icon":"faBusSimple","aliases":["faBusAlt"]},{"icon":"faBusinessFront","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faBusinessTime","aliases":["faBriefcaseClock"]},{"icon":"faButter","aliases":[]},{"icon":"faC","aliases":[]},{"icon":"faCab","aliases":["faCab"]},{"icon":"faCabin","aliases":[]},{"icon":"faCabinetFiling","aliases":[]},{"icon":"faCableCar","aliases":["faTram"]},{"icon":"faCactus","aliases":[]},{"icon":"faCaduceus","aliases":[]},{"icon":"faCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeCandles","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeSlice","aliases":["faShortcake"]},{"icon":"faCalculator","aliases":[]},{"icon":"faCalculatorAlt","aliases":["faCalculatorAlt"]},{"icon":"faCalculatorSimple","aliases":["faCalculatorAlt"]},{"icon":"faCalendar","aliases":[]},{"icon":"faCalendarAlt","aliases":["faCalendarAlt"]},{"icon":"faCalendarArrowDown","aliases":["faCalendarDownload"]},{"icon":"faCalendarArrowUp","aliases":["faCalendarUpload"]},{"icon":"faCalendarCheck","aliases":[]},{"icon":"faCalendarCircle","aliases":["faCalendarCircle"]},{"icon":"faCalendarCircleExclamation","aliases":[]},{"icon":"faCalendarCircleMinus","aliases":[]},{"icon":"faCalendarCirclePlus","aliases":[]},{"icon":"faCalendarCircleUser","aliases":[]},{"icon":"faCalendarClock","aliases":["faCalendarTime"]},{"icon":"faCalendarDay","aliases":[]},{"icon":"faCalendarDays","aliases":["faCalendarAlt"]},{"icon":"faCalendarDownload","aliases":["faCalendarDownload"]},{"icon":"faCalendarEdit","aliases":["faCalendarEdit"]},{"icon":"faCalendarExclamation","aliases":[]},{"icon":"faCalendarHeart","aliases":[]},{"icon":"faCalendarImage","aliases":[]},{"icon":"faCalendarLines","aliases":["faCalendarNote"]},{"icon":"faCalendarLinesPen","aliases":[]},{"icon":"faCalendarMinus","aliases":[]},{"icon":"faCalendarNote","aliases":["faCalendarNote"]},{"icon":"faCalendarPen","aliases":["faCalendarEdit"]},{"icon":"faCalendarPlus","aliases":[]},{"icon":"faCalendarRange","aliases":[]},{"icon":"faCalendarStar","aliases":[]},{"icon":"faCalendarTime","aliases":["faCalendarTime"]},{"icon":"faCalendarTimes","aliases":["faCalendarTimes"]},{"icon":"faCalendarUpload","aliases":["faCalendarUpload"]},{"icon":"faCalendarUsers","aliases":[]},{"icon":"faCalendarWeek","aliases":[]},{"icon":"faCalendarXmark","aliases":["faCalendarTimes"]},{"icon":"faCalendars","aliases":[]},{"icon":"faCamcorder","aliases":["faVideoHandheld"]},{"icon":"faCamera","aliases":["faCameraAlt"]},{"icon":"faCameraAlt","aliases":["faCameraAlt"]},{"icon":"faCameraCctv","aliases":["faCctv"]},{"icon":"faCameraCircle","aliases":["faCameraCircle"]},{"icon":"faCameraHome","aliases":["faCameraHome"]},{"icon":"faCameraMovie","aliases":[]},{"icon":"faCameraPolaroid","aliases":[]},{"icon":"faCameraRetro","aliases":[]},{"icon":"faCameraRotate","aliases":[]},{"icon":"faCameraSecurity","aliases":["faCameraHome"]},{"icon":"faCameraSlash","aliases":[]},{"icon":"faCameraViewfinder","aliases":["faScreenshot"]},{"icon":"faCameraWeb","aliases":["faWebcam"]},{"icon":"faCameraWebSlash","aliases":["faWebcamSlash"]},{"icon":"faCampfire","aliases":[]},{"icon":"faCampground","aliases":[]},{"icon":"faCanFood","aliases":[]},{"icon":"faCancel","aliases":["faCancel"]},{"icon":"faCandleHolder","aliases":[]},{"icon":"faCandy","aliases":[]},{"icon":"faCandyBar","aliases":["faChocolateBar"]},{"icon":"faCandyCane","aliases":[]},{"icon":"faCandyCorn","aliases":[]},{"icon":"faCannabis","aliases":[]},{"icon":"faCannon","aliases":[]},{"icon":"faCapsules","aliases":[]},{"icon":"faCar","aliases":["faAutomobile"]},{"icon":"faCarAlt","aliases":["faCarAlt"]},{"icon":"faCarBattery","aliases":["faBatteryCar"]},{"icon":"faCarBolt","aliases":[]},{"icon":"faCarBuilding","aliases":[]},{"icon":"faCarBump","aliases":[]},{"icon":"faCarBurst","aliases":["faCarCrash"]},{"icon":"faCarBus","aliases":[]},{"icon":"faCarCircleBolt","aliases":[]},{"icon":"faCarCrash","aliases":["faCarCrash"]},{"icon":"faCarGarage","aliases":[]},{"icon":"faCarMechanic","aliases":["faCarMechanic"]},{"icon":"faCarMirrors","aliases":[]},{"icon":"faCarOn","aliases":[]},{"icon":"faCarRear","aliases":["faCarAlt"]},{"icon":"faCarSide","aliases":[]},{"icon":"faCarSideBolt","aliases":[]},{"icon":"faCarTilt","aliases":[]},{"icon":"faCarTunnel","aliases":[]},{"icon":"faCarWash","aliases":[]},{"icon":"faCarWrench","aliases":["faCarMechanic"]},{"icon":"faCaravan","aliases":[]},{"icon":"faCaravanAlt","aliases":["faCaravanAlt"]},{"icon":"faCaravanSimple","aliases":["faCaravanAlt"]},{"icon":"faCardClub","aliases":[]},{"icon":"faCardDiamond","aliases":[]},{"icon":"faCardHeart","aliases":[]},{"icon":"faCardSpade","aliases":[]},{"icon":"faCards","aliases":[]},{"icon":"faCardsBlank","aliases":[]},{"icon":"faCaretCircleDown","aliases":["faCaretCircleDown"]},{"icon":"faCaretCircleLeft","aliases":["faCaretCircleLeft"]},{"icon":"faCaretCircleRight","aliases":["faCaretCircleRight"]},{"icon":"faCaretCircleUp","aliases":["faCaretCircleUp"]},{"icon":"faCaretDown","aliases":[]},{"icon":"faCaretLeft","aliases":[]},{"icon":"faCaretRight","aliases":[]},{"icon":"faCaretSquareDown","aliases":["faCaretSquareDown"]},{"icon":"faCaretSquareLeft","aliases":["faCaretSquareLeft"]},{"icon":"faCaretSquareRight","aliases":["faCaretSquareRight"]},{"icon":"faCaretSquareUp","aliases":["faCaretSquareUp"]},{"icon":"faCaretUp","aliases":[]},{"icon":"faCarriageBaby","aliases":["faCarriageBaby"]},{"icon":"faCarrot","aliases":[]},{"icon":"faCars","aliases":[]},{"icon":"faCartArrowDown","aliases":[]},{"icon":"faCartArrowUp","aliases":[]},{"icon":"faCartCircleArrowDown","aliases":[]},{"icon":"faCartCircleArrowUp","aliases":[]},{"icon":"faCartCircleCheck","aliases":[]},{"icon":"faCartCircleExclamation","aliases":[]},{"icon":"faCartCirclePlus","aliases":[]},{"icon":"faCartCircleXmark","aliases":[]},{"icon":"faCartFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faCartFlatbedBoxes","aliases":["faDollyFlatbedAlt"]},{"icon":"faCartFlatbedEmpty","aliases":["faDollyFlatbedEmpty"]},{"icon":"faCartFlatbedSuitcase","aliases":["faLuggageCart"]},{"icon":"faCartMinus","aliases":[]},{"icon":"faCartPlus","aliases":[]},{"icon":"faCartShopping","aliases":["faShoppingCart"]},{"icon":"faCartShoppingFast","aliases":[]},{"icon":"faCartXmark","aliases":[]},{"icon":"faCashRegister","aliases":[]},{"icon":"faCassetteBetamax","aliases":["faBetamax"]},{"icon":"faCassetteTape","aliases":[]},{"icon":"faCassetteVhs","aliases":["faVhs"]},{"icon":"faCastle","aliases":[]},{"icon":"faCat","aliases":[]},{"icon":"faCatSpace","aliases":[]},{"icon":"faCauldron","aliases":[]},{"icon":"faCctv","aliases":["faCctv"]},{"icon":"faCediSign","aliases":[]},{"icon":"faCentSign","aliases":[]},{"icon":"faCertificate","aliases":[]},{"icon":"faChain","aliases":["faChain"]},{"icon":"faChainBroken","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChainHorizontal","aliases":["faChainHorizontal"]},{"icon":"faChainHorizontalSlash","aliases":["faChainHorizontalSlash"]},{"icon":"faChainSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChair","aliases":[]},{"icon":"faChairOffice","aliases":[]},{"icon":"faChalkboard","aliases":["faBlackboard"]},{"icon":"faChalkboardTeacher","aliases":["faChalkboardTeacher"]},{"icon":"faChalkboardUser","aliases":["faChalkboardTeacher"]},{"icon":"faChampagneGlass","aliases":["faGlassChampagne"]},{"icon":"faChampagneGlasses","aliases":["faGlassCheers"]},{"icon":"faChargingStation","aliases":[]},{"icon":"faChartArea","aliases":["faAreaChart"]},{"icon":"faChartBar","aliases":["faBarChart"]},{"icon":"faChartBullet","aliases":[]},{"icon":"faChartCandlestick","aliases":[]},{"icon":"faChartColumn","aliases":[]},{"icon":"faChartGantt","aliases":[]},{"icon":"faChartKanban","aliases":[]},{"icon":"faChartLine","aliases":["faLineChart"]},{"icon":"faChartLineDown","aliases":[]},{"icon":"faChartLineUp","aliases":[]},{"icon":"faChartLineUpDown","aliases":[]},{"icon":"faChartMixed","aliases":["faAnalytics"]},{"icon":"faChartMixedUpCircleCurrency","aliases":[]},{"icon":"faChartMixedUpCircleDollar","aliases":[]},{"icon":"faChartNetwork","aliases":[]},{"icon":"faChartPie","aliases":["faPieChart"]},{"icon":"faChartPieAlt","aliases":["faChartPieAlt"]},{"icon":"faChartPieSimple","aliases":["faChartPieAlt"]},{"icon":"faChartPieSimpleCircleCurrency","aliases":[]},{"icon":"faChartPieSimpleCircleDollar","aliases":[]},{"icon":"faChartPyramid","aliases":[]},{"icon":"faChartRadar","aliases":[]},{"icon":"faChartScatter","aliases":[]},{"icon":"faChartScatter3d","aliases":[]},{"icon":"faChartScatterBubble","aliases":[]},{"icon":"faChartSimple","aliases":[]},{"icon":"faChartSimpleHorizontal","aliases":[]},{"icon":"faChartTreeMap","aliases":[]},{"icon":"faChartUser","aliases":["faUserChart"]},{"icon":"faChartWaterfall","aliases":[]},{"icon":"faCheck","aliases":[]},{"icon":"faCheckCircle","aliases":["faCheckCircle"]},{"icon":"faCheckDouble","aliases":[]},{"icon":"faCheckSquare","aliases":["faCheckSquare"]},{"icon":"faCheckToSlot","aliases":["faVoteYea"]},{"icon":"faCheese","aliases":[]},{"icon":"faCheeseSwiss","aliases":[]},{"icon":"faCheeseburger","aliases":["faCheeseburger"]},{"icon":"faCherries","aliases":[]},{"icon":"faChess","aliases":[]},{"icon":"faChessBishop","aliases":[]},{"icon":"faChessBishopAlt","aliases":["faChessBishopAlt"]},{"icon":"faChessBishopPiece","aliases":["faChessBishopAlt"]},{"icon":"faChessBoard","aliases":[]},{"icon":"faChessClock","aliases":[]},{"icon":"faChessClockAlt","aliases":["faChessClockAlt"]},{"icon":"faChessClockFlip","aliases":["faChessClockAlt"]},{"icon":"faChessKing","aliases":[]},{"icon":"faChessKingAlt","aliases":["faChessKingAlt"]},{"icon":"faChessKingPiece","aliases":["faChessKingAlt"]},{"icon":"faChessKnight","aliases":[]},{"icon":"faChessKnightAlt","aliases":["faChessKnightAlt"]},{"icon":"faChessKnightPiece","aliases":["faChessKnightAlt"]},{"icon":"faChessPawn","aliases":[]},{"icon":"faChessPawnAlt","aliases":["faChessPawnAlt"]},{"icon":"faChessPawnPiece","aliases":["faChessPawnAlt"]},{"icon":"faChessQueen","aliases":[]},{"icon":"faChessQueenAlt","aliases":["faChessQueenAlt"]},{"icon":"faChessQueenPiece","aliases":["faChessQueenAlt"]},{"icon":"faChessRook","aliases":[]},{"icon":"faChessRookAlt","aliases":["faChessRookAlt"]},{"icon":"faChessRookPiece","aliases":["faChessRookAlt"]},{"icon":"faChestnut","aliases":[]},{"icon":"faChevronCircleDown","aliases":["faChevronCircleDown"]},{"icon":"faChevronCircleLeft","aliases":["faChevronCircleLeft"]},{"icon":"faChevronCircleRight","aliases":["faChevronCircleRight"]},{"icon":"faChevronCircleUp","aliases":["faChevronCircleUp"]},{"icon":"faChevronDoubleDown","aliases":["faChevronDoubleDown"]},{"icon":"faChevronDoubleLeft","aliases":["faChevronDoubleLeft"]},{"icon":"faChevronDoubleRight","aliases":["faChevronDoubleRight"]},{"icon":"faChevronDoubleUp","aliases":["faChevronDoubleUp"]},{"icon":"faChevronDown","aliases":[]},{"icon":"faChevronLeft","aliases":[]},{"icon":"faChevronRight","aliases":[]},{"icon":"faChevronSquareDown","aliases":["faChevronSquareDown"]},{"icon":"faChevronSquareLeft","aliases":["faChevronSquareLeft"]},{"icon":"faChevronSquareRight","aliases":["faChevronSquareRight"]},{"icon":"faChevronSquareUp","aliases":["faChevronSquareUp"]},{"icon":"faChevronUp","aliases":[]},{"icon":"faChevronsDown","aliases":["faChevronDoubleDown"]},{"icon":"faChevronsLeft","aliases":["faChevronDoubleLeft"]},{"icon":"faChevronsRight","aliases":["faChevronDoubleRight"]},{"icon":"faChevronsUp","aliases":["faChevronDoubleUp"]},{"icon":"faChfSign","aliases":[]},{"icon":"faChild","aliases":[]},{"icon":"faChildCombatant","aliases":["faChildRifle"]},{"icon":"faChildDress","aliases":[]},{"icon":"faChildReaching","aliases":[]},{"icon":"faChildRifle","aliases":["faChildRifle"]},{"icon":"faChildren","aliases":[]},{"icon":"faChimney","aliases":[]},{"icon":"faChocolateBar","aliases":["faChocolateBar"]},{"icon":"faChopsticks","aliases":[]},{"icon":"faChurch","aliases":[]},{"icon":"faCircle","aliases":[]},{"icon":"faCircle0","aliases":[]},{"icon":"faCircle1","aliases":[]},{"icon":"faCircle2","aliases":[]},{"icon":"faCircle3","aliases":[]},{"icon":"faCircle4","aliases":[]},{"icon":"faCircle5","aliases":[]},{"icon":"faCircle6","aliases":[]},{"icon":"faCircle7","aliases":[]},{"icon":"faCircle8","aliases":[]},{"icon":"faCircle9","aliases":[]},{"icon":"faCircleA","aliases":[]},{"icon":"faCircleAmpersand","aliases":[]},{"icon":"faCircleArrowDown","aliases":["faArrowCircleDown"]},{"icon":"faCircleArrowDownLeft","aliases":[]},{"icon":"faCircleArrowDownRight","aliases":[]},{"icon":"faCircleArrowLeft","aliases":["faArrowCircleLeft"]},{"icon":"faCircleArrowRight","aliases":["faArrowCircleRight"]},{"icon":"faCircleArrowUp","aliases":["faArrowCircleUp"]},{"icon":"faCircleArrowUpLeft","aliases":[]},{"icon":"faCircleArrowUpRight","aliases":[]},{"icon":"faCircleB","aliases":[]},{"icon":"faCircleBolt","aliases":[]},{"icon":"faCircleBookOpen","aliases":["faBookCircle"]},{"icon":"faCircleBookmark","aliases":["faBookmarkCircle"]},{"icon":"faCircleC","aliases":[]},{"icon":"faCircleCalendar","aliases":["faCalendarCircle"]},{"icon":"faCircleCamera","aliases":["faCameraCircle"]},{"icon":"faCircleCaretDown","aliases":["faCaretCircleDown"]},{"icon":"faCircleCaretLeft","aliases":["faCaretCircleLeft"]},{"icon":"faCircleCaretRight","aliases":["faCaretCircleRight"]},{"icon":"faCircleCaretUp","aliases":["faCaretCircleUp"]},{"icon":"faCircleCheck","aliases":["faCheckCircle"]},{"icon":"faCircleChevronDown","aliases":["faChevronCircleDown"]},{"icon":"faCircleChevronLeft","aliases":["faChevronCircleLeft"]},{"icon":"faCircleChevronRight","aliases":["faChevronCircleRight"]},{"icon":"faCircleChevronUp","aliases":["faChevronCircleUp"]},{"icon":"faCircleD","aliases":[]},{"icon":"faCircleDashed","aliases":[]},{"icon":"faCircleDivide","aliases":[]},{"icon":"faCircleDollar","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faCircleDollarToSlot","aliases":["faDonate"]},{"icon":"faCircleDot","aliases":["faDotCircle"]},{"icon":"faCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faCircleDownLeft","aliases":[]},{"icon":"faCircleDownRight","aliases":[]},{"icon":"faCircleE","aliases":[]},{"icon":"faCircleEllipsis","aliases":[]},{"icon":"faCircleEllipsisVertical","aliases":[]},{"icon":"faCircleEnvelope","aliases":["faEnvelopeCircle"]},{"icon":"faCircleEuro","aliases":[]},{"icon":"faCircleExclamation","aliases":["faExclamationCircle"]},{"icon":"faCircleExclamationCheck","aliases":[]},{"icon":"faCircleF","aliases":[]},{"icon":"faCircleG","aliases":[]},{"icon":"faCircleGf","aliases":[]},{"icon":"faCircleH","aliases":["faHospitalSymbol"]},{"icon":"faCircleHalf","aliases":[]},{"icon":"faCircleHalfStroke","aliases":["faAdjust"]},{"icon":"faCircleHeart","aliases":["faHeartCircle"]},{"icon":"faCircleI","aliases":[]},{"icon":"faCircleInfo","aliases":["faInfoCircle"]},{"icon":"faCircleJ","aliases":[]},{"icon":"faCircleK","aliases":[]},{"icon":"faCircleL","aliases":[]},{"icon":"faCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faCircleLocationArrow","aliases":["faLocationCircle"]},{"icon":"faCircleM","aliases":[]},{"icon":"faCircleMicrophone","aliases":["faMicrophoneCircle"]},{"icon":"faCircleMicrophoneLines","aliases":["faMicrophoneCircleAlt"]},{"icon":"faCircleMinus","aliases":["faMinusCircle"]},{"icon":"faCircleN","aliases":[]},{"icon":"faCircleNodes","aliases":[]},{"icon":"faCircleNotch","aliases":[]},{"icon":"faCircleO","aliases":[]},{"icon":"faCircleP","aliases":[]},{"icon":"faCircleParking","aliases":["faParkingCircle"]},{"icon":"faCirclePause","aliases":["faPauseCircle"]},{"icon":"faCirclePhone","aliases":["faPhoneCircle"]},{"icon":"faCirclePhoneFlip","aliases":["faPhoneCircleAlt"]},{"icon":"faCirclePhoneHangup","aliases":["faPhoneCircleDown"]},{"icon":"faCirclePlay","aliases":["faPlayCircle"]},{"icon":"faCirclePlus","aliases":["faPlusCircle"]},{"icon":"faCircleQ","aliases":[]},{"icon":"faCircleQuarter","aliases":[]},{"icon":"faCircleQuarterStroke","aliases":[]},{"icon":"faCircleQuarters","aliases":[]},{"icon":"faCircleQuestion","aliases":["faQuestionCircle"]},{"icon":"faCircleR","aliases":[]},{"icon":"faCircleRadiation","aliases":["faRadiationAlt"]},{"icon":"faCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faCircleS","aliases":[]},{"icon":"faCircleSmall","aliases":[]},{"icon":"faCircleSort","aliases":["faSortCircle"]},{"icon":"faCircleSortDown","aliases":["faSortCircleDown"]},{"icon":"faCircleSortUp","aliases":["faSortCircleUp"]},{"icon":"faCircleStar","aliases":["faStarCircle"]},{"icon":"faCircleSterling","aliases":[]},{"icon":"faCircleStop","aliases":["faStopCircle"]},{"icon":"faCircleT","aliases":[]},{"icon":"faCircleThreeQuarters","aliases":[]},{"icon":"faCircleThreeQuartersStroke","aliases":[]},{"icon":"faCircleTrash","aliases":["faTrashCircle"]},{"icon":"faCircleU","aliases":[]},{"icon":"faCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faCircleUpLeft","aliases":[]},{"icon":"faCircleUpRight","aliases":[]},{"icon":"faCircleUser","aliases":["faUserCircle"]},{"icon":"faCircleV","aliases":[]},{"icon":"faCircleVideo","aliases":["faVideoCircle"]},{"icon":"faCircleW","aliases":[]},{"icon":"faCircleWaveformLines","aliases":["faWaveformCircle"]},{"icon":"faCircleWifi","aliases":[]},{"icon":"faCircleWifiCircleWifi","aliases":["faCircleWifiGroup"]},{"icon":"faCircleWifiGroup","aliases":["faCircleWifiGroup"]},{"icon":"faCircleX","aliases":[]},{"icon":"faCircleXmark","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faCircleY","aliases":[]},{"icon":"faCircleYen","aliases":[]},{"icon":"faCircleZ","aliases":[]},{"icon":"faCirclesOverlap","aliases":[]},{"icon":"faCitrus","aliases":[]},{"icon":"faCitrusSlice","aliases":[]},{"icon":"faCity","aliases":[]},{"icon":"faClapperboard","aliases":[]},{"icon":"faClapperboardPlay","aliases":[]},{"icon":"faClarinet","aliases":[]},{"icon":"faClawMarks","aliases":[]},{"icon":"faClinicMedical","aliases":["faClinicMedical"]},{"icon":"faClipboard","aliases":[]},{"icon":"faClipboardCheck","aliases":[]},{"icon":"faClipboardList","aliases":[]},{"icon":"faClipboardListCheck","aliases":[]},{"icon":"faClipboardMedical","aliases":[]},{"icon":"faClipboardPrescription","aliases":[]},{"icon":"faClipboardQuestion","aliases":[]},{"icon":"faClipboardUser","aliases":[]},{"icon":"faClock","aliases":["faClockFour"]},{"icon":"faClockDesk","aliases":[]},{"icon":"faClockEight","aliases":[]},{"icon":"faClockEightThirty","aliases":[]},{"icon":"faClockEleven","aliases":[]},{"icon":"faClockElevenThirty","aliases":[]},{"icon":"faClockFive","aliases":[]},{"icon":"faClockFiveThirty","aliases":[]},{"icon":"faClockFour","aliases":["faClockFour"]},{"icon":"faClockFourThirty","aliases":[]},{"icon":"faClockNine","aliases":[]},{"icon":"faClockNineThirty","aliases":[]},{"icon":"faClockOne","aliases":[]},{"icon":"faClockOneThirty","aliases":[]},{"icon":"faClockRotateLeft","aliases":["faHistory"]},{"icon":"faClockSeven","aliases":[]},{"icon":"faClockSevenThirty","aliases":[]},{"icon":"faClockSix","aliases":[]},{"icon":"faClockSixThirty","aliases":[]},{"icon":"faClockTen","aliases":[]},{"icon":"faClockTenThirty","aliases":[]},{"icon":"faClockThree","aliases":[]},{"icon":"faClockThreeThirty","aliases":[]},{"icon":"faClockTwelve","aliases":[]},{"icon":"faClockTwelveThirty","aliases":[]},{"icon":"faClockTwo","aliases":[]},{"icon":"faClockTwoThirty","aliases":[]},{"icon":"faClone","aliases":[]},{"icon":"faClose","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faClosedCaptioning","aliases":[]},{"icon":"faClosedCaptioningSlash","aliases":[]},{"icon":"faClothesHanger","aliases":[]},{"icon":"faCloud","aliases":[]},{"icon":"faCloudArrowDown","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudArrowUp","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudBinary","aliases":[]},{"icon":"faCloudBolt","aliases":["faThunderstorm"]},{"icon":"faCloudBoltMoon","aliases":["faThunderstormMoon"]},{"icon":"faCloudBoltSun","aliases":["faThunderstormSun"]},{"icon":"faCloudCheck","aliases":[]},{"icon":"faCloudDownload","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDownloadAlt","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDrizzle","aliases":[]},{"icon":"faCloudExclamation","aliases":[]},{"icon":"faCloudFog","aliases":["faFog"]},{"icon":"faCloudHail","aliases":[]},{"icon":"faCloudHailMixed","aliases":[]},{"icon":"faCloudMeatball","aliases":[]},{"icon":"faCloudMinus","aliases":[]},{"icon":"faCloudMoon","aliases":[]},{"icon":"faCloudMoonRain","aliases":[]},{"icon":"faCloudMusic","aliases":[]},{"icon":"faCloudPlus","aliases":[]},{"icon":"faCloudQuestion","aliases":[]},{"icon":"faCloudRain","aliases":[]},{"icon":"faCloudRainbow","aliases":[]},{"icon":"faCloudShowers","aliases":[]},{"icon":"faCloudShowersHeavy","aliases":[]},{"icon":"faCloudShowersWater","aliases":[]},{"icon":"faCloudSlash","aliases":[]},{"icon":"faCloudSleet","aliases":[]},{"icon":"faCloudSnow","aliases":[]},{"icon":"faCloudSun","aliases":[]},{"icon":"faCloudSunRain","aliases":[]},{"icon":"faCloudUpload","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudUploadAlt","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudWord","aliases":[]},{"icon":"faCloudXmark","aliases":[]},{"icon":"faClouds","aliases":[]},{"icon":"faCloudsMoon","aliases":[]},{"icon":"faCloudsSun","aliases":[]},{"icon":"faClover","aliases":[]},{"icon":"faClub","aliases":[]},{"icon":"faCny","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faCocktail","aliases":["faCocktail"]},{"icon":"faCoconut","aliases":[]},{"icon":"faCode","aliases":[]},{"icon":"faCodeBranch","aliases":[]},{"icon":"faCodeCommit","aliases":[]},{"icon":"faCodeCompare","aliases":[]},{"icon":"faCodeFork","aliases":[]},{"icon":"faCodeMerge","aliases":[]},{"icon":"faCodePullRequest","aliases":[]},{"icon":"faCodePullRequestClosed","aliases":[]},{"icon":"faCodePullRequestDraft","aliases":[]},{"icon":"faCodeSimple","aliases":[]},{"icon":"faCoffee","aliases":["faCoffee"]},{"icon":"faCoffeeBean","aliases":[]},{"icon":"faCoffeeBeans","aliases":[]},{"icon":"faCoffeePot","aliases":[]},{"icon":"faCoffeeTogo","aliases":["faCoffeeTogo"]},{"icon":"faCoffin","aliases":[]},{"icon":"faCoffinCross","aliases":[]},{"icon":"faCog","aliases":["faCog"]},{"icon":"faCogs","aliases":["faCogs"]},{"icon":"faCoin","aliases":[]},{"icon":"faCoinBlank","aliases":[]},{"icon":"faCoinFront","aliases":[]},{"icon":"faCoinVertical","aliases":[]},{"icon":"faCoins","aliases":[]},{"icon":"faColon","aliases":[]},{"icon":"faColonSign","aliases":[]},{"icon":"faColumns","aliases":["faColumns"]},{"icon":"faColumns3","aliases":[]},{"icon":"faComet","aliases":[]},{"icon":"faComma","aliases":[]},{"icon":"faCommand","aliases":[]},{"icon":"faComment","aliases":[]},{"icon":"faCommentAlt","aliases":["faCommentAlt"]},{"icon":"faCommentAltArrowDown","aliases":["faCommentAltArrowDown"]},{"icon":"faCommentAltArrowUp","aliases":["faCommentAltArrowUp"]},{"icon":"faCommentAltCaptions","aliases":["faCommentAltCaptions"]},{"icon":"faCommentAltCheck","aliases":["faCommentAltCheck"]},{"icon":"faCommentAltDollar","aliases":["faCommentAltDollar"]},{"icon":"faCommentAltDots","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faCommentAltEdit","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faCommentAltExclamation","aliases":["faCommentAltExclamation"]},{"icon":"faCommentAltImage","aliases":["faCommentAltImage"]},{"icon":"faCommentAltLines","aliases":["faCommentAltLines"]},{"icon":"faCommentAltMedical","aliases":["faCommentAltMedical"]},{"icon":"faCommentAltMinus","aliases":["faCommentAltMinus"]},{"icon":"faCommentAltMusic","aliases":["faCommentAltMusic"]},{"icon":"faCommentAltPlus","aliases":["faCommentAltPlus"]},{"icon":"faCommentAltQuote","aliases":["faCommentAltQuote"]},{"icon":"faCommentAltSlash","aliases":["faCommentAltSlash"]},{"icon":"faCommentAltSmile","aliases":["faCommentAltSmile"]},{"icon":"faCommentAltText","aliases":["faCommentAltText"]},{"icon":"faCommentAltTimes","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faCommentArrowDown","aliases":[]},{"icon":"faCommentArrowUp","aliases":[]},{"icon":"faCommentArrowUpRight","aliases":[]},{"icon":"faCommentCaptions","aliases":[]},{"icon":"faCommentCheck","aliases":[]},{"icon":"faCommentCode","aliases":[]},{"icon":"faCommentDollar","aliases":[]},{"icon":"faCommentDots","aliases":["faCommenting"]},{"icon":"faCommentEdit","aliases":["faCommentEdit"]},{"icon":"faCommentExclamation","aliases":[]},{"icon":"faCommentHeart","aliases":[]},{"icon":"faCommentImage","aliases":[]},{"icon":"faCommentLines","aliases":[]},{"icon":"faCommentMedical","aliases":[]},{"icon":"faCommentMiddle","aliases":[]},{"icon":"faCommentMiddleAlt","aliases":["faCommentMiddleAlt"]},{"icon":"faCommentMiddleTop","aliases":[]},{"icon":"faCommentMiddleTopAlt","aliases":["faCommentMiddleTopAlt"]},{"icon":"faCommentMinus","aliases":[]},{"icon":"faCommentMusic","aliases":[]},{"icon":"faCommentPen","aliases":["faCommentEdit"]},{"icon":"faCommentPlus","aliases":[]},{"icon":"faCommentQuestion","aliases":[]},{"icon":"faCommentQuote","aliases":[]},{"icon":"faCommentSlash","aliases":[]},{"icon":"faCommentSmile","aliases":[]},{"icon":"faCommentSms","aliases":["faSms"]},{"icon":"faCommentText","aliases":[]},{"icon":"faCommentTimes","aliases":["faCommentTimes"]},{"icon":"faCommentXmark","aliases":["faCommentTimes"]},{"icon":"faCommenting","aliases":["faCommenting"]},{"icon":"faComments","aliases":[]},{"icon":"faCommentsAlt","aliases":["faCommentsAlt"]},{"icon":"faCommentsAltDollar","aliases":["faCommentsAltDollar"]},{"icon":"faCommentsDollar","aliases":[]},{"icon":"faCommentsQuestion","aliases":[]},{"icon":"faCommentsQuestionCheck","aliases":[]},{"icon":"faCompactDisc","aliases":[]},{"icon":"faCompass","aliases":[]},{"icon":"faCompassDrafting","aliases":["faDraftingCompass"]},{"icon":"faCompassSlash","aliases":[]},{"icon":"faCompress","aliases":[]},{"icon":"faCompressAlt","aliases":["faCompressAlt"]},{"icon":"faCompressArrows","aliases":["faCompressArrows"]},{"icon":"faCompressArrowsAlt","aliases":["faCompressArrowsAlt"]},{"icon":"faCompressWide","aliases":[]},{"icon":"faComputer","aliases":[]},{"icon":"faComputerClassic","aliases":[]},{"icon":"faComputerMouse","aliases":["faMouse"]},{"icon":"faComputerMouseScrollwheel","aliases":["faMouseAlt"]},{"icon":"faComputerSpeaker","aliases":[]},{"icon":"faConciergeBell","aliases":["faConciergeBell"]},{"icon":"faConstruction","aliases":["faConstruction"]},{"icon":"faContactBook","aliases":["faContactBook"]},{"icon":"faContactCard","aliases":["faContactCard","faVcard"]},{"icon":"faContainerStorage","aliases":[]},{"icon":"faConveyorBelt","aliases":[]},{"icon":"faConveyorBeltAlt","aliases":["faConveyorBeltAlt"]},{"icon":"faConveyorBeltArm","aliases":[]},{"icon":"faConveyorBeltBoxes","aliases":["faConveyorBeltAlt"]},{"icon":"faConveyorBeltEmpty","aliases":[]},{"icon":"faCookie","aliases":[]},{"icon":"faCookieBite","aliases":[]},{"icon":"faCopy","aliases":[]},{"icon":"faCopyright","aliases":[]},{"icon":"faCorn","aliases":[]},{"icon":"faCorner","aliases":[]},{"icon":"faCouch","aliases":[]},{"icon":"faCouchSmall","aliases":["faCouchSmall"]},{"icon":"faCourtSport","aliases":[]},{"icon":"faCow","aliases":[]},{"icon":"faCowbell","aliases":[]},{"icon":"faCowbellCirclePlus","aliases":["faCowbellMore"]},{"icon":"faCowbellMore","aliases":["faCowbellMore"]},{"icon":"faCrab","aliases":[]},{"icon":"faCrateApple","aliases":["faAppleCrate"]},{"icon":"faCrateEmpty","aliases":[]},{"icon":"faCreditCard","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardAlt","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardBlank","aliases":[]},{"icon":"faCreditCardFront","aliases":[]},{"icon":"faCreemee","aliases":["faCreemee"]},{"icon":"faCricket","aliases":["faCricket"]},{"icon":"faCricketBatBall","aliases":["faCricket"]},{"icon":"faCroissant","aliases":[]},{"icon":"faCrop","aliases":[]},{"icon":"faCropAlt","aliases":["faCropAlt"]},{"icon":"faCropSimple","aliases":["faCropAlt"]},{"icon":"faCross","aliases":[]},{"icon":"faCrosshairs","aliases":[]},{"icon":"faCrosshairsSimple","aliases":[]},{"icon":"faCrow","aliases":[]},{"icon":"faCrown","aliases":[]},{"icon":"faCrutch","aliases":[]},{"icon":"faCrutches","aliases":[]},{"icon":"faCruzeiroSign","aliases":[]},{"icon":"faCrystalBall","aliases":[]},{"icon":"faCube","aliases":[]},{"icon":"faCubes","aliases":[]},{"icon":"faCubesStacked","aliases":[]},{"icon":"faCucumber","aliases":[]},{"icon":"faCupStraw","aliases":[]},{"icon":"faCupStrawSwoosh","aliases":[]},{"icon":"faCupTogo","aliases":["faCoffeeTogo"]},{"icon":"faCupcake","aliases":[]},{"icon":"faCurling","aliases":["faCurling"]},{"icon":"faCurlingStone","aliases":["faCurling"]},{"icon":"faCustard","aliases":[]},{"icon":"faCut","aliases":["faCut"]},{"icon":"faCutlery","aliases":["faCutlery"]},{"icon":"faD","aliases":[]},{"icon":"faDagger","aliases":[]},{"icon":"faDash","aliases":["faMinusLarge"]},{"icon":"faDashboard","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faDatabase","aliases":[]},{"icon":"faDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDeafness","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDebug","aliases":["faDebug"]},{"icon":"faDedent","aliases":["faDedent"]},{"icon":"faDeer","aliases":[]},{"icon":"faDeerRudolph","aliases":[]},{"icon":"faDeleteLeft","aliases":["faBackspace"]},{"icon":"faDeleteRight","aliases":[]},{"icon":"faDemocrat","aliases":[]},{"icon":"faDesktop","aliases":["faDesktopAlt"]},{"icon":"faDesktopAlt","aliases":["faDesktopAlt"]},{"icon":"faDesktopArrowDown","aliases":[]},{"icon":"faDesktopCode","aliases":["faDesktopCode"]},{"icon":"faDesktopMedical","aliases":["faDesktopMedical"]},{"icon":"faDesktopSlash","aliases":["faDesktopSlash"]},{"icon":"faDewpoint","aliases":["faDewpoint"]},{"icon":"faDharmachakra","aliases":[]},{"icon":"faDiagnoses","aliases":["faDiagnoses"]},{"icon":"faDiagramCells","aliases":[]},{"icon":"faDiagramLeanCanvas","aliases":[]},{"icon":"faDiagramNested","aliases":[]},{"icon":"faDiagramNext","aliases":[]},{"icon":"faDiagramPredecessor","aliases":[]},{"icon":"faDiagramPrevious","aliases":[]},{"icon":"faDiagramProject","aliases":["faProjectDiagram"]},{"icon":"faDiagramSankey","aliases":[]},{"icon":"faDiagramSubtask","aliases":[]},{"icon":"faDiagramSuccessor","aliases":[]},{"icon":"faDiagramVenn","aliases":[]},{"icon":"faDial","aliases":["faDialMedHigh"]},{"icon":"faDialHigh","aliases":[]},{"icon":"faDialLow","aliases":[]},{"icon":"faDialMax","aliases":[]},{"icon":"faDialMed","aliases":[]},{"icon":"faDialMedHigh","aliases":["faDialMedHigh"]},{"icon":"faDialMedLow","aliases":[]},{"icon":"faDialMin","aliases":[]},{"icon":"faDialOff","aliases":[]},{"icon":"faDiamond","aliases":[]},{"icon":"faDiamondExclamation","aliases":[]},{"icon":"faDiamondHalf","aliases":[]},{"icon":"faDiamondHalfStroke","aliases":[]},{"icon":"faDiamondTurnRight","aliases":["faDirections"]},{"icon":"faDiamonds4","aliases":[]},{"icon":"faDice","aliases":[]},{"icon":"faDiceD10","aliases":[]},{"icon":"faDiceD12","aliases":[]},{"icon":"faDiceD20","aliases":[]},{"icon":"faDiceD4","aliases":[]},{"icon":"faDiceD6","aliases":[]},{"icon":"faDiceD8","aliases":[]},{"icon":"faDiceFive","aliases":[]},{"icon":"faDiceFour","aliases":[]},{"icon":"faDiceOne","aliases":[]},{"icon":"faDiceSix","aliases":[]},{"icon":"faDiceThree","aliases":[]},{"icon":"faDiceTwo","aliases":[]},{"icon":"faDigging","aliases":["faDigging"]},{"icon":"faDigitalTachograph","aliases":["faDigitalTachograph"]},{"icon":"faDinosaur","aliases":[]},{"icon":"faDiploma","aliases":["faScrollRibbon"]},{"icon":"faDirections","aliases":["faDirections"]},{"icon":"faDiscDrive","aliases":[]},{"icon":"faDisease","aliases":[]},{"icon":"faDisplay","aliases":[]},{"icon":"faDisplayArrowDown","aliases":[]},{"icon":"faDisplayChartUp","aliases":[]},{"icon":"faDisplayChartUpCircleCurrency","aliases":[]},{"icon":"faDisplayChartUpCircleDollar","aliases":[]},{"icon":"faDisplayCode","aliases":["faDesktopCode"]},{"icon":"faDisplayMedical","aliases":["faDesktopMedical"]},{"icon":"faDisplaySlash","aliases":["faDesktopSlash"]},{"icon":"faDistributeSpacingHorizontal","aliases":[]},{"icon":"faDistributeSpacingVertical","aliases":[]},{"icon":"faDitto","aliases":[]},{"icon":"faDivide","aliases":[]},{"icon":"faDizzy","aliases":["faDizzy"]},{"icon":"faDna","aliases":[]},{"icon":"faDoNotEnter","aliases":[]},{"icon":"faDog","aliases":[]},{"icon":"faDogLeashed","aliases":[]},{"icon":"faDollar","aliases":["faDollar","faUsd"]},{"icon":"faDollarCircle","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faDollarSign","aliases":["faDollar","faUsd"]},{"icon":"faDollarSquare","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faDolly","aliases":["faDollyBox"]},{"icon":"faDollyBox","aliases":["faDollyBox"]},{"icon":"faDollyEmpty","aliases":[]},{"icon":"faDollyFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faDollyFlatbedAlt","aliases":["faDollyFlatbedAlt"]},{"icon":"faDollyFlatbedEmpty","aliases":["faDollyFlatbedEmpty"]},{"icon":"faDolphin","aliases":[]},{"icon":"faDonate","aliases":["faDonate"]},{"icon":"faDongSign","aliases":[]},{"icon":"faDonut","aliases":["faDoughnut"]},{"icon":"faDoorClosed","aliases":[]},{"icon":"faDoorOpen","aliases":[]},{"icon":"faDotCircle","aliases":["faDotCircle"]},{"icon":"faDoughnut","aliases":["faDoughnut"]},{"icon":"faDove","aliases":[]},{"icon":"faDown","aliases":["faArrowAltDown"]},{"icon":"faDownFromBracket","aliases":[]},{"icon":"faDownFromDottedLine","aliases":[]},{"icon":"faDownFromLine","aliases":["faArrowAltFromTop"]},{"icon":"faDownLeft","aliases":[]},{"icon":"faDownLeftAndUpRightToCenter","aliases":["faCompressAlt"]},{"icon":"faDownLong","aliases":["faLongArrowAltDown"]},{"icon":"faDownRight","aliases":[]},{"icon":"faDownToBracket","aliases":[]},{"icon":"faDownToDottedLine","aliases":[]},{"icon":"faDownToLine","aliases":["faArrowAltToBottom"]},{"icon":"faDownload","aliases":[]},{"icon":"faDraftingCompass","aliases":["faDraftingCompass"]},{"icon":"faDragon","aliases":[]},{"icon":"faDrawCircle","aliases":[]},{"icon":"faDrawPolygon","aliases":[]},{"icon":"faDrawSquare","aliases":[]},{"icon":"faDreidel","aliases":[]},{"icon":"faDriversLicense","aliases":["faDriversLicense"]},{"icon":"faDrone","aliases":[]},{"icon":"faDroneAlt","aliases":["faDroneAlt"]},{"icon":"faDroneFront","aliases":["faDroneAlt"]},{"icon":"faDroplet","aliases":["faTint"]},{"icon":"faDropletDegree","aliases":["faDewpoint"]},{"icon":"faDropletPercent","aliases":["faHumidity"]},{"icon":"faDropletSlash","aliases":["faTintSlash"]},{"icon":"faDrum","aliases":[]},{"icon":"faDrumSteelpan","aliases":[]},{"icon":"faDrumstick","aliases":[]},{"icon":"faDrumstickBite","aliases":[]},{"icon":"faDryer","aliases":[]},{"icon":"faDryerAlt","aliases":["faDryerAlt"]},{"icon":"faDryerHeat","aliases":["faDryerAlt"]},{"icon":"faDuck","aliases":[]},{"icon":"faDumbbell","aliases":[]},{"icon":"faDumpster","aliases":[]},{"icon":"faDumpsterFire","aliases":[]},{"icon":"faDungeon","aliases":[]},{"icon":"faE","aliases":[]},{"icon":"faEar","aliases":[]},{"icon":"faEarDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faEarListen","aliases":["faAssistiveListeningSystems"]},{"icon":"faEarMuffs","aliases":[]},{"icon":"faEarth","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAfrica","aliases":["faGlobeAfrica"]},{"icon":"faEarthAmerica","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAsia","aliases":["faGlobeAsia"]},{"icon":"faEarthEurope","aliases":["faGlobeEurope"]},{"icon":"faEarthOceania","aliases":["faGlobeOceania"]},{"icon":"faEclipse","aliases":[]},{"icon":"faEclipseAlt","aliases":["faEclipseAlt"]},{"icon":"faEdit","aliases":["faEdit"]},{"icon":"faEgg","aliases":[]},{"icon":"faEggFried","aliases":[]},{"icon":"faEggplant","aliases":[]},{"icon":"faEject","aliases":[]},{"icon":"faElephant","aliases":[]},{"icon":"faElevator","aliases":[]},{"icon":"faEllipsis","aliases":["faEllipsisH"]},{"icon":"faEllipsisH","aliases":["faEllipsisH"]},{"icon":"faEllipsisHAlt","aliases":["faEllipsisHAlt"]},{"icon":"faEllipsisStroke","aliases":["faEllipsisHAlt"]},{"icon":"faEllipsisStrokeVertical","aliases":["faEllipsisVAlt"]},{"icon":"faEllipsisV","aliases":["faEllipsisV"]},{"icon":"faEllipsisVAlt","aliases":["faEllipsisVAlt"]},{"icon":"faEllipsisVertical","aliases":["faEllipsisV"]},{"icon":"faEmptySet","aliases":[]},{"icon":"faEngine","aliases":[]},{"icon":"faEngineExclamation","aliases":["faEngineExclamation"]},{"icon":"faEngineWarning","aliases":["faEngineExclamation"]},{"icon":"faEnvelope","aliases":[]},{"icon":"faEnvelopeBadge","aliases":["faEnvelopeBadge"]},{"icon":"faEnvelopeCircle","aliases":["faEnvelopeCircle"]},{"icon":"faEnvelopeCircleCheck","aliases":[]},{"icon":"faEnvelopeDot","aliases":["faEnvelopeBadge"]},{"icon":"faEnvelopeOpen","aliases":[]},{"icon":"faEnvelopeOpenDollar","aliases":[]},{"icon":"faEnvelopeOpenText","aliases":[]},{"icon":"faEnvelopeSquare","aliases":["faEnvelopeSquare"]},{"icon":"faEnvelopes","aliases":[]},{"icon":"faEnvelopesBulk","aliases":["faMailBulk"]},{"icon":"faEquals","aliases":[]},{"icon":"faEraser","aliases":[]},{"icon":"faEscalator","aliases":[]},{"icon":"faEthernet","aliases":[]},{"icon":"faEur","aliases":["faEur","faEuro"]},{"icon":"faEuro","aliases":["faEur","faEuro"]},{"icon":"faEuroSign","aliases":["faEur","faEuro"]},{"icon":"faExcavator","aliases":[]},{"icon":"faExchange","aliases":["faExchange"]},{"icon":"faExchangeAlt","aliases":["faExchangeAlt"]},{"icon":"faExclamation","aliases":[]},{"icon":"faExclamationCircle","aliases":["faExclamationCircle"]},{"icon":"faExclamationSquare","aliases":["faExclamationSquare"]},{"icon":"faExclamationTriangle","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faExpand","aliases":[]},{"icon":"faExpandAlt","aliases":["faExpandAlt"]},{"icon":"faExpandArrows","aliases":["faExpandArrows"]},{"icon":"faExpandArrowsAlt","aliases":["faExpandArrowsAlt"]},{"icon":"faExpandWide","aliases":[]},{"icon":"faExplodingHead","aliases":["faExplodingHead"]},{"icon":"faExplosion","aliases":[]},{"icon":"faExternalLink","aliases":["faExternalLink"]},{"icon":"faExternalLinkAlt","aliases":["faExternalLinkAlt"]},{"icon":"faExternalLinkSquare","aliases":["faExternalLinkSquare"]},{"icon":"faExternalLinkSquareAlt","aliases":["faExternalLinkSquareAlt"]},{"icon":"faEye","aliases":[]},{"icon":"faEyeDropper","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperEmpty","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperFull","aliases":[]},{"icon":"faEyeDropperHalf","aliases":[]},{"icon":"faEyeEvil","aliases":[]},{"icon":"faEyeLowVision","aliases":["faLowVision"]},{"icon":"faEyeSlash","aliases":[]},{"icon":"faEyes","aliases":[]},{"icon":"faF","aliases":[]},{"icon":"faFaceAngry","aliases":["faAngry"]},{"icon":"faFaceAngryHorns","aliases":[]},{"icon":"faFaceAnguished","aliases":[]},{"icon":"faFaceAnxiousSweat","aliases":[]},{"icon":"faFaceAstonished","aliases":[]},{"icon":"faFaceAwesome","aliases":["faGaveDandy"]},{"icon":"faFaceBeamHandOverMouth","aliases":[]},{"icon":"faFaceClouds","aliases":[]},{"icon":"faFaceConfounded","aliases":[]},{"icon":"faFaceConfused","aliases":[]},{"icon":"faFaceCowboyHat","aliases":[]},{"icon":"faFaceDiagonalMouth","aliases":[]},{"icon":"faFaceDisappointed","aliases":[]},{"icon":"faFaceDisguise","aliases":[]},{"icon":"faFaceDizzy","aliases":["faDizzy"]},{"icon":"faFaceDotted","aliases":[]},{"icon":"faFaceDowncastSweat","aliases":[]},{"icon":"faFaceDrooling","aliases":[]},{"icon":"faFaceExhaling","aliases":[]},{"icon":"faFaceExplode","aliases":["faExplodingHead"]},{"icon":"faFaceExpressionless","aliases":[]},{"icon":"faFaceEyesXmarks","aliases":[]},{"icon":"faFaceFearful","aliases":[]},{"icon":"faFaceFlushed","aliases":["faFlushed"]},{"icon":"faFaceFrown","aliases":["faFrown"]},{"icon":"faFaceFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFaceFrownSlight","aliases":[]},{"icon":"faFaceGlasses","aliases":[]},{"icon":"faFaceGrimace","aliases":["faGrimace"]},{"icon":"faFaceGrin","aliases":["faGrin"]},{"icon":"faFaceGrinBeam","aliases":["faGrinBeam"]},{"icon":"faFaceGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faFaceGrinHearts","aliases":["faGrinHearts"]},{"icon":"faFaceGrinSquint","aliases":["faGrinSquint"]},{"icon":"faFaceGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faFaceGrinStars","aliases":["faGrinStars"]},{"icon":"faFaceGrinTears","aliases":["faGrinTears"]},{"icon":"faFaceGrinTongue","aliases":["faGrinTongue"]},{"icon":"faFaceGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faFaceGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faFaceGrinWide","aliases":["faGrinAlt"]},{"icon":"faFaceGrinWink","aliases":["faGrinWink"]},{"icon":"faFaceHandOverMouth","aliases":[]},{"icon":"faFaceHandPeeking","aliases":[]},{"icon":"faFaceHandYawn","aliases":[]},{"icon":"faFaceHeadBandage","aliases":[]},{"icon":"faFaceHoldingBackTears","aliases":[]},{"icon":"faFaceHushed","aliases":[]},{"icon":"faFaceIcicles","aliases":[]},{"icon":"faFaceKiss","aliases":["faKiss"]},{"icon":"faFaceKissBeam","aliases":["faKissBeam"]},{"icon":"faFaceKissClosedEyes","aliases":[]},{"icon":"faFaceKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faFaceLaugh","aliases":["faLaugh"]},{"icon":"faFaceLaughBeam","aliases":["faLaughBeam"]},{"icon":"faFaceLaughSquint","aliases":["faLaughSquint"]},{"icon":"faFaceLaughWink","aliases":["faLaughWink"]},{"icon":"faFaceLying","aliases":[]},{"icon":"faFaceMask","aliases":[]},{"icon":"faFaceMeh","aliases":["faMeh"]},{"icon":"faFaceMehBlank","aliases":["faMehBlank"]},{"icon":"faFaceMelting","aliases":[]},{"icon":"faFaceMonocle","aliases":[]},{"icon":"faFaceNauseated","aliases":[]},{"icon":"faFaceNoseSteam","aliases":[]},{"icon":"faFaceParty","aliases":[]},{"icon":"faFacePensive","aliases":[]},{"icon":"faFacePersevering","aliases":[]},{"icon":"faFacePleading","aliases":[]},{"icon":"faFacePouting","aliases":[]},{"icon":"faFaceRaisedEyebrow","aliases":[]},{"icon":"faFaceRelieved","aliases":[]},{"icon":"faFaceRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faFaceSadCry","aliases":["faSadCry"]},{"icon":"faFaceSadSweat","aliases":[]},{"icon":"faFaceSadTear","aliases":["faSadTear"]},{"icon":"faFaceSaluting","aliases":[]},{"icon":"faFaceScream","aliases":[]},{"icon":"faFaceShush","aliases":[]},{"icon":"faFaceSleeping","aliases":[]},{"icon":"faFaceSleepy","aliases":[]},{"icon":"faFaceSmile","aliases":["faSmile"]},{"icon":"faFaceSmileBeam","aliases":["faSmileBeam"]},{"icon":"faFaceSmileHalo","aliases":[]},{"icon":"faFaceSmileHearts","aliases":[]},{"icon":"faFaceSmileHorns","aliases":[]},{"icon":"faFaceSmilePlus","aliases":["faSmilePlus"]},{"icon":"faFaceSmileRelaxed","aliases":[]},{"icon":"faFaceSmileTear","aliases":[]},{"icon":"faFaceSmileTongue","aliases":[]},{"icon":"faFaceSmileUpsideDown","aliases":[]},{"icon":"faFaceSmileWink","aliases":["faSmileWink"]},{"icon":"faFaceSmilingHands","aliases":[]},{"icon":"faFaceSmirking","aliases":[]},{"icon":"faFaceSpiralEyes","aliases":[]},{"icon":"faFaceSunglasses","aliases":[]},{"icon":"faFaceSurprise","aliases":["faSurprise"]},{"icon":"faFaceSwear","aliases":[]},{"icon":"faFaceThermometer","aliases":[]},{"icon":"faFaceThinking","aliases":[]},{"icon":"faFaceTired","aliases":["faTired"]},{"icon":"faFaceTissue","aliases":[]},{"icon":"faFaceTongueMoney","aliases":[]},{"icon":"faFaceTongueSweat","aliases":[]},{"icon":"faFaceUnamused","aliases":[]},{"icon":"faFaceViewfinder","aliases":[]},{"icon":"faFaceVomit","aliases":[]},{"icon":"faFaceWeary","aliases":[]},{"icon":"faFaceWoozy","aliases":[]},{"icon":"faFaceWorried","aliases":[]},{"icon":"faFaceZany","aliases":[]},{"icon":"faFaceZipper","aliases":[]},{"icon":"faFalafel","aliases":[]},{"icon":"faFamily","aliases":[]},{"icon":"faFamilyDress","aliases":[]},{"icon":"faFamilyPants","aliases":[]},{"icon":"faFan","aliases":[]},{"icon":"faFanTable","aliases":[]},{"icon":"faFarm","aliases":["faBarnSilo"]},{"icon":"faFastBackward","aliases":["faFastBackward"]},{"icon":"faFastForward","aliases":["faFastForward"]},{"icon":"faFaucet","aliases":[]},{"icon":"faFaucetDrip","aliases":[]},{"icon":"faFax","aliases":[]},{"icon":"faFeather","aliases":[]},{"icon":"faFeatherAlt","aliases":["faFeatherAlt"]},{"icon":"faFeatherPointed","aliases":["faFeatherAlt"]},{"icon":"faFeed","aliases":["faFeed"]},{"icon":"faFemale","aliases":["faFemale"]},{"icon":"faFence","aliases":[]},{"icon":"faFerrisWheel","aliases":[]},{"icon":"faFerry","aliases":[]},{"icon":"faFieldHockey","aliases":["faFieldHockey"]},{"icon":"faFieldHockeyStickBall","aliases":["faFieldHockey"]},{"icon":"faFighterJet","aliases":["faFighterJet"]},{"icon":"faFile","aliases":[]},{"icon":"faFileAlt","aliases":["faFileAlt","faFileText"]},{"icon":"faFileArchive","aliases":["faFileArchive"]},{"icon":"faFileArrowDown","aliases":["faFileDownload"]},{"icon":"faFileArrowUp","aliases":["faFileUpload"]},{"icon":"faFileAudio","aliases":[]},{"icon":"faFileAward","aliases":["faFileAward"]},{"icon":"faFileBinary","aliases":[]},{"icon":"faFileCad","aliases":[]},{"icon":"faFileCaretDown","aliases":["faFileCaretDown"]},{"icon":"faFileCaretUp","aliases":["faFileCaretUp"]},{"icon":"faFileCertificate","aliases":["faFileAward"]},{"icon":"faFileChartColumn","aliases":["faFileChartLine"]},{"icon":"faFileChartLine","aliases":["faFileChartLine"]},{"icon":"faFileChartPie","aliases":[]},{"icon":"faFileCheck","aliases":[]},{"icon":"faFileCircleCheck","aliases":[]},{"icon":"faFileCircleExclamation","aliases":[]},{"icon":"faFileCircleInfo","aliases":[]},{"icon":"faFileCircleMinus","aliases":[]},{"icon":"faFileCirclePlus","aliases":[]},{"icon":"faFileCircleQuestion","aliases":[]},{"icon":"faFileCircleXmark","aliases":[]},{"icon":"faFileClipboard","aliases":["faFileClipboard"]},{"icon":"faFileCode","aliases":[]},{"icon":"faFileContract","aliases":[]},{"icon":"faFileCsv","aliases":[]},{"icon":"faFileDashedLine","aliases":["faPageBreak"]},{"icon":"faFileDoc","aliases":[]},{"icon":"faFileDownload","aliases":["faFileDownload"]},{"icon":"faFileEdit","aliases":["faFileEdit"]},{"icon":"faFileEps","aliases":[]},{"icon":"faFileExcel","aliases":[]},{"icon":"faFileExclamation","aliases":[]},{"icon":"faFileExport","aliases":["faArrowRightFromFile"]},{"icon":"faFileGif","aliases":[]},{"icon":"faFileHeart","aliases":[]},{"icon":"faFileImage","aliases":[]},{"icon":"faFileImport","aliases":["faArrowRightToFile"]},{"icon":"faFileInvoice","aliases":[]},{"icon":"faFileInvoiceDollar","aliases":[]},{"icon":"faFileJpg","aliases":[]},{"icon":"faFileLines","aliases":["faFileAlt","faFileText"]},{"icon":"faFileLock","aliases":[]},{"icon":"faFileMagnifyingGlass","aliases":["faFileSearch"]},{"icon":"faFileMedical","aliases":[]},{"icon":"faFileMedicalAlt","aliases":["faFileMedicalAlt"]},{"icon":"faFileMinus","aliases":[]},{"icon":"faFileMov","aliases":[]},{"icon":"faFileMp3","aliases":[]},{"icon":"faFileMp4","aliases":[]},{"icon":"faFileMusic","aliases":[]},{"icon":"faFilePdf","aliases":[]},{"icon":"faFilePen","aliases":["faFileEdit"]},{"icon":"faFilePlus","aliases":[]},{"icon":"faFilePlusMinus","aliases":[]},{"icon":"faFilePng","aliases":[]},{"icon":"faFilePowerpoint","aliases":[]},{"icon":"faFilePpt","aliases":[]},{"icon":"faFilePrescription","aliases":[]},{"icon":"faFileSearch","aliases":["faFileSearch"]},{"icon":"faFileShield","aliases":[]},{"icon":"faFileSignature","aliases":[]},{"icon":"faFileSlash","aliases":[]},{"icon":"faFileSpreadsheet","aliases":[]},{"icon":"faFileSvg","aliases":[]},{"icon":"faFileText","aliases":["faFileAlt","faFileText"]},{"icon":"faFileTimes","aliases":["faFileTimes"]},{"icon":"faFileUpload","aliases":["faFileUpload"]},{"icon":"faFileUser","aliases":[]},{"icon":"faFileVector","aliases":[]},{"icon":"faFileVideo","aliases":[]},{"icon":"faFileWaveform","aliases":["faFileMedicalAlt"]},{"icon":"faFileWord","aliases":[]},{"icon":"faFileXls","aliases":[]},{"icon":"faFileXmark","aliases":["faFileTimes"]},{"icon":"faFileXml","aliases":[]},{"icon":"faFileZip","aliases":[]},{"icon":"faFileZipper","aliases":["faFileArchive"]},{"icon":"faFiles","aliases":[]},{"icon":"faFilesMedical","aliases":[]},{"icon":"faFill","aliases":[]},{"icon":"faFillDrip","aliases":[]},{"icon":"faFilm","aliases":[]},{"icon":"faFilmAlt","aliases":["faFilmAlt"]},{"icon":"faFilmCanister","aliases":["faFilmCannister"]},{"icon":"faFilmCannister","aliases":["faFilmCannister"]},{"icon":"faFilmSimple","aliases":["faFilmAlt"]},{"icon":"faFilmSlash","aliases":[]},{"icon":"faFilms","aliases":[]},{"icon":"faFilter","aliases":[]},{"icon":"faFilterCircleDollar","aliases":["faFunnelDollar"]},{"icon":"faFilterCircleXmark","aliases":[]},{"icon":"faFilterList","aliases":[]},{"icon":"faFilterSlash","aliases":[]},{"icon":"faFilters","aliases":[]},{"icon":"faFingerprint","aliases":[]},{"icon":"faFire","aliases":[]},{"icon":"faFireAlt","aliases":["faFireAlt"]},{"icon":"faFireBurner","aliases":[]},{"icon":"faFireExtinguisher","aliases":[]},{"icon":"faFireFlame","aliases":["faFlame"]},{"icon":"faFireFlameCurved","aliases":["faFireAlt"]},{"icon":"faFireFlameSimple","aliases":["faBurn"]},{"icon":"faFireHydrant","aliases":[]},{"icon":"faFireSmoke","aliases":[]},{"icon":"faFireplace","aliases":[]},{"icon":"faFirewall","aliases":["faFirewall"]},{"icon":"faFirstAid","aliases":["faFirstAid"]},{"icon":"faFish","aliases":[]},{"icon":"faFishBones","aliases":[]},{"icon":"faFishCooked","aliases":[]},{"icon":"faFishFins","aliases":[]},{"icon":"faFishingRod","aliases":[]},{"icon":"faFistRaised","aliases":["faFistRaised"]},{"icon":"faFlag","aliases":[]},{"icon":"faFlagAlt","aliases":["faFlagAlt"]},{"icon":"faFlagCheckered","aliases":[]},{"icon":"faFlagPennant","aliases":["faPennant"]},{"icon":"faFlagSwallowtail","aliases":["faFlagAlt"]},{"icon":"faFlagUsa","aliases":[]},{"icon":"faFlame","aliases":["faFlame"]},{"icon":"faFlashlight","aliases":[]},{"icon":"faFlask","aliases":[]},{"icon":"faFlaskGear","aliases":[]},{"icon":"faFlaskPoison","aliases":["faFlaskPoison"]},{"icon":"faFlaskPotion","aliases":["faFlaskPotion"]},{"icon":"faFlaskRoundPoison","aliases":["faFlaskPoison"]},{"icon":"faFlaskRoundPotion","aliases":["faFlaskPotion"]},{"icon":"faFlaskVial","aliases":[]},{"icon":"faFlatbread","aliases":[]},{"icon":"faFlatbreadStuffed","aliases":[]},{"icon":"faFloppyDisk","aliases":["faSave"]},{"icon":"faFloppyDiskCircleArrowRight","aliases":["faSaveCircleArrowRight"]},{"icon":"faFloppyDiskCircleXmark","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faFloppyDiskPen","aliases":[]},{"icon":"faFloppyDiskTimes","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faFloppyDisks","aliases":[]},{"icon":"faFlorinSign","aliases":[]},{"icon":"faFlower","aliases":[]},{"icon":"faFlowerDaffodil","aliases":[]},{"icon":"faFlowerTulip","aliases":[]},{"icon":"faFlushed","aliases":["faFlushed"]},{"icon":"faFlute","aliases":[]},{"icon":"faFluxCapacitor","aliases":[]},{"icon":"faFlyingDisc","aliases":[]},{"icon":"faFog","aliases":["faFog"]},{"icon":"faFolder","aliases":["faFolderBlank"]},{"icon":"faFolderArrowDown","aliases":["faFolderDownload"]},{"icon":"faFolderArrowUp","aliases":["faFolderUpload"]},{"icon":"faFolderBlank","aliases":["faFolderBlank"]},{"icon":"faFolderBookmark","aliases":[]},{"icon":"faFolderCheck","aliases":[]},{"icon":"faFolderClosed","aliases":[]},{"icon":"faFolderCog","aliases":["faFolderCog"]},{"icon":"faFolderDownload","aliases":["faFolderDownload"]},{"icon":"faFolderGear","aliases":["faFolderCog"]},{"icon":"faFolderGrid","aliases":[]},{"icon":"faFolderHeart","aliases":[]},{"icon":"faFolderImage","aliases":[]},{"icon":"faFolderMagnifyingGlass","aliases":["faFolderSearch"]},{"icon":"faFolderMedical","aliases":[]},{"icon":"faFolderMinus","aliases":[]},{"icon":"faFolderMusic","aliases":[]},{"icon":"faFolderOpen","aliases":[]},{"icon":"faFolderPlus","aliases":[]},{"icon":"faFolderSearch","aliases":["faFolderSearch"]},{"icon":"faFolderTimes","aliases":["faFolderTimes"]},{"icon":"faFolderTree","aliases":[]},{"icon":"faFolderUpload","aliases":["faFolderUpload"]},{"icon":"faFolderUser","aliases":[]},{"icon":"faFolderXmark","aliases":["faFolderTimes"]},{"icon":"faFolders","aliases":[]},{"icon":"faFonduePot","aliases":[]},{"icon":"faFont","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontCase","aliases":[]},{"icon":"faFootball","aliases":["faFootballBall"]},{"icon":"faFootballBall","aliases":["faFootballBall"]},{"icon":"faFootballHelmet","aliases":[]},{"icon":"faFork","aliases":["faUtensilFork"]},{"icon":"faForkKnife","aliases":["faUtensilsAlt"]},{"icon":"faForklift","aliases":[]},{"icon":"faFort","aliases":[]},{"icon":"faForward","aliases":[]},{"icon":"faForwardFast","aliases":["faFastForward"]},{"icon":"faForwardStep","aliases":["faStepForward"]},{"icon":"faFragile","aliases":["faFragile"]},{"icon":"faFrame","aliases":[]},{"icon":"faFrancSign","aliases":[]},{"icon":"faFrenchFries","aliases":[]},{"icon":"faFrog","aliases":[]},{"icon":"faFrostyHead","aliases":["faFrostyHead"]},{"icon":"faFrown","aliases":["faFrown"]},{"icon":"faFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFunction","aliases":[]},{"icon":"faFunnelDollar","aliases":["faFunnelDollar"]},{"icon":"faFutbol","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faFutbolBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faG","aliases":[]},{"icon":"faGalaxy","aliases":[]},{"icon":"faGalleryThumbnails","aliases":[]},{"icon":"faGameBoard","aliases":[]},{"icon":"faGameBoardAlt","aliases":["faGameBoardAlt"]},{"icon":"faGameBoardSimple","aliases":["faGameBoardAlt"]},{"icon":"faGameConsoleHandheld","aliases":[]},{"icon":"faGameConsoleHandheldCrank","aliases":[]},{"icon":"faGamepad","aliases":[]},{"icon":"faGamepadAlt","aliases":["faGamepadAlt"]},{"icon":"faGamepadModern","aliases":["faGamepadAlt"]},{"icon":"faGarage","aliases":[]},{"icon":"faGarageCar","aliases":[]},{"icon":"faGarageOpen","aliases":[]},{"icon":"faGarlic","aliases":[]},{"icon":"faGasPump","aliases":[]},{"icon":"faGasPumpSlash","aliases":[]},{"icon":"faGauge","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeCircleBolt","aliases":[]},{"icon":"faGaugeCircleMinus","aliases":[]},{"icon":"faGaugeCirclePlus","aliases":[]},{"icon":"faGaugeHigh","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faGaugeLow","aliases":["faTachometerAltSlow"]},{"icon":"faGaugeMax","aliases":["faTachometerAltFastest"]},{"icon":"faGaugeMed","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeMin","aliases":["faTachometerAltSlowest"]},{"icon":"faGaugeSimple","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleHigh","aliases":["faTachometer","faTachometerFast"]},{"icon":"faGaugeSimpleLow","aliases":["faTachometerSlow"]},{"icon":"faGaugeSimpleMax","aliases":["faTachometerFastest"]},{"icon":"faGaugeSimpleMed","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleMin","aliases":["faTachometerSlowest"]},{"icon":"faGaveDandy","aliases":["faGaveDandy"]},{"icon":"faGavel","aliases":["faLegal"]},{"icon":"faGbp","aliases":["faGbp","faPoundSign"]},{"icon":"faGear","aliases":["faCog"]},{"icon":"faGearCode","aliases":[]},{"icon":"faGearComplex","aliases":[]},{"icon":"faGearComplexCode","aliases":[]},{"icon":"faGears","aliases":["faCogs"]},{"icon":"faGem","aliases":[]},{"icon":"faGenderless","aliases":[]},{"icon":"faGhost","aliases":[]},{"icon":"faGif","aliases":[]},{"icon":"faGift","aliases":[]},{"icon":"faGiftCard","aliases":[]},{"icon":"faGifts","aliases":[]},{"icon":"faGingerbreadMan","aliases":[]},{"icon":"faGlass","aliases":[]},{"icon":"faGlassChampagne","aliases":["faGlassChampagne"]},{"icon":"faGlassCheers","aliases":["faGlassCheers"]},{"icon":"faGlassCitrus","aliases":[]},{"icon":"faGlassEmpty","aliases":[]},{"icon":"faGlassHalf","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassHalfEmpty","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassHalfFull","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassMartini","aliases":["faGlassMartini"]},{"icon":"faGlassMartiniAlt","aliases":["faGlassMartiniAlt"]},{"icon":"faGlassWater","aliases":[]},{"icon":"faGlassWaterDroplet","aliases":[]},{"icon":"faGlassWhiskey","aliases":["faGlassWhiskey"]},{"icon":"faGlassWhiskeyRocks","aliases":["faGlassWhiskeyRocks"]},{"icon":"faGlasses","aliases":[]},{"icon":"faGlassesAlt","aliases":["faGlassesAlt"]},{"icon":"faGlassesRound","aliases":["faGlassesAlt"]},{"icon":"faGlobe","aliases":[]},{"icon":"faGlobeAfrica","aliases":["faGlobeAfrica"]},{"icon":"faGlobeAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faGlobeAsia","aliases":["faGlobeAsia"]},{"icon":"faGlobeEurope","aliases":["faGlobeEurope"]},{"icon":"faGlobeOceania","aliases":["faGlobeOceania"]},{"icon":"faGlobePointer","aliases":[]},{"icon":"faGlobeSnow","aliases":[]},{"icon":"faGlobeStand","aliases":[]},{"icon":"faGlobeWifi","aliases":[]},{"icon":"faGloveBoxing","aliases":["faGloveBoxing"]},{"icon":"faGoalNet","aliases":[]},{"icon":"faGolfBall","aliases":["faGolfBall"]},{"icon":"faGolfBallTee","aliases":["faGolfBall"]},{"icon":"faGolfClub","aliases":[]},{"icon":"faGolfFlagHole","aliases":[]},{"icon":"faGopuram","aliases":[]},{"icon":"faGraduationCap","aliases":["faMortarBoard"]},{"icon":"faGramophone","aliases":[]},{"icon":"faGrapes","aliases":[]},{"icon":"faGrate","aliases":[]},{"icon":"faGrateDroplet","aliases":[]},{"icon":"faGreaterThan","aliases":[]},{"icon":"faGreaterThanEqual","aliases":[]},{"icon":"faGrid","aliases":["faGrid3"]},{"icon":"faGrid2","aliases":[]},{"icon":"faGrid2Plus","aliases":[]},{"icon":"faGrid3","aliases":["faGrid3"]},{"icon":"faGrid4","aliases":[]},{"icon":"faGrid5","aliases":[]},{"icon":"faGridDividers","aliases":[]},{"icon":"faGridHorizontal","aliases":[]},{"icon":"faGridRound","aliases":[]},{"icon":"faGridRound2","aliases":[]},{"icon":"faGridRound2Plus","aliases":[]},{"icon":"faGridRound4","aliases":[]},{"icon":"faGridRound5","aliases":[]},{"icon":"faGrill","aliases":[]},{"icon":"faGrillFire","aliases":[]},{"icon":"faGrillHot","aliases":[]},{"icon":"faGrimace","aliases":["faGrimace"]},{"icon":"faGrin","aliases":["faGrin"]},{"icon":"faGrinAlt","aliases":["faGrinAlt"]},{"icon":"faGrinBeam","aliases":["faGrinBeam"]},{"icon":"faGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faGrinHearts","aliases":["faGrinHearts"]},{"icon":"faGrinSquint","aliases":["faGrinSquint"]},{"icon":"faGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faGrinStars","aliases":["faGrinStars"]},{"icon":"faGrinTears","aliases":["faGrinTears"]},{"icon":"faGrinTongue","aliases":["faGrinTongue"]},{"icon":"faGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faGrinWink","aliases":["faGrinWink"]},{"icon":"faGrip","aliases":["faGripHorizontal"]},{"icon":"faGripDots","aliases":[]},{"icon":"faGripDotsVertical","aliases":[]},{"icon":"faGripHorizontal","aliases":["faGripHorizontal"]},{"icon":"faGripLines","aliases":[]},{"icon":"faGripLinesVertical","aliases":[]},{"icon":"faGripVertical","aliases":[]},{"icon":"faGroupArrowsRotate","aliases":[]},{"icon":"faGuaraniSign","aliases":[]},{"icon":"faGuitar","aliases":[]},{"icon":"faGuitarElectric","aliases":[]},{"icon":"faGuitars","aliases":[]},{"icon":"faGun","aliases":[]},{"icon":"faGunSlash","aliases":[]},{"icon":"faGunSquirt","aliases":[]},{"icon":"faH","aliases":[]},{"icon":"faH1","aliases":[]},{"icon":"faH2","aliases":[]},{"icon":"faH3","aliases":[]},{"icon":"faH4","aliases":[]},{"icon":"faH5","aliases":[]},{"icon":"faH6","aliases":[]},{"icon":"faHSquare","aliases":["faHSquare"]},{"icon":"faHamburger","aliases":["faHamburger"]},{"icon":"faHammer","aliases":[]},{"icon":"faHammerBrush","aliases":[]},{"icon":"faHammerCrash","aliases":[]},{"icon":"faHammerWar","aliases":[]},{"icon":"faHamsa","aliases":[]},{"icon":"faHand","aliases":["faHandPaper"]},{"icon":"faHandBackFist","aliases":["faHandRock"]},{"icon":"faHandBackPointDown","aliases":[]},{"icon":"faHandBackPointLeft","aliases":[]},{"icon":"faHandBackPointRibbon","aliases":[]},{"icon":"faHandBackPointRight","aliases":[]},{"icon":"faHandBackPointUp","aliases":[]},{"icon":"faHandDots","aliases":["faAllergies"]},{"icon":"faHandFingersCrossed","aliases":[]},{"icon":"faHandFist","aliases":["faFistRaised"]},{"icon":"faHandHeart","aliases":[]},{"icon":"faHandHolding","aliases":[]},{"icon":"faHandHoldingBox","aliases":[]},{"icon":"faHandHoldingCircleDollar","aliases":[]},{"icon":"faHandHoldingDollar","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingDroplet","aliases":["faHandHoldingWater"]},{"icon":"faHandHoldingHand","aliases":[]},{"icon":"faHandHoldingHeart","aliases":[]},{"icon":"faHandHoldingMagic","aliases":[]},{"icon":"faHandHoldingMedical","aliases":[]},{"icon":"faHandHoldingSeedling","aliases":[]},{"icon":"faHandHoldingSkull","aliases":[]},{"icon":"faHandHoldingUsd","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingWater","aliases":["faHandHoldingWater"]},{"icon":"faHandHorns","aliases":[]},{"icon":"faHandLizard","aliases":[]},{"icon":"faHandLove","aliases":[]},{"icon":"faHandMiddleFinger","aliases":[]},{"icon":"faHandPaper","aliases":["faHandPaper"]},{"icon":"faHandPeace","aliases":[]},{"icon":"faHandPointDown","aliases":[]},{"icon":"faHandPointLeft","aliases":[]},{"icon":"faHandPointRibbon","aliases":[]},{"icon":"faHandPointRight","aliases":[]},{"icon":"faHandPointUp","aliases":[]},{"icon":"faHandPointer","aliases":[]},{"icon":"faHandReceiving","aliases":["faHandReceiving"]},{"icon":"faHandRock","aliases":["faHandRock"]},{"icon":"faHandScissors","aliases":[]},{"icon":"faHandSparkles","aliases":[]},{"icon":"faHandSpock","aliases":[]},{"icon":"faHandWave","aliases":[]},{"icon":"faHandcuffs","aliases":[]},{"icon":"faHands","aliases":["faSignLanguage","faSigning"]},{"icon":"faHandsAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsBound","aliases":[]},{"icon":"faHandsBubbles","aliases":["faHandsWash"]},{"icon":"faHandsClapping","aliases":[]},{"icon":"faHandsHeart","aliases":["faHandsHeart"]},{"icon":"faHandsHelping","aliases":["faHandsHelping"]},{"icon":"faHandsHolding","aliases":[]},{"icon":"faHandsHoldingChild","aliases":[]},{"icon":"faHandsHoldingCircle","aliases":[]},{"icon":"faHandsHoldingDiamond","aliases":["faHandReceiving"]},{"icon":"faHandsHoldingDollar","aliases":["faHandsUsd"]},{"icon":"faHandsHoldingHeart","aliases":["faHandsHeart"]},{"icon":"faHandsPraying","aliases":["faPrayingHands"]},{"icon":"faHandsUsd","aliases":["faHandsUsd"]},{"icon":"faHandsWash","aliases":["faHandsWash"]},{"icon":"faHandshake","aliases":[]},{"icon":"faHandshakeAlt","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeAltSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeAngle","aliases":["faHandsHelping"]},{"icon":"faHandshakeSimple","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeSimpleSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeSlash","aliases":[]},{"icon":"faHanukiah","aliases":[]},{"icon":"faHardDrive","aliases":["faHdd"]},{"icon":"faHardHat","aliases":["faHardHat","faHatHard"]},{"icon":"faHardOfHearing","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faHashtag","aliases":[]},{"icon":"faHashtagLock","aliases":[]},{"icon":"faHatBeach","aliases":[]},{"icon":"faHatChef","aliases":[]},{"icon":"faHatCowboy","aliases":[]},{"icon":"faHatCowboySide","aliases":[]},{"icon":"faHatHard","aliases":["faHardHat","faHatHard"]},{"icon":"faHatSanta","aliases":[]},{"icon":"faHatWinter","aliases":[]},{"icon":"faHatWitch","aliases":[]},{"icon":"faHatWizard","aliases":[]},{"icon":"faHaykal","aliases":["faHaykal"]},{"icon":"faHdd","aliases":["faHdd"]},{"icon":"faHeadSide","aliases":[]},{"icon":"faHeadSideBrain","aliases":[]},{"icon":"faHeadSideCough","aliases":[]},{"icon":"faHeadSideCoughSlash","aliases":[]},{"icon":"faHeadSideGear","aliases":[]},{"icon":"faHeadSideGoggles","aliases":["faHeadVr"]},{"icon":"faHeadSideHeadphones","aliases":[]},{"icon":"faHeadSideHeart","aliases":[]},{"icon":"faHeadSideMask","aliases":[]},{"icon":"faHeadSideMedical","aliases":[]},{"icon":"faHeadSideVirus","aliases":[]},{"icon":"faHeadVr","aliases":["faHeadVr"]},{"icon":"faHeader","aliases":["faHeader"]},{"icon":"faHeading","aliases":["faHeader"]},{"icon":"faHeadphones","aliases":[]},{"icon":"faHeadphonesAlt","aliases":["faHeadphonesAlt"]},{"icon":"faHeadphonesSimple","aliases":["faHeadphonesAlt"]},{"icon":"faHeadset","aliases":[]},{"icon":"faHeart","aliases":[]},{"icon":"faHeartBroken","aliases":["faHeartBroken"]},{"icon":"faHeartCircle","aliases":["faHeartCircle"]},{"icon":"faHeartCircleBolt","aliases":[]},{"icon":"faHeartCircleCheck","aliases":[]},{"icon":"faHeartCircleExclamation","aliases":[]},{"icon":"faHeartCircleMinus","aliases":[]},{"icon":"faHeartCirclePlus","aliases":[]},{"icon":"faHeartCircleXmark","aliases":[]},{"icon":"faHeartCrack","aliases":["faHeartBroken"]},{"icon":"faHeartHalf","aliases":[]},{"icon":"faHeartHalfAlt","aliases":["faHeartHalfAlt"]},{"icon":"faHeartHalfStroke","aliases":["faHeartHalfAlt"]},{"icon":"faHeartMusicCameraBolt","aliases":["faHeartMusicCameraBolt"]},{"icon":"faHeartPulse","aliases":["faHeartbeat"]},{"icon":"faHeartRate","aliases":["faHeartRate"]},{"icon":"faHeartSquare","aliases":["faHeartSquare"]},{"icon":"faHeartbeat","aliases":["faHeartbeat"]},{"icon":"faHeat","aliases":[]},{"icon":"faHelicopter","aliases":[]},{"icon":"faHelicopterSymbol","aliases":[]},{"icon":"faHelmetBattle","aliases":[]},{"icon":"faHelmetSafety","aliases":["faHardHat","faHatHard"]},{"icon":"faHelmetUn","aliases":[]},{"icon":"faHexagon","aliases":[]},{"icon":"faHexagonCheck","aliases":[]},{"icon":"faHexagonDivide","aliases":[]},{"icon":"faHexagonExclamation","aliases":[]},{"icon":"faHexagonImage","aliases":[]},{"icon":"faHexagonMinus","aliases":["faMinusHexagon"]},{"icon":"faHexagonPlus","aliases":["faPlusHexagon"]},{"icon":"faHexagonVerticalNft","aliases":[]},{"icon":"faHexagonVerticalNftSlanted","aliases":[]},{"icon":"faHexagonXmark","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faHighDefinition","aliases":["faRectangleHd"]},{"icon":"faHighlighter","aliases":[]},{"icon":"faHighlighterLine","aliases":[]},{"icon":"faHiking","aliases":["faHiking"]},{"icon":"faHillAvalanche","aliases":[]},{"icon":"faHillRockslide","aliases":[]},{"icon":"faHippo","aliases":[]},{"icon":"faHistory","aliases":["faHistory"]},{"icon":"faHockeyMask","aliases":[]},{"icon":"faHockeyPuck","aliases":[]},{"icon":"faHockeyStickPuck","aliases":[]},{"icon":"faHockeySticks","aliases":[]},{"icon":"faHollyBerry","aliases":[]},{"icon":"faHome","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeBlank","aliases":["faHomeBlank"]},{"icon":"faHomeHeart","aliases":["faHomeHeart"]},{"icon":"faHomeLg","aliases":["faHomeLg"]},{"icon":"faHomeLgAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeUser","aliases":["faHomeUser"]},{"icon":"faHoneyPot","aliases":[]},{"icon":"faHoodCloak","aliases":[]},{"icon":"faHorizontalRule","aliases":[]},{"icon":"faHorse","aliases":[]},{"icon":"faHorseHead","aliases":[]},{"icon":"faHorseSaddle","aliases":[]},{"icon":"faHose","aliases":[]},{"icon":"faHoseReel","aliases":[]},{"icon":"faHospital","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalAlt","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalSymbol","aliases":["faHospitalSymbol"]},{"icon":"faHospitalUser","aliases":[]},{"icon":"faHospitalWide","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitals","aliases":[]},{"icon":"faHotTub","aliases":["faHotTub"]},{"icon":"faHotTubPerson","aliases":["faHotTub"]},{"icon":"faHotdog","aliases":[]},{"icon":"faHotel","aliases":[]},{"icon":"faHourglass","aliases":["faHourglassEmpty"]},{"icon":"faHourglass1","aliases":["faHourglass1"]},{"icon":"faHourglass2","aliases":["faHourglass2"]},{"icon":"faHourglass3","aliases":["faHourglass3"]},{"icon":"faHourglassClock","aliases":[]},{"icon":"faHourglassEmpty","aliases":["faHourglassEmpty"]},{"icon":"faHourglassEnd","aliases":["faHourglass3"]},{"icon":"faHourglassHalf","aliases":["faHourglass2"]},{"icon":"faHourglassStart","aliases":["faHourglass1"]},{"icon":"faHouse","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHouseBlank","aliases":["faHomeBlank"]},{"icon":"faHouseBuilding","aliases":[]},{"icon":"faHouseChimney","aliases":["faHomeLg"]},{"icon":"faHouseChimneyBlank","aliases":[]},{"icon":"faHouseChimneyCrack","aliases":["faHouseDamage"]},{"icon":"faHouseChimneyHeart","aliases":[]},{"icon":"faHouseChimneyMedical","aliases":["faClinicMedical"]},{"icon":"faHouseChimneyUser","aliases":[]},{"icon":"faHouseChimneyWindow","aliases":[]},{"icon":"faHouseCircleCheck","aliases":[]},{"icon":"faHouseCircleExclamation","aliases":[]},{"icon":"faHouseCircleXmark","aliases":[]},{"icon":"faHouseCrack","aliases":[]},{"icon":"faHouseDamage","aliases":["faHouseDamage"]},{"icon":"faHouseDay","aliases":[]},{"icon":"faHouseFire","aliases":[]},{"icon":"faHouseFlag","aliases":[]},{"icon":"faHouseFlood","aliases":["faHouseFlood"]},{"icon":"faHouseFloodWater","aliases":[]},{"icon":"faHouseFloodWaterCircleArrowRight","aliases":[]},{"icon":"faHouseHeart","aliases":["faHomeHeart"]},{"icon":"faHouseLaptop","aliases":["faLaptopHouse"]},{"icon":"faHouseLeave","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHouseLock","aliases":[]},{"icon":"faHouseMedical","aliases":[]},{"icon":"faHouseMedicalCircleCheck","aliases":[]},{"icon":"faHouseMedicalCircleExclamation","aliases":[]},{"icon":"faHouseMedicalCircleXmark","aliases":[]},{"icon":"faHouseMedicalFlag","aliases":[]},{"icon":"faHouseNight","aliases":[]},{"icon":"faHousePersonArrive","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHousePersonDepart","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHousePersonLeave","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHousePersonReturn","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHouseReturn","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHouseSignal","aliases":[]},{"icon":"faHouseTree","aliases":[]},{"icon":"faHouseTsunami","aliases":[]},{"icon":"faHouseTurret","aliases":[]},{"icon":"faHouseUser","aliases":["faHomeUser"]},{"icon":"faHouseWater","aliases":["faHouseFlood"]},{"icon":"faHouseWindow","aliases":[]},{"icon":"faHryvnia","aliases":["faHryvnia"]},{"icon":"faHryvniaSign","aliases":["faHryvnia"]},{"icon":"faHumidity","aliases":["faHumidity"]},{"icon":"faHundredPoints","aliases":["fa100"]},{"icon":"faHurricane","aliases":[]},{"icon":"faHydra","aliases":[]},{"icon":"faHyphen","aliases":[]},{"icon":"faI","aliases":[]},{"icon":"faICursor","aliases":[]},{"icon":"faIceCream","aliases":[]},{"icon":"faIceSkate","aliases":[]},{"icon":"faIcicles","aliases":[]},{"icon":"faIcons","aliases":["faHeartMusicCameraBolt"]},{"icon":"faIconsAlt","aliases":["faIconsAlt"]},{"icon":"faIdBadge","aliases":[]},{"icon":"faIdCard","aliases":["faDriversLicense"]},{"icon":"faIdCardAlt","aliases":["faIdCardAlt"]},{"icon":"faIdCardClip","aliases":["faIdCardAlt"]},{"icon":"faIgloo","aliases":[]},{"icon":"faIls","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faImage","aliases":[]},{"icon":"faImageLandscape","aliases":["faLandscape"]},{"icon":"faImagePolaroid","aliases":[]},{"icon":"faImagePolaroidUser","aliases":[]},{"icon":"faImagePortrait","aliases":["faPortrait"]},{"icon":"faImageSlash","aliases":[]},{"icon":"faImageUser","aliases":[]},{"icon":"faImages","aliases":[]},{"icon":"faImagesUser","aliases":[]},{"icon":"faInbox","aliases":[]},{"icon":"faInboxArrowDown","aliases":["faInboxArrowDown"]},{"icon":"faInboxArrowUp","aliases":["faInboxArrowUp"]},{"icon":"faInboxFull","aliases":[]},{"icon":"faInboxIn","aliases":["faInboxArrowDown"]},{"icon":"faInboxOut","aliases":["faInboxArrowUp"]},{"icon":"faInboxes","aliases":[]},{"icon":"faIndent","aliases":[]},{"icon":"faIndianRupee","aliases":["faIndianRupee","faInr"]},{"icon":"faIndianRupeeSign","aliases":["faIndianRupee","faInr"]},{"icon":"faIndustry","aliases":[]},{"icon":"faIndustryAlt","aliases":["faIndustryAlt"]},{"icon":"faIndustryWindows","aliases":["faIndustryAlt"]},{"icon":"faInfinity","aliases":[]},{"icon":"faInfo","aliases":[]},{"icon":"faInfoCircle","aliases":["faInfoCircle"]},{"icon":"faInfoSquare","aliases":["faInfoSquare"]},{"icon":"faInhaler","aliases":[]},{"icon":"faInputNumeric","aliases":[]},{"icon":"faInputPipe","aliases":[]},{"icon":"faInputText","aliases":[]},{"icon":"faInr","aliases":["faIndianRupee","faInr"]},{"icon":"faInstitution","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faIntegral","aliases":[]},{"icon":"faInterrobang","aliases":[]},{"icon":"faIntersection","aliases":[]},{"icon":"faInventory","aliases":["faInventory"]},{"icon":"faIslandTreePalm","aliases":["faIslandTreePalm"]},{"icon":"faIslandTropical","aliases":["faIslandTreePalm"]},{"icon":"faItalic","aliases":[]},{"icon":"faJ","aliases":[]},{"icon":"faJackOLantern","aliases":[]},{"icon":"faJar","aliases":[]},{"icon":"faJarWheat","aliases":[]},{"icon":"faJedi","aliases":[]},{"icon":"faJetFighter","aliases":["faFighterJet"]},{"icon":"faJetFighterUp","aliases":[]},{"icon":"faJoint","aliases":[]},{"icon":"faJournalWhills","aliases":["faJournalWhills"]},{"icon":"faJoystick","aliases":[]},{"icon":"faJpy","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faJug","aliases":[]},{"icon":"faJugBottle","aliases":[]},{"icon":"faJugDetergent","aliases":[]},{"icon":"faK","aliases":[]},{"icon":"faKaaba","aliases":[]},{"icon":"faKazoo","aliases":[]},{"icon":"faKerning","aliases":[]},{"icon":"faKey","aliases":[]},{"icon":"faKeySkeleton","aliases":[]},{"icon":"faKeySkeletonLeftRight","aliases":[]},{"icon":"faKeyboard","aliases":[]},{"icon":"faKeyboardBrightness","aliases":[]},{"icon":"faKeyboardBrightnessLow","aliases":[]},{"icon":"faKeyboardDown","aliases":[]},{"icon":"faKeyboardLeft","aliases":[]},{"icon":"faKeynote","aliases":[]},{"icon":"faKhanda","aliases":[]},{"icon":"faKidneys","aliases":[]},{"icon":"faKipSign","aliases":[]},{"icon":"faKiss","aliases":["faKiss"]},{"icon":"faKissBeam","aliases":["faKissBeam"]},{"icon":"faKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faKitMedical","aliases":["faFirstAid"]},{"icon":"faKitchenSet","aliases":[]},{"icon":"faKite","aliases":[]},{"icon":"faKiwiBird","aliases":[]},{"icon":"faKiwiFruit","aliases":[]},{"icon":"faKnife","aliases":["faUtensilKnife"]},{"icon":"faKnifeKitchen","aliases":[]},{"icon":"faKrw","aliases":["faKrw","faWon"]},{"icon":"faL","aliases":[]},{"icon":"faLacrosseStick","aliases":[]},{"icon":"faLacrosseStickBall","aliases":[]},{"icon":"faLadderWater","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faLambda","aliases":[]},{"icon":"faLamp","aliases":[]},{"icon":"faLampDesk","aliases":[]},{"icon":"faLampFloor","aliases":[]},{"icon":"faLampStreet","aliases":[]},{"icon":"faLandMineOn","aliases":[]},{"icon":"faLandmark","aliases":[]},{"icon":"faLandmarkAlt","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkDome","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkFlag","aliases":[]},{"icon":"faLandmarkMagnifyingGlass","aliases":[]},{"icon":"faLandscape","aliases":["faLandscape"]},{"icon":"faLanguage","aliases":[]},{"icon":"faLaptop","aliases":[]},{"icon":"faLaptopArrowDown","aliases":[]},{"icon":"faLaptopBinary","aliases":[]},{"icon":"faLaptopCode","aliases":[]},{"icon":"faLaptopFile","aliases":[]},{"icon":"faLaptopHouse","aliases":["faLaptopHouse"]},{"icon":"faLaptopMedical","aliases":[]},{"icon":"faLaptopMobile","aliases":["faPhoneLaptop"]},{"icon":"faLaptopSlash","aliases":[]},{"icon":"faLariSign","aliases":[]},{"icon":"faLasso","aliases":[]},{"icon":"faLassoSparkles","aliases":[]},{"icon":"faLaugh","aliases":["faLaugh"]},{"icon":"faLaughBeam","aliases":["faLaughBeam"]},{"icon":"faLaughSquint","aliases":["faLaughSquint"]},{"icon":"faLaughWink","aliases":["faLaughWink"]},{"icon":"faLayerGroup","aliases":[]},{"icon":"faLayerGroupMinus","aliases":["faLayerGroupMinus"]},{"icon":"faLayerGroupPlus","aliases":["faLayerGroupPlus"]},{"icon":"faLayerMinus","aliases":["faLayerGroupMinus"]},{"icon":"faLayerPlus","aliases":["faLayerGroupPlus"]},{"icon":"faLeaf","aliases":[]},{"icon":"faLeafHeart","aliases":[]},{"icon":"faLeafMaple","aliases":[]},{"icon":"faLeafOak","aliases":[]},{"icon":"faLeafyGreen","aliases":[]},{"icon":"faLeft","aliases":["faArrowAltLeft"]},{"icon":"faLeftFromBracket","aliases":[]},{"icon":"faLeftFromLine","aliases":["faArrowAltFromRight"]},{"icon":"faLeftLong","aliases":["faLongArrowAltLeft"]},{"icon":"faLeftLongToLine","aliases":[]},{"icon":"faLeftRight","aliases":["faArrowsAltH"]},{"icon":"faLeftToBracket","aliases":[]},{"icon":"faLeftToLine","aliases":["faArrowAltToLeft"]},{"icon":"faLegal","aliases":["faLegal"]},{"icon":"faLemon","aliases":[]},{"icon":"faLessThan","aliases":[]},{"icon":"faLessThanEqual","aliases":[]},{"icon":"faLevelDown","aliases":["faLevelDown"]},{"icon":"faLevelDownAlt","aliases":["faLevelDownAlt"]},{"icon":"faLevelUp","aliases":["faLevelUp"]},{"icon":"faLevelUpAlt","aliases":["faLevelUpAlt"]},{"icon":"faLifeRing","aliases":[]},{"icon":"faLightCeiling","aliases":[]},{"icon":"faLightEmergency","aliases":[]},{"icon":"faLightEmergencyOn","aliases":[]},{"icon":"faLightSwitch","aliases":[]},{"icon":"faLightSwitchOff","aliases":[]},{"icon":"faLightSwitchOn","aliases":[]},{"icon":"faLightbulb","aliases":[]},{"icon":"faLightbulbCfl","aliases":[]},{"icon":"faLightbulbCflOn","aliases":[]},{"icon":"faLightbulbDollar","aliases":[]},{"icon":"faLightbulbExclamation","aliases":[]},{"icon":"faLightbulbExclamationOn","aliases":[]},{"icon":"faLightbulbGear","aliases":[]},{"icon":"faLightbulbMessage","aliases":[]},{"icon":"faLightbulbOn","aliases":[]},{"icon":"faLightbulbSlash","aliases":[]},{"icon":"faLighthouse","aliases":[]},{"icon":"faLightsHoliday","aliases":[]},{"icon":"faLineChart","aliases":["faLineChart"]},{"icon":"faLineColumns","aliases":[]},{"icon":"faLineHeight","aliases":[]},{"icon":"faLinesLeaning","aliases":[]},{"icon":"faLink","aliases":["faChain"]},{"icon":"faLinkHorizontal","aliases":["faChainHorizontal"]},{"icon":"faLinkHorizontalSlash","aliases":["faChainHorizontalSlash"]},{"icon":"faLinkSimple","aliases":[]},{"icon":"faLinkSimpleSlash","aliases":[]},{"icon":"faLinkSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faLips","aliases":[]},{"icon":"faLiraSign","aliases":[]},{"icon":"faList","aliases":["faListSquares"]},{"icon":"faList12","aliases":["faList12","faListNumeric"]},{"icon":"faListAlt","aliases":["faListAlt"]},{"icon":"faListCheck","aliases":["faTasks"]},{"icon":"faListDots","aliases":["faListDots"]},{"icon":"faListDropdown","aliases":[]},{"icon":"faListMusic","aliases":[]},{"icon":"faListNumeric","aliases":["faList12","faListNumeric"]},{"icon":"faListOl","aliases":["faList12","faListNumeric"]},{"icon":"faListRadio","aliases":[]},{"icon":"faListSquares","aliases":["faListSquares"]},{"icon":"faListTimeline","aliases":[]},{"icon":"faListTree","aliases":[]},{"icon":"faListUl","aliases":["faListDots"]},{"icon":"faLitecoinSign","aliases":[]},{"icon":"faLoader","aliases":[]},{"icon":"faLobster","aliases":[]},{"icon":"faLocation","aliases":["faLocation"]},{"icon":"faLocationArrow","aliases":[]},{"icon":"faLocationArrowUp","aliases":[]},{"icon":"faLocationCheck","aliases":["faMapMarkerCheck"]},{"icon":"faLocationCircle","aliases":["faLocationCircle"]},{"icon":"faLocationCrosshairs","aliases":["faLocation"]},{"icon":"faLocationCrosshairsSlash","aliases":["faLocationSlash"]},{"icon":"faLocationDot","aliases":["faMapMarkerAlt"]},{"icon":"faLocationDotSlash","aliases":["faMapMarkerAltSlash"]},{"icon":"faLocationExclamation","aliases":["faMapMarkerExclamation"]},{"icon":"faLocationMinus","aliases":["faMapMarkerMinus"]},{"icon":"faLocationPen","aliases":["faMapMarkerEdit"]},{"icon":"faLocationPin","aliases":["faMapMarker"]},{"icon":"faLocationPinLock","aliases":[]},{"icon":"faLocationPinSlash","aliases":["faMapMarkerSlash"]},{"icon":"faLocationPlus","aliases":["faMapMarkerPlus"]},{"icon":"faLocationQuestion","aliases":["faMapMarkerQuestion"]},{"icon":"faLocationSlash","aliases":["faLocationSlash"]},{"icon":"faLocationSmile","aliases":["faMapMarkerSmile"]},{"icon":"faLocationXmark","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faLock","aliases":[]},{"icon":"faLockA","aliases":[]},{"icon":"faLockAlt","aliases":["faLockAlt"]},{"icon":"faLockHashtag","aliases":[]},{"icon":"faLockKeyhole","aliases":["faLockAlt"]},{"icon":"faLockKeyholeOpen","aliases":["faLockOpenAlt"]},{"icon":"faLockOpen","aliases":[]},{"icon":"faLockOpenAlt","aliases":["faLockOpenAlt"]},{"icon":"faLocust","aliases":[]},{"icon":"faLollipop","aliases":["faLollypop"]},{"icon":"faLollypop","aliases":["faLollypop"]},{"icon":"faLongArrowAltDown","aliases":["faLongArrowAltDown"]},{"icon":"faLongArrowAltLeft","aliases":["faLongArrowAltLeft"]},{"icon":"faLongArrowAltRight","aliases":["faLongArrowAltRight"]},{"icon":"faLongArrowAltUp","aliases":["faLongArrowAltUp"]},{"icon":"faLongArrowDown","aliases":["faLongArrowDown"]},{"icon":"faLongArrowLeft","aliases":["faLongArrowLeft"]},{"icon":"faLongArrowRight","aliases":["faLongArrowRight"]},{"icon":"faLongArrowUp","aliases":["faLongArrowUp"]},{"icon":"faLoveseat","aliases":["faCouchSmall"]},{"icon":"faLowVision","aliases":["faLowVision"]},{"icon":"faLuchador","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faLuchadorMask","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faLuggageCart","aliases":["faLuggageCart"]},{"icon":"faLungs","aliases":[]},{"icon":"faLungsVirus","aliases":[]},{"icon":"faM","aliases":[]},{"icon":"faMace","aliases":[]},{"icon":"faMagic","aliases":["faMagic"]},{"icon":"faMagicWandSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faMagnet","aliases":[]},{"icon":"faMagnifyingGlass","aliases":["faSearch"]},{"icon":"faMagnifyingGlassArrowRight","aliases":[]},{"icon":"faMagnifyingGlassArrowsRotate","aliases":[]},{"icon":"faMagnifyingGlassChart","aliases":[]},{"icon":"faMagnifyingGlassDollar","aliases":["faSearchDollar"]},{"icon":"faMagnifyingGlassLocation","aliases":["faSearchLocation"]},{"icon":"faMagnifyingGlassMinus","aliases":["faSearchMinus"]},{"icon":"faMagnifyingGlassMusic","aliases":[]},{"icon":"faMagnifyingGlassPlay","aliases":[]},{"icon":"faMagnifyingGlassPlus","aliases":["faSearchPlus"]},{"icon":"faMagnifyingGlassWaveform","aliases":[]},{"icon":"faMailBulk","aliases":["faMailBulk"]},{"icon":"faMailForward","aliases":["faMailForward"]},{"icon":"faMailReply","aliases":["faMailReply"]},{"icon":"faMailReplyAll","aliases":["faMailReplyAll"]},{"icon":"faMailbox","aliases":[]},{"icon":"faMailboxFlagUp","aliases":[]},{"icon":"faMakiRoll","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faMakizushi","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faMale","aliases":["faMale"]},{"icon":"faManatSign","aliases":[]},{"icon":"faMandolin","aliases":[]},{"icon":"faMango","aliases":[]},{"icon":"faManhole","aliases":[]},{"icon":"faMap","aliases":[]},{"icon":"faMapLocation","aliases":["faMapMarked"]},{"icon":"faMapLocationDot","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarked","aliases":["faMapMarked"]},{"icon":"faMapMarkedAlt","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarker","aliases":["faMapMarker"]},{"icon":"faMapMarkerAlt","aliases":["faMapMarkerAlt"]},{"icon":"faMapMarkerAltSlash","aliases":["faMapMarkerAltSlash"]},{"icon":"faMapMarkerCheck","aliases":["faMapMarkerCheck"]},{"icon":"faMapMarkerEdit","aliases":["faMapMarkerEdit"]},{"icon":"faMapMarkerExclamation","aliases":["faMapMarkerExclamation"]},{"icon":"faMapMarkerMinus","aliases":["faMapMarkerMinus"]},{"icon":"faMapMarkerPlus","aliases":["faMapMarkerPlus"]},{"icon":"faMapMarkerQuestion","aliases":["faMapMarkerQuestion"]},{"icon":"faMapMarkerSlash","aliases":["faMapMarkerSlash"]},{"icon":"faMapMarkerSmile","aliases":["faMapMarkerSmile"]},{"icon":"faMapMarkerTimes","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faMapMarkerXmark","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faMapPin","aliases":[]},{"icon":"faMapSigns","aliases":["faMapSigns"]},{"icon":"faMarker","aliases":[]},{"icon":"faMars","aliases":[]},{"icon":"faMarsAndVenus","aliases":[]},{"icon":"faMarsAndVenusBurst","aliases":[]},{"icon":"faMarsDouble","aliases":[]},{"icon":"faMarsStroke","aliases":[]},{"icon":"faMarsStrokeH","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeRight","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeUp","aliases":["faMarsStrokeV"]},{"icon":"faMarsStrokeV","aliases":["faMarsStrokeV"]},{"icon":"faMartiniGlass","aliases":["faGlassMartiniAlt"]},{"icon":"faMartiniGlassCitrus","aliases":["faCocktail"]},{"icon":"faMartiniGlassEmpty","aliases":["faGlassMartini"]},{"icon":"faMask","aliases":[]},{"icon":"faMaskFace","aliases":[]},{"icon":"faMaskLuchador","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faMaskSnorkel","aliases":[]},{"icon":"faMaskVentilator","aliases":[]},{"icon":"faMasksTheater","aliases":["faTheaterMasks"]},{"icon":"faMattressPillow","aliases":[]},{"icon":"faMaximize","aliases":["faExpandArrowsAlt"]},{"icon":"faMeat","aliases":[]},{"icon":"faMedal","aliases":[]},{"icon":"faMedkit","aliases":["faMedkit"]},{"icon":"faMegaphone","aliases":[]},{"icon":"faMeh","aliases":["faMeh"]},{"icon":"faMehBlank","aliases":["faMehBlank"]},{"icon":"faMehRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faMelon","aliases":[]},{"icon":"faMelonSlice","aliases":[]},{"icon":"faMemo","aliases":[]},{"icon":"faMemoCircleCheck","aliases":[]},{"icon":"faMemoCircleInfo","aliases":[]},{"icon":"faMemoPad","aliases":[]},{"icon":"faMemory","aliases":[]},{"icon":"faMenorah","aliases":[]},{"icon":"faMercury","aliases":[]},{"icon":"faMerge","aliases":[]},{"icon":"faMessage","aliases":["faCommentAlt"]},{"icon":"faMessageArrowDown","aliases":["faCommentAltArrowDown"]},{"icon":"faMessageArrowUp","aliases":["faCommentAltArrowUp"]},{"icon":"faMessageArrowUpRight","aliases":[]},{"icon":"faMessageBot","aliases":[]},{"icon":"faMessageCaptions","aliases":["faCommentAltCaptions"]},{"icon":"faMessageCheck","aliases":["faCommentAltCheck"]},{"icon":"faMessageCode","aliases":[]},{"icon":"faMessageDollar","aliases":["faCommentAltDollar"]},{"icon":"faMessageDots","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faMessageEdit","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faMessageExclamation","aliases":["faCommentAltExclamation"]},{"icon":"faMessageHeart","aliases":[]},{"icon":"faMessageImage","aliases":["faCommentAltImage"]},{"icon":"faMessageLines","aliases":["faCommentAltLines"]},{"icon":"faMessageMedical","aliases":["faCommentAltMedical"]},{"icon":"faMessageMiddle","aliases":["faCommentMiddleAlt"]},{"icon":"faMessageMiddleTop","aliases":["faCommentMiddleTopAlt"]},{"icon":"faMessageMinus","aliases":["faCommentAltMinus"]},{"icon":"faMessageMusic","aliases":["faCommentAltMusic"]},{"icon":"faMessagePen","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faMessagePlus","aliases":["faCommentAltPlus"]},{"icon":"faMessageQuestion","aliases":[]},{"icon":"faMessageQuote","aliases":["faCommentAltQuote"]},{"icon":"faMessageSlash","aliases":["faCommentAltSlash"]},{"icon":"faMessageSmile","aliases":["faCommentAltSmile"]},{"icon":"faMessageSms","aliases":[]},{"icon":"faMessageText","aliases":["faCommentAltText"]},{"icon":"faMessageTimes","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faMessageXmark","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faMessages","aliases":["faCommentsAlt"]},{"icon":"faMessagesDollar","aliases":["faCommentsAltDollar"]},{"icon":"faMessagesQuestion","aliases":[]},{"icon":"faMessaging","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faMeteor","aliases":[]},{"icon":"faMeter","aliases":[]},{"icon":"faMeterBolt","aliases":[]},{"icon":"faMeterDroplet","aliases":[]},{"icon":"faMeterFire","aliases":[]},{"icon":"faMicrochip","aliases":[]},{"icon":"faMicrochipAi","aliases":[]},{"icon":"faMicrophone","aliases":[]},{"icon":"faMicrophoneAlt","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneAltSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneCircle","aliases":["faMicrophoneCircle"]},{"icon":"faMicrophoneCircleAlt","aliases":["faMicrophoneCircleAlt"]},{"icon":"faMicrophoneLines","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneLinesSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneSlash","aliases":[]},{"icon":"faMicrophoneStand","aliases":[]},{"icon":"faMicroscope","aliases":[]},{"icon":"faMicrowave","aliases":[]},{"icon":"faMillSign","aliases":[]},{"icon":"faMindShare","aliases":["faMindShare"]},{"icon":"faMinimize","aliases":["faCompressArrowsAlt"]},{"icon":"faMinus","aliases":["faSubtract"]},{"icon":"faMinusCircle","aliases":["faMinusCircle"]},{"icon":"faMinusHexagon","aliases":["faMinusHexagon"]},{"icon":"faMinusLarge","aliases":["faMinusLarge"]},{"icon":"faMinusOctagon","aliases":["faMinusOctagon"]},{"icon":"faMinusSquare","aliases":["faMinusSquare"]},{"icon":"faMistletoe","aliases":[]},{"icon":"faMitten","aliases":[]},{"icon":"faMobile","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAlt","aliases":["faMobileAlt"]},{"icon":"faMobileAndroid","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAndroidAlt","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileButton","aliases":[]},{"icon":"faMobileIphone","aliases":["faMobileIphone"]},{"icon":"faMobileNotch","aliases":["faMobileIphone"]},{"icon":"faMobilePhone","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileRetro","aliases":[]},{"icon":"faMobileScreen","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileScreenButton","aliases":["faMobileAlt"]},{"icon":"faMobileSignal","aliases":[]},{"icon":"faMobileSignalOut","aliases":[]},{"icon":"faMoneyBill","aliases":[]},{"icon":"faMoneyBill1","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBill1Wave","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillAlt","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBillSimple","aliases":[]},{"icon":"faMoneyBillSimpleWave","aliases":[]},{"icon":"faMoneyBillTransfer","aliases":[]},{"icon":"faMoneyBillTrendUp","aliases":[]},{"icon":"faMoneyBillWave","aliases":[]},{"icon":"faMoneyBillWaveAlt","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillWheat","aliases":[]},{"icon":"faMoneyBills","aliases":[]},{"icon":"faMoneyBillsAlt","aliases":["faMoneyBillsAlt"]},{"icon":"faMoneyBillsSimple","aliases":["faMoneyBillsAlt"]},{"icon":"faMoneyCheck","aliases":[]},{"icon":"faMoneyCheckAlt","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollar","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollarPen","aliases":["faMoneyCheckEditAlt"]},{"icon":"faMoneyCheckEdit","aliases":["faMoneyCheckEdit"]},{"icon":"faMoneyCheckEditAlt","aliases":["faMoneyCheckEditAlt"]},{"icon":"faMoneyCheckPen","aliases":["faMoneyCheckEdit"]},{"icon":"faMoneyFromBracket","aliases":[]},{"icon":"faMoneySimpleFromBracket","aliases":[]},{"icon":"faMonitorHeartRate","aliases":["faMonitorHeartRate"]},{"icon":"faMonitorWaveform","aliases":["faMonitorHeartRate"]},{"icon":"faMonkey","aliases":[]},{"icon":"faMonument","aliases":[]},{"icon":"faMoon","aliases":[]},{"icon":"faMoonCloud","aliases":[]},{"icon":"faMoonOverSun","aliases":["faEclipseAlt"]},{"icon":"faMoonStars","aliases":[]},{"icon":"faMoped","aliases":[]},{"icon":"faMortarBoard","aliases":["faMortarBoard"]},{"icon":"faMortarPestle","aliases":[]},{"icon":"faMosque","aliases":[]},{"icon":"faMosquito","aliases":[]},{"icon":"faMosquitoNet","aliases":[]},{"icon":"faMotorcycle","aliases":[]},{"icon":"faMound","aliases":[]},{"icon":"faMountain","aliases":[]},{"icon":"faMountainCity","aliases":[]},{"icon":"faMountainSun","aliases":[]},{"icon":"faMountains","aliases":[]},{"icon":"faMouse","aliases":["faMouse"]},{"icon":"faMouseAlt","aliases":["faMouseAlt"]},{"icon":"faMouseField","aliases":[]},{"icon":"faMousePointer","aliases":["faMousePointer"]},{"icon":"faMp3Player","aliases":[]},{"icon":"faMug","aliases":[]},{"icon":"faMugHot","aliases":[]},{"icon":"faMugMarshmallows","aliases":[]},{"icon":"faMugSaucer","aliases":["faCoffee"]},{"icon":"faMugTea","aliases":[]},{"icon":"faMugTeaSaucer","aliases":[]},{"icon":"faMultiply","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faMuseum","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faMushroom","aliases":[]},{"icon":"faMusic","aliases":[]},{"icon":"faMusicAlt","aliases":["faMusicAlt"]},{"icon":"faMusicAltSlash","aliases":["faMusicAltSlash"]},{"icon":"faMusicMagnifyingGlass","aliases":[]},{"icon":"faMusicNote","aliases":["faMusicAlt"]},{"icon":"faMusicNoteSlash","aliases":["faMusicAltSlash"]},{"icon":"faMusicSlash","aliases":[]},{"icon":"faMustache","aliases":[]},{"icon":"faN","aliases":[]},{"icon":"faNairaSign","aliases":[]},{"icon":"faNarwhal","aliases":[]},{"icon":"faNavicon","aliases":["faNavicon"]},{"icon":"faNestingDolls","aliases":[]},{"icon":"faNetworkWired","aliases":[]},{"icon":"faNeuter","aliases":[]},{"icon":"faNewspaper","aliases":[]},{"icon":"faNfc","aliases":[]},{"icon":"faNfcLock","aliases":[]},{"icon":"faNfcMagnifyingGlass","aliases":[]},{"icon":"faNfcPen","aliases":[]},{"icon":"faNfcSignal","aliases":[]},{"icon":"faNfcSlash","aliases":[]},{"icon":"faNfcSymbol","aliases":[]},{"icon":"faNfcTrash","aliases":[]},{"icon":"faNigiri","aliases":["faNigiri"]},{"icon":"faNose","aliases":[]},{"icon":"faNotEqual","aliases":[]},{"icon":"faNotdef","aliases":[]},{"icon":"faNote","aliases":[]},{"icon":"faNoteMedical","aliases":[]},{"icon":"faNoteSticky","aliases":["faStickyNote"]},{"icon":"faNotebook","aliases":[]},{"icon":"faNotes","aliases":[]},{"icon":"faNotesMedical","aliases":[]},{"icon":"faO","aliases":[]},{"icon":"faObjectExclude","aliases":[]},{"icon":"faObjectGroup","aliases":[]},{"icon":"faObjectIntersect","aliases":[]},{"icon":"faObjectSubtract","aliases":[]},{"icon":"faObjectUngroup","aliases":[]},{"icon":"faObjectUnion","aliases":[]},{"icon":"faObjectsAlignBottom","aliases":[]},{"icon":"faObjectsAlignCenterHorizontal","aliases":[]},{"icon":"faObjectsAlignCenterVertical","aliases":[]},{"icon":"faObjectsAlignLeft","aliases":[]},{"icon":"faObjectsAlignRight","aliases":[]},{"icon":"faObjectsAlignTop","aliases":[]},{"icon":"faObjectsColumn","aliases":[]},{"icon":"faOctagon","aliases":[]},{"icon":"faOctagonCheck","aliases":[]},{"icon":"faOctagonDivide","aliases":[]},{"icon":"faOctagonExclamation","aliases":[]},{"icon":"faOctagonMinus","aliases":["faMinusOctagon"]},{"icon":"faOctagonPlus","aliases":["faPlusOctagon"]},{"icon":"faOctagonXmark","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faOctopus","aliases":[]},{"icon":"faOilCan","aliases":[]},{"icon":"faOilCanDrip","aliases":[]},{"icon":"faOilTemp","aliases":["faOilTemp"]},{"icon":"faOilTemperature","aliases":["faOilTemp"]},{"icon":"faOilWell","aliases":[]},{"icon":"faOlive","aliases":[]},{"icon":"faOliveBranch","aliases":[]},{"icon":"faOm","aliases":[]},{"icon":"faOmega","aliases":[]},{"icon":"faOnion","aliases":[]},{"icon":"faOption","aliases":[]},{"icon":"faOrnament","aliases":[]},{"icon":"faOtter","aliases":[]},{"icon":"faOutdent","aliases":["faDedent"]},{"icon":"faOutlet","aliases":[]},{"icon":"faOven","aliases":[]},{"icon":"faOverline","aliases":[]},{"icon":"faP","aliases":[]},{"icon":"faPage","aliases":[]},{"icon":"faPageBreak","aliases":["faPageBreak"]},{"icon":"faPageCaretDown","aliases":["faFileCaretDown"]},{"icon":"faPageCaretUp","aliases":["faFileCaretUp"]},{"icon":"faPager","aliases":[]},{"icon":"faPaintBrushAlt","aliases":["faPaintBrushAlt","faPaintBrushFine","faPaintbrushAlt"]},{"icon":"faPaintRoller","aliases":[]},{"icon":"faPaintbrush","aliases":["faPaintBrush"]},{"icon":"faPaintbrushFine","aliases":["faPaintBrushAlt","faPaintBrushFine","faPaintbrushAlt"]},{"icon":"faPaintbrushPencil","aliases":[]},{"icon":"faPalette","aliases":[]},{"icon":"faPaletteBoxes","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPallet","aliases":[]},{"icon":"faPalletAlt","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPalletBox","aliases":[]},{"icon":"faPalletBoxes","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPanFood","aliases":[]},{"icon":"faPanFrying","aliases":[]},{"icon":"faPancakes","aliases":[]},{"icon":"faPanelEws","aliases":[]},{"icon":"faPanelFire","aliases":[]},{"icon":"faPanorama","aliases":[]},{"icon":"faPaperPlane","aliases":[]},{"icon":"faPaperPlaneAlt","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faPaperPlaneTop","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faPaperclip","aliases":[]},{"icon":"faPaperclipVertical","aliases":[]},{"icon":"faParachuteBox","aliases":[]},{"icon":"faParagraph","aliases":[]},{"icon":"faParagraphLeft","aliases":["faParagraphRtl"]},{"icon":"faParagraphRtl","aliases":["faParagraphRtl"]},{"icon":"faParentheses","aliases":["faParentheses"]},{"icon":"faParenthesis","aliases":["faParenthesis"]},{"icon":"faParking","aliases":["faParking"]},{"icon":"faParkingCircle","aliases":["faParkingCircle"]},{"icon":"faParkingCircleSlash","aliases":["faParkingCircleSlash"]},{"icon":"faParkingSlash","aliases":["faParkingSlash"]},{"icon":"faPartyBack","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faPartyBell","aliases":[]},{"icon":"faPartyHorn","aliases":[]},{"icon":"faPassport","aliases":[]},{"icon":"faPastafarianism","aliases":["faPastafarianism"]},{"icon":"faPaste","aliases":["faFileClipboard"]},{"icon":"faPause","aliases":[]},{"icon":"faPauseCircle","aliases":["faPauseCircle"]},{"icon":"faPaw","aliases":[]},{"icon":"faPawAlt","aliases":["faPawAlt"]},{"icon":"faPawClaws","aliases":[]},{"icon":"faPawSimple","aliases":["faPawAlt"]},{"icon":"faPeace","aliases":[]},{"icon":"faPeach","aliases":[]},{"icon":"faPeanut","aliases":[]},{"icon":"faPeanuts","aliases":[]},{"icon":"faPeapod","aliases":[]},{"icon":"faPear","aliases":[]},{"icon":"faPedestal","aliases":[]},{"icon":"faPegasus","aliases":[]},{"icon":"faPen","aliases":[]},{"icon":"faPenAlt","aliases":["faPenAlt"]},{"icon":"faPenAltSlash","aliases":["faPenAltSlash"]},{"icon":"faPenCircle","aliases":[]},{"icon":"faPenClip","aliases":["faPenAlt"]},{"icon":"faPenClipSlash","aliases":["faPenAltSlash"]},{"icon":"faPenFancy","aliases":[]},{"icon":"faPenFancySlash","aliases":[]},{"icon":"faPenField","aliases":[]},{"icon":"faPenLine","aliases":[]},{"icon":"faPenNib","aliases":[]},{"icon":"faPenNibSlash","aliases":[]},{"icon":"faPenPaintbrush","aliases":["faPencilPaintbrush"]},{"icon":"faPenRuler","aliases":["faPencilRuler"]},{"icon":"faPenSlash","aliases":[]},{"icon":"faPenSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPenSwirl","aliases":[]},{"icon":"faPenToSquare","aliases":["faEdit"]},{"icon":"faPencil","aliases":["faPencilAlt"]},{"icon":"faPencilAlt","aliases":["faPencilAlt"]},{"icon":"faPencilMechanical","aliases":[]},{"icon":"faPencilPaintbrush","aliases":["faPencilPaintbrush"]},{"icon":"faPencilRuler","aliases":["faPencilRuler"]},{"icon":"faPencilSlash","aliases":[]},{"icon":"faPencilSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPennant","aliases":["faPennant"]},{"icon":"faPeople","aliases":[]},{"icon":"faPeopleArrows","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleArrowsLeftRight","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleCarry","aliases":["faPeopleCarry"]},{"icon":"faPeopleCarryBox","aliases":["faPeopleCarry"]},{"icon":"faPeopleDress","aliases":[]},{"icon":"faPeopleDressSimple","aliases":[]},{"icon":"faPeopleGroup","aliases":[]},{"icon":"faPeopleLine","aliases":[]},{"icon":"faPeoplePants","aliases":[]},{"icon":"faPeoplePantsSimple","aliases":[]},{"icon":"faPeoplePulling","aliases":[]},{"icon":"faPeopleRobbery","aliases":[]},{"icon":"faPeopleRoof","aliases":[]},{"icon":"faPeopleSimple","aliases":[]},{"icon":"faPepper","aliases":[]},{"icon":"faPepperHot","aliases":[]},{"icon":"faPercent","aliases":["faPercentage"]},{"icon":"faPercentage","aliases":["faPercentage"]},{"icon":"faPeriod","aliases":[]},{"icon":"faPerson","aliases":["faMale"]},{"icon":"faPersonArrowDownToLine","aliases":[]},{"icon":"faPersonArrowUpFromLine","aliases":[]},{"icon":"faPersonBiking","aliases":["faBiking"]},{"icon":"faPersonBikingMountain","aliases":["faBikingMountain"]},{"icon":"faPersonBooth","aliases":[]},{"icon":"faPersonBreastfeeding","aliases":[]},{"icon":"faPersonBurst","aliases":[]},{"icon":"faPersonCane","aliases":[]},{"icon":"faPersonCarry","aliases":["faPersonCarry"]},{"icon":"faPersonCarryBox","aliases":["faPersonCarry"]},{"icon":"faPersonChalkboard","aliases":[]},{"icon":"faPersonCircleCheck","aliases":[]},{"icon":"faPersonCircleExclamation","aliases":[]},{"icon":"faPersonCircleMinus","aliases":[]},{"icon":"faPersonCirclePlus","aliases":[]},{"icon":"faPersonCircleQuestion","aliases":[]},{"icon":"faPersonCircleXmark","aliases":[]},{"icon":"faPersonDigging","aliases":["faDigging"]},{"icon":"faPersonDolly","aliases":[]},{"icon":"faPersonDollyEmpty","aliases":[]},{"icon":"faPersonDotsFromLine","aliases":["faDiagnoses"]},{"icon":"faPersonDress","aliases":["faFemale"]},{"icon":"faPersonDressBurst","aliases":[]},{"icon":"faPersonDressFairy","aliases":[]},{"icon":"faPersonDressSimple","aliases":[]},{"icon":"faPersonDrowning","aliases":[]},{"icon":"faPersonFairy","aliases":[]},{"icon":"faPersonFalling","aliases":[]},{"icon":"faPersonFallingBurst","aliases":[]},{"icon":"faPersonFromPortal","aliases":["faPortalExit"]},{"icon":"faPersonHalfDress","aliases":[]},{"icon":"faPersonHarassing","aliases":[]},{"icon":"faPersonHiking","aliases":["faHiking"]},{"icon":"faPersonMilitaryPointing","aliases":[]},{"icon":"faPersonMilitaryRifle","aliases":[]},{"icon":"faPersonMilitaryToPerson","aliases":[]},{"icon":"faPersonPinball","aliases":[]},{"icon":"faPersonPraying","aliases":["faPray"]},{"icon":"faPersonPregnant","aliases":[]},{"icon":"faPersonRays","aliases":[]},{"icon":"faPersonRifle","aliases":[]},{"icon":"faPersonRunning","aliases":["faRunning"]},{"icon":"faPersonRunningFast","aliases":[]},{"icon":"faPersonSeat","aliases":[]},{"icon":"faPersonSeatReclined","aliases":[]},{"icon":"faPersonShelter","aliases":[]},{"icon":"faPersonSign","aliases":[]},{"icon":"faPersonSimple","aliases":[]},{"icon":"faPersonSkating","aliases":["faSkating"]},{"icon":"faPersonSkiJumping","aliases":["faSkiJump"]},{"icon":"faPersonSkiLift","aliases":["faSkiLift"]},{"icon":"faPersonSkiing","aliases":["faSkiing"]},{"icon":"faPersonSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faPersonSledding","aliases":["faSledding"]},{"icon":"faPersonSnowboarding","aliases":["faSnowboarding"]},{"icon":"faPersonSnowmobiling","aliases":["faSnowmobile"]},{"icon":"faPersonSwimming","aliases":["faSwimmer"]},{"icon":"faPersonThroughWindow","aliases":[]},{"icon":"faPersonToDoor","aliases":[]},{"icon":"faPersonToPortal","aliases":["faPortalEnter"]},{"icon":"faPersonWalking","aliases":["faWalking"]},{"icon":"faPersonWalkingArrowLoopLeft","aliases":[]},{"icon":"faPersonWalkingArrowRight","aliases":[]},{"icon":"faPersonWalkingDashedLineArrowRight","aliases":[]},{"icon":"faPersonWalkingLuggage","aliases":[]},{"icon":"faPersonWalkingWithCane","aliases":["faBlind"]},{"icon":"faPesetaSign","aliases":[]},{"icon":"faPesoSign","aliases":[]},{"icon":"faPhone","aliases":[]},{"icon":"faPhoneAlt","aliases":["faPhoneAlt"]},{"icon":"faPhoneArrowDown","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneArrowDownLeft","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneArrowRight","aliases":[]},{"icon":"faPhoneArrowUp","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhoneArrowUpRight","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhoneCircle","aliases":["faPhoneCircle"]},{"icon":"faPhoneCircleAlt","aliases":["faPhoneCircleAlt"]},{"icon":"faPhoneCircleDown","aliases":["faPhoneCircleDown"]},{"icon":"faPhoneFlip","aliases":["faPhoneAlt"]},{"icon":"faPhoneHangup","aliases":[]},{"icon":"faPhoneIncoming","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneIntercom","aliases":[]},{"icon":"faPhoneLaptop","aliases":["faPhoneLaptop"]},{"icon":"faPhoneMissed","aliases":[]},{"icon":"faPhoneOffice","aliases":[]},{"icon":"faPhoneOutgoing","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhonePlus","aliases":[]},{"icon":"faPhoneRotary","aliases":[]},{"icon":"faPhoneSlash","aliases":[]},{"icon":"faPhoneSquare","aliases":["faPhoneSquare"]},{"icon":"faPhoneSquareAlt","aliases":["faPhoneSquareAlt"]},{"icon":"faPhoneSquareDown","aliases":["faPhoneSquareDown"]},{"icon":"faPhoneVolume","aliases":["faVolumeControlPhone"]},{"icon":"faPhoneXmark","aliases":[]},{"icon":"faPhotoFilm","aliases":["faPhotoVideo"]},{"icon":"faPhotoFilmMusic","aliases":[]},{"icon":"faPhotoVideo","aliases":["faPhotoVideo"]},{"icon":"faPi","aliases":[]},{"icon":"faPiano","aliases":[]},{"icon":"faPianoKeyboard","aliases":[]},{"icon":"faPickaxe","aliases":[]},{"icon":"faPickleball","aliases":[]},{"icon":"faPie","aliases":[]},{"icon":"faPieChart","aliases":["faPieChart"]},{"icon":"faPig","aliases":[]},{"icon":"faPiggyBank","aliases":[]},{"icon":"faPills","aliases":[]},{"icon":"faPinata","aliases":[]},{"icon":"faPinball","aliases":[]},{"icon":"faPineapple","aliases":[]},{"icon":"faPingPongPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faPipe","aliases":[]},{"icon":"faPipeCircleCheck","aliases":[]},{"icon":"faPipeCollar","aliases":[]},{"icon":"faPipeSection","aliases":[]},{"icon":"faPipeSmoking","aliases":[]},{"icon":"faPipeValve","aliases":[]},{"icon":"faPizza","aliases":[]},{"icon":"faPizzaSlice","aliases":[]},{"icon":"faPlaceOfWorship","aliases":[]},{"icon":"faPlane","aliases":[]},{"icon":"faPlaneAlt","aliases":["faPlaneAlt"]},{"icon":"faPlaneArrival","aliases":[]},{"icon":"faPlaneCircleCheck","aliases":[]},{"icon":"faPlaneCircleExclamation","aliases":[]},{"icon":"faPlaneCircleXmark","aliases":[]},{"icon":"faPlaneDeparture","aliases":[]},{"icon":"faPlaneEngines","aliases":["faPlaneAlt"]},{"icon":"faPlaneLock","aliases":[]},{"icon":"faPlaneProp","aliases":[]},{"icon":"faPlaneSlash","aliases":[]},{"icon":"faPlaneTail","aliases":[]},{"icon":"faPlaneUp","aliases":[]},{"icon":"faPlaneUpSlash","aliases":[]},{"icon":"faPlanetMoon","aliases":[]},{"icon":"faPlanetRinged","aliases":[]},{"icon":"faPlantWilt","aliases":[]},{"icon":"faPlateUtensils","aliases":[]},{"icon":"faPlateWheat","aliases":[]},{"icon":"faPlay","aliases":[]},{"icon":"faPlayCircle","aliases":["faPlayCircle"]},{"icon":"faPlayPause","aliases":[]},{"icon":"faPlug","aliases":[]},{"icon":"faPlugCircleBolt","aliases":[]},{"icon":"faPlugCircleCheck","aliases":[]},{"icon":"faPlugCircleExclamation","aliases":[]},{"icon":"faPlugCircleMinus","aliases":[]},{"icon":"faPlugCirclePlus","aliases":[]},{"icon":"faPlugCircleXmark","aliases":[]},{"icon":"faPlus","aliases":["faAdd"]},{"icon":"faPlusCircle","aliases":["faPlusCircle"]},{"icon":"faPlusHexagon","aliases":["faPlusHexagon"]},{"icon":"faPlusLarge","aliases":[]},{"icon":"faPlusMinus","aliases":[]},{"icon":"faPlusOctagon","aliases":["faPlusOctagon"]},{"icon":"faPlusSquare","aliases":["faPlusSquare"]},{"icon":"faPodcast","aliases":[]},{"icon":"faPodium","aliases":[]},{"icon":"faPodiumStar","aliases":[]},{"icon":"faPoliceBox","aliases":[]},{"icon":"faPoll","aliases":["faPoll"]},{"icon":"faPollH","aliases":["faPollH"]},{"icon":"faPollPeople","aliases":[]},{"icon":"faPompebled","aliases":[]},{"icon":"faPoo","aliases":[]},{"icon":"faPooBolt","aliases":["faPooBolt"]},{"icon":"faPooStorm","aliases":["faPooBolt"]},{"icon":"faPool8Ball","aliases":[]},{"icon":"faPoop","aliases":[]},{"icon":"faPopcorn","aliases":[]},{"icon":"faPopsicle","aliases":[]},{"icon":"faPortalEnter","aliases":["faPortalEnter"]},{"icon":"faPortalExit","aliases":["faPortalExit"]},{"icon":"faPortrait","aliases":["faPortrait"]},{"icon":"faPotFood","aliases":[]},{"icon":"faPotato","aliases":[]},{"icon":"faPoundSign","aliases":["faGbp","faPoundSign"]},{"icon":"faPowerOff","aliases":[]},{"icon":"faPray","aliases":["faPray"]},{"icon":"faPrayingHands","aliases":["faPrayingHands"]},{"icon":"faPrescription","aliases":[]},{"icon":"faPrescriptionBottle","aliases":[]},{"icon":"faPrescriptionBottleAlt","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottleMedical","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottlePill","aliases":[]},{"icon":"faPresentation","aliases":["faPresentation"]},{"icon":"faPresentationScreen","aliases":["faPresentation"]},{"icon":"faPretzel","aliases":[]},{"icon":"faPrint","aliases":[]},{"icon":"faPrintMagnifyingGlass","aliases":["faPrintSearch"]},{"icon":"faPrintSearch","aliases":["faPrintSearch"]},{"icon":"faPrintSlash","aliases":[]},{"icon":"faPro","aliases":["faPro"]},{"icon":"faProcedures","aliases":["faProcedures"]},{"icon":"faProjectDiagram","aliases":["faProjectDiagram"]},{"icon":"faProjector","aliases":[]},{"icon":"faPump","aliases":[]},{"icon":"faPumpMedical","aliases":[]},{"icon":"faPumpSoap","aliases":[]},{"icon":"faPumpkin","aliases":[]},{"icon":"faPuzzle","aliases":[]},{"icon":"faPuzzlePiece","aliases":[]},{"icon":"faPuzzlePieceAlt","aliases":["faPuzzlePieceAlt"]},{"icon":"faPuzzlePieceSimple","aliases":["faPuzzlePieceAlt"]},{"icon":"faQ","aliases":[]},{"icon":"faQrcode","aliases":[]},{"icon":"faQuestion","aliases":[]},{"icon":"faQuestionCircle","aliases":["faQuestionCircle"]},{"icon":"faQuestionSquare","aliases":["faQuestionSquare"]},{"icon":"faQuidditch","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuidditchBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuoteLeft","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteLeftAlt","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteRight","aliases":["faQuoteRightAlt"]},{"icon":"faQuoteRightAlt","aliases":["faQuoteRightAlt"]},{"icon":"faQuotes","aliases":[]},{"icon":"faQuran","aliases":["faQuran"]},{"icon":"faR","aliases":[]},{"icon":"faRabbit","aliases":[]},{"icon":"faRabbitFast","aliases":["faRabbitFast"]},{"icon":"faRabbitRunning","aliases":["faRabbitFast"]},{"icon":"faRaccoon","aliases":[]},{"icon":"faRacquet","aliases":[]},{"icon":"faRadar","aliases":[]},{"icon":"faRadiation","aliases":[]},{"icon":"faRadiationAlt","aliases":["faRadiationAlt"]},{"icon":"faRadio","aliases":[]},{"icon":"faRadioAlt","aliases":["faRadioAlt"]},{"icon":"faRadioTuner","aliases":["faRadioAlt"]},{"icon":"faRainbow","aliases":[]},{"icon":"faRaindrops","aliases":[]},{"icon":"faRam","aliases":[]},{"icon":"faRampLoading","aliases":[]},{"icon":"faRandom","aliases":["faRandom"]},{"icon":"faRankingStar","aliases":[]},{"icon":"faRaygun","aliases":[]},{"icon":"faReceipt","aliases":[]},{"icon":"faRecordVinyl","aliases":[]},{"icon":"faRectangle","aliases":["faRectangleLandscape"]},{"icon":"faRectangleAd","aliases":["faAd"]},{"icon":"faRectangleBarcode","aliases":["faBarcodeAlt"]},{"icon":"faRectangleCode","aliases":[]},{"icon":"faRectangleHd","aliases":["faRectangleHd"]},{"icon":"faRectangleHistory","aliases":[]},{"icon":"faRectangleHistoryCirclePlus","aliases":[]},{"icon":"faRectangleHistoryCircleUser","aliases":[]},{"icon":"faRectangleLandscape","aliases":["faRectangleLandscape"]},{"icon":"faRectangleList","aliases":["faListAlt"]},{"icon":"faRectanglePortrait","aliases":["faRectanglePortrait"]},{"icon":"faRectanglePro","aliases":["faPro"]},{"icon":"faRectangleSd","aliases":["faRectangleSd"]},{"icon":"faRectangleTerminal","aliases":[]},{"icon":"faRectangleTimes","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectangleVertical","aliases":["faRectanglePortrait"]},{"icon":"faRectangleVerticalHistory","aliases":[]},{"icon":"faRectangleWide","aliases":[]},{"icon":"faRectangleXmark","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectanglesMixed","aliases":[]},{"icon":"faRecycle","aliases":[]},{"icon":"faRedo","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faRedoAlt","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faReel","aliases":[]},{"icon":"faReflectBoth","aliases":[]},{"icon":"faReflectHorizontal","aliases":[]},{"icon":"faReflectVertical","aliases":[]},{"icon":"faRefresh","aliases":["faRefresh","faSync"]},{"icon":"faRefrigerator","aliases":[]},{"icon":"faRegistered","aliases":[]},{"icon":"faRemove","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faRemoveFormat","aliases":["faRemoveFormat"]},{"icon":"faReorder","aliases":["faReorder","faStream"]},{"icon":"faRepeat","aliases":[]},{"icon":"faRepeat1","aliases":[]},{"icon":"faRepeat1Alt","aliases":["faRepeat1Alt"]},{"icon":"faRepeatAlt","aliases":["faRepeatAlt"]},{"icon":"faReply","aliases":["faMailReply"]},{"icon":"faReplyAll","aliases":["faMailReplyAll"]},{"icon":"faReplyClock","aliases":["faReplyTime"]},{"icon":"faReplyTime","aliases":["faReplyTime"]},{"icon":"faRepublican","aliases":[]},{"icon":"faRestroom","aliases":[]},{"icon":"faRestroomSimple","aliases":[]},{"icon":"faRetweet","aliases":[]},{"icon":"faRetweetAlt","aliases":["faRetweetAlt"]},{"icon":"faRhombus","aliases":[]},{"icon":"faRibbon","aliases":[]},{"icon":"faRight","aliases":["faArrowAltRight"]},{"icon":"faRightFromBracket","aliases":["faSignOutAlt"]},{"icon":"faRightFromLine","aliases":["faArrowAltFromLeft"]},{"icon":"faRightLeft","aliases":["faExchangeAlt"]},{"icon":"faRightLeftLarge","aliases":[]},{"icon":"faRightLong","aliases":["faLongArrowAltRight"]},{"icon":"faRightLongToLine","aliases":[]},{"icon":"faRightToBracket","aliases":["faSignInAlt"]},{"icon":"faRightToLine","aliases":["faArrowAltToRight"]},{"icon":"faRing","aliases":[]},{"icon":"faRingDiamond","aliases":[]},{"icon":"faRingsWedding","aliases":[]},{"icon":"faRmb","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faRoad","aliases":[]},{"icon":"faRoadBarrier","aliases":[]},{"icon":"faRoadBridge","aliases":[]},{"icon":"faRoadCircleCheck","aliases":[]},{"icon":"faRoadCircleExclamation","aliases":[]},{"icon":"faRoadCircleXmark","aliases":[]},{"icon":"faRoadLock","aliases":[]},{"icon":"faRoadSpikes","aliases":[]},{"icon":"faRobot","aliases":[]},{"icon":"faRobotAstromech","aliases":[]},{"icon":"faRocket","aliases":[]},{"icon":"faRocketLaunch","aliases":[]},{"icon":"faRodAsclepius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRodSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRollerCoaster","aliases":[]},{"icon":"faRotate","aliases":["faSyncAlt"]},{"icon":"faRotateBack","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateBackward","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateExclamation","aliases":[]},{"icon":"faRotateForward","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRotateLeft","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateReverse","aliases":[]},{"icon":"faRotateRight","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRouble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRoute","aliases":[]},{"icon":"faRouteHighway","aliases":[]},{"icon":"faRouteInterstate","aliases":[]},{"icon":"faRouter","aliases":[]},{"icon":"faRows","aliases":["faRows"]},{"icon":"faRss","aliases":["faFeed"]},{"icon":"faRssSquare","aliases":["faRssSquare"]},{"icon":"faRub","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRuble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRubleSign","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRug","aliases":[]},{"icon":"faRugbyBall","aliases":[]},{"icon":"faRuler","aliases":[]},{"icon":"faRulerCombined","aliases":[]},{"icon":"faRulerHorizontal","aliases":[]},{"icon":"faRulerTriangle","aliases":[]},{"icon":"faRulerVertical","aliases":[]},{"icon":"faRunning","aliases":["faRunning"]},{"icon":"faRupee","aliases":["faRupee"]},{"icon":"faRupeeSign","aliases":["faRupee"]},{"icon":"faRupiahSign","aliases":[]},{"icon":"faRv","aliases":[]},{"icon":"faS","aliases":[]},{"icon":"faSack","aliases":[]},{"icon":"faSackDollar","aliases":[]},{"icon":"faSackXmark","aliases":[]},{"icon":"faSadCry","aliases":["faSadCry"]},{"icon":"faSadTear","aliases":["faSadTear"]},{"icon":"faSailboat","aliases":[]},{"icon":"faSalad","aliases":["faBowlSalad"]},{"icon":"faSaltShaker","aliases":[]},{"icon":"faSandwich","aliases":[]},{"icon":"faSatellite","aliases":[]},{"icon":"faSatelliteDish","aliases":[]},{"icon":"faSausage","aliases":[]},{"icon":"faSave","aliases":["faSave"]},{"icon":"faSaveCircleArrowRight","aliases":["faSaveCircleArrowRight"]},{"icon":"faSaveCircleXmark","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faSaveTimes","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faSaxHot","aliases":["faSaxHot"]},{"icon":"faSaxophone","aliases":[]},{"icon":"faSaxophoneFire","aliases":["faSaxHot"]},{"icon":"faScaleBalanced","aliases":["faBalanceScale"]},{"icon":"faScaleUnbalanced","aliases":["faBalanceScaleLeft"]},{"icon":"faScaleUnbalancedFlip","aliases":["faBalanceScaleRight"]},{"icon":"faScalpel","aliases":[]},{"icon":"faScalpelLineDashed","aliases":["faScalpelPath"]},{"icon":"faScalpelPath","aliases":["faScalpelPath"]},{"icon":"faScanner","aliases":["faScanner"]},{"icon":"faScannerGun","aliases":["faScanner"]},{"icon":"faScannerImage","aliases":[]},{"icon":"faScannerKeyboard","aliases":[]},{"icon":"faScannerTouchscreen","aliases":[]},{"icon":"faScarecrow","aliases":[]},{"icon":"faScarf","aliases":[]},{"icon":"faSchool","aliases":[]},{"icon":"faSchoolCircleCheck","aliases":[]},{"icon":"faSchoolCircleExclamation","aliases":[]},{"icon":"faSchoolCircleXmark","aliases":[]},{"icon":"faSchoolFlag","aliases":[]},{"icon":"faSchoolLock","aliases":[]},{"icon":"faScissors","aliases":["faCut"]},{"icon":"faScreenUsers","aliases":["faUsersClass"]},{"icon":"faScreencast","aliases":[]},{"icon":"faScreenshot","aliases":["faScreenshot"]},{"icon":"faScrewdriver","aliases":[]},{"icon":"faScrewdriverWrench","aliases":["faTools"]},{"icon":"faScribble","aliases":[]},{"icon":"faScroll","aliases":[]},{"icon":"faScrollOld","aliases":[]},{"icon":"faScrollRibbon","aliases":["faScrollRibbon"]},{"icon":"faScrollTorah","aliases":["faTorah"]},{"icon":"faScrubber","aliases":[]},{"icon":"faScythe","aliases":[]},{"icon":"faSdCard","aliases":[]},{"icon":"faSdCards","aliases":[]},{"icon":"faSeal","aliases":[]},{"icon":"faSealExclamation","aliases":[]},{"icon":"faSealQuestion","aliases":[]},{"icon":"faSearch","aliases":["faSearch"]},{"icon":"faSearchDollar","aliases":["faSearchDollar"]},{"icon":"faSearchLocation","aliases":["faSearchLocation"]},{"icon":"faSearchMinus","aliases":["faSearchMinus"]},{"icon":"faSearchPlus","aliases":["faSearchPlus"]},{"icon":"faSeatAirline","aliases":[]},{"icon":"faSection","aliases":[]},{"icon":"faSeedling","aliases":["faSprout"]},{"icon":"faSemicolon","aliases":[]},{"icon":"faSend","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faSendBack","aliases":[]},{"icon":"faSendBackward","aliases":[]},{"icon":"faSensor","aliases":[]},{"icon":"faSensorAlert","aliases":["faSensorAlert"]},{"icon":"faSensorCloud","aliases":["faSensorSmoke"]},{"icon":"faSensorFire","aliases":[]},{"icon":"faSensorOn","aliases":[]},{"icon":"faSensorSmoke","aliases":["faSensorSmoke"]},{"icon":"faSensorTriangleExclamation","aliases":["faSensorAlert"]},{"icon":"faServer","aliases":[]},{"icon":"faShapes","aliases":["faTriangleCircleSquare"]},{"icon":"faShare","aliases":["faMailForward"]},{"icon":"faShareAll","aliases":[]},{"icon":"faShareAlt","aliases":["faShareAlt"]},{"icon":"faShareAltSquare","aliases":["faShareAltSquare"]},{"icon":"faShareFromSquare","aliases":["faShareSquare"]},{"icon":"faShareNodes","aliases":["faShareAlt"]},{"icon":"faShareSquare","aliases":["faShareSquare"]},{"icon":"faSheep","aliases":[]},{"icon":"faSheetPlastic","aliases":[]},{"icon":"faShekel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShekelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShelves","aliases":["faInventory"]},{"icon":"faShelvesEmpty","aliases":[]},{"icon":"faSheqel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShield","aliases":["faShieldBlank"]},{"icon":"faShieldAlt","aliases":["faShieldAlt"]},{"icon":"faShieldBlank","aliases":["faShieldBlank"]},{"icon":"faShieldCat","aliases":[]},{"icon":"faShieldCheck","aliases":[]},{"icon":"faShieldCross","aliases":[]},{"icon":"faShieldDog","aliases":[]},{"icon":"faShieldExclamation","aliases":[]},{"icon":"faShieldHalved","aliases":["faShieldAlt"]},{"icon":"faShieldHeart","aliases":[]},{"icon":"faShieldKeyhole","aliases":[]},{"icon":"faShieldMinus","aliases":[]},{"icon":"faShieldPlus","aliases":[]},{"icon":"faShieldQuartered","aliases":[]},{"icon":"faShieldSlash","aliases":[]},{"icon":"faShieldTimes","aliases":["faShieldTimes"]},{"icon":"faShieldVirus","aliases":[]},{"icon":"faShieldXmark","aliases":["faShieldTimes"]},{"icon":"faShip","aliases":[]},{"icon":"faShippingFast","aliases":["faShippingFast"]},{"icon":"faShippingTimed","aliases":["faShippingTimed"]},{"icon":"faShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faShirtLongSleeve","aliases":[]},{"icon":"faShirtRunning","aliases":[]},{"icon":"faShirtTankTop","aliases":[]},{"icon":"faShishKebab","aliases":[]},{"icon":"faShoePrints","aliases":[]},{"icon":"faShop","aliases":["faStoreAlt"]},{"icon":"faShopLock","aliases":[]},{"icon":"faShopSlash","aliases":["faStoreAltSlash"]},{"icon":"faShoppingBag","aliases":["faShoppingBag"]},{"icon":"faShoppingBasket","aliases":["faShoppingBasket"]},{"icon":"faShoppingBasketAlt","aliases":["faShoppingBasketAlt"]},{"icon":"faShoppingCart","aliases":["faShoppingCart"]},{"icon":"faShortcake","aliases":["faShortcake"]},{"icon":"faShovel","aliases":[]},{"icon":"faShovelSnow","aliases":[]},{"icon":"faShower","aliases":[]},{"icon":"faShowerAlt","aliases":["faShowerAlt"]},{"icon":"faShowerDown","aliases":["faShowerAlt"]},{"icon":"faShredder","aliases":[]},{"icon":"faShrimp","aliases":[]},{"icon":"faShuffle","aliases":["faRandom"]},{"icon":"faShutters","aliases":[]},{"icon":"faShuttleSpace","aliases":["faSpaceShuttle"]},{"icon":"faShuttleVan","aliases":["faShuttleVan"]},{"icon":"faShuttlecock","aliases":[]},{"icon":"faSickle","aliases":[]},{"icon":"faSidebar","aliases":[]},{"icon":"faSidebarFlip","aliases":[]},{"icon":"faSigma","aliases":[]},{"icon":"faSign","aliases":["faSign"]},{"icon":"faSignHanging","aliases":["faSign"]},{"icon":"faSignIn","aliases":["faSignIn"]},{"icon":"faSignInAlt","aliases":["faSignInAlt"]},{"icon":"faSignLanguage","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignOut","aliases":["faSignOut"]},{"icon":"faSignOutAlt","aliases":["faSignOutAlt"]},{"icon":"faSignPost","aliases":[]},{"icon":"faSignPosts","aliases":[]},{"icon":"faSignPostsWrench","aliases":[]},{"icon":"faSignal","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignal1","aliases":["faSignal1"]},{"icon":"faSignal2","aliases":["faSignal2"]},{"icon":"faSignal3","aliases":["faSignal3"]},{"icon":"faSignal4","aliases":["faSignal4"]},{"icon":"faSignal5","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalAlt","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalAlt1","aliases":["faSignalAlt1"]},{"icon":"faSignalAlt2","aliases":["faSignalAlt2"]},{"icon":"faSignalAlt3","aliases":["faSignalAlt3"]},{"icon":"faSignalAlt4","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalAltSlash","aliases":["faSignalAltSlash"]},{"icon":"faSignalBars","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalBarsFair","aliases":["faSignalAlt2"]},{"icon":"faSignalBarsGood","aliases":["faSignalAlt3"]},{"icon":"faSignalBarsSlash","aliases":["faSignalAltSlash"]},{"icon":"faSignalBarsStrong","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalBarsWeak","aliases":["faSignalAlt1"]},{"icon":"faSignalFair","aliases":["faSignal2"]},{"icon":"faSignalGood","aliases":["faSignal3"]},{"icon":"faSignalPerfect","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalSlash","aliases":[]},{"icon":"faSignalStream","aliases":[]},{"icon":"faSignalStreamSlash","aliases":[]},{"icon":"faSignalStrong","aliases":["faSignal4"]},{"icon":"faSignalWeak","aliases":["faSignal1"]},{"icon":"faSignature","aliases":[]},{"icon":"faSignatureLock","aliases":[]},{"icon":"faSignatureSlash","aliases":[]},{"icon":"faSigning","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignsPost","aliases":["faMapSigns"]},{"icon":"faSimCard","aliases":[]},{"icon":"faSimCards","aliases":[]},{"icon":"faSink","aliases":[]},{"icon":"faSiren","aliases":[]},{"icon":"faSirenOn","aliases":[]},{"icon":"faSitemap","aliases":[]},{"icon":"faSkating","aliases":["faSkating"]},{"icon":"faSkeleton","aliases":[]},{"icon":"faSkeletonRibs","aliases":[]},{"icon":"faSkiBoot","aliases":[]},{"icon":"faSkiBootSki","aliases":[]},{"icon":"faSkiJump","aliases":["faSkiJump"]},{"icon":"faSkiLift","aliases":["faSkiLift"]},{"icon":"faSkiing","aliases":["faSkiing"]},{"icon":"faSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faSkull","aliases":[]},{"icon":"faSkullCow","aliases":[]},{"icon":"faSkullCrossbones","aliases":[]},{"icon":"faSlash","aliases":[]},{"icon":"faSlashBack","aliases":[]},{"icon":"faSlashForward","aliases":[]},{"icon":"faSledding","aliases":["faSledding"]},{"icon":"faSleigh","aliases":[]},{"icon":"faSlider","aliases":[]},{"icon":"faSliders","aliases":["faSlidersH"]},{"icon":"faSlidersH","aliases":["faSlidersH"]},{"icon":"faSlidersHSquare","aliases":["faSlidersHSquare"]},{"icon":"faSlidersSimple","aliases":[]},{"icon":"faSlidersUp","aliases":["faSlidersV"]},{"icon":"faSlidersV","aliases":["faSlidersV"]},{"icon":"faSlidersVSquare","aliases":["faSlidersVSquare"]},{"icon":"faSlotMachine","aliases":[]},{"icon":"faSmile","aliases":["faSmile"]},{"icon":"faSmileBeam","aliases":["faSmileBeam"]},{"icon":"faSmilePlus","aliases":["faSmilePlus"]},{"icon":"faSmileWink","aliases":["faSmileWink"]},{"icon":"faSmog","aliases":[]},{"icon":"faSmoke","aliases":[]},{"icon":"faSmoking","aliases":[]},{"icon":"faSmokingBan","aliases":["faSmokingBan"]},{"icon":"faSms","aliases":["faSms"]},{"icon":"faSnake","aliases":[]},{"icon":"faSnooze","aliases":["faZzz"]},{"icon":"faSnowBlowing","aliases":[]},{"icon":"faSnowboarding","aliases":["faSnowboarding"]},{"icon":"faSnowflake","aliases":[]},{"icon":"faSnowflakeDroplets","aliases":[]},{"icon":"faSnowflakes","aliases":[]},{"icon":"faSnowman","aliases":[]},{"icon":"faSnowmanHead","aliases":["faFrostyHead"]},{"icon":"faSnowmobile","aliases":["faSnowmobile"]},{"icon":"faSnowplow","aliases":[]},{"icon":"faSoap","aliases":[]},{"icon":"faSoccerBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faSocks","aliases":[]},{"icon":"faSoftServe","aliases":["faCreemee"]},{"icon":"faSolarPanel","aliases":[]},{"icon":"faSolarSystem","aliases":[]},{"icon":"faSort","aliases":["faUnsorted"]},{"icon":"faSortAlphaAsc","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDesc","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaDown","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDownAlt","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaUp","aliases":["faSortAlphaUp"]},{"icon":"faSortAlphaUpAlt","aliases":["faSortAlphaUpAlt"]},{"icon":"faSortAlt","aliases":["faSortAlt"]},{"icon":"faSortAmountAsc","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDesc","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountDown","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDownAlt","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountUp","aliases":["faSortAmountUp"]},{"icon":"faSortAmountUpAlt","aliases":["faSortAmountUpAlt"]},{"icon":"faSortAsc","aliases":["faSortAsc"]},{"icon":"faSortCircle","aliases":["faSortCircle"]},{"icon":"faSortCircleDown","aliases":["faSortCircleDown"]},{"icon":"faSortCircleUp","aliases":["faSortCircleUp"]},{"icon":"faSortDesc","aliases":["faSortDesc"]},{"icon":"faSortDown","aliases":["faSortDesc"]},{"icon":"faSortNumericAsc","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDesc","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericDown","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDownAlt","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericUp","aliases":["faSortNumericUp"]},{"icon":"faSortNumericUpAlt","aliases":["faSortNumericUpAlt"]},{"icon":"faSortShapesDown","aliases":["faSortShapesDown"]},{"icon":"faSortShapesDownAlt","aliases":["faSortShapesDownAlt"]},{"icon":"faSortShapesUp","aliases":["faSortShapesUp"]},{"icon":"faSortShapesUpAlt","aliases":["faSortShapesUpAlt"]},{"icon":"faSortSizeDown","aliases":["faSortSizeDown"]},{"icon":"faSortSizeDownAlt","aliases":["faSortSizeDownAlt"]},{"icon":"faSortSizeUp","aliases":["faSortSizeUp"]},{"icon":"faSortSizeUpAlt","aliases":["faSortSizeUpAlt"]},{"icon":"faSortUp","aliases":["faSortAsc"]},{"icon":"faSortUpDown","aliases":["faSortUpDown"]},{"icon":"faSoup","aliases":["faSoup"]},{"icon":"faSpa","aliases":[]},{"icon":"faSpaceShuttle","aliases":["faSpaceShuttle"]},{"icon":"faSpaceStationMoon","aliases":[]},{"icon":"faSpaceStationMoonAlt","aliases":["faSpaceStationMoonAlt"]},{"icon":"faSpaceStationMoonConstruction","aliases":["faSpaceStationMoonAlt"]},{"icon":"faSpade","aliases":[]},{"icon":"faSpaghettiMonsterFlying","aliases":["faPastafarianism"]},{"icon":"faSparkle","aliases":[]},{"icon":"faSparkles","aliases":[]},{"icon":"faSpeaker","aliases":[]},{"icon":"faSpeakers","aliases":[]},{"icon":"faSpellCheck","aliases":[]},{"icon":"faSpider","aliases":[]},{"icon":"faSpiderBlackWidow","aliases":[]},{"icon":"faSpiderWeb","aliases":[]},{"icon":"faSpinner","aliases":[]},{"icon":"faSpinnerScale","aliases":[]},{"icon":"faSpinnerThird","aliases":[]},{"icon":"faSplit","aliases":[]},{"icon":"faSplotch","aliases":[]},{"icon":"faSpoon","aliases":["faUtensilSpoon"]},{"icon":"faSportsball","aliases":[]},{"icon":"faSprayCan","aliases":[]},{"icon":"faSprayCanSparkles","aliases":["faAirFreshener"]},{"icon":"faSprinkler","aliases":[]},{"icon":"faSprinklerCeiling","aliases":[]},{"icon":"faSprout","aliases":["faSprout"]},{"icon":"faSquare","aliases":[]},{"icon":"faSquare0","aliases":[]},{"icon":"faSquare1","aliases":[]},{"icon":"faSquare2","aliases":[]},{"icon":"faSquare3","aliases":[]},{"icon":"faSquare4","aliases":[]},{"icon":"faSquare5","aliases":[]},{"icon":"faSquare6","aliases":[]},{"icon":"faSquare7","aliases":[]},{"icon":"faSquare8","aliases":[]},{"icon":"faSquare9","aliases":[]},{"icon":"faSquareA","aliases":[]},{"icon":"faSquareALock","aliases":[]},{"icon":"faSquareAmpersand","aliases":[]},{"icon":"faSquareArrowDown","aliases":["faArrowSquareDown"]},{"icon":"faSquareArrowDownLeft","aliases":[]},{"icon":"faSquareArrowDownRight","aliases":[]},{"icon":"faSquareArrowLeft","aliases":["faArrowSquareLeft"]},{"icon":"faSquareArrowRight","aliases":["faArrowSquareRight"]},{"icon":"faSquareArrowUp","aliases":["faArrowSquareUp"]},{"icon":"faSquareArrowUpLeft","aliases":[]},{"icon":"faSquareArrowUpRight","aliases":["faExternalLinkSquare"]},{"icon":"faSquareB","aliases":[]},{"icon":"faSquareBolt","aliases":[]},{"icon":"faSquareC","aliases":[]},{"icon":"faSquareCaretDown","aliases":["faCaretSquareDown"]},{"icon":"faSquareCaretLeft","aliases":["faCaretSquareLeft"]},{"icon":"faSquareCaretRight","aliases":["faCaretSquareRight"]},{"icon":"faSquareCaretUp","aliases":["faCaretSquareUp"]},{"icon":"faSquareCheck","aliases":["faCheckSquare"]},{"icon":"faSquareChevronDown","aliases":["faChevronSquareDown"]},{"icon":"faSquareChevronLeft","aliases":["faChevronSquareLeft"]},{"icon":"faSquareChevronRight","aliases":["faChevronSquareRight"]},{"icon":"faSquareChevronUp","aliases":["faChevronSquareUp"]},{"icon":"faSquareCode","aliases":[]},{"icon":"faSquareD","aliases":[]},{"icon":"faSquareDashed","aliases":[]},{"icon":"faSquareDashedCirclePlus","aliases":[]},{"icon":"faSquareDivide","aliases":[]},{"icon":"faSquareDollar","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faSquareDown","aliases":["faArrowAltSquareDown"]},{"icon":"faSquareDownLeft","aliases":[]},{"icon":"faSquareDownRight","aliases":[]},{"icon":"faSquareE","aliases":[]},{"icon":"faSquareEllipsis","aliases":[]},{"icon":"faSquareEllipsisVertical","aliases":[]},{"icon":"faSquareEnvelope","aliases":["faEnvelopeSquare"]},{"icon":"faSquareExclamation","aliases":["faExclamationSquare"]},{"icon":"faSquareF","aliases":[]},{"icon":"faSquareFragile","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faSquareFull","aliases":[]},{"icon":"faSquareG","aliases":[]},{"icon":"faSquareH","aliases":["faHSquare"]},{"icon":"faSquareHeart","aliases":["faHeartSquare"]},{"icon":"faSquareI","aliases":[]},{"icon":"faSquareInfo","aliases":["faInfoSquare"]},{"icon":"faSquareJ","aliases":[]},{"icon":"faSquareK","aliases":[]},{"icon":"faSquareKanban","aliases":[]},{"icon":"faSquareL","aliases":[]},{"icon":"faSquareLeft","aliases":["faArrowAltSquareLeft"]},{"icon":"faSquareList","aliases":[]},{"icon":"faSquareM","aliases":[]},{"icon":"faSquareMinus","aliases":["faMinusSquare"]},{"icon":"faSquareN","aliases":[]},{"icon":"faSquareNfi","aliases":[]},{"icon":"faSquareO","aliases":[]},{"icon":"faSquareP","aliases":[]},{"icon":"faSquareParking","aliases":["faParking"]},{"icon":"faSquareParkingSlash","aliases":["faParkingSlash"]},{"icon":"faSquarePen","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faSquarePersonConfined","aliases":[]},{"icon":"faSquarePhone","aliases":["faPhoneSquare"]},{"icon":"faSquarePhoneFlip","aliases":["faPhoneSquareAlt"]},{"icon":"faSquarePhoneHangup","aliases":["faPhoneSquareDown"]},{"icon":"faSquarePlus","aliases":["faPlusSquare"]},{"icon":"faSquarePollHorizontal","aliases":["faPollH"]},{"icon":"faSquarePollVertical","aliases":["faPoll"]},{"icon":"faSquareQ","aliases":[]},{"icon":"faSquareQuarters","aliases":[]},{"icon":"faSquareQuestion","aliases":["faQuestionSquare"]},{"icon":"faSquareQuote","aliases":[]},{"icon":"faSquareR","aliases":[]},{"icon":"faSquareRight","aliases":["faArrowAltSquareRight"]},{"icon":"faSquareRing","aliases":[]},{"icon":"faSquareRoot","aliases":[]},{"icon":"faSquareRootAlt","aliases":["faSquareRootAlt"]},{"icon":"faSquareRootVariable","aliases":["faSquareRootAlt"]},{"icon":"faSquareRss","aliases":["faRssSquare"]},{"icon":"faSquareS","aliases":[]},{"icon":"faSquareShareNodes","aliases":["faShareAltSquare"]},{"icon":"faSquareSliders","aliases":["faSlidersHSquare"]},{"icon":"faSquareSlidersVertical","aliases":["faSlidersVSquare"]},{"icon":"faSquareSmall","aliases":[]},{"icon":"faSquareStar","aliases":[]},{"icon":"faSquareT","aliases":[]},{"icon":"faSquareTerminal","aliases":[]},{"icon":"faSquareThisWayUp","aliases":["faBoxUp"]},{"icon":"faSquareU","aliases":[]},{"icon":"faSquareUp","aliases":["faArrowAltSquareUp"]},{"icon":"faSquareUpLeft","aliases":[]},{"icon":"faSquareUpRight","aliases":["faExternalLinkSquareAlt"]},{"icon":"faSquareUser","aliases":[]},{"icon":"faSquareV","aliases":[]},{"icon":"faSquareVirus","aliases":[]},{"icon":"faSquareW","aliases":[]},{"icon":"faSquareWineGlassCrack","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faSquareX","aliases":[]},{"icon":"faSquareXmark","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faSquareY","aliases":[]},{"icon":"faSquareZ","aliases":[]},{"icon":"faSquid","aliases":[]},{"icon":"faSquirrel","aliases":[]},{"icon":"faStaff","aliases":[]},{"icon":"faStaffAesculapius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStaffSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStairs","aliases":[]},{"icon":"faStamp","aliases":[]},{"icon":"faStandardDefinition","aliases":["faRectangleSd"]},{"icon":"faStapler","aliases":[]},{"icon":"faStar","aliases":[]},{"icon":"faStarAndCrescent","aliases":[]},{"icon":"faStarChristmas","aliases":[]},{"icon":"faStarCircle","aliases":["faStarCircle"]},{"icon":"faStarExclamation","aliases":[]},{"icon":"faStarHalf","aliases":[]},{"icon":"faStarHalfAlt","aliases":["faStarHalfAlt"]},{"icon":"faStarHalfStroke","aliases":["faStarHalfAlt"]},{"icon":"faStarOfDavid","aliases":[]},{"icon":"faStarOfLife","aliases":[]},{"icon":"faStarSharp","aliases":[]},{"icon":"faStarSharpHalf","aliases":[]},{"icon":"faStarSharpHalfAlt","aliases":["faStarSharpHalfAlt"]},{"icon":"faStarSharpHalfStroke","aliases":["faStarSharpHalfAlt"]},{"icon":"faStarShooting","aliases":[]},{"icon":"faStarfighter","aliases":[]},{"icon":"faStarfighterAlt","aliases":["faStarfighterAlt"]},{"icon":"faStarfighterAltAdvanced","aliases":["faStarfighterAltAdvanced"]},{"icon":"faStarfighterTwinIonEngine","aliases":["faStarfighterAlt"]},{"icon":"faStarfighterTwinIonEngineAdvanced","aliases":["faStarfighterAltAdvanced"]},{"icon":"faStars","aliases":[]},{"icon":"faStarship","aliases":[]},{"icon":"faStarshipFreighter","aliases":[]},{"icon":"faSteak","aliases":[]},{"icon":"faSteeringWheel","aliases":[]},{"icon":"faStepBackward","aliases":["faStepBackward"]},{"icon":"faStepForward","aliases":["faStepForward"]},{"icon":"faSterlingSign","aliases":["faGbp","faPoundSign"]},{"icon":"faStethoscope","aliases":[]},{"icon":"faStickyNote","aliases":["faStickyNote"]},{"icon":"faStocking","aliases":[]},{"icon":"faStomach","aliases":[]},{"icon":"faStop","aliases":[]},{"icon":"faStopCircle","aliases":["faStopCircle"]},{"icon":"faStopwatch","aliases":[]},{"icon":"faStopwatch20","aliases":[]},{"icon":"faStore","aliases":[]},{"icon":"faStoreAlt","aliases":["faStoreAlt"]},{"icon":"faStoreAltSlash","aliases":["faStoreAltSlash"]},{"icon":"faStoreLock","aliases":[]},{"icon":"faStoreSlash","aliases":[]},{"icon":"faStrawberry","aliases":[]},{"icon":"faStream","aliases":["faReorder","faStream"]},{"icon":"faStreetView","aliases":[]},{"icon":"faStretcher","aliases":[]},{"icon":"faStrikethrough","aliases":[]},{"icon":"faStroopwafel","aliases":[]},{"icon":"faSubscript","aliases":[]},{"icon":"faSubtitles","aliases":[]},{"icon":"faSubtitlesSlash","aliases":[]},{"icon":"faSubtract","aliases":["faSubtract"]},{"icon":"faSubway","aliases":["faSubway"]},{"icon":"faSubwayTunnel","aliases":["faSubwayTunnel"]},{"icon":"faSuitcase","aliases":[]},{"icon":"faSuitcaseMedical","aliases":["faMedkit"]},{"icon":"faSuitcaseRolling","aliases":[]},{"icon":"faSun","aliases":[]},{"icon":"faSunAlt","aliases":["faSunAlt"]},{"icon":"faSunBright","aliases":["faSunAlt"]},{"icon":"faSunCloud","aliases":[]},{"icon":"faSunDust","aliases":[]},{"icon":"faSunHaze","aliases":[]},{"icon":"faSunPlantWilt","aliases":[]},{"icon":"faSunglasses","aliases":[]},{"icon":"faSunrise","aliases":[]},{"icon":"faSunset","aliases":[]},{"icon":"faSuperscript","aliases":[]},{"icon":"faSurprise","aliases":["faSurprise"]},{"icon":"faSushi","aliases":["faNigiri"]},{"icon":"faSushiRoll","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faSwap","aliases":[]},{"icon":"faSwapArrows","aliases":[]},{"icon":"faSwatchbook","aliases":[]},{"icon":"faSwimmer","aliases":["faSwimmer"]},{"icon":"faSwimmingPool","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faSword","aliases":[]},{"icon":"faSwordLaser","aliases":[]},{"icon":"faSwordLaserAlt","aliases":[]},{"icon":"faSwords","aliases":[]},{"icon":"faSwordsLaser","aliases":[]},{"icon":"faSymbols","aliases":["faIconsAlt"]},{"icon":"faSynagogue","aliases":[]},{"icon":"faSync","aliases":["faRefresh","faSync"]},{"icon":"faSyncAlt","aliases":["faSyncAlt"]},{"icon":"faSyringe","aliases":[]},{"icon":"faT","aliases":[]},{"icon":"faTRex","aliases":[]},{"icon":"faTShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faTable","aliases":[]},{"icon":"faTableCells","aliases":["faTh"]},{"icon":"faTableCellsColumnLock","aliases":[]},{"icon":"faTableCellsColumnUnlock","aliases":[]},{"icon":"faTableCellsLarge","aliases":["faThLarge"]},{"icon":"faTableCellsLock","aliases":[]},{"icon":"faTableCellsRowLock","aliases":[]},{"icon":"faTableCellsRowUnlock","aliases":[]},{"icon":"faTableCellsUnlock","aliases":[]},{"icon":"faTableColumns","aliases":["faColumns"]},{"icon":"faTableLayout","aliases":[]},{"icon":"faTableList","aliases":["faThList"]},{"icon":"faTablePicnic","aliases":[]},{"icon":"faTablePivot","aliases":[]},{"icon":"faTableRows","aliases":["faRows"]},{"icon":"faTableTennis","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTennisPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTree","aliases":[]},{"icon":"faTablet","aliases":["faTabletAndroid"]},{"icon":"faTabletAlt","aliases":["faTabletAlt"]},{"icon":"faTabletAndroid","aliases":["faTabletAndroid"]},{"icon":"faTabletAndroidAlt","aliases":["faTabletAndroidAlt"]},{"icon":"faTabletButton","aliases":[]},{"icon":"faTabletRugged","aliases":[]},{"icon":"faTabletScreen","aliases":["faTabletAndroidAlt"]},{"icon":"faTabletScreenButton","aliases":["faTabletAlt"]},{"icon":"faTablets","aliases":[]},{"icon":"faTachographDigital","aliases":["faDigitalTachograph"]},{"icon":"faTachometer","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerAlt","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltAverage","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faTachometerAltFast","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltFastest","aliases":["faTachometerAltFastest"]},{"icon":"faTachometerAltSlow","aliases":["faTachometerAltSlow"]},{"icon":"faTachometerAltSlowest","aliases":["faTachometerAltSlowest"]},{"icon":"faTachometerAverage","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faTachometerFast","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerFastest","aliases":["faTachometerFastest"]},{"icon":"faTachometerSlow","aliases":["faTachometerSlow"]},{"icon":"faTachometerSlowest","aliases":["faTachometerSlowest"]},{"icon":"faTaco","aliases":[]},{"icon":"faTag","aliases":[]},{"icon":"faTags","aliases":[]},{"icon":"faTally","aliases":["faTally5"]},{"icon":"faTally1","aliases":[]},{"icon":"faTally2","aliases":[]},{"icon":"faTally3","aliases":[]},{"icon":"faTally4","aliases":[]},{"icon":"faTally5","aliases":["faTally5"]},{"icon":"faTamale","aliases":[]},{"icon":"faTanakh","aliases":["faTanakh"]},{"icon":"faTankWater","aliases":[]},{"icon":"faTape","aliases":[]},{"icon":"faTarp","aliases":[]},{"icon":"faTarpDroplet","aliases":[]},{"icon":"faTasks","aliases":["faTasks"]},{"icon":"faTasksAlt","aliases":["faTasksAlt"]},{"icon":"faTaxi","aliases":["faCab"]},{"icon":"faTaxiBus","aliases":[]},{"icon":"faTeddyBear","aliases":[]},{"icon":"faTeeth","aliases":[]},{"icon":"faTeethOpen","aliases":[]},{"icon":"faTelescope","aliases":[]},{"icon":"faTeletype","aliases":["faTeletype"]},{"icon":"faTeletypeAnswer","aliases":["faTeletypeAnswer"]},{"icon":"faTelevision","aliases":["faTelevision","faTvAlt"]},{"icon":"faTemperature0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperature1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperature2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperature3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperature4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureArrowDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureArrowUp","aliases":["faTemperatureUp"]},{"icon":"faTemperatureDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperatureFrigid","aliases":["faTemperatureFrigid"]},{"icon":"faTemperatureFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperatureHigh","aliases":[]},{"icon":"faTemperatureHot","aliases":["faTemperatureHot"]},{"icon":"faTemperatureList","aliases":[]},{"icon":"faTemperatureLow","aliases":[]},{"icon":"faTemperatureQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperatureSnow","aliases":["faTemperatureFrigid"]},{"icon":"faTemperatureSun","aliases":["faTemperatureHot"]},{"icon":"faTemperatureThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperatureUp","aliases":["faTemperatureUp"]},{"icon":"faTenge","aliases":["faTenge"]},{"icon":"faTengeSign","aliases":["faTenge"]},{"icon":"faTennisBall","aliases":[]},{"icon":"faTent","aliases":[]},{"icon":"faTentArrowDownToLine","aliases":[]},{"icon":"faTentArrowLeftRight","aliases":[]},{"icon":"faTentArrowTurnLeft","aliases":[]},{"icon":"faTentArrowsDown","aliases":[]},{"icon":"faTentDoublePeak","aliases":[]},{"icon":"faTents","aliases":[]},{"icon":"faTerminal","aliases":[]},{"icon":"faText","aliases":[]},{"icon":"faTextHeight","aliases":[]},{"icon":"faTextSize","aliases":[]},{"icon":"faTextSlash","aliases":["faRemoveFormat"]},{"icon":"faTextWidth","aliases":[]},{"icon":"faTh","aliases":["faTh"]},{"icon":"faThLarge","aliases":["faThLarge"]},{"icon":"faThList","aliases":["faThList"]},{"icon":"faTheaterMasks","aliases":["faTheaterMasks"]},{"icon":"faThermometer","aliases":[]},{"icon":"faThermometer0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometer1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometer2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometer3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThermometer4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometerFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometerQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometerThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTheta","aliases":[]},{"icon":"faThoughtBubble","aliases":[]},{"icon":"faThumbsDown","aliases":[]},{"icon":"faThumbsUp","aliases":[]},{"icon":"faThumbtack","aliases":["faThumbTack"]},{"icon":"faThumbtackSlash","aliases":["faThumbTackSlash"]},{"icon":"faThunderstorm","aliases":["faThunderstorm"]},{"icon":"faThunderstormMoon","aliases":["faThunderstormMoon"]},{"icon":"faThunderstormSun","aliases":["faThunderstormSun"]},{"icon":"faTick","aliases":[]},{"icon":"faTicket","aliases":[]},{"icon":"faTicketAirline","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketAlt","aliases":["faTicketAlt"]},{"icon":"faTicketPerforated","aliases":[]},{"icon":"faTicketPerforatedPlane","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketPlane","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketSimple","aliases":["faTicketAlt"]},{"icon":"faTickets","aliases":[]},{"icon":"faTicketsAirline","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsPerforated","aliases":[]},{"icon":"faTicketsPerforatedPlane","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsPlane","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsSimple","aliases":[]},{"icon":"faTilde","aliases":[]},{"icon":"faTimeline","aliases":[]},{"icon":"faTimelineArrow","aliases":[]},{"icon":"faTimer","aliases":[]},{"icon":"faTimes","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faTimesCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faTimesHexagon","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faTimesOctagon","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faTimesRectangle","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faTimesSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faTimesToSlot","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faTint","aliases":["faTint"]},{"icon":"faTintSlash","aliases":["faTintSlash"]},{"icon":"faTire","aliases":[]},{"icon":"faTireFlat","aliases":[]},{"icon":"faTirePressureWarning","aliases":[]},{"icon":"faTireRugged","aliases":[]},{"icon":"faTired","aliases":["faTired"]},{"icon":"faToggleLargeOff","aliases":[]},{"icon":"faToggleLargeOn","aliases":[]},{"icon":"faToggleOff","aliases":[]},{"icon":"faToggleOn","aliases":[]},{"icon":"faToilet","aliases":[]},{"icon":"faToiletPaper","aliases":[]},{"icon":"faToiletPaperAlt","aliases":["faToiletPaperAlt"]},{"icon":"faToiletPaperBlank","aliases":["faToiletPaperAlt"]},{"icon":"faToiletPaperBlankUnder","aliases":["faToiletPaperReverseAlt"]},{"icon":"faToiletPaperCheck","aliases":[]},{"icon":"faToiletPaperReverse","aliases":["faToiletPaperReverse"]},{"icon":"faToiletPaperReverseAlt","aliases":["faToiletPaperReverseAlt"]},{"icon":"faToiletPaperReverseSlash","aliases":["faToiletPaperReverseSlash"]},{"icon":"faToiletPaperSlash","aliases":[]},{"icon":"faToiletPaperUnder","aliases":["faToiletPaperReverse"]},{"icon":"faToiletPaperUnderSlash","aliases":["faToiletPaperReverseSlash"]},{"icon":"faToiletPaperXmark","aliases":[]},{"icon":"faToiletPortable","aliases":[]},{"icon":"faToiletsPortable","aliases":[]},{"icon":"faTomato","aliases":[]},{"icon":"faTombstone","aliases":[]},{"icon":"faTombstoneAlt","aliases":["faTombstoneAlt"]},{"icon":"faTombstoneBlank","aliases":["faTombstoneAlt"]},{"icon":"faToolbox","aliases":[]},{"icon":"faTools","aliases":["faTools"]},{"icon":"faTooth","aliases":[]},{"icon":"faToothbrush","aliases":[]},{"icon":"faTorah","aliases":["faTorah"]},{"icon":"faToriiGate","aliases":[]},{"icon":"faTornado","aliases":[]},{"icon":"faTowerBroadcast","aliases":["faBroadcastTower"]},{"icon":"faTowerCell","aliases":[]},{"icon":"faTowerControl","aliases":[]},{"icon":"faTowerObservation","aliases":[]},{"icon":"faTractor","aliases":[]},{"icon":"faTrademark","aliases":[]},{"icon":"faTrafficCone","aliases":[]},{"icon":"faTrafficLight","aliases":[]},{"icon":"faTrafficLightGo","aliases":[]},{"icon":"faTrafficLightSlow","aliases":[]},{"icon":"faTrafficLightStop","aliases":[]},{"icon":"faTrailer","aliases":[]},{"icon":"faTrain","aliases":[]},{"icon":"faTrainSubway","aliases":["faSubway"]},{"icon":"faTrainSubwayTunnel","aliases":["faSubwayTunnel"]},{"icon":"faTrainTrack","aliases":[]},{"icon":"faTrainTram","aliases":[]},{"icon":"faTrainTunnel","aliases":[]},{"icon":"faTram","aliases":["faTram"]},{"icon":"faTransformerBolt","aliases":[]},{"icon":"faTransgender","aliases":["faTransgenderAlt"]},{"icon":"faTransgenderAlt","aliases":["faTransgenderAlt"]},{"icon":"faTransporter","aliases":[]},{"icon":"faTransporter1","aliases":[]},{"icon":"faTransporter2","aliases":[]},{"icon":"faTransporter3","aliases":[]},{"icon":"faTransporter4","aliases":[]},{"icon":"faTransporter5","aliases":[]},{"icon":"faTransporter6","aliases":[]},{"icon":"faTransporter7","aliases":[]},{"icon":"faTransporterEmpty","aliases":[]},{"icon":"faTrash","aliases":[]},{"icon":"faTrashAlt","aliases":["faTrashAlt"]},{"icon":"faTrashAltSlash","aliases":["faTrashAltSlash"]},{"icon":"faTrashArrowTurnLeft","aliases":["faTrashArrowTurnLeft"]},{"icon":"faTrashArrowUp","aliases":["faTrashRestore"]},{"icon":"faTrashCan","aliases":["faTrashAlt"]},{"icon":"faTrashCanArrowTurnLeft","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashCanArrowUp","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashCanCheck","aliases":[]},{"icon":"faTrashCanClock","aliases":[]},{"icon":"faTrashCanList","aliases":[]},{"icon":"faTrashCanPlus","aliases":[]},{"icon":"faTrashCanSlash","aliases":["faTrashAltSlash"]},{"icon":"faTrashCanUndo","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashCanXmark","aliases":[]},{"icon":"faTrashCheck","aliases":[]},{"icon":"faTrashCircle","aliases":["faTrashCircle"]},{"icon":"faTrashClock","aliases":[]},{"icon":"faTrashList","aliases":[]},{"icon":"faTrashPlus","aliases":[]},{"icon":"faTrashRestore","aliases":["faTrashRestore"]},{"icon":"faTrashRestoreAlt","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashSlash","aliases":[]},{"icon":"faTrashUndo","aliases":["faTrashArrowTurnLeft"]},{"icon":"faTrashUndoAlt","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashXmark","aliases":[]},{"icon":"faTreasureChest","aliases":[]},{"icon":"faTree","aliases":[]},{"icon":"faTreeAlt","aliases":["faTreeAlt"]},{"icon":"faTreeChristmas","aliases":[]},{"icon":"faTreeCity","aliases":[]},{"icon":"faTreeDeciduous","aliases":["faTreeAlt"]},{"icon":"faTreeDecorated","aliases":[]},{"icon":"faTreeLarge","aliases":[]},{"icon":"faTreePalm","aliases":[]},{"icon":"faTrees","aliases":[]},{"icon":"faTrianBalbot","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faTriangle","aliases":[]},{"icon":"faTriangleCircleSquare","aliases":["faTriangleCircleSquare"]},{"icon":"faTriangleExclamation","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faTriangleInstrument","aliases":["faTriangleMusic"]},{"icon":"faTriangleMusic","aliases":["faTriangleMusic"]},{"icon":"faTrianglePersonDigging","aliases":["faConstruction"]},{"icon":"faTricycle","aliases":[]},{"icon":"faTricycleAdult","aliases":[]},{"icon":"faTrillium","aliases":[]},{"icon":"faTrophy","aliases":[]},{"icon":"faTrophyAlt","aliases":["faTrophyAlt"]},{"icon":"faTrophyStar","aliases":["faTrophyAlt"]},{"icon":"faTrowel","aliases":[]},{"icon":"faTrowelBricks","aliases":[]},{"icon":"faTruck","aliases":[]},{"icon":"faTruckArrowRight","aliases":[]},{"icon":"faTruckBolt","aliases":[]},{"icon":"faTruckClock","aliases":["faShippingTimed"]},{"icon":"faTruckContainer","aliases":[]},{"icon":"faTruckContainerEmpty","aliases":[]},{"icon":"faTruckCouch","aliases":["faTruckCouch"]},{"icon":"faTruckDroplet","aliases":[]},{"icon":"faTruckFast","aliases":["faShippingFast"]},{"icon":"faTruckField","aliases":[]},{"icon":"faTruckFieldUn","aliases":[]},{"icon":"faTruckFire","aliases":[]},{"icon":"faTruckFlatbed","aliases":[]},{"icon":"faTruckFront","aliases":[]},{"icon":"faTruckLadder","aliases":[]},{"icon":"faTruckLoading","aliases":["faTruckLoading"]},{"icon":"faTruckMedical","aliases":["faAmbulance"]},{"icon":"faTruckMonster","aliases":[]},{"icon":"faTruckMoving","aliases":[]},{"icon":"faTruckPickup","aliases":[]},{"icon":"faTruckPlane","aliases":[]},{"icon":"faTruckPlow","aliases":[]},{"icon":"faTruckRamp","aliases":[]},{"icon":"faTruckRampBox","aliases":["faTruckLoading"]},{"icon":"faTruckRampCouch","aliases":["faTruckCouch"]},{"icon":"faTruckTow","aliases":[]},{"icon":"faTruckUtensils","aliases":[]},{"icon":"faTrumpet","aliases":[]},{"icon":"faTry","aliases":["faTry","faTurkishLira"]},{"icon":"faTty","aliases":["faTeletype"]},{"icon":"faTtyAnswer","aliases":["faTeletypeAnswer"]},{"icon":"faTugrikSign","aliases":[]},{"icon":"faTurkey","aliases":[]},{"icon":"faTurkishLira","aliases":["faTry","faTurkishLira"]},{"icon":"faTurkishLiraSign","aliases":["faTry","faTurkishLira"]},{"icon":"faTurnDown","aliases":["faLevelDownAlt"]},{"icon":"faTurnDownLeft","aliases":[]},{"icon":"faTurnDownRight","aliases":[]},{"icon":"faTurnLeft","aliases":[]},{"icon":"faTurnLeftDown","aliases":[]},{"icon":"faTurnLeftUp","aliases":[]},{"icon":"faTurnRight","aliases":[]},{"icon":"faTurnUp","aliases":["faLevelUpAlt"]},{"icon":"faTurntable","aliases":[]},{"icon":"faTurtle","aliases":[]},{"icon":"faTv","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvAlt","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvMusic","aliases":[]},{"icon":"faTvRetro","aliases":[]},{"icon":"faTypewriter","aliases":[]},{"icon":"faU","aliases":[]},{"icon":"faUfo","aliases":[]},{"icon":"faUfoBeam","aliases":[]},{"icon":"faUmbrella","aliases":[]},{"icon":"faUmbrellaAlt","aliases":["faUmbrellaAlt"]},{"icon":"faUmbrellaBeach","aliases":[]},{"icon":"faUmbrellaSimple","aliases":["faUmbrellaAlt"]},{"icon":"faUnderline","aliases":[]},{"icon":"faUndo","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faUndoAlt","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faUnicorn","aliases":[]},{"icon":"faUniformMartialArts","aliases":[]},{"icon":"faUnion","aliases":[]},{"icon":"faUniversalAccess","aliases":[]},{"icon":"faUniversity","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faUnlink","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faUnlock","aliases":[]},{"icon":"faUnlockAlt","aliases":["faUnlockAlt"]},{"icon":"faUnlockKeyhole","aliases":["faUnlockAlt"]},{"icon":"faUnsorted","aliases":["faUnsorted"]},{"icon":"faUp","aliases":["faArrowAltUp"]},{"icon":"faUpDown","aliases":["faArrowsAltV"]},{"icon":"faUpDownLeftRight","aliases":["faArrowsAlt"]},{"icon":"faUpFromBracket","aliases":[]},{"icon":"faUpFromDottedLine","aliases":[]},{"icon":"faUpFromLine","aliases":["faArrowAltFromBottom"]},{"icon":"faUpLeft","aliases":[]},{"icon":"faUpLong","aliases":["faLongArrowAltUp"]},{"icon":"faUpRight","aliases":[]},{"icon":"faUpRightAndDownLeftFromCenter","aliases":["faExpandAlt"]},{"icon":"faUpRightFromSquare","aliases":["faExternalLinkAlt"]},{"icon":"faUpToBracket","aliases":[]},{"icon":"faUpToDottedLine","aliases":[]},{"icon":"faUpToLine","aliases":["faArrowAltToTop"]},{"icon":"faUpload","aliases":[]},{"icon":"faUsbDrive","aliases":[]},{"icon":"faUsd","aliases":["faDollar","faUsd"]},{"icon":"faUsdCircle","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faUsdSquare","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faUser","aliases":[]},{"icon":"faUserAlien","aliases":[]},{"icon":"faUserAlt","aliases":["faUserAlt"]},{"icon":"faUserAltSlash","aliases":["faUserAltSlash"]},{"icon":"faUserAstronaut","aliases":[]},{"icon":"faUserBeardBolt","aliases":[]},{"icon":"faUserBountyHunter","aliases":[]},{"icon":"faUserChart","aliases":["faUserChart"]},{"icon":"faUserCheck","aliases":[]},{"icon":"faUserChef","aliases":[]},{"icon":"faUserCircle","aliases":["faUserCircle"]},{"icon":"faUserClock","aliases":[]},{"icon":"faUserCog","aliases":["faUserCog"]},{"icon":"faUserConstruction","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserCowboy","aliases":[]},{"icon":"faUserCrown","aliases":[]},{"icon":"faUserDoctor","aliases":["faUserMd"]},{"icon":"faUserDoctorHair","aliases":[]},{"icon":"faUserDoctorHairLong","aliases":[]},{"icon":"faUserDoctorMessage","aliases":["faUserMdChat"]},{"icon":"faUserEdit","aliases":["faUserEdit"]},{"icon":"faUserFriends","aliases":["faUserFriends"]},{"icon":"faUserGear","aliases":["faUserCog"]},{"icon":"faUserGraduate","aliases":[]},{"icon":"faUserGroup","aliases":["faUserFriends"]},{"icon":"faUserGroupCrown","aliases":["faUsersCrown"]},{"icon":"faUserGroupSimple","aliases":[]},{"icon":"faUserHair","aliases":[]},{"icon":"faUserHairBuns","aliases":[]},{"icon":"faUserHairLong","aliases":[]},{"icon":"faUserHairMullet","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faUserHardHat","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserHeadset","aliases":[]},{"icon":"faUserHelmetSafety","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserHoodie","aliases":[]},{"icon":"faUserInjured","aliases":[]},{"icon":"faUserLarge","aliases":["faUserAlt"]},{"icon":"faUserLargeSlash","aliases":["faUserAltSlash"]},{"icon":"faUserLock","aliases":[]},{"icon":"faUserMagnifyingGlass","aliases":[]},{"icon":"faUserMd","aliases":["faUserMd"]},{"icon":"faUserMdChat","aliases":["faUserMdChat"]},{"icon":"faUserMinus","aliases":[]},{"icon":"faUserMusic","aliases":[]},{"icon":"faUserNinja","aliases":[]},{"icon":"faUserNurse","aliases":[]},{"icon":"faUserNurseHair","aliases":[]},{"icon":"faUserNurseHairLong","aliases":[]},{"icon":"faUserPen","aliases":["faUserEdit"]},{"icon":"faUserPilot","aliases":[]},{"icon":"faUserPilotTie","aliases":[]},{"icon":"faUserPlus","aliases":[]},{"icon":"faUserPolice","aliases":[]},{"icon":"faUserPoliceTie","aliases":[]},{"icon":"faUserRobot","aliases":[]},{"icon":"faUserRobotXmarks","aliases":[]},{"icon":"faUserSecret","aliases":[]},{"icon":"faUserShakespeare","aliases":[]},{"icon":"faUserShield","aliases":[]},{"icon":"faUserSlash","aliases":[]},{"icon":"faUserTag","aliases":[]},{"icon":"faUserTie","aliases":[]},{"icon":"faUserTieHair","aliases":[]},{"icon":"faUserTieHairLong","aliases":[]},{"icon":"faUserTimes","aliases":["faUserTimes"]},{"icon":"faUserUnlock","aliases":[]},{"icon":"faUserVisor","aliases":[]},{"icon":"faUserVneck","aliases":[]},{"icon":"faUserVneckHair","aliases":[]},{"icon":"faUserVneckHairLong","aliases":[]},{"icon":"faUserXmark","aliases":["faUserTimes"]},{"icon":"faUsers","aliases":[]},{"icon":"faUsersBetweenLines","aliases":[]},{"icon":"faUsersClass","aliases":["faUsersClass"]},{"icon":"faUsersCog","aliases":["faUsersCog"]},{"icon":"faUsersCrown","aliases":["faUsersCrown"]},{"icon":"faUsersGear","aliases":["faUsersCog"]},{"icon":"faUsersLine","aliases":[]},{"icon":"faUsersMedical","aliases":[]},{"icon":"faUsersRays","aliases":[]},{"icon":"faUsersRectangle","aliases":[]},{"icon":"faUsersSlash","aliases":[]},{"icon":"faUsersViewfinder","aliases":[]},{"icon":"faUtensilFork","aliases":["faUtensilFork"]},{"icon":"faUtensilKnife","aliases":["faUtensilKnife"]},{"icon":"faUtensilSpoon","aliases":["faUtensilSpoon"]},{"icon":"faUtensils","aliases":["faCutlery"]},{"icon":"faUtensilsAlt","aliases":["faUtensilsAlt"]},{"icon":"faUtensilsSlash","aliases":[]},{"icon":"faUtilityPole","aliases":[]},{"icon":"faUtilityPoleDouble","aliases":[]},{"icon":"faV","aliases":[]},{"icon":"faVacuum","aliases":[]},{"icon":"faVacuumRobot","aliases":[]},{"icon":"faValueAbsolute","aliases":[]},{"icon":"faVanShuttle","aliases":["faShuttleVan"]},{"icon":"faVault","aliases":[]},{"icon":"faVcard","aliases":["faContactCard","faVcard"]},{"icon":"faVectorCircle","aliases":[]},{"icon":"faVectorPolygon","aliases":[]},{"icon":"faVectorSquare","aliases":[]},{"icon":"faVentDamper","aliases":[]},{"icon":"faVenus","aliases":[]},{"icon":"faVenusDouble","aliases":[]},{"icon":"faVenusMars","aliases":[]},{"icon":"faVest","aliases":[]},{"icon":"faVestPatches","aliases":[]},{"icon":"faVhs","aliases":["faVhs"]},{"icon":"faVial","aliases":[]},{"icon":"faVialCircleCheck","aliases":[]},{"icon":"faVialVirus","aliases":[]},{"icon":"faVials","aliases":[]},{"icon":"faVideo","aliases":["faVideoCamera"]},{"icon":"faVideoArrowDownLeft","aliases":[]},{"icon":"faVideoArrowUpRight","aliases":[]},{"icon":"faVideoCamera","aliases":["faVideoCamera"]},{"icon":"faVideoCircle","aliases":["faVideoCircle"]},{"icon":"faVideoHandheld","aliases":["faVideoHandheld"]},{"icon":"faVideoPlus","aliases":[]},{"icon":"faVideoSlash","aliases":[]},{"icon":"faVihara","aliases":[]},{"icon":"faViolin","aliases":[]},{"icon":"faVirus","aliases":[]},{"icon":"faVirusCovid","aliases":[]},{"icon":"faVirusCovidSlash","aliases":[]},{"icon":"faVirusSlash","aliases":[]},{"icon":"faViruses","aliases":[]},{"icon":"faVoicemail","aliases":[]},{"icon":"faVolcano","aliases":[]},{"icon":"faVolleyball","aliases":["faVolleyballBall"]},{"icon":"faVolleyballBall","aliases":["faVolleyballBall"]},{"icon":"faVolume","aliases":["faVolumeMedium"]},{"icon":"faVolumeControlPhone","aliases":["faVolumeControlPhone"]},{"icon":"faVolumeDown","aliases":["faVolumeDown"]},{"icon":"faVolumeHigh","aliases":["faVolumeUp"]},{"icon":"faVolumeLow","aliases":["faVolumeDown"]},{"icon":"faVolumeMedium","aliases":["faVolumeMedium"]},{"icon":"faVolumeMute","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeOff","aliases":[]},{"icon":"faVolumeSlash","aliases":[]},{"icon":"faVolumeTimes","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeUp","aliases":["faVolumeUp"]},{"icon":"faVolumeXmark","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVoteNay","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faVoteYea","aliases":["faVoteYea"]},{"icon":"faVrCardboard","aliases":[]},{"icon":"faW","aliases":[]},{"icon":"faWaffle","aliases":[]},{"icon":"faWagonCovered","aliases":[]},{"icon":"faWalker","aliases":[]},{"icon":"faWalkieTalkie","aliases":[]},{"icon":"faWalking","aliases":["faWalking"]},{"icon":"faWallBrick","aliases":["faWallBrick"]},{"icon":"faWallet","aliases":[]},{"icon":"faWand","aliases":[]},{"icon":"faWandMagic","aliases":["faMagic"]},{"icon":"faWandMagicSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faWandSparkles","aliases":[]},{"icon":"faWarehouse","aliases":[]},{"icon":"faWarehouseAlt","aliases":["faWarehouseAlt"]},{"icon":"faWarehouseFull","aliases":["faWarehouseAlt"]},{"icon":"faWarning","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faWasher","aliases":["faWasher"]},{"icon":"faWashingMachine","aliases":["faWasher"]},{"icon":"faWatch","aliases":[]},{"icon":"faWatchApple","aliases":[]},{"icon":"faWatchCalculator","aliases":[]},{"icon":"faWatchFitness","aliases":[]},{"icon":"faWatchSmart","aliases":[]},{"icon":"faWater","aliases":[]},{"icon":"faWaterArrowDown","aliases":["faWaterLower"]},{"icon":"faWaterArrowUp","aliases":["faWaterRise"]},{"icon":"faWaterLadder","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faWaterLower","aliases":["faWaterLower"]},{"icon":"faWaterRise","aliases":["faWaterRise"]},{"icon":"faWatermelonSlice","aliases":[]},{"icon":"faWave","aliases":[]},{"icon":"faWavePulse","aliases":["faHeartRate"]},{"icon":"faWaveSine","aliases":[]},{"icon":"faWaveSquare","aliases":[]},{"icon":"faWaveTriangle","aliases":[]},{"icon":"faWaveform","aliases":[]},{"icon":"faWaveformCircle","aliases":["faWaveformCircle"]},{"icon":"faWaveformLines","aliases":["faWaveformPath"]},{"icon":"faWaveformPath","aliases":["faWaveformPath"]},{"icon":"faWavesSine","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWebcam","aliases":["faWebcam"]},{"icon":"faWebcamSlash","aliases":["faWebcamSlash"]},{"icon":"faWebhook","aliases":[]},{"icon":"faWeight","aliases":["faWeight"]},{"icon":"faWeightHanging","aliases":[]},{"icon":"faWeightScale","aliases":["faWeight"]},{"icon":"faWhale","aliases":[]},{"icon":"faWheat","aliases":[]},{"icon":"faWheatAlt","aliases":["faWheatAlt"]},{"icon":"faWheatAwn","aliases":["faWheatAlt"]},{"icon":"faWheatAwnCircleExclamation","aliases":[]},{"icon":"faWheatAwnSlash","aliases":[]},{"icon":"faWheatSlash","aliases":[]},{"icon":"faWheelchair","aliases":[]},{"icon":"faWheelchairAlt","aliases":["faWheelchairAlt"]},{"icon":"faWheelchairMove","aliases":["faWheelchairAlt"]},{"icon":"faWhiskeyGlass","aliases":["faGlassWhiskey"]},{"icon":"faWhiskeyGlassIce","aliases":["faGlassWhiskeyRocks"]},{"icon":"faWhistle","aliases":[]},{"icon":"faWifi","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifi1","aliases":["faWifi1"]},{"icon":"faWifi2","aliases":["faWifi2"]},{"icon":"faWifi3","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiExclamation","aliases":[]},{"icon":"faWifiFair","aliases":["faWifi2"]},{"icon":"faWifiSlash","aliases":[]},{"icon":"faWifiStrong","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiWeak","aliases":["faWifi1"]},{"icon":"faWind","aliases":[]},{"icon":"faWindCircleExclamation","aliases":["faWindCircleExclamation"]},{"icon":"faWindTurbine","aliases":[]},{"icon":"faWindWarning","aliases":["faWindCircleExclamation"]},{"icon":"faWindow","aliases":[]},{"icon":"faWindowAlt","aliases":["faWindowAlt"]},{"icon":"faWindowClose","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faWindowFlip","aliases":["faWindowAlt"]},{"icon":"faWindowFrame","aliases":[]},{"icon":"faWindowFrameOpen","aliases":[]},{"icon":"faWindowMaximize","aliases":[]},{"icon":"faWindowMinimize","aliases":[]},{"icon":"faWindowRestore","aliases":[]},{"icon":"faWindsock","aliases":[]},{"icon":"faWineBottle","aliases":[]},{"icon":"faWineGlass","aliases":[]},{"icon":"faWineGlassAlt","aliases":["faWineGlassAlt"]},{"icon":"faWineGlassCrack","aliases":["faFragile"]},{"icon":"faWineGlassEmpty","aliases":["faWineGlassAlt"]},{"icon":"faWon","aliases":["faKrw","faWon"]},{"icon":"faWonSign","aliases":["faKrw","faWon"]},{"icon":"faWorm","aliases":[]},{"icon":"faWreath","aliases":[]},{"icon":"faWreathLaurel","aliases":[]},{"icon":"faWrench","aliases":[]},{"icon":"faWrenchSimple","aliases":[]},{"icon":"faX","aliases":[]},{"icon":"faXRay","aliases":[]},{"icon":"faXmark","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faXmarkCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faXmarkHexagon","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faXmarkLarge","aliases":[]},{"icon":"faXmarkOctagon","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faXmarkSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faXmarkToSlot","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faXmarksLines","aliases":[]},{"icon":"faY","aliases":[]},{"icon":"faYen","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYenSign","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYinYang","aliases":[]},{"icon":"faZ","aliases":[]},{"icon":"faZap","aliases":["faZap"]},{"icon":"faZzz","aliases":["faZzz"]}],"prefix":"fas"},"@awesome.me/kit-63db24046b/icons/kit/custom":{"icons":[{"icon":"faActors","aliases":[]},{"icon":"faActorsBorderless","aliases":[]},{"icon":"faFreestyle","aliases":[]},{"icon":"faGb","aliases":[]},{"icon":"faGoogleCloud","aliases":[]},{"icon":"faHetzner","aliases":[]},{"icon":"faHetznerH","aliases":[]},{"icon":"faKubernetes","aliases":[]},{"icon":"faLinear","aliases":[]},{"icon":"faProject","aliases":[]},{"icon":"faRailway","aliases":[]},{"icon":"faRegex","aliases":[]},{"icon":"faRivet","aliases":[]},{"icon":"faSelect","aliases":[]},{"icon":"faTs","aliases":[]},{"icon":"faVercel","aliases":[]},{"icon":"faWord","aliases":[]}]}} +{"@fortawesome/free-solid-svg-icons":{"icons":[{"icon":"fa0","aliases":[]},{"icon":"fa1","aliases":[]},{"icon":"fa2","aliases":[]},{"icon":"fa3","aliases":[]},{"icon":"fa4","aliases":[]},{"icon":"fa5","aliases":[]},{"icon":"fa6","aliases":[]},{"icon":"fa7","aliases":[]},{"icon":"fa8","aliases":[]},{"icon":"fa9","aliases":[]},{"icon":"faA","aliases":[]},{"icon":"faAd","aliases":["faAd"]},{"icon":"faAdd","aliases":["faAdd"]},{"icon":"faAddressBook","aliases":["faContactBook"]},{"icon":"faAddressCard","aliases":["faContactCard","faVcard"]},{"icon":"faAdjust","aliases":["faAdjust"]},{"icon":"faAirFreshener","aliases":["faAirFreshener"]},{"icon":"faAlignCenter","aliases":[]},{"icon":"faAlignJustify","aliases":[]},{"icon":"faAlignLeft","aliases":[]},{"icon":"faAlignRight","aliases":[]},{"icon":"faAllergies","aliases":["faAllergies"]},{"icon":"faAmbulance","aliases":["faAmbulance"]},{"icon":"faAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAnchor","aliases":[]},{"icon":"faAnchorCircleCheck","aliases":[]},{"icon":"faAnchorCircleExclamation","aliases":[]},{"icon":"faAnchorCircleXmark","aliases":[]},{"icon":"faAnchorLock","aliases":[]},{"icon":"faAngleDoubleDown","aliases":["faAngleDoubleDown"]},{"icon":"faAngleDoubleLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAngleDoubleRight","aliases":["faAngleDoubleRight"]},{"icon":"faAngleDoubleUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngleDown","aliases":[]},{"icon":"faAngleLeft","aliases":[]},{"icon":"faAngleRight","aliases":[]},{"icon":"faAngleUp","aliases":[]},{"icon":"faAnglesDown","aliases":["faAngleDoubleDown"]},{"icon":"faAnglesLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAnglesRight","aliases":["faAngleDoubleRight"]},{"icon":"faAnglesUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngry","aliases":["faAngry"]},{"icon":"faAnkh","aliases":[]},{"icon":"faAppleAlt","aliases":["faAppleAlt"]},{"icon":"faAppleWhole","aliases":["faAppleAlt"]},{"icon":"faArchive","aliases":["faArchive"]},{"icon":"faArchway","aliases":[]},{"icon":"faAreaChart","aliases":["faAreaChart"]},{"icon":"faArrowAltCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faArrowAltCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faArrowAltCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faArrowAltCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faArrowCircleDown","aliases":["faArrowCircleDown"]},{"icon":"faArrowCircleLeft","aliases":["faArrowCircleLeft"]},{"icon":"faArrowCircleRight","aliases":["faArrowCircleRight"]},{"icon":"faArrowCircleUp","aliases":["faArrowCircleUp"]},{"icon":"faArrowDown","aliases":[]},{"icon":"faArrowDown19","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faArrowDown91","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faArrowDownAZ","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faArrowDownLong","aliases":["faLongArrowDown"]},{"icon":"faArrowDownShortWide","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faArrowDownUpAcrossLine","aliases":[]},{"icon":"faArrowDownUpLock","aliases":[]},{"icon":"faArrowDownWideShort","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faArrowDownZA","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faArrowLeft","aliases":[]},{"icon":"faArrowLeftLong","aliases":["faLongArrowLeft"]},{"icon":"faArrowLeftRotate","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowPointer","aliases":["faMousePointer"]},{"icon":"faArrowRight","aliases":[]},{"icon":"faArrowRightArrowLeft","aliases":["faExchange"]},{"icon":"faArrowRightFromBracket","aliases":["faSignOut"]},{"icon":"faArrowRightFromFile","aliases":["faArrowRightFromFile"]},{"icon":"faArrowRightLong","aliases":["faLongArrowRight"]},{"icon":"faArrowRightRotate","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRightToBracket","aliases":["faSignIn"]},{"icon":"faArrowRightToCity","aliases":[]},{"icon":"faArrowRightToFile","aliases":["faArrowRightToFile"]},{"icon":"faArrowRotateBack","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateBackward","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateForward","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRotateLeft","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateRight","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowTrendDown","aliases":[]},{"icon":"faArrowTrendUp","aliases":[]},{"icon":"faArrowTurnDown","aliases":["faLevelDown"]},{"icon":"faArrowTurnUp","aliases":["faLevelUp"]},{"icon":"faArrowUp","aliases":[]},{"icon":"faArrowUp19","aliases":["faSortNumericUp"]},{"icon":"faArrowUp91","aliases":["faSortNumericUpAlt"]},{"icon":"faArrowUpAZ","aliases":["faSortAlphaUp"]},{"icon":"faArrowUpFromBracket","aliases":[]},{"icon":"faArrowUpFromGroundWater","aliases":[]},{"icon":"faArrowUpFromWaterPump","aliases":[]},{"icon":"faArrowUpLong","aliases":["faLongArrowUp"]},{"icon":"faArrowUpRightDots","aliases":[]},{"icon":"faArrowUpRightFromSquare","aliases":["faExternalLink"]},{"icon":"faArrowUpShortWide","aliases":["faSortAmountUpAlt"]},{"icon":"faArrowUpWideShort","aliases":["faSortAmountUp"]},{"icon":"faArrowUpZA","aliases":["faSortAlphaUpAlt"]},{"icon":"faArrows","aliases":["faArrows"]},{"icon":"faArrowsAlt","aliases":["faArrowsAlt"]},{"icon":"faArrowsAltH","aliases":["faArrowsAltH"]},{"icon":"faArrowsAltV","aliases":["faArrowsAltV"]},{"icon":"faArrowsDownToLine","aliases":[]},{"icon":"faArrowsDownToPeople","aliases":[]},{"icon":"faArrowsH","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRight","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRightToLine","aliases":[]},{"icon":"faArrowsRotate","aliases":["faRefresh","faSync"]},{"icon":"faArrowsSpin","aliases":[]},{"icon":"faArrowsSplitUpAndLeft","aliases":[]},{"icon":"faArrowsToCircle","aliases":[]},{"icon":"faArrowsToDot","aliases":[]},{"icon":"faArrowsToEye","aliases":[]},{"icon":"faArrowsTurnRight","aliases":[]},{"icon":"faArrowsTurnToDots","aliases":[]},{"icon":"faArrowsUpDown","aliases":["faArrowsV"]},{"icon":"faArrowsUpDownLeftRight","aliases":["faArrows"]},{"icon":"faArrowsUpToLine","aliases":[]},{"icon":"faArrowsV","aliases":["faArrowsV"]},{"icon":"faAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAssistiveListeningSystems","aliases":["faAssistiveListeningSystems"]},{"icon":"faAsterisk","aliases":[]},{"icon":"faAt","aliases":[]},{"icon":"faAtlas","aliases":["faAtlas"]},{"icon":"faAtom","aliases":[]},{"icon":"faAudioDescription","aliases":[]},{"icon":"faAustralSign","aliases":[]},{"icon":"faAutomobile","aliases":["faAutomobile"]},{"icon":"faAward","aliases":[]},{"icon":"faB","aliases":[]},{"icon":"faBaby","aliases":[]},{"icon":"faBabyCarriage","aliases":["faCarriageBaby"]},{"icon":"faBackspace","aliases":["faBackspace"]},{"icon":"faBackward","aliases":[]},{"icon":"faBackwardFast","aliases":["faFastBackward"]},{"icon":"faBackwardStep","aliases":["faStepBackward"]},{"icon":"faBacon","aliases":[]},{"icon":"faBacteria","aliases":[]},{"icon":"faBacterium","aliases":[]},{"icon":"faBagShopping","aliases":["faShoppingBag"]},{"icon":"faBahai","aliases":["faHaykal"]},{"icon":"faBahtSign","aliases":[]},{"icon":"faBalanceScale","aliases":["faBalanceScale"]},{"icon":"faBalanceScaleLeft","aliases":["faBalanceScaleLeft"]},{"icon":"faBalanceScaleRight","aliases":["faBalanceScaleRight"]},{"icon":"faBan","aliases":["faCancel"]},{"icon":"faBanSmoking","aliases":["faSmokingBan"]},{"icon":"faBandAid","aliases":["faBandAid"]},{"icon":"faBandage","aliases":["faBandAid"]},{"icon":"faBangladeshiTakaSign","aliases":[]},{"icon":"faBank","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBarChart","aliases":["faBarChart"]},{"icon":"faBarcode","aliases":[]},{"icon":"faBars","aliases":["faNavicon"]},{"icon":"faBarsProgress","aliases":["faTasksAlt"]},{"icon":"faBarsStaggered","aliases":["faReorder","faStream"]},{"icon":"faBaseball","aliases":["faBaseballBall"]},{"icon":"faBaseballBall","aliases":["faBaseballBall"]},{"icon":"faBaseballBatBall","aliases":[]},{"icon":"faBasketShopping","aliases":["faShoppingBasket"]},{"icon":"faBasketball","aliases":["faBasketballBall"]},{"icon":"faBasketballBall","aliases":["faBasketballBall"]},{"icon":"faBath","aliases":["faBathtub"]},{"icon":"faBathtub","aliases":["faBathtub"]},{"icon":"faBattery","aliases":["faBattery","faBattery5"]},{"icon":"faBattery0","aliases":["faBattery0"]},{"icon":"faBattery2","aliases":["faBattery2"]},{"icon":"faBattery3","aliases":["faBattery3"]},{"icon":"faBattery4","aliases":["faBattery4"]},{"icon":"faBattery5","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryCar","aliases":["faBatteryCar"]},{"icon":"faBatteryEmpty","aliases":["faBattery0"]},{"icon":"faBatteryFull","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryHalf","aliases":["faBattery3"]},{"icon":"faBatteryQuarter","aliases":["faBattery2"]},{"icon":"faBatteryThreeQuarters","aliases":["faBattery4"]},{"icon":"faBed","aliases":[]},{"icon":"faBedPulse","aliases":["faProcedures"]},{"icon":"faBeer","aliases":["faBeer"]},{"icon":"faBeerMugEmpty","aliases":["faBeer"]},{"icon":"faBell","aliases":[]},{"icon":"faBellConcierge","aliases":["faConciergeBell"]},{"icon":"faBellSlash","aliases":[]},{"icon":"faBezierCurve","aliases":[]},{"icon":"faBible","aliases":["faBible"]},{"icon":"faBicycle","aliases":[]},{"icon":"faBiking","aliases":["faBiking"]},{"icon":"faBinoculars","aliases":[]},{"icon":"faBiohazard","aliases":[]},{"icon":"faBirthdayCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faBitcoinSign","aliases":[]},{"icon":"faBlackboard","aliases":["faBlackboard"]},{"icon":"faBlender","aliases":[]},{"icon":"faBlenderPhone","aliases":[]},{"icon":"faBlind","aliases":["faBlind"]},{"icon":"faBlog","aliases":[]},{"icon":"faBold","aliases":[]},{"icon":"faBolt","aliases":["faZap"]},{"icon":"faBoltLightning","aliases":[]},{"icon":"faBomb","aliases":[]},{"icon":"faBone","aliases":[]},{"icon":"faBong","aliases":[]},{"icon":"faBook","aliases":[]},{"icon":"faBookAtlas","aliases":["faAtlas"]},{"icon":"faBookBible","aliases":["faBible"]},{"icon":"faBookBookmark","aliases":[]},{"icon":"faBookDead","aliases":["faBookDead"]},{"icon":"faBookJournalWhills","aliases":["faJournalWhills"]},{"icon":"faBookMedical","aliases":[]},{"icon":"faBookOpen","aliases":[]},{"icon":"faBookOpenReader","aliases":["faBookReader"]},{"icon":"faBookQuran","aliases":["faQuran"]},{"icon":"faBookReader","aliases":["faBookReader"]},{"icon":"faBookSkull","aliases":["faBookDead"]},{"icon":"faBookTanakh","aliases":["faTanakh"]},{"icon":"faBookmark","aliases":[]},{"icon":"faBorderAll","aliases":[]},{"icon":"faBorderNone","aliases":[]},{"icon":"faBorderStyle","aliases":["faBorderStyle"]},{"icon":"faBorderTopLeft","aliases":["faBorderStyle"]},{"icon":"faBoreHole","aliases":[]},{"icon":"faBottleDroplet","aliases":[]},{"icon":"faBottleWater","aliases":[]},{"icon":"faBowlFood","aliases":[]},{"icon":"faBowlRice","aliases":[]},{"icon":"faBowlingBall","aliases":[]},{"icon":"faBox","aliases":[]},{"icon":"faBoxArchive","aliases":["faArchive"]},{"icon":"faBoxOpen","aliases":[]},{"icon":"faBoxTissue","aliases":[]},{"icon":"faBoxes","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesAlt","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesPacking","aliases":[]},{"icon":"faBoxesStacked","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBraille","aliases":[]},{"icon":"faBrain","aliases":[]},{"icon":"faBrazilianRealSign","aliases":[]},{"icon":"faBreadSlice","aliases":[]},{"icon":"faBridge","aliases":[]},{"icon":"faBridgeCircleCheck","aliases":[]},{"icon":"faBridgeCircleExclamation","aliases":[]},{"icon":"faBridgeCircleXmark","aliases":[]},{"icon":"faBridgeLock","aliases":[]},{"icon":"faBridgeWater","aliases":[]},{"icon":"faBriefcase","aliases":[]},{"icon":"faBriefcaseClock","aliases":["faBriefcaseClock"]},{"icon":"faBriefcaseMedical","aliases":[]},{"icon":"faBroadcastTower","aliases":["faBroadcastTower"]},{"icon":"faBroom","aliases":[]},{"icon":"faBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faBrush","aliases":[]},{"icon":"faBucket","aliases":[]},{"icon":"faBug","aliases":[]},{"icon":"faBugSlash","aliases":[]},{"icon":"faBugs","aliases":[]},{"icon":"faBuilding","aliases":[]},{"icon":"faBuildingCircleArrowRight","aliases":[]},{"icon":"faBuildingCircleCheck","aliases":[]},{"icon":"faBuildingCircleExclamation","aliases":[]},{"icon":"faBuildingCircleXmark","aliases":[]},{"icon":"faBuildingColumns","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBuildingFlag","aliases":[]},{"icon":"faBuildingLock","aliases":[]},{"icon":"faBuildingNgo","aliases":[]},{"icon":"faBuildingShield","aliases":[]},{"icon":"faBuildingUn","aliases":[]},{"icon":"faBuildingUser","aliases":[]},{"icon":"faBuildingWheat","aliases":[]},{"icon":"faBullhorn","aliases":[]},{"icon":"faBullseye","aliases":[]},{"icon":"faBurger","aliases":["faHamburger"]},{"icon":"faBurn","aliases":["faBurn"]},{"icon":"faBurst","aliases":[]},{"icon":"faBus","aliases":[]},{"icon":"faBusAlt","aliases":["faBusAlt"]},{"icon":"faBusSimple","aliases":["faBusAlt"]},{"icon":"faBusinessTime","aliases":["faBriefcaseClock"]},{"icon":"faC","aliases":[]},{"icon":"faCab","aliases":["faCab"]},{"icon":"faCableCar","aliases":["faTram"]},{"icon":"faCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeCandles","aliases":["faBirthdayCake","faCake"]},{"icon":"faCalculator","aliases":[]},{"icon":"faCalendar","aliases":[]},{"icon":"faCalendarAlt","aliases":["faCalendarAlt"]},{"icon":"faCalendarCheck","aliases":[]},{"icon":"faCalendarDay","aliases":[]},{"icon":"faCalendarDays","aliases":["faCalendarAlt"]},{"icon":"faCalendarMinus","aliases":[]},{"icon":"faCalendarPlus","aliases":[]},{"icon":"faCalendarTimes","aliases":["faCalendarTimes"]},{"icon":"faCalendarWeek","aliases":[]},{"icon":"faCalendarXmark","aliases":["faCalendarTimes"]},{"icon":"faCamera","aliases":["faCameraAlt"]},{"icon":"faCameraAlt","aliases":["faCameraAlt"]},{"icon":"faCameraRetro","aliases":[]},{"icon":"faCameraRotate","aliases":[]},{"icon":"faCampground","aliases":[]},{"icon":"faCancel","aliases":["faCancel"]},{"icon":"faCandyCane","aliases":[]},{"icon":"faCannabis","aliases":[]},{"icon":"faCapsules","aliases":[]},{"icon":"faCar","aliases":["faAutomobile"]},{"icon":"faCarAlt","aliases":["faCarAlt"]},{"icon":"faCarBattery","aliases":["faBatteryCar"]},{"icon":"faCarBurst","aliases":["faCarCrash"]},{"icon":"faCarCrash","aliases":["faCarCrash"]},{"icon":"faCarOn","aliases":[]},{"icon":"faCarRear","aliases":["faCarAlt"]},{"icon":"faCarSide","aliases":[]},{"icon":"faCarTunnel","aliases":[]},{"icon":"faCaravan","aliases":[]},{"icon":"faCaretDown","aliases":[]},{"icon":"faCaretLeft","aliases":[]},{"icon":"faCaretRight","aliases":[]},{"icon":"faCaretSquareDown","aliases":["faCaretSquareDown"]},{"icon":"faCaretSquareLeft","aliases":["faCaretSquareLeft"]},{"icon":"faCaretSquareRight","aliases":["faCaretSquareRight"]},{"icon":"faCaretSquareUp","aliases":["faCaretSquareUp"]},{"icon":"faCaretUp","aliases":[]},{"icon":"faCarriageBaby","aliases":["faCarriageBaby"]},{"icon":"faCarrot","aliases":[]},{"icon":"faCartArrowDown","aliases":[]},{"icon":"faCartFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faCartFlatbedSuitcase","aliases":["faLuggageCart"]},{"icon":"faCartPlus","aliases":[]},{"icon":"faCartShopping","aliases":["faShoppingCart"]},{"icon":"faCashRegister","aliases":[]},{"icon":"faCat","aliases":[]},{"icon":"faCediSign","aliases":[]},{"icon":"faCentSign","aliases":[]},{"icon":"faCertificate","aliases":[]},{"icon":"faChain","aliases":["faChain"]},{"icon":"faChainBroken","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChainSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChair","aliases":[]},{"icon":"faChalkboard","aliases":["faBlackboard"]},{"icon":"faChalkboardTeacher","aliases":["faChalkboardTeacher"]},{"icon":"faChalkboardUser","aliases":["faChalkboardTeacher"]},{"icon":"faChampagneGlasses","aliases":["faGlassCheers"]},{"icon":"faChargingStation","aliases":[]},{"icon":"faChartArea","aliases":["faAreaChart"]},{"icon":"faChartBar","aliases":["faBarChart"]},{"icon":"faChartColumn","aliases":[]},{"icon":"faChartDiagram","aliases":[]},{"icon":"faChartGantt","aliases":[]},{"icon":"faChartLine","aliases":["faLineChart"]},{"icon":"faChartPie","aliases":["faPieChart"]},{"icon":"faChartSimple","aliases":[]},{"icon":"faCheck","aliases":[]},{"icon":"faCheckCircle","aliases":["faCheckCircle"]},{"icon":"faCheckDouble","aliases":[]},{"icon":"faCheckSquare","aliases":["faCheckSquare"]},{"icon":"faCheckToSlot","aliases":["faVoteYea"]},{"icon":"faCheese","aliases":[]},{"icon":"faChess","aliases":[]},{"icon":"faChessBishop","aliases":[]},{"icon":"faChessBoard","aliases":[]},{"icon":"faChessKing","aliases":[]},{"icon":"faChessKnight","aliases":[]},{"icon":"faChessPawn","aliases":[]},{"icon":"faChessQueen","aliases":[]},{"icon":"faChessRook","aliases":[]},{"icon":"faChevronCircleDown","aliases":["faChevronCircleDown"]},{"icon":"faChevronCircleLeft","aliases":["faChevronCircleLeft"]},{"icon":"faChevronCircleRight","aliases":["faChevronCircleRight"]},{"icon":"faChevronCircleUp","aliases":["faChevronCircleUp"]},{"icon":"faChevronDown","aliases":[]},{"icon":"faChevronLeft","aliases":[]},{"icon":"faChevronRight","aliases":[]},{"icon":"faChevronUp","aliases":[]},{"icon":"faChild","aliases":[]},{"icon":"faChildCombatant","aliases":["faChildRifle"]},{"icon":"faChildDress","aliases":[]},{"icon":"faChildReaching","aliases":[]},{"icon":"faChildRifle","aliases":["faChildRifle"]},{"icon":"faChildren","aliases":[]},{"icon":"faChurch","aliases":[]},{"icon":"faCircle","aliases":[]},{"icon":"faCircleArrowDown","aliases":["faArrowCircleDown"]},{"icon":"faCircleArrowLeft","aliases":["faArrowCircleLeft"]},{"icon":"faCircleArrowRight","aliases":["faArrowCircleRight"]},{"icon":"faCircleArrowUp","aliases":["faArrowCircleUp"]},{"icon":"faCircleCheck","aliases":["faCheckCircle"]},{"icon":"faCircleChevronDown","aliases":["faChevronCircleDown"]},{"icon":"faCircleChevronLeft","aliases":["faChevronCircleLeft"]},{"icon":"faCircleChevronRight","aliases":["faChevronCircleRight"]},{"icon":"faCircleChevronUp","aliases":["faChevronCircleUp"]},{"icon":"faCircleDollarToSlot","aliases":["faDonate"]},{"icon":"faCircleDot","aliases":["faDotCircle"]},{"icon":"faCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faCircleExclamation","aliases":["faExclamationCircle"]},{"icon":"faCircleH","aliases":["faHospitalSymbol"]},{"icon":"faCircleHalfStroke","aliases":["faAdjust"]},{"icon":"faCircleInfo","aliases":["faInfoCircle"]},{"icon":"faCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faCircleMinus","aliases":["faMinusCircle"]},{"icon":"faCircleNodes","aliases":[]},{"icon":"faCircleNotch","aliases":[]},{"icon":"faCirclePause","aliases":["faPauseCircle"]},{"icon":"faCirclePlay","aliases":["faPlayCircle"]},{"icon":"faCirclePlus","aliases":["faPlusCircle"]},{"icon":"faCircleQuestion","aliases":["faQuestionCircle"]},{"icon":"faCircleRadiation","aliases":["faRadiationAlt"]},{"icon":"faCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faCircleStop","aliases":["faStopCircle"]},{"icon":"faCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faCircleUser","aliases":["faUserCircle"]},{"icon":"faCircleXmark","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faCity","aliases":[]},{"icon":"faClapperboard","aliases":[]},{"icon":"faClinicMedical","aliases":["faClinicMedical"]},{"icon":"faClipboard","aliases":[]},{"icon":"faClipboardCheck","aliases":[]},{"icon":"faClipboardList","aliases":[]},{"icon":"faClipboardQuestion","aliases":[]},{"icon":"faClipboardUser","aliases":[]},{"icon":"faClock","aliases":["faClockFour"]},{"icon":"faClockFour","aliases":["faClockFour"]},{"icon":"faClockRotateLeft","aliases":["faHistory"]},{"icon":"faClone","aliases":[]},{"icon":"faClose","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faClosedCaptioning","aliases":[]},{"icon":"faCloud","aliases":[]},{"icon":"faCloudArrowDown","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudArrowUp","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudBolt","aliases":["faThunderstorm"]},{"icon":"faCloudDownload","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDownloadAlt","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudMeatball","aliases":[]},{"icon":"faCloudMoon","aliases":[]},{"icon":"faCloudMoonRain","aliases":[]},{"icon":"faCloudRain","aliases":[]},{"icon":"faCloudShowersHeavy","aliases":[]},{"icon":"faCloudShowersWater","aliases":[]},{"icon":"faCloudSun","aliases":[]},{"icon":"faCloudSunRain","aliases":[]},{"icon":"faCloudUpload","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudUploadAlt","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faClover","aliases":[]},{"icon":"faCny","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faCocktail","aliases":["faCocktail"]},{"icon":"faCode","aliases":[]},{"icon":"faCodeBranch","aliases":[]},{"icon":"faCodeCommit","aliases":[]},{"icon":"faCodeCompare","aliases":[]},{"icon":"faCodeFork","aliases":[]},{"icon":"faCodeMerge","aliases":[]},{"icon":"faCodePullRequest","aliases":[]},{"icon":"faCoffee","aliases":["faCoffee"]},{"icon":"faCog","aliases":["faCog"]},{"icon":"faCogs","aliases":["faCogs"]},{"icon":"faCoins","aliases":[]},{"icon":"faColonSign","aliases":[]},{"icon":"faColumns","aliases":["faColumns"]},{"icon":"faComment","aliases":[]},{"icon":"faCommentAlt","aliases":["faCommentAlt"]},{"icon":"faCommentDollar","aliases":[]},{"icon":"faCommentDots","aliases":["faCommenting"]},{"icon":"faCommentMedical","aliases":[]},{"icon":"faCommentNodes","aliases":[]},{"icon":"faCommentSlash","aliases":[]},{"icon":"faCommentSms","aliases":["faSms"]},{"icon":"faCommenting","aliases":["faCommenting"]},{"icon":"faComments","aliases":[]},{"icon":"faCommentsDollar","aliases":[]},{"icon":"faCompactDisc","aliases":[]},{"icon":"faCompass","aliases":[]},{"icon":"faCompassDrafting","aliases":["faDraftingCompass"]},{"icon":"faCompress","aliases":[]},{"icon":"faCompressAlt","aliases":["faCompressAlt"]},{"icon":"faCompressArrowsAlt","aliases":["faCompressArrowsAlt"]},{"icon":"faComputer","aliases":[]},{"icon":"faComputerMouse","aliases":["faMouse"]},{"icon":"faConciergeBell","aliases":["faConciergeBell"]},{"icon":"faContactBook","aliases":["faContactBook"]},{"icon":"faContactCard","aliases":["faContactCard","faVcard"]},{"icon":"faCookie","aliases":[]},{"icon":"faCookieBite","aliases":[]},{"icon":"faCopy","aliases":[]},{"icon":"faCopyright","aliases":[]},{"icon":"faCouch","aliases":[]},{"icon":"faCow","aliases":[]},{"icon":"faCreditCard","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardAlt","aliases":["faCreditCardAlt"]},{"icon":"faCrop","aliases":[]},{"icon":"faCropAlt","aliases":["faCropAlt"]},{"icon":"faCropSimple","aliases":["faCropAlt"]},{"icon":"faCross","aliases":[]},{"icon":"faCrosshairs","aliases":[]},{"icon":"faCrow","aliases":[]},{"icon":"faCrown","aliases":[]},{"icon":"faCrutch","aliases":[]},{"icon":"faCruzeiroSign","aliases":[]},{"icon":"faCube","aliases":[]},{"icon":"faCubes","aliases":[]},{"icon":"faCubesStacked","aliases":[]},{"icon":"faCut","aliases":["faCut"]},{"icon":"faCutlery","aliases":["faCutlery"]},{"icon":"faD","aliases":[]},{"icon":"faDashboard","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faDatabase","aliases":[]},{"icon":"faDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDeafness","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDedent","aliases":["faDedent"]},{"icon":"faDeleteLeft","aliases":["faBackspace"]},{"icon":"faDemocrat","aliases":[]},{"icon":"faDesktop","aliases":["faDesktopAlt"]},{"icon":"faDesktopAlt","aliases":["faDesktopAlt"]},{"icon":"faDharmachakra","aliases":[]},{"icon":"faDiagnoses","aliases":["faDiagnoses"]},{"icon":"faDiagramNext","aliases":[]},{"icon":"faDiagramPredecessor","aliases":[]},{"icon":"faDiagramProject","aliases":["faProjectDiagram"]},{"icon":"faDiagramSuccessor","aliases":[]},{"icon":"faDiamond","aliases":[]},{"icon":"faDiamondTurnRight","aliases":["faDirections"]},{"icon":"faDice","aliases":[]},{"icon":"faDiceD20","aliases":[]},{"icon":"faDiceD6","aliases":[]},{"icon":"faDiceFive","aliases":[]},{"icon":"faDiceFour","aliases":[]},{"icon":"faDiceOne","aliases":[]},{"icon":"faDiceSix","aliases":[]},{"icon":"faDiceThree","aliases":[]},{"icon":"faDiceTwo","aliases":[]},{"icon":"faDigging","aliases":["faDigging"]},{"icon":"faDigitalTachograph","aliases":["faDigitalTachograph"]},{"icon":"faDirections","aliases":["faDirections"]},{"icon":"faDisease","aliases":[]},{"icon":"faDisplay","aliases":[]},{"icon":"faDivide","aliases":[]},{"icon":"faDizzy","aliases":["faDizzy"]},{"icon":"faDna","aliases":[]},{"icon":"faDog","aliases":[]},{"icon":"faDollar","aliases":["faDollar","faUsd"]},{"icon":"faDollarSign","aliases":["faDollar","faUsd"]},{"icon":"faDolly","aliases":["faDollyBox"]},{"icon":"faDollyBox","aliases":["faDollyBox"]},{"icon":"faDollyFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faDonate","aliases":["faDonate"]},{"icon":"faDongSign","aliases":[]},{"icon":"faDoorClosed","aliases":[]},{"icon":"faDoorOpen","aliases":[]},{"icon":"faDotCircle","aliases":["faDotCircle"]},{"icon":"faDove","aliases":[]},{"icon":"faDownLeftAndUpRightToCenter","aliases":["faCompressAlt"]},{"icon":"faDownLong","aliases":["faLongArrowAltDown"]},{"icon":"faDownload","aliases":[]},{"icon":"faDraftingCompass","aliases":["faDraftingCompass"]},{"icon":"faDragon","aliases":[]},{"icon":"faDrawPolygon","aliases":[]},{"icon":"faDriversLicense","aliases":["faDriversLicense"]},{"icon":"faDroplet","aliases":["faTint"]},{"icon":"faDropletSlash","aliases":["faTintSlash"]},{"icon":"faDrum","aliases":[]},{"icon":"faDrumSteelpan","aliases":[]},{"icon":"faDrumstickBite","aliases":[]},{"icon":"faDumbbell","aliases":[]},{"icon":"faDumpster","aliases":[]},{"icon":"faDumpsterFire","aliases":[]},{"icon":"faDungeon","aliases":[]},{"icon":"faE","aliases":[]},{"icon":"faEarDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faEarListen","aliases":["faAssistiveListeningSystems"]},{"icon":"faEarth","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAfrica","aliases":["faGlobeAfrica"]},{"icon":"faEarthAmerica","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAsia","aliases":["faGlobeAsia"]},{"icon":"faEarthEurope","aliases":["faGlobeEurope"]},{"icon":"faEarthOceania","aliases":["faGlobeOceania"]},{"icon":"faEdit","aliases":["faEdit"]},{"icon":"faEgg","aliases":[]},{"icon":"faEject","aliases":[]},{"icon":"faElevator","aliases":[]},{"icon":"faEllipsis","aliases":["faEllipsisH"]},{"icon":"faEllipsisH","aliases":["faEllipsisH"]},{"icon":"faEllipsisV","aliases":["faEllipsisV"]},{"icon":"faEllipsisVertical","aliases":["faEllipsisV"]},{"icon":"faEnvelope","aliases":[]},{"icon":"faEnvelopeCircleCheck","aliases":[]},{"icon":"faEnvelopeOpen","aliases":[]},{"icon":"faEnvelopeOpenText","aliases":[]},{"icon":"faEnvelopeSquare","aliases":["faEnvelopeSquare"]},{"icon":"faEnvelopesBulk","aliases":["faMailBulk"]},{"icon":"faEquals","aliases":[]},{"icon":"faEraser","aliases":[]},{"icon":"faEthernet","aliases":[]},{"icon":"faEur","aliases":["faEur","faEuro"]},{"icon":"faEuro","aliases":["faEur","faEuro"]},{"icon":"faEuroSign","aliases":["faEur","faEuro"]},{"icon":"faExchange","aliases":["faExchange"]},{"icon":"faExchangeAlt","aliases":["faExchangeAlt"]},{"icon":"faExclamation","aliases":[]},{"icon":"faExclamationCircle","aliases":["faExclamationCircle"]},{"icon":"faExclamationTriangle","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faExpand","aliases":[]},{"icon":"faExpandAlt","aliases":["faExpandAlt"]},{"icon":"faExpandArrowsAlt","aliases":["faExpandArrowsAlt"]},{"icon":"faExplosion","aliases":[]},{"icon":"faExternalLink","aliases":["faExternalLink"]},{"icon":"faExternalLinkAlt","aliases":["faExternalLinkAlt"]},{"icon":"faExternalLinkSquare","aliases":["faExternalLinkSquare"]},{"icon":"faExternalLinkSquareAlt","aliases":["faExternalLinkSquareAlt"]},{"icon":"faEye","aliases":[]},{"icon":"faEyeDropper","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperEmpty","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeLowVision","aliases":["faLowVision"]},{"icon":"faEyeSlash","aliases":[]},{"icon":"faF","aliases":[]},{"icon":"faFaceAngry","aliases":["faAngry"]},{"icon":"faFaceDizzy","aliases":["faDizzy"]},{"icon":"faFaceFlushed","aliases":["faFlushed"]},{"icon":"faFaceFrown","aliases":["faFrown"]},{"icon":"faFaceFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFaceGrimace","aliases":["faGrimace"]},{"icon":"faFaceGrin","aliases":["faGrin"]},{"icon":"faFaceGrinBeam","aliases":["faGrinBeam"]},{"icon":"faFaceGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faFaceGrinHearts","aliases":["faGrinHearts"]},{"icon":"faFaceGrinSquint","aliases":["faGrinSquint"]},{"icon":"faFaceGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faFaceGrinStars","aliases":["faGrinStars"]},{"icon":"faFaceGrinTears","aliases":["faGrinTears"]},{"icon":"faFaceGrinTongue","aliases":["faGrinTongue"]},{"icon":"faFaceGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faFaceGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faFaceGrinWide","aliases":["faGrinAlt"]},{"icon":"faFaceGrinWink","aliases":["faGrinWink"]},{"icon":"faFaceKiss","aliases":["faKiss"]},{"icon":"faFaceKissBeam","aliases":["faKissBeam"]},{"icon":"faFaceKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faFaceLaugh","aliases":["faLaugh"]},{"icon":"faFaceLaughBeam","aliases":["faLaughBeam"]},{"icon":"faFaceLaughSquint","aliases":["faLaughSquint"]},{"icon":"faFaceLaughWink","aliases":["faLaughWink"]},{"icon":"faFaceMeh","aliases":["faMeh"]},{"icon":"faFaceMehBlank","aliases":["faMehBlank"]},{"icon":"faFaceRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faFaceSadCry","aliases":["faSadCry"]},{"icon":"faFaceSadTear","aliases":["faSadTear"]},{"icon":"faFaceSmile","aliases":["faSmile"]},{"icon":"faFaceSmileBeam","aliases":["faSmileBeam"]},{"icon":"faFaceSmileWink","aliases":["faSmileWink"]},{"icon":"faFaceSurprise","aliases":["faSurprise"]},{"icon":"faFaceTired","aliases":["faTired"]},{"icon":"faFan","aliases":[]},{"icon":"faFastBackward","aliases":["faFastBackward"]},{"icon":"faFastForward","aliases":["faFastForward"]},{"icon":"faFaucet","aliases":[]},{"icon":"faFaucetDrip","aliases":[]},{"icon":"faFax","aliases":[]},{"icon":"faFeather","aliases":[]},{"icon":"faFeatherAlt","aliases":["faFeatherAlt"]},{"icon":"faFeatherPointed","aliases":["faFeatherAlt"]},{"icon":"faFeed","aliases":["faFeed"]},{"icon":"faFemale","aliases":["faFemale"]},{"icon":"faFerry","aliases":[]},{"icon":"faFighterJet","aliases":["faFighterJet"]},{"icon":"faFile","aliases":[]},{"icon":"faFileAlt","aliases":["faFileAlt","faFileText"]},{"icon":"faFileArchive","aliases":["faFileArchive"]},{"icon":"faFileArrowDown","aliases":["faFileDownload"]},{"icon":"faFileArrowUp","aliases":["faFileUpload"]},{"icon":"faFileAudio","aliases":[]},{"icon":"faFileCircleCheck","aliases":[]},{"icon":"faFileCircleExclamation","aliases":[]},{"icon":"faFileCircleMinus","aliases":[]},{"icon":"faFileCirclePlus","aliases":[]},{"icon":"faFileCircleQuestion","aliases":[]},{"icon":"faFileCircleXmark","aliases":[]},{"icon":"faFileClipboard","aliases":["faFileClipboard"]},{"icon":"faFileCode","aliases":[]},{"icon":"faFileContract","aliases":[]},{"icon":"faFileCsv","aliases":[]},{"icon":"faFileDownload","aliases":["faFileDownload"]},{"icon":"faFileEdit","aliases":["faFileEdit"]},{"icon":"faFileExcel","aliases":[]},{"icon":"faFileExport","aliases":["faArrowRightFromFile"]},{"icon":"faFileFragment","aliases":[]},{"icon":"faFileHalfDashed","aliases":[]},{"icon":"faFileImage","aliases":[]},{"icon":"faFileImport","aliases":["faArrowRightToFile"]},{"icon":"faFileInvoice","aliases":[]},{"icon":"faFileInvoiceDollar","aliases":[]},{"icon":"faFileLines","aliases":["faFileAlt","faFileText"]},{"icon":"faFileMedical","aliases":[]},{"icon":"faFileMedicalAlt","aliases":["faFileMedicalAlt"]},{"icon":"faFilePdf","aliases":[]},{"icon":"faFilePen","aliases":["faFileEdit"]},{"icon":"faFilePowerpoint","aliases":[]},{"icon":"faFilePrescription","aliases":[]},{"icon":"faFileShield","aliases":[]},{"icon":"faFileSignature","aliases":[]},{"icon":"faFileText","aliases":["faFileAlt","faFileText"]},{"icon":"faFileUpload","aliases":["faFileUpload"]},{"icon":"faFileVideo","aliases":[]},{"icon":"faFileWaveform","aliases":["faFileMedicalAlt"]},{"icon":"faFileWord","aliases":[]},{"icon":"faFileZipper","aliases":["faFileArchive"]},{"icon":"faFill","aliases":[]},{"icon":"faFillDrip","aliases":[]},{"icon":"faFilm","aliases":[]},{"icon":"faFilter","aliases":[]},{"icon":"faFilterCircleDollar","aliases":["faFunnelDollar"]},{"icon":"faFilterCircleXmark","aliases":[]},{"icon":"faFingerprint","aliases":[]},{"icon":"faFire","aliases":[]},{"icon":"faFireAlt","aliases":["faFireAlt"]},{"icon":"faFireBurner","aliases":[]},{"icon":"faFireExtinguisher","aliases":[]},{"icon":"faFireFlameCurved","aliases":["faFireAlt"]},{"icon":"faFireFlameSimple","aliases":["faBurn"]},{"icon":"faFirstAid","aliases":["faFirstAid"]},{"icon":"faFish","aliases":[]},{"icon":"faFishFins","aliases":[]},{"icon":"faFistRaised","aliases":["faFistRaised"]},{"icon":"faFlag","aliases":[]},{"icon":"faFlagCheckered","aliases":[]},{"icon":"faFlagUsa","aliases":[]},{"icon":"faFlask","aliases":[]},{"icon":"faFlaskVial","aliases":[]},{"icon":"faFloppyDisk","aliases":["faSave"]},{"icon":"faFlorinSign","aliases":[]},{"icon":"faFlushed","aliases":["faFlushed"]},{"icon":"faFolder","aliases":["faFolderBlank"]},{"icon":"faFolderBlank","aliases":["faFolderBlank"]},{"icon":"faFolderClosed","aliases":[]},{"icon":"faFolderMinus","aliases":[]},{"icon":"faFolderOpen","aliases":[]},{"icon":"faFolderPlus","aliases":[]},{"icon":"faFolderTree","aliases":[]},{"icon":"faFont","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFootball","aliases":["faFootballBall"]},{"icon":"faFootballBall","aliases":["faFootballBall"]},{"icon":"faForward","aliases":[]},{"icon":"faForwardFast","aliases":["faFastForward"]},{"icon":"faForwardStep","aliases":["faStepForward"]},{"icon":"faFrancSign","aliases":[]},{"icon":"faFrog","aliases":[]},{"icon":"faFrown","aliases":["faFrown"]},{"icon":"faFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFunnelDollar","aliases":["faFunnelDollar"]},{"icon":"faFutbol","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faFutbolBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faG","aliases":[]},{"icon":"faGamepad","aliases":[]},{"icon":"faGasPump","aliases":[]},{"icon":"faGauge","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeHigh","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faGaugeMed","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeSimple","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleHigh","aliases":["faTachometer","faTachometerFast"]},{"icon":"faGaugeSimpleMed","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGavel","aliases":["faLegal"]},{"icon":"faGbp","aliases":["faGbp","faPoundSign"]},{"icon":"faGear","aliases":["faCog"]},{"icon":"faGears","aliases":["faCogs"]},{"icon":"faGem","aliases":[]},{"icon":"faGenderless","aliases":[]},{"icon":"faGhost","aliases":[]},{"icon":"faGift","aliases":[]},{"icon":"faGifts","aliases":[]},{"icon":"faGlassCheers","aliases":["faGlassCheers"]},{"icon":"faGlassMartini","aliases":["faGlassMartini"]},{"icon":"faGlassMartiniAlt","aliases":["faGlassMartiniAlt"]},{"icon":"faGlassWater","aliases":[]},{"icon":"faGlassWaterDroplet","aliases":[]},{"icon":"faGlassWhiskey","aliases":["faGlassWhiskey"]},{"icon":"faGlasses","aliases":[]},{"icon":"faGlobe","aliases":[]},{"icon":"faGlobeAfrica","aliases":["faGlobeAfrica"]},{"icon":"faGlobeAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faGlobeAsia","aliases":["faGlobeAsia"]},{"icon":"faGlobeEurope","aliases":["faGlobeEurope"]},{"icon":"faGlobeOceania","aliases":["faGlobeOceania"]},{"icon":"faGolfBall","aliases":["faGolfBall"]},{"icon":"faGolfBallTee","aliases":["faGolfBall"]},{"icon":"faGopuram","aliases":[]},{"icon":"faGraduationCap","aliases":["faMortarBoard"]},{"icon":"faGreaterThan","aliases":[]},{"icon":"faGreaterThanEqual","aliases":[]},{"icon":"faGrimace","aliases":["faGrimace"]},{"icon":"faGrin","aliases":["faGrin"]},{"icon":"faGrinAlt","aliases":["faGrinAlt"]},{"icon":"faGrinBeam","aliases":["faGrinBeam"]},{"icon":"faGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faGrinHearts","aliases":["faGrinHearts"]},{"icon":"faGrinSquint","aliases":["faGrinSquint"]},{"icon":"faGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faGrinStars","aliases":["faGrinStars"]},{"icon":"faGrinTears","aliases":["faGrinTears"]},{"icon":"faGrinTongue","aliases":["faGrinTongue"]},{"icon":"faGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faGrinWink","aliases":["faGrinWink"]},{"icon":"faGrip","aliases":["faGripHorizontal"]},{"icon":"faGripHorizontal","aliases":["faGripHorizontal"]},{"icon":"faGripLines","aliases":[]},{"icon":"faGripLinesVertical","aliases":[]},{"icon":"faGripVertical","aliases":[]},{"icon":"faGroupArrowsRotate","aliases":[]},{"icon":"faGuaraniSign","aliases":[]},{"icon":"faGuitar","aliases":[]},{"icon":"faGun","aliases":[]},{"icon":"faH","aliases":[]},{"icon":"faHSquare","aliases":["faHSquare"]},{"icon":"faHamburger","aliases":["faHamburger"]},{"icon":"faHammer","aliases":[]},{"icon":"faHamsa","aliases":[]},{"icon":"faHand","aliases":["faHandPaper"]},{"icon":"faHandBackFist","aliases":["faHandRock"]},{"icon":"faHandDots","aliases":["faAllergies"]},{"icon":"faHandFist","aliases":["faFistRaised"]},{"icon":"faHandHolding","aliases":[]},{"icon":"faHandHoldingDollar","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingDroplet","aliases":["faHandHoldingWater"]},{"icon":"faHandHoldingHand","aliases":[]},{"icon":"faHandHoldingHeart","aliases":[]},{"icon":"faHandHoldingMedical","aliases":[]},{"icon":"faHandHoldingUsd","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingWater","aliases":["faHandHoldingWater"]},{"icon":"faHandLizard","aliases":[]},{"icon":"faHandMiddleFinger","aliases":[]},{"icon":"faHandPaper","aliases":["faHandPaper"]},{"icon":"faHandPeace","aliases":[]},{"icon":"faHandPointDown","aliases":[]},{"icon":"faHandPointLeft","aliases":[]},{"icon":"faHandPointRight","aliases":[]},{"icon":"faHandPointUp","aliases":[]},{"icon":"faHandPointer","aliases":[]},{"icon":"faHandRock","aliases":["faHandRock"]},{"icon":"faHandScissors","aliases":[]},{"icon":"faHandSparkles","aliases":[]},{"icon":"faHandSpock","aliases":[]},{"icon":"faHandcuffs","aliases":[]},{"icon":"faHands","aliases":["faSignLanguage","faSigning"]},{"icon":"faHandsAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsBound","aliases":[]},{"icon":"faHandsBubbles","aliases":["faHandsWash"]},{"icon":"faHandsClapping","aliases":[]},{"icon":"faHandsHelping","aliases":["faHandsHelping"]},{"icon":"faHandsHolding","aliases":[]},{"icon":"faHandsHoldingChild","aliases":[]},{"icon":"faHandsHoldingCircle","aliases":[]},{"icon":"faHandsPraying","aliases":["faPrayingHands"]},{"icon":"faHandsWash","aliases":["faHandsWash"]},{"icon":"faHandshake","aliases":[]},{"icon":"faHandshakeAlt","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeAltSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeAngle","aliases":["faHandsHelping"]},{"icon":"faHandshakeSimple","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeSimpleSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeSlash","aliases":[]},{"icon":"faHanukiah","aliases":[]},{"icon":"faHardDrive","aliases":["faHdd"]},{"icon":"faHardHat","aliases":["faHardHat","faHatHard"]},{"icon":"faHardOfHearing","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faHashtag","aliases":[]},{"icon":"faHatCowboy","aliases":[]},{"icon":"faHatCowboySide","aliases":[]},{"icon":"faHatHard","aliases":["faHardHat","faHatHard"]},{"icon":"faHatWizard","aliases":[]},{"icon":"faHaykal","aliases":["faHaykal"]},{"icon":"faHdd","aliases":["faHdd"]},{"icon":"faHeadSideCough","aliases":[]},{"icon":"faHeadSideCoughSlash","aliases":[]},{"icon":"faHeadSideMask","aliases":[]},{"icon":"faHeadSideVirus","aliases":[]},{"icon":"faHeader","aliases":["faHeader"]},{"icon":"faHeading","aliases":["faHeader"]},{"icon":"faHeadphones","aliases":[]},{"icon":"faHeadphonesAlt","aliases":["faHeadphonesAlt"]},{"icon":"faHeadphonesSimple","aliases":["faHeadphonesAlt"]},{"icon":"faHeadset","aliases":[]},{"icon":"faHeart","aliases":[]},{"icon":"faHeartBroken","aliases":["faHeartBroken"]},{"icon":"faHeartCircleBolt","aliases":[]},{"icon":"faHeartCircleCheck","aliases":[]},{"icon":"faHeartCircleExclamation","aliases":[]},{"icon":"faHeartCircleMinus","aliases":[]},{"icon":"faHeartCirclePlus","aliases":[]},{"icon":"faHeartCircleXmark","aliases":[]},{"icon":"faHeartCrack","aliases":["faHeartBroken"]},{"icon":"faHeartMusicCameraBolt","aliases":["faHeartMusicCameraBolt"]},{"icon":"faHeartPulse","aliases":["faHeartbeat"]},{"icon":"faHeartbeat","aliases":["faHeartbeat"]},{"icon":"faHelicopter","aliases":[]},{"icon":"faHelicopterSymbol","aliases":[]},{"icon":"faHelmetSafety","aliases":["faHardHat","faHatHard"]},{"icon":"faHelmetUn","aliases":[]},{"icon":"faHexagonNodes","aliases":[]},{"icon":"faHexagonNodesBolt","aliases":[]},{"icon":"faHighlighter","aliases":[]},{"icon":"faHiking","aliases":["faHiking"]},{"icon":"faHillAvalanche","aliases":[]},{"icon":"faHillRockslide","aliases":[]},{"icon":"faHippo","aliases":[]},{"icon":"faHistory","aliases":["faHistory"]},{"icon":"faHockeyPuck","aliases":[]},{"icon":"faHollyBerry","aliases":[]},{"icon":"faHome","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeLg","aliases":["faHomeLg"]},{"icon":"faHomeLgAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeUser","aliases":["faHomeUser"]},{"icon":"faHorse","aliases":[]},{"icon":"faHorseHead","aliases":[]},{"icon":"faHospital","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalAlt","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalSymbol","aliases":["faHospitalSymbol"]},{"icon":"faHospitalUser","aliases":[]},{"icon":"faHospitalWide","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHotTub","aliases":["faHotTub"]},{"icon":"faHotTubPerson","aliases":["faHotTub"]},{"icon":"faHotdog","aliases":[]},{"icon":"faHotel","aliases":[]},{"icon":"faHourglass","aliases":["faHourglassEmpty"]},{"icon":"faHourglass1","aliases":["faHourglass1"]},{"icon":"faHourglass2","aliases":["faHourglass2"]},{"icon":"faHourglass3","aliases":["faHourglass3"]},{"icon":"faHourglassEmpty","aliases":["faHourglassEmpty"]},{"icon":"faHourglassEnd","aliases":["faHourglass3"]},{"icon":"faHourglassHalf","aliases":["faHourglass2"]},{"icon":"faHourglassStart","aliases":["faHourglass1"]},{"icon":"faHouse","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHouseChimney","aliases":["faHomeLg"]},{"icon":"faHouseChimneyCrack","aliases":["faHouseDamage"]},{"icon":"faHouseChimneyMedical","aliases":["faClinicMedical"]},{"icon":"faHouseChimneyUser","aliases":[]},{"icon":"faHouseChimneyWindow","aliases":[]},{"icon":"faHouseCircleCheck","aliases":[]},{"icon":"faHouseCircleExclamation","aliases":[]},{"icon":"faHouseCircleXmark","aliases":[]},{"icon":"faHouseCrack","aliases":[]},{"icon":"faHouseDamage","aliases":["faHouseDamage"]},{"icon":"faHouseFire","aliases":[]},{"icon":"faHouseFlag","aliases":[]},{"icon":"faHouseFloodWater","aliases":[]},{"icon":"faHouseFloodWaterCircleArrowRight","aliases":[]},{"icon":"faHouseLaptop","aliases":["faLaptopHouse"]},{"icon":"faHouseLock","aliases":[]},{"icon":"faHouseMedical","aliases":[]},{"icon":"faHouseMedicalCircleCheck","aliases":[]},{"icon":"faHouseMedicalCircleExclamation","aliases":[]},{"icon":"faHouseMedicalCircleXmark","aliases":[]},{"icon":"faHouseMedicalFlag","aliases":[]},{"icon":"faHouseSignal","aliases":[]},{"icon":"faHouseTsunami","aliases":[]},{"icon":"faHouseUser","aliases":["faHomeUser"]},{"icon":"faHryvnia","aliases":["faHryvnia"]},{"icon":"faHryvniaSign","aliases":["faHryvnia"]},{"icon":"faHurricane","aliases":[]},{"icon":"faI","aliases":[]},{"icon":"faICursor","aliases":[]},{"icon":"faIceCream","aliases":[]},{"icon":"faIcicles","aliases":[]},{"icon":"faIcons","aliases":["faHeartMusicCameraBolt"]},{"icon":"faIdBadge","aliases":[]},{"icon":"faIdCard","aliases":["faDriversLicense"]},{"icon":"faIdCardAlt","aliases":["faIdCardAlt"]},{"icon":"faIdCardClip","aliases":["faIdCardAlt"]},{"icon":"faIgloo","aliases":[]},{"icon":"faIls","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faImage","aliases":[]},{"icon":"faImagePortrait","aliases":["faPortrait"]},{"icon":"faImages","aliases":[]},{"icon":"faInbox","aliases":[]},{"icon":"faIndent","aliases":[]},{"icon":"faIndianRupee","aliases":["faIndianRupee","faInr"]},{"icon":"faIndianRupeeSign","aliases":["faIndianRupee","faInr"]},{"icon":"faIndustry","aliases":[]},{"icon":"faInfinity","aliases":[]},{"icon":"faInfo","aliases":[]},{"icon":"faInfoCircle","aliases":["faInfoCircle"]},{"icon":"faInr","aliases":["faIndianRupee","faInr"]},{"icon":"faInstitution","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faItalic","aliases":[]},{"icon":"faJ","aliases":[]},{"icon":"faJar","aliases":[]},{"icon":"faJarWheat","aliases":[]},{"icon":"faJedi","aliases":[]},{"icon":"faJetFighter","aliases":["faFighterJet"]},{"icon":"faJetFighterUp","aliases":[]},{"icon":"faJoint","aliases":[]},{"icon":"faJournalWhills","aliases":["faJournalWhills"]},{"icon":"faJpy","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faJugDetergent","aliases":[]},{"icon":"faK","aliases":[]},{"icon":"faKaaba","aliases":[]},{"icon":"faKey","aliases":[]},{"icon":"faKeyboard","aliases":[]},{"icon":"faKhanda","aliases":[]},{"icon":"faKipSign","aliases":[]},{"icon":"faKiss","aliases":["faKiss"]},{"icon":"faKissBeam","aliases":["faKissBeam"]},{"icon":"faKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faKitMedical","aliases":["faFirstAid"]},{"icon":"faKitchenSet","aliases":[]},{"icon":"faKiwiBird","aliases":[]},{"icon":"faKrw","aliases":["faKrw","faWon"]},{"icon":"faL","aliases":[]},{"icon":"faLadderWater","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faLandMineOn","aliases":[]},{"icon":"faLandmark","aliases":[]},{"icon":"faLandmarkAlt","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkDome","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkFlag","aliases":[]},{"icon":"faLanguage","aliases":[]},{"icon":"faLaptop","aliases":[]},{"icon":"faLaptopCode","aliases":[]},{"icon":"faLaptopFile","aliases":[]},{"icon":"faLaptopHouse","aliases":["faLaptopHouse"]},{"icon":"faLaptopMedical","aliases":[]},{"icon":"faLariSign","aliases":[]},{"icon":"faLaugh","aliases":["faLaugh"]},{"icon":"faLaughBeam","aliases":["faLaughBeam"]},{"icon":"faLaughSquint","aliases":["faLaughSquint"]},{"icon":"faLaughWink","aliases":["faLaughWink"]},{"icon":"faLayerGroup","aliases":[]},{"icon":"faLeaf","aliases":[]},{"icon":"faLeftLong","aliases":["faLongArrowAltLeft"]},{"icon":"faLeftRight","aliases":["faArrowsAltH"]},{"icon":"faLegal","aliases":["faLegal"]},{"icon":"faLemon","aliases":[]},{"icon":"faLessThan","aliases":[]},{"icon":"faLessThanEqual","aliases":[]},{"icon":"faLevelDown","aliases":["faLevelDown"]},{"icon":"faLevelDownAlt","aliases":["faLevelDownAlt"]},{"icon":"faLevelUp","aliases":["faLevelUp"]},{"icon":"faLevelUpAlt","aliases":["faLevelUpAlt"]},{"icon":"faLifeRing","aliases":[]},{"icon":"faLightbulb","aliases":[]},{"icon":"faLineChart","aliases":["faLineChart"]},{"icon":"faLinesLeaning","aliases":[]},{"icon":"faLink","aliases":["faChain"]},{"icon":"faLinkSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faLiraSign","aliases":[]},{"icon":"faList","aliases":["faListSquares"]},{"icon":"faList12","aliases":["faList12","faListNumeric"]},{"icon":"faListAlt","aliases":["faListAlt"]},{"icon":"faListCheck","aliases":["faTasks"]},{"icon":"faListDots","aliases":["faListDots"]},{"icon":"faListNumeric","aliases":["faList12","faListNumeric"]},{"icon":"faListOl","aliases":["faList12","faListNumeric"]},{"icon":"faListSquares","aliases":["faListSquares"]},{"icon":"faListUl","aliases":["faListDots"]},{"icon":"faLitecoinSign","aliases":[]},{"icon":"faLocation","aliases":["faLocation"]},{"icon":"faLocationArrow","aliases":[]},{"icon":"faLocationCrosshairs","aliases":["faLocation"]},{"icon":"faLocationDot","aliases":["faMapMarkerAlt"]},{"icon":"faLocationPin","aliases":["faMapMarker"]},{"icon":"faLocationPinLock","aliases":[]},{"icon":"faLock","aliases":[]},{"icon":"faLockOpen","aliases":[]},{"icon":"faLocust","aliases":[]},{"icon":"faLongArrowAltDown","aliases":["faLongArrowAltDown"]},{"icon":"faLongArrowAltLeft","aliases":["faLongArrowAltLeft"]},{"icon":"faLongArrowAltRight","aliases":["faLongArrowAltRight"]},{"icon":"faLongArrowAltUp","aliases":["faLongArrowAltUp"]},{"icon":"faLongArrowDown","aliases":["faLongArrowDown"]},{"icon":"faLongArrowLeft","aliases":["faLongArrowLeft"]},{"icon":"faLongArrowRight","aliases":["faLongArrowRight"]},{"icon":"faLongArrowUp","aliases":["faLongArrowUp"]},{"icon":"faLowVision","aliases":["faLowVision"]},{"icon":"faLuggageCart","aliases":["faLuggageCart"]},{"icon":"faLungs","aliases":[]},{"icon":"faLungsVirus","aliases":[]},{"icon":"faM","aliases":[]},{"icon":"faMagic","aliases":["faMagic"]},{"icon":"faMagicWandSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faMagnet","aliases":[]},{"icon":"faMagnifyingGlass","aliases":["faSearch"]},{"icon":"faMagnifyingGlassArrowRight","aliases":[]},{"icon":"faMagnifyingGlassChart","aliases":[]},{"icon":"faMagnifyingGlassDollar","aliases":["faSearchDollar"]},{"icon":"faMagnifyingGlassLocation","aliases":["faSearchLocation"]},{"icon":"faMagnifyingGlassMinus","aliases":["faSearchMinus"]},{"icon":"faMagnifyingGlassPlus","aliases":["faSearchPlus"]},{"icon":"faMailBulk","aliases":["faMailBulk"]},{"icon":"faMailForward","aliases":["faMailForward"]},{"icon":"faMailReply","aliases":["faMailReply"]},{"icon":"faMailReplyAll","aliases":["faMailReplyAll"]},{"icon":"faMale","aliases":["faMale"]},{"icon":"faManatSign","aliases":[]},{"icon":"faMap","aliases":[]},{"icon":"faMapLocation","aliases":["faMapMarked"]},{"icon":"faMapLocationDot","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarked","aliases":["faMapMarked"]},{"icon":"faMapMarkedAlt","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarker","aliases":["faMapMarker"]},{"icon":"faMapMarkerAlt","aliases":["faMapMarkerAlt"]},{"icon":"faMapPin","aliases":[]},{"icon":"faMapSigns","aliases":["faMapSigns"]},{"icon":"faMarker","aliases":[]},{"icon":"faMars","aliases":[]},{"icon":"faMarsAndVenus","aliases":[]},{"icon":"faMarsAndVenusBurst","aliases":[]},{"icon":"faMarsDouble","aliases":[]},{"icon":"faMarsStroke","aliases":[]},{"icon":"faMarsStrokeH","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeRight","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeUp","aliases":["faMarsStrokeV"]},{"icon":"faMarsStrokeV","aliases":["faMarsStrokeV"]},{"icon":"faMartiniGlass","aliases":["faGlassMartiniAlt"]},{"icon":"faMartiniGlassCitrus","aliases":["faCocktail"]},{"icon":"faMartiniGlassEmpty","aliases":["faGlassMartini"]},{"icon":"faMask","aliases":[]},{"icon":"faMaskFace","aliases":[]},{"icon":"faMaskVentilator","aliases":[]},{"icon":"faMasksTheater","aliases":["faTheaterMasks"]},{"icon":"faMattressPillow","aliases":[]},{"icon":"faMaximize","aliases":["faExpandArrowsAlt"]},{"icon":"faMedal","aliases":[]},{"icon":"faMedkit","aliases":["faMedkit"]},{"icon":"faMeh","aliases":["faMeh"]},{"icon":"faMehBlank","aliases":["faMehBlank"]},{"icon":"faMehRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faMemory","aliases":[]},{"icon":"faMenorah","aliases":[]},{"icon":"faMercury","aliases":[]},{"icon":"faMessage","aliases":["faCommentAlt"]},{"icon":"faMeteor","aliases":[]},{"icon":"faMicrochip","aliases":[]},{"icon":"faMicrophone","aliases":[]},{"icon":"faMicrophoneAlt","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneAltSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneLines","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneLinesSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneSlash","aliases":[]},{"icon":"faMicroscope","aliases":[]},{"icon":"faMillSign","aliases":[]},{"icon":"faMinimize","aliases":["faCompressArrowsAlt"]},{"icon":"faMinus","aliases":["faSubtract"]},{"icon":"faMinusCircle","aliases":["faMinusCircle"]},{"icon":"faMinusSquare","aliases":["faMinusSquare"]},{"icon":"faMitten","aliases":[]},{"icon":"faMobile","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAlt","aliases":["faMobileAlt"]},{"icon":"faMobileAndroid","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAndroidAlt","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileButton","aliases":[]},{"icon":"faMobilePhone","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileRetro","aliases":[]},{"icon":"faMobileScreen","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileScreenButton","aliases":["faMobileAlt"]},{"icon":"faMoneyBill","aliases":[]},{"icon":"faMoneyBill1","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBill1Wave","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillAlt","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBillTransfer","aliases":[]},{"icon":"faMoneyBillTrendUp","aliases":[]},{"icon":"faMoneyBillWave","aliases":[]},{"icon":"faMoneyBillWaveAlt","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillWheat","aliases":[]},{"icon":"faMoneyBills","aliases":[]},{"icon":"faMoneyCheck","aliases":[]},{"icon":"faMoneyCheckAlt","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollar","aliases":["faMoneyCheckAlt"]},{"icon":"faMonument","aliases":[]},{"icon":"faMoon","aliases":[]},{"icon":"faMortarBoard","aliases":["faMortarBoard"]},{"icon":"faMortarPestle","aliases":[]},{"icon":"faMosque","aliases":[]},{"icon":"faMosquito","aliases":[]},{"icon":"faMosquitoNet","aliases":[]},{"icon":"faMotorcycle","aliases":[]},{"icon":"faMound","aliases":[]},{"icon":"faMountain","aliases":[]},{"icon":"faMountainCity","aliases":[]},{"icon":"faMountainSun","aliases":[]},{"icon":"faMouse","aliases":["faMouse"]},{"icon":"faMousePointer","aliases":["faMousePointer"]},{"icon":"faMugHot","aliases":[]},{"icon":"faMugSaucer","aliases":["faCoffee"]},{"icon":"faMultiply","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faMuseum","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faMusic","aliases":[]},{"icon":"faN","aliases":[]},{"icon":"faNairaSign","aliases":[]},{"icon":"faNavicon","aliases":["faNavicon"]},{"icon":"faNetworkWired","aliases":[]},{"icon":"faNeuter","aliases":[]},{"icon":"faNewspaper","aliases":[]},{"icon":"faNotEqual","aliases":[]},{"icon":"faNotdef","aliases":[]},{"icon":"faNoteSticky","aliases":["faStickyNote"]},{"icon":"faNotesMedical","aliases":[]},{"icon":"faO","aliases":[]},{"icon":"faObjectGroup","aliases":[]},{"icon":"faObjectUngroup","aliases":[]},{"icon":"faOilCan","aliases":[]},{"icon":"faOilWell","aliases":[]},{"icon":"faOm","aliases":[]},{"icon":"faOtter","aliases":[]},{"icon":"faOutdent","aliases":["faDedent"]},{"icon":"faP","aliases":[]},{"icon":"faPager","aliases":[]},{"icon":"faPaintRoller","aliases":[]},{"icon":"faPaintbrush","aliases":["faPaintBrush"]},{"icon":"faPalette","aliases":[]},{"icon":"faPallet","aliases":[]},{"icon":"faPanorama","aliases":[]},{"icon":"faPaperPlane","aliases":[]},{"icon":"faPaperclip","aliases":[]},{"icon":"faParachuteBox","aliases":[]},{"icon":"faParagraph","aliases":[]},{"icon":"faParking","aliases":["faParking"]},{"icon":"faPassport","aliases":[]},{"icon":"faPastafarianism","aliases":["faPastafarianism"]},{"icon":"faPaste","aliases":["faFileClipboard"]},{"icon":"faPause","aliases":[]},{"icon":"faPauseCircle","aliases":["faPauseCircle"]},{"icon":"faPaw","aliases":[]},{"icon":"faPeace","aliases":[]},{"icon":"faPen","aliases":[]},{"icon":"faPenAlt","aliases":["faPenAlt"]},{"icon":"faPenClip","aliases":["faPenAlt"]},{"icon":"faPenFancy","aliases":[]},{"icon":"faPenNib","aliases":[]},{"icon":"faPenRuler","aliases":["faPencilRuler"]},{"icon":"faPenSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPenToSquare","aliases":["faEdit"]},{"icon":"faPencil","aliases":["faPencilAlt"]},{"icon":"faPencilAlt","aliases":["faPencilAlt"]},{"icon":"faPencilRuler","aliases":["faPencilRuler"]},{"icon":"faPencilSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPeopleArrows","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleArrowsLeftRight","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleCarry","aliases":["faPeopleCarry"]},{"icon":"faPeopleCarryBox","aliases":["faPeopleCarry"]},{"icon":"faPeopleGroup","aliases":[]},{"icon":"faPeopleLine","aliases":[]},{"icon":"faPeoplePulling","aliases":[]},{"icon":"faPeopleRobbery","aliases":[]},{"icon":"faPeopleRoof","aliases":[]},{"icon":"faPepperHot","aliases":[]},{"icon":"faPercent","aliases":["faPercentage"]},{"icon":"faPercentage","aliases":["faPercentage"]},{"icon":"faPerson","aliases":["faMale"]},{"icon":"faPersonArrowDownToLine","aliases":[]},{"icon":"faPersonArrowUpFromLine","aliases":[]},{"icon":"faPersonBiking","aliases":["faBiking"]},{"icon":"faPersonBooth","aliases":[]},{"icon":"faPersonBreastfeeding","aliases":[]},{"icon":"faPersonBurst","aliases":[]},{"icon":"faPersonCane","aliases":[]},{"icon":"faPersonChalkboard","aliases":[]},{"icon":"faPersonCircleCheck","aliases":[]},{"icon":"faPersonCircleExclamation","aliases":[]},{"icon":"faPersonCircleMinus","aliases":[]},{"icon":"faPersonCirclePlus","aliases":[]},{"icon":"faPersonCircleQuestion","aliases":[]},{"icon":"faPersonCircleXmark","aliases":[]},{"icon":"faPersonDigging","aliases":["faDigging"]},{"icon":"faPersonDotsFromLine","aliases":["faDiagnoses"]},{"icon":"faPersonDress","aliases":["faFemale"]},{"icon":"faPersonDressBurst","aliases":[]},{"icon":"faPersonDrowning","aliases":[]},{"icon":"faPersonFalling","aliases":[]},{"icon":"faPersonFallingBurst","aliases":[]},{"icon":"faPersonHalfDress","aliases":[]},{"icon":"faPersonHarassing","aliases":[]},{"icon":"faPersonHiking","aliases":["faHiking"]},{"icon":"faPersonMilitaryPointing","aliases":[]},{"icon":"faPersonMilitaryRifle","aliases":[]},{"icon":"faPersonMilitaryToPerson","aliases":[]},{"icon":"faPersonPraying","aliases":["faPray"]},{"icon":"faPersonPregnant","aliases":[]},{"icon":"faPersonRays","aliases":[]},{"icon":"faPersonRifle","aliases":[]},{"icon":"faPersonRunning","aliases":["faRunning"]},{"icon":"faPersonShelter","aliases":[]},{"icon":"faPersonSkating","aliases":["faSkating"]},{"icon":"faPersonSkiing","aliases":["faSkiing"]},{"icon":"faPersonSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faPersonSnowboarding","aliases":["faSnowboarding"]},{"icon":"faPersonSwimming","aliases":["faSwimmer"]},{"icon":"faPersonThroughWindow","aliases":[]},{"icon":"faPersonWalking","aliases":["faWalking"]},{"icon":"faPersonWalkingArrowLoopLeft","aliases":[]},{"icon":"faPersonWalkingArrowRight","aliases":[]},{"icon":"faPersonWalkingDashedLineArrowRight","aliases":[]},{"icon":"faPersonWalkingLuggage","aliases":[]},{"icon":"faPersonWalkingWithCane","aliases":["faBlind"]},{"icon":"faPesetaSign","aliases":[]},{"icon":"faPesoSign","aliases":[]},{"icon":"faPhone","aliases":[]},{"icon":"faPhoneAlt","aliases":["faPhoneAlt"]},{"icon":"faPhoneFlip","aliases":["faPhoneAlt"]},{"icon":"faPhoneSlash","aliases":[]},{"icon":"faPhoneSquare","aliases":["faPhoneSquare"]},{"icon":"faPhoneSquareAlt","aliases":["faPhoneSquareAlt"]},{"icon":"faPhoneVolume","aliases":["faVolumeControlPhone"]},{"icon":"faPhotoFilm","aliases":["faPhotoVideo"]},{"icon":"faPhotoVideo","aliases":["faPhotoVideo"]},{"icon":"faPieChart","aliases":["faPieChart"]},{"icon":"faPiggyBank","aliases":[]},{"icon":"faPills","aliases":[]},{"icon":"faPingPongPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faPizzaSlice","aliases":[]},{"icon":"faPlaceOfWorship","aliases":[]},{"icon":"faPlane","aliases":[]},{"icon":"faPlaneArrival","aliases":[]},{"icon":"faPlaneCircleCheck","aliases":[]},{"icon":"faPlaneCircleExclamation","aliases":[]},{"icon":"faPlaneCircleXmark","aliases":[]},{"icon":"faPlaneDeparture","aliases":[]},{"icon":"faPlaneLock","aliases":[]},{"icon":"faPlaneSlash","aliases":[]},{"icon":"faPlaneUp","aliases":[]},{"icon":"faPlantWilt","aliases":[]},{"icon":"faPlateWheat","aliases":[]},{"icon":"faPlay","aliases":[]},{"icon":"faPlayCircle","aliases":["faPlayCircle"]},{"icon":"faPlug","aliases":[]},{"icon":"faPlugCircleBolt","aliases":[]},{"icon":"faPlugCircleCheck","aliases":[]},{"icon":"faPlugCircleExclamation","aliases":[]},{"icon":"faPlugCircleMinus","aliases":[]},{"icon":"faPlugCirclePlus","aliases":[]},{"icon":"faPlugCircleXmark","aliases":[]},{"icon":"faPlus","aliases":["faAdd"]},{"icon":"faPlusCircle","aliases":["faPlusCircle"]},{"icon":"faPlusMinus","aliases":[]},{"icon":"faPlusSquare","aliases":["faPlusSquare"]},{"icon":"faPodcast","aliases":[]},{"icon":"faPoll","aliases":["faPoll"]},{"icon":"faPollH","aliases":["faPollH"]},{"icon":"faPoo","aliases":[]},{"icon":"faPooBolt","aliases":["faPooBolt"]},{"icon":"faPooStorm","aliases":["faPooBolt"]},{"icon":"faPoop","aliases":[]},{"icon":"faPortrait","aliases":["faPortrait"]},{"icon":"faPoundSign","aliases":["faGbp","faPoundSign"]},{"icon":"faPowerOff","aliases":[]},{"icon":"faPray","aliases":["faPray"]},{"icon":"faPrayingHands","aliases":["faPrayingHands"]},{"icon":"faPrescription","aliases":[]},{"icon":"faPrescriptionBottle","aliases":[]},{"icon":"faPrescriptionBottleAlt","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottleMedical","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrint","aliases":[]},{"icon":"faProcedures","aliases":["faProcedures"]},{"icon":"faProjectDiagram","aliases":["faProjectDiagram"]},{"icon":"faPumpMedical","aliases":[]},{"icon":"faPumpSoap","aliases":[]},{"icon":"faPuzzlePiece","aliases":[]},{"icon":"faQ","aliases":[]},{"icon":"faQrcode","aliases":[]},{"icon":"faQuestion","aliases":[]},{"icon":"faQuestionCircle","aliases":["faQuestionCircle"]},{"icon":"faQuidditch","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuidditchBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuoteLeft","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteLeftAlt","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteRight","aliases":["faQuoteRightAlt"]},{"icon":"faQuoteRightAlt","aliases":["faQuoteRightAlt"]},{"icon":"faQuran","aliases":["faQuran"]},{"icon":"faR","aliases":[]},{"icon":"faRadiation","aliases":[]},{"icon":"faRadiationAlt","aliases":["faRadiationAlt"]},{"icon":"faRadio","aliases":[]},{"icon":"faRainbow","aliases":[]},{"icon":"faRandom","aliases":["faRandom"]},{"icon":"faRankingStar","aliases":[]},{"icon":"faReceipt","aliases":[]},{"icon":"faRecordVinyl","aliases":[]},{"icon":"faRectangleAd","aliases":["faAd"]},{"icon":"faRectangleList","aliases":["faListAlt"]},{"icon":"faRectangleTimes","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectangleXmark","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRecycle","aliases":[]},{"icon":"faRedo","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faRedoAlt","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRefresh","aliases":["faRefresh","faSync"]},{"icon":"faRegistered","aliases":[]},{"icon":"faRemove","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faRemoveFormat","aliases":["faRemoveFormat"]},{"icon":"faReorder","aliases":["faReorder","faStream"]},{"icon":"faRepeat","aliases":[]},{"icon":"faReply","aliases":["faMailReply"]},{"icon":"faReplyAll","aliases":["faMailReplyAll"]},{"icon":"faRepublican","aliases":[]},{"icon":"faRestroom","aliases":[]},{"icon":"faRetweet","aliases":[]},{"icon":"faRibbon","aliases":[]},{"icon":"faRightFromBracket","aliases":["faSignOutAlt"]},{"icon":"faRightLeft","aliases":["faExchangeAlt"]},{"icon":"faRightLong","aliases":["faLongArrowAltRight"]},{"icon":"faRightToBracket","aliases":["faSignInAlt"]},{"icon":"faRing","aliases":[]},{"icon":"faRmb","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faRoad","aliases":[]},{"icon":"faRoadBarrier","aliases":[]},{"icon":"faRoadBridge","aliases":[]},{"icon":"faRoadCircleCheck","aliases":[]},{"icon":"faRoadCircleExclamation","aliases":[]},{"icon":"faRoadCircleXmark","aliases":[]},{"icon":"faRoadLock","aliases":[]},{"icon":"faRoadSpikes","aliases":[]},{"icon":"faRobot","aliases":[]},{"icon":"faRocket","aliases":[]},{"icon":"faRodAsclepius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRodSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRotate","aliases":["faSyncAlt"]},{"icon":"faRotateBack","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateBackward","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateForward","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRotateLeft","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateRight","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRouble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRoute","aliases":[]},{"icon":"faRss","aliases":["faFeed"]},{"icon":"faRssSquare","aliases":["faRssSquare"]},{"icon":"faRub","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRuble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRubleSign","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRug","aliases":[]},{"icon":"faRuler","aliases":[]},{"icon":"faRulerCombined","aliases":[]},{"icon":"faRulerHorizontal","aliases":[]},{"icon":"faRulerVertical","aliases":[]},{"icon":"faRunning","aliases":["faRunning"]},{"icon":"faRupee","aliases":["faRupee"]},{"icon":"faRupeeSign","aliases":["faRupee"]},{"icon":"faRupiahSign","aliases":[]},{"icon":"faS","aliases":[]},{"icon":"faSackDollar","aliases":[]},{"icon":"faSackXmark","aliases":[]},{"icon":"faSadCry","aliases":["faSadCry"]},{"icon":"faSadTear","aliases":["faSadTear"]},{"icon":"faSailboat","aliases":[]},{"icon":"faSatellite","aliases":[]},{"icon":"faSatelliteDish","aliases":[]},{"icon":"faSave","aliases":["faSave"]},{"icon":"faScaleBalanced","aliases":["faBalanceScale"]},{"icon":"faScaleUnbalanced","aliases":["faBalanceScaleLeft"]},{"icon":"faScaleUnbalancedFlip","aliases":["faBalanceScaleRight"]},{"icon":"faSchool","aliases":[]},{"icon":"faSchoolCircleCheck","aliases":[]},{"icon":"faSchoolCircleExclamation","aliases":[]},{"icon":"faSchoolCircleXmark","aliases":[]},{"icon":"faSchoolFlag","aliases":[]},{"icon":"faSchoolLock","aliases":[]},{"icon":"faScissors","aliases":["faCut"]},{"icon":"faScrewdriver","aliases":[]},{"icon":"faScrewdriverWrench","aliases":["faTools"]},{"icon":"faScroll","aliases":[]},{"icon":"faScrollTorah","aliases":["faTorah"]},{"icon":"faSdCard","aliases":[]},{"icon":"faSearch","aliases":["faSearch"]},{"icon":"faSearchDollar","aliases":["faSearchDollar"]},{"icon":"faSearchLocation","aliases":["faSearchLocation"]},{"icon":"faSearchMinus","aliases":["faSearchMinus"]},{"icon":"faSearchPlus","aliases":["faSearchPlus"]},{"icon":"faSection","aliases":[]},{"icon":"faSeedling","aliases":["faSprout"]},{"icon":"faServer","aliases":[]},{"icon":"faShapes","aliases":["faTriangleCircleSquare"]},{"icon":"faShare","aliases":["faMailForward"]},{"icon":"faShareAlt","aliases":["faShareAlt"]},{"icon":"faShareAltSquare","aliases":["faShareAltSquare"]},{"icon":"faShareFromSquare","aliases":["faShareSquare"]},{"icon":"faShareNodes","aliases":["faShareAlt"]},{"icon":"faShareSquare","aliases":["faShareSquare"]},{"icon":"faSheetPlastic","aliases":[]},{"icon":"faShekel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShekelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShield","aliases":["faShieldBlank"]},{"icon":"faShieldAlt","aliases":["faShieldAlt"]},{"icon":"faShieldBlank","aliases":["faShieldBlank"]},{"icon":"faShieldCat","aliases":[]},{"icon":"faShieldDog","aliases":[]},{"icon":"faShieldHalved","aliases":["faShieldAlt"]},{"icon":"faShieldHeart","aliases":[]},{"icon":"faShieldVirus","aliases":[]},{"icon":"faShip","aliases":[]},{"icon":"faShippingFast","aliases":["faShippingFast"]},{"icon":"faShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faShoePrints","aliases":[]},{"icon":"faShop","aliases":["faStoreAlt"]},{"icon":"faShopLock","aliases":[]},{"icon":"faShopSlash","aliases":["faStoreAltSlash"]},{"icon":"faShoppingBag","aliases":["faShoppingBag"]},{"icon":"faShoppingBasket","aliases":["faShoppingBasket"]},{"icon":"faShoppingCart","aliases":["faShoppingCart"]},{"icon":"faShower","aliases":[]},{"icon":"faShrimp","aliases":[]},{"icon":"faShuffle","aliases":["faRandom"]},{"icon":"faShuttleSpace","aliases":["faSpaceShuttle"]},{"icon":"faShuttleVan","aliases":["faShuttleVan"]},{"icon":"faSign","aliases":["faSign"]},{"icon":"faSignHanging","aliases":["faSign"]},{"icon":"faSignIn","aliases":["faSignIn"]},{"icon":"faSignInAlt","aliases":["faSignInAlt"]},{"icon":"faSignLanguage","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignOut","aliases":["faSignOut"]},{"icon":"faSignOutAlt","aliases":["faSignOutAlt"]},{"icon":"faSignal","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignal5","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalPerfect","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignature","aliases":[]},{"icon":"faSigning","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignsPost","aliases":["faMapSigns"]},{"icon":"faSimCard","aliases":[]},{"icon":"faSink","aliases":[]},{"icon":"faSitemap","aliases":[]},{"icon":"faSkating","aliases":["faSkating"]},{"icon":"faSkiing","aliases":["faSkiing"]},{"icon":"faSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faSkull","aliases":[]},{"icon":"faSkullCrossbones","aliases":[]},{"icon":"faSlash","aliases":[]},{"icon":"faSleigh","aliases":[]},{"icon":"faSliders","aliases":["faSlidersH"]},{"icon":"faSlidersH","aliases":["faSlidersH"]},{"icon":"faSmile","aliases":["faSmile"]},{"icon":"faSmileBeam","aliases":["faSmileBeam"]},{"icon":"faSmileWink","aliases":["faSmileWink"]},{"icon":"faSmog","aliases":[]},{"icon":"faSmoking","aliases":[]},{"icon":"faSmokingBan","aliases":["faSmokingBan"]},{"icon":"faSms","aliases":["faSms"]},{"icon":"faSnowboarding","aliases":["faSnowboarding"]},{"icon":"faSnowflake","aliases":[]},{"icon":"faSnowman","aliases":[]},{"icon":"faSnowplow","aliases":[]},{"icon":"faSoap","aliases":[]},{"icon":"faSoccerBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faSocks","aliases":[]},{"icon":"faSolarPanel","aliases":[]},{"icon":"faSort","aliases":["faUnsorted"]},{"icon":"faSortAlphaAsc","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDesc","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaDown","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDownAlt","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaUp","aliases":["faSortAlphaUp"]},{"icon":"faSortAlphaUpAlt","aliases":["faSortAlphaUpAlt"]},{"icon":"faSortAmountAsc","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDesc","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountDown","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDownAlt","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountUp","aliases":["faSortAmountUp"]},{"icon":"faSortAmountUpAlt","aliases":["faSortAmountUpAlt"]},{"icon":"faSortAsc","aliases":["faSortAsc"]},{"icon":"faSortDesc","aliases":["faSortDesc"]},{"icon":"faSortDown","aliases":["faSortDesc"]},{"icon":"faSortNumericAsc","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDesc","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericDown","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDownAlt","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericUp","aliases":["faSortNumericUp"]},{"icon":"faSortNumericUpAlt","aliases":["faSortNumericUpAlt"]},{"icon":"faSortUp","aliases":["faSortAsc"]},{"icon":"faSpa","aliases":[]},{"icon":"faSpaceShuttle","aliases":["faSpaceShuttle"]},{"icon":"faSpaghettiMonsterFlying","aliases":["faPastafarianism"]},{"icon":"faSpellCheck","aliases":[]},{"icon":"faSpider","aliases":[]},{"icon":"faSpinner","aliases":[]},{"icon":"faSplotch","aliases":[]},{"icon":"faSpoon","aliases":["faUtensilSpoon"]},{"icon":"faSprayCan","aliases":[]},{"icon":"faSprayCanSparkles","aliases":["faAirFreshener"]},{"icon":"faSprout","aliases":["faSprout"]},{"icon":"faSquare","aliases":[]},{"icon":"faSquareArrowUpRight","aliases":["faExternalLinkSquare"]},{"icon":"faSquareBinary","aliases":[]},{"icon":"faSquareCaretDown","aliases":["faCaretSquareDown"]},{"icon":"faSquareCaretLeft","aliases":["faCaretSquareLeft"]},{"icon":"faSquareCaretRight","aliases":["faCaretSquareRight"]},{"icon":"faSquareCaretUp","aliases":["faCaretSquareUp"]},{"icon":"faSquareCheck","aliases":["faCheckSquare"]},{"icon":"faSquareEnvelope","aliases":["faEnvelopeSquare"]},{"icon":"faSquareFull","aliases":[]},{"icon":"faSquareH","aliases":["faHSquare"]},{"icon":"faSquareMinus","aliases":["faMinusSquare"]},{"icon":"faSquareNfi","aliases":[]},{"icon":"faSquareParking","aliases":["faParking"]},{"icon":"faSquarePen","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faSquarePersonConfined","aliases":[]},{"icon":"faSquarePhone","aliases":["faPhoneSquare"]},{"icon":"faSquarePhoneFlip","aliases":["faPhoneSquareAlt"]},{"icon":"faSquarePlus","aliases":["faPlusSquare"]},{"icon":"faSquarePollHorizontal","aliases":["faPollH"]},{"icon":"faSquarePollVertical","aliases":["faPoll"]},{"icon":"faSquareRootAlt","aliases":["faSquareRootAlt"]},{"icon":"faSquareRootVariable","aliases":["faSquareRootAlt"]},{"icon":"faSquareRss","aliases":["faRssSquare"]},{"icon":"faSquareShareNodes","aliases":["faShareAltSquare"]},{"icon":"faSquareUpRight","aliases":["faExternalLinkSquareAlt"]},{"icon":"faSquareVirus","aliases":[]},{"icon":"faSquareXmark","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faStaffAesculapius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStaffSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStairs","aliases":[]},{"icon":"faStamp","aliases":[]},{"icon":"faStapler","aliases":[]},{"icon":"faStar","aliases":[]},{"icon":"faStarAndCrescent","aliases":[]},{"icon":"faStarHalf","aliases":[]},{"icon":"faStarHalfAlt","aliases":["faStarHalfAlt"]},{"icon":"faStarHalfStroke","aliases":["faStarHalfAlt"]},{"icon":"faStarOfDavid","aliases":[]},{"icon":"faStarOfLife","aliases":[]},{"icon":"faStepBackward","aliases":["faStepBackward"]},{"icon":"faStepForward","aliases":["faStepForward"]},{"icon":"faSterlingSign","aliases":["faGbp","faPoundSign"]},{"icon":"faStethoscope","aliases":[]},{"icon":"faStickyNote","aliases":["faStickyNote"]},{"icon":"faStop","aliases":[]},{"icon":"faStopCircle","aliases":["faStopCircle"]},{"icon":"faStopwatch","aliases":[]},{"icon":"faStopwatch20","aliases":[]},{"icon":"faStore","aliases":[]},{"icon":"faStoreAlt","aliases":["faStoreAlt"]},{"icon":"faStoreAltSlash","aliases":["faStoreAltSlash"]},{"icon":"faStoreSlash","aliases":[]},{"icon":"faStream","aliases":["faReorder","faStream"]},{"icon":"faStreetView","aliases":[]},{"icon":"faStrikethrough","aliases":[]},{"icon":"faStroopwafel","aliases":[]},{"icon":"faSubscript","aliases":[]},{"icon":"faSubtract","aliases":["faSubtract"]},{"icon":"faSubway","aliases":["faSubway"]},{"icon":"faSuitcase","aliases":[]},{"icon":"faSuitcaseMedical","aliases":["faMedkit"]},{"icon":"faSuitcaseRolling","aliases":[]},{"icon":"faSun","aliases":[]},{"icon":"faSunPlantWilt","aliases":[]},{"icon":"faSuperscript","aliases":[]},{"icon":"faSurprise","aliases":["faSurprise"]},{"icon":"faSwatchbook","aliases":[]},{"icon":"faSwimmer","aliases":["faSwimmer"]},{"icon":"faSwimmingPool","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faSynagogue","aliases":[]},{"icon":"faSync","aliases":["faRefresh","faSync"]},{"icon":"faSyncAlt","aliases":["faSyncAlt"]},{"icon":"faSyringe","aliases":[]},{"icon":"faT","aliases":[]},{"icon":"faTShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faTable","aliases":[]},{"icon":"faTableCells","aliases":["faTh"]},{"icon":"faTableCellsColumnLock","aliases":[]},{"icon":"faTableCellsLarge","aliases":["faThLarge"]},{"icon":"faTableCellsRowLock","aliases":[]},{"icon":"faTableCellsRowUnlock","aliases":[]},{"icon":"faTableColumns","aliases":["faColumns"]},{"icon":"faTableList","aliases":["faThList"]},{"icon":"faTableTennis","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTennisPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTablet","aliases":["faTabletAndroid"]},{"icon":"faTabletAlt","aliases":["faTabletAlt"]},{"icon":"faTabletAndroid","aliases":["faTabletAndroid"]},{"icon":"faTabletButton","aliases":[]},{"icon":"faTabletScreenButton","aliases":["faTabletAlt"]},{"icon":"faTablets","aliases":[]},{"icon":"faTachographDigital","aliases":["faDigitalTachograph"]},{"icon":"faTachometer","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerAlt","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltAverage","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faTachometerAltFast","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAverage","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faTachometerFast","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTag","aliases":[]},{"icon":"faTags","aliases":[]},{"icon":"faTanakh","aliases":["faTanakh"]},{"icon":"faTape","aliases":[]},{"icon":"faTarp","aliases":[]},{"icon":"faTarpDroplet","aliases":[]},{"icon":"faTasks","aliases":["faTasks"]},{"icon":"faTasksAlt","aliases":["faTasksAlt"]},{"icon":"faTaxi","aliases":["faCab"]},{"icon":"faTeeth","aliases":[]},{"icon":"faTeethOpen","aliases":[]},{"icon":"faTeletype","aliases":["faTeletype"]},{"icon":"faTelevision","aliases":["faTelevision","faTvAlt"]},{"icon":"faTemperature0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperature1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperature2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperature3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperature4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureArrowDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureArrowUp","aliases":["faTemperatureUp"]},{"icon":"faTemperatureDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperatureFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperatureHigh","aliases":[]},{"icon":"faTemperatureLow","aliases":[]},{"icon":"faTemperatureQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperatureThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperatureUp","aliases":["faTemperatureUp"]},{"icon":"faTenge","aliases":["faTenge"]},{"icon":"faTengeSign","aliases":["faTenge"]},{"icon":"faTent","aliases":[]},{"icon":"faTentArrowDownToLine","aliases":[]},{"icon":"faTentArrowLeftRight","aliases":[]},{"icon":"faTentArrowTurnLeft","aliases":[]},{"icon":"faTentArrowsDown","aliases":[]},{"icon":"faTents","aliases":[]},{"icon":"faTerminal","aliases":[]},{"icon":"faTextHeight","aliases":[]},{"icon":"faTextSlash","aliases":["faRemoveFormat"]},{"icon":"faTextWidth","aliases":[]},{"icon":"faTh","aliases":["faTh"]},{"icon":"faThLarge","aliases":["faThLarge"]},{"icon":"faThList","aliases":["faThList"]},{"icon":"faTheaterMasks","aliases":["faTheaterMasks"]},{"icon":"faThermometer","aliases":[]},{"icon":"faThermometer0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometer1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometer2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometer3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThermometer4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometerFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometerQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometerThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThumbsDown","aliases":[]},{"icon":"faThumbsUp","aliases":[]},{"icon":"faThumbtack","aliases":["faThumbTack"]},{"icon":"faThumbtackSlash","aliases":["faThumbTackSlash"]},{"icon":"faThunderstorm","aliases":["faThunderstorm"]},{"icon":"faTicket","aliases":[]},{"icon":"faTicketAlt","aliases":["faTicketAlt"]},{"icon":"faTicketSimple","aliases":["faTicketAlt"]},{"icon":"faTimeline","aliases":[]},{"icon":"faTimes","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faTimesCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faTimesRectangle","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faTimesSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faTint","aliases":["faTint"]},{"icon":"faTintSlash","aliases":["faTintSlash"]},{"icon":"faTired","aliases":["faTired"]},{"icon":"faToggleOff","aliases":[]},{"icon":"faToggleOn","aliases":[]},{"icon":"faToilet","aliases":[]},{"icon":"faToiletPaper","aliases":[]},{"icon":"faToiletPaperSlash","aliases":[]},{"icon":"faToiletPortable","aliases":[]},{"icon":"faToiletsPortable","aliases":[]},{"icon":"faToolbox","aliases":[]},{"icon":"faTools","aliases":["faTools"]},{"icon":"faTooth","aliases":[]},{"icon":"faTorah","aliases":["faTorah"]},{"icon":"faToriiGate","aliases":[]},{"icon":"faTornado","aliases":[]},{"icon":"faTowerBroadcast","aliases":["faBroadcastTower"]},{"icon":"faTowerCell","aliases":[]},{"icon":"faTowerObservation","aliases":[]},{"icon":"faTractor","aliases":[]},{"icon":"faTrademark","aliases":[]},{"icon":"faTrafficLight","aliases":[]},{"icon":"faTrailer","aliases":[]},{"icon":"faTrain","aliases":[]},{"icon":"faTrainSubway","aliases":["faSubway"]},{"icon":"faTrainTram","aliases":[]},{"icon":"faTram","aliases":["faTram"]},{"icon":"faTransgender","aliases":["faTransgenderAlt"]},{"icon":"faTransgenderAlt","aliases":["faTransgenderAlt"]},{"icon":"faTrash","aliases":[]},{"icon":"faTrashAlt","aliases":["faTrashAlt"]},{"icon":"faTrashArrowUp","aliases":["faTrashRestore"]},{"icon":"faTrashCan","aliases":["faTrashAlt"]},{"icon":"faTrashCanArrowUp","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashRestore","aliases":["faTrashRestore"]},{"icon":"faTrashRestoreAlt","aliases":["faTrashRestoreAlt"]},{"icon":"faTree","aliases":[]},{"icon":"faTreeCity","aliases":[]},{"icon":"faTriangleCircleSquare","aliases":["faTriangleCircleSquare"]},{"icon":"faTriangleExclamation","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faTrophy","aliases":[]},{"icon":"faTrowel","aliases":[]},{"icon":"faTrowelBricks","aliases":[]},{"icon":"faTruck","aliases":[]},{"icon":"faTruckArrowRight","aliases":[]},{"icon":"faTruckDroplet","aliases":[]},{"icon":"faTruckFast","aliases":["faShippingFast"]},{"icon":"faTruckField","aliases":[]},{"icon":"faTruckFieldUn","aliases":[]},{"icon":"faTruckFront","aliases":[]},{"icon":"faTruckLoading","aliases":["faTruckLoading"]},{"icon":"faTruckMedical","aliases":["faAmbulance"]},{"icon":"faTruckMonster","aliases":[]},{"icon":"faTruckMoving","aliases":[]},{"icon":"faTruckPickup","aliases":[]},{"icon":"faTruckPlane","aliases":[]},{"icon":"faTruckRampBox","aliases":["faTruckLoading"]},{"icon":"faTry","aliases":["faTry","faTurkishLira"]},{"icon":"faTty","aliases":["faTeletype"]},{"icon":"faTurkishLira","aliases":["faTry","faTurkishLira"]},{"icon":"faTurkishLiraSign","aliases":["faTry","faTurkishLira"]},{"icon":"faTurnDown","aliases":["faLevelDownAlt"]},{"icon":"faTurnUp","aliases":["faLevelUpAlt"]},{"icon":"faTv","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvAlt","aliases":["faTelevision","faTvAlt"]},{"icon":"faU","aliases":[]},{"icon":"faUmbrella","aliases":[]},{"icon":"faUmbrellaBeach","aliases":[]},{"icon":"faUnderline","aliases":[]},{"icon":"faUndo","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faUndoAlt","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faUniversalAccess","aliases":[]},{"icon":"faUniversity","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faUnlink","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faUnlock","aliases":[]},{"icon":"faUnlockAlt","aliases":["faUnlockAlt"]},{"icon":"faUnlockKeyhole","aliases":["faUnlockAlt"]},{"icon":"faUnsorted","aliases":["faUnsorted"]},{"icon":"faUpDown","aliases":["faArrowsAltV"]},{"icon":"faUpDownLeftRight","aliases":["faArrowsAlt"]},{"icon":"faUpLong","aliases":["faLongArrowAltUp"]},{"icon":"faUpRightAndDownLeftFromCenter","aliases":["faExpandAlt"]},{"icon":"faUpRightFromSquare","aliases":["faExternalLinkAlt"]},{"icon":"faUpload","aliases":[]},{"icon":"faUsd","aliases":["faDollar","faUsd"]},{"icon":"faUser","aliases":[]},{"icon":"faUserAlt","aliases":["faUserAlt"]},{"icon":"faUserAltSlash","aliases":["faUserAltSlash"]},{"icon":"faUserAstronaut","aliases":[]},{"icon":"faUserCheck","aliases":[]},{"icon":"faUserCircle","aliases":["faUserCircle"]},{"icon":"faUserClock","aliases":[]},{"icon":"faUserCog","aliases":["faUserCog"]},{"icon":"faUserDoctor","aliases":["faUserMd"]},{"icon":"faUserEdit","aliases":["faUserEdit"]},{"icon":"faUserFriends","aliases":["faUserFriends"]},{"icon":"faUserGear","aliases":["faUserCog"]},{"icon":"faUserGraduate","aliases":[]},{"icon":"faUserGroup","aliases":["faUserFriends"]},{"icon":"faUserInjured","aliases":[]},{"icon":"faUserLarge","aliases":["faUserAlt"]},{"icon":"faUserLargeSlash","aliases":["faUserAltSlash"]},{"icon":"faUserLock","aliases":[]},{"icon":"faUserMd","aliases":["faUserMd"]},{"icon":"faUserMinus","aliases":[]},{"icon":"faUserNinja","aliases":[]},{"icon":"faUserNurse","aliases":[]},{"icon":"faUserPen","aliases":["faUserEdit"]},{"icon":"faUserPlus","aliases":[]},{"icon":"faUserSecret","aliases":[]},{"icon":"faUserShield","aliases":[]},{"icon":"faUserSlash","aliases":[]},{"icon":"faUserTag","aliases":[]},{"icon":"faUserTie","aliases":[]},{"icon":"faUserTimes","aliases":["faUserTimes"]},{"icon":"faUserXmark","aliases":["faUserTimes"]},{"icon":"faUsers","aliases":[]},{"icon":"faUsersBetweenLines","aliases":[]},{"icon":"faUsersCog","aliases":["faUsersCog"]},{"icon":"faUsersGear","aliases":["faUsersCog"]},{"icon":"faUsersLine","aliases":[]},{"icon":"faUsersRays","aliases":[]},{"icon":"faUsersRectangle","aliases":[]},{"icon":"faUsersSlash","aliases":[]},{"icon":"faUsersViewfinder","aliases":[]},{"icon":"faUtensilSpoon","aliases":["faUtensilSpoon"]},{"icon":"faUtensils","aliases":["faCutlery"]},{"icon":"faV","aliases":[]},{"icon":"faVanShuttle","aliases":["faShuttleVan"]},{"icon":"faVault","aliases":[]},{"icon":"faVcard","aliases":["faContactCard","faVcard"]},{"icon":"faVectorSquare","aliases":[]},{"icon":"faVenus","aliases":[]},{"icon":"faVenusDouble","aliases":[]},{"icon":"faVenusMars","aliases":[]},{"icon":"faVest","aliases":[]},{"icon":"faVestPatches","aliases":[]},{"icon":"faVial","aliases":[]},{"icon":"faVialCircleCheck","aliases":[]},{"icon":"faVialVirus","aliases":[]},{"icon":"faVials","aliases":[]},{"icon":"faVideo","aliases":["faVideoCamera"]},{"icon":"faVideoCamera","aliases":["faVideoCamera"]},{"icon":"faVideoSlash","aliases":[]},{"icon":"faVihara","aliases":[]},{"icon":"faVirus","aliases":[]},{"icon":"faVirusCovid","aliases":[]},{"icon":"faVirusCovidSlash","aliases":[]},{"icon":"faVirusSlash","aliases":[]},{"icon":"faViruses","aliases":[]},{"icon":"faVoicemail","aliases":[]},{"icon":"faVolcano","aliases":[]},{"icon":"faVolleyball","aliases":["faVolleyballBall"]},{"icon":"faVolleyballBall","aliases":["faVolleyballBall"]},{"icon":"faVolumeControlPhone","aliases":["faVolumeControlPhone"]},{"icon":"faVolumeDown","aliases":["faVolumeDown"]},{"icon":"faVolumeHigh","aliases":["faVolumeUp"]},{"icon":"faVolumeLow","aliases":["faVolumeDown"]},{"icon":"faVolumeMute","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeOff","aliases":[]},{"icon":"faVolumeTimes","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeUp","aliases":["faVolumeUp"]},{"icon":"faVolumeXmark","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVoteYea","aliases":["faVoteYea"]},{"icon":"faVrCardboard","aliases":[]},{"icon":"faW","aliases":[]},{"icon":"faWalkieTalkie","aliases":[]},{"icon":"faWalking","aliases":["faWalking"]},{"icon":"faWallet","aliases":[]},{"icon":"faWandMagic","aliases":["faMagic"]},{"icon":"faWandMagicSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faWandSparkles","aliases":[]},{"icon":"faWarehouse","aliases":[]},{"icon":"faWarning","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faWater","aliases":[]},{"icon":"faWaterLadder","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faWaveSquare","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWeight","aliases":["faWeight"]},{"icon":"faWeightHanging","aliases":[]},{"icon":"faWeightScale","aliases":["faWeight"]},{"icon":"faWheatAlt","aliases":["faWheatAlt"]},{"icon":"faWheatAwn","aliases":["faWheatAlt"]},{"icon":"faWheatAwnCircleExclamation","aliases":[]},{"icon":"faWheelchair","aliases":[]},{"icon":"faWheelchairAlt","aliases":["faWheelchairAlt"]},{"icon":"faWheelchairMove","aliases":["faWheelchairAlt"]},{"icon":"faWhiskeyGlass","aliases":["faGlassWhiskey"]},{"icon":"faWifi","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifi3","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiStrong","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWind","aliases":[]},{"icon":"faWindowClose","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faWindowMaximize","aliases":[]},{"icon":"faWindowMinimize","aliases":[]},{"icon":"faWindowRestore","aliases":[]},{"icon":"faWineBottle","aliases":[]},{"icon":"faWineGlass","aliases":[]},{"icon":"faWineGlassAlt","aliases":["faWineGlassAlt"]},{"icon":"faWineGlassEmpty","aliases":["faWineGlassAlt"]},{"icon":"faWon","aliases":["faKrw","faWon"]},{"icon":"faWonSign","aliases":["faKrw","faWon"]},{"icon":"faWorm","aliases":[]},{"icon":"faWrench","aliases":[]},{"icon":"faX","aliases":[]},{"icon":"faXRay","aliases":[]},{"icon":"faXmark","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faXmarkCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faXmarkSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faXmarksLines","aliases":[]},{"icon":"faY","aliases":[]},{"icon":"faYen","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYenSign","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYinYang","aliases":[]},{"icon":"faZ","aliases":[]},{"icon":"faZap","aliases":["faZap"]}],"prefix":"fas"},"@fortawesome/free-brands-svg-icons":{"icons":[{"icon":"fa42Group","aliases":["faInnosoft"]},{"icon":"fa500px","aliases":[]},{"icon":"faAccessibleIcon","aliases":[]},{"icon":"faAccusoft","aliases":[]},{"icon":"faAdn","aliases":[]},{"icon":"faAdversal","aliases":[]},{"icon":"faAffiliatetheme","aliases":[]},{"icon":"faAirbnb","aliases":[]},{"icon":"faAlgolia","aliases":[]},{"icon":"faAlipay","aliases":[]},{"icon":"faAmazon","aliases":[]},{"icon":"faAmazonPay","aliases":[]},{"icon":"faAmilia","aliases":[]},{"icon":"faAndroid","aliases":[]},{"icon":"faAngellist","aliases":[]},{"icon":"faAngrycreative","aliases":[]},{"icon":"faAngular","aliases":[]},{"icon":"faAppStore","aliases":[]},{"icon":"faAppStoreIos","aliases":[]},{"icon":"faApper","aliases":[]},{"icon":"faApple","aliases":[]},{"icon":"faApplePay","aliases":[]},{"icon":"faArtstation","aliases":[]},{"icon":"faAsymmetrik","aliases":[]},{"icon":"faAtlassian","aliases":[]},{"icon":"faAudible","aliases":[]},{"icon":"faAutoprefixer","aliases":[]},{"icon":"faAvianex","aliases":[]},{"icon":"faAviato","aliases":[]},{"icon":"faAws","aliases":[]},{"icon":"faBandcamp","aliases":[]},{"icon":"faBattleNet","aliases":[]},{"icon":"faBehance","aliases":[]},{"icon":"faBehanceSquare","aliases":["faBehanceSquare"]},{"icon":"faBilibili","aliases":[]},{"icon":"faBimobject","aliases":[]},{"icon":"faBitbucket","aliases":[]},{"icon":"faBitcoin","aliases":[]},{"icon":"faBity","aliases":[]},{"icon":"faBlackTie","aliases":[]},{"icon":"faBlackberry","aliases":[]},{"icon":"faBlogger","aliases":[]},{"icon":"faBloggerB","aliases":[]},{"icon":"faBluesky","aliases":[]},{"icon":"faBluetooth","aliases":[]},{"icon":"faBluetoothB","aliases":[]},{"icon":"faBootstrap","aliases":[]},{"icon":"faBots","aliases":[]},{"icon":"faBrave","aliases":[]},{"icon":"faBraveReverse","aliases":[]},{"icon":"faBtc","aliases":[]},{"icon":"faBuffer","aliases":[]},{"icon":"faBuromobelexperte","aliases":[]},{"icon":"faBuyNLarge","aliases":[]},{"icon":"faBuysellads","aliases":[]},{"icon":"faCanadianMapleLeaf","aliases":[]},{"icon":"faCcAmazonPay","aliases":[]},{"icon":"faCcAmex","aliases":[]},{"icon":"faCcApplePay","aliases":[]},{"icon":"faCcDinersClub","aliases":[]},{"icon":"faCcDiscover","aliases":[]},{"icon":"faCcJcb","aliases":[]},{"icon":"faCcMastercard","aliases":[]},{"icon":"faCcPaypal","aliases":[]},{"icon":"faCcStripe","aliases":[]},{"icon":"faCcVisa","aliases":[]},{"icon":"faCentercode","aliases":[]},{"icon":"faCentos","aliases":[]},{"icon":"faChrome","aliases":[]},{"icon":"faChromecast","aliases":[]},{"icon":"faCloudflare","aliases":[]},{"icon":"faCloudscale","aliases":[]},{"icon":"faCloudsmith","aliases":[]},{"icon":"faCloudversify","aliases":[]},{"icon":"faCmplid","aliases":[]},{"icon":"faCodepen","aliases":[]},{"icon":"faCodiepie","aliases":[]},{"icon":"faConfluence","aliases":[]},{"icon":"faConnectdevelop","aliases":[]},{"icon":"faContao","aliases":[]},{"icon":"faCottonBureau","aliases":[]},{"icon":"faCpanel","aliases":[]},{"icon":"faCreativeCommons","aliases":[]},{"icon":"faCreativeCommonsBy","aliases":[]},{"icon":"faCreativeCommonsNc","aliases":[]},{"icon":"faCreativeCommonsNcEu","aliases":[]},{"icon":"faCreativeCommonsNcJp","aliases":[]},{"icon":"faCreativeCommonsNd","aliases":[]},{"icon":"faCreativeCommonsPd","aliases":[]},{"icon":"faCreativeCommonsPdAlt","aliases":[]},{"icon":"faCreativeCommonsRemix","aliases":[]},{"icon":"faCreativeCommonsSa","aliases":[]},{"icon":"faCreativeCommonsSampling","aliases":[]},{"icon":"faCreativeCommonsSamplingPlus","aliases":[]},{"icon":"faCreativeCommonsShare","aliases":[]},{"icon":"faCreativeCommonsZero","aliases":[]},{"icon":"faCriticalRole","aliases":[]},{"icon":"faCss","aliases":[]},{"icon":"faCss3","aliases":[]},{"icon":"faCss3Alt","aliases":[]},{"icon":"faCuttlefish","aliases":[]},{"icon":"faDAndD","aliases":[]},{"icon":"faDAndDBeyond","aliases":[]},{"icon":"faDailymotion","aliases":[]},{"icon":"faDartLang","aliases":[]},{"icon":"faDashcube","aliases":[]},{"icon":"faDebian","aliases":[]},{"icon":"faDeezer","aliases":[]},{"icon":"faDelicious","aliases":[]},{"icon":"faDeploydog","aliases":[]},{"icon":"faDeskpro","aliases":[]},{"icon":"faDev","aliases":[]},{"icon":"faDeviantart","aliases":[]},{"icon":"faDhl","aliases":[]},{"icon":"faDiaspora","aliases":[]},{"icon":"faDigg","aliases":[]},{"icon":"faDigitalOcean","aliases":[]},{"icon":"faDiscord","aliases":[]},{"icon":"faDiscourse","aliases":[]},{"icon":"faDochub","aliases":[]},{"icon":"faDocker","aliases":[]},{"icon":"faDraft2digital","aliases":[]},{"icon":"faDribbble","aliases":[]},{"icon":"faDribbbleSquare","aliases":["faDribbbleSquare"]},{"icon":"faDropbox","aliases":[]},{"icon":"faDrupal","aliases":[]},{"icon":"faDyalog","aliases":[]},{"icon":"faEarlybirds","aliases":[]},{"icon":"faEbay","aliases":[]},{"icon":"faEdge","aliases":[]},{"icon":"faEdgeLegacy","aliases":[]},{"icon":"faElementor","aliases":[]},{"icon":"faEllo","aliases":[]},{"icon":"faEmber","aliases":[]},{"icon":"faEmpire","aliases":[]},{"icon":"faEnvira","aliases":[]},{"icon":"faErlang","aliases":[]},{"icon":"faEthereum","aliases":[]},{"icon":"faEtsy","aliases":[]},{"icon":"faEvernote","aliases":[]},{"icon":"faExpeditedssl","aliases":[]},{"icon":"faFacebook","aliases":[]},{"icon":"faFacebookF","aliases":[]},{"icon":"faFacebookMessenger","aliases":[]},{"icon":"faFacebookSquare","aliases":["faFacebookSquare"]},{"icon":"faFantasyFlightGames","aliases":[]},{"icon":"faFedex","aliases":[]},{"icon":"faFedora","aliases":[]},{"icon":"faFigma","aliases":[]},{"icon":"faFilesPinwheel","aliases":[]},{"icon":"faFirefox","aliases":[]},{"icon":"faFirefoxBrowser","aliases":[]},{"icon":"faFirstOrder","aliases":[]},{"icon":"faFirstOrderAlt","aliases":[]},{"icon":"faFirstdraft","aliases":[]},{"icon":"faFlickr","aliases":[]},{"icon":"faFlipboard","aliases":[]},{"icon":"faFlutter","aliases":[]},{"icon":"faFly","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeAlt","aliases":["faFontAwesomeAlt"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFonticons","aliases":[]},{"icon":"faFonticonsFi","aliases":[]},{"icon":"faFortAwesome","aliases":[]},{"icon":"faFortAwesomeAlt","aliases":[]},{"icon":"faForumbee","aliases":[]},{"icon":"faFoursquare","aliases":[]},{"icon":"faFreeCodeCamp","aliases":[]},{"icon":"faFreebsd","aliases":[]},{"icon":"faFulcrum","aliases":[]},{"icon":"faGalacticRepublic","aliases":[]},{"icon":"faGalacticSenate","aliases":[]},{"icon":"faGetPocket","aliases":[]},{"icon":"faGg","aliases":[]},{"icon":"faGgCircle","aliases":[]},{"icon":"faGit","aliases":[]},{"icon":"faGitAlt","aliases":[]},{"icon":"faGitSquare","aliases":["faGitSquare"]},{"icon":"faGithub","aliases":[]},{"icon":"faGithubAlt","aliases":[]},{"icon":"faGithubSquare","aliases":["faGithubSquare"]},{"icon":"faGitkraken","aliases":[]},{"icon":"faGitlab","aliases":[]},{"icon":"faGitlabSquare","aliases":["faGitlabSquare"]},{"icon":"faGitter","aliases":[]},{"icon":"faGlide","aliases":[]},{"icon":"faGlideG","aliases":[]},{"icon":"faGofore","aliases":[]},{"icon":"faGolang","aliases":[]},{"icon":"faGoodreads","aliases":[]},{"icon":"faGoodreadsG","aliases":[]},{"icon":"faGoogle","aliases":[]},{"icon":"faGoogleDrive","aliases":[]},{"icon":"faGooglePay","aliases":[]},{"icon":"faGooglePlay","aliases":[]},{"icon":"faGooglePlus","aliases":[]},{"icon":"faGooglePlusG","aliases":[]},{"icon":"faGooglePlusSquare","aliases":["faGooglePlusSquare"]},{"icon":"faGoogleScholar","aliases":[]},{"icon":"faGoogleWallet","aliases":[]},{"icon":"faGratipay","aliases":[]},{"icon":"faGrav","aliases":[]},{"icon":"faGripfire","aliases":[]},{"icon":"faGrunt","aliases":[]},{"icon":"faGuilded","aliases":[]},{"icon":"faGulp","aliases":[]},{"icon":"faHackerNews","aliases":[]},{"icon":"faHackerNewsSquare","aliases":["faHackerNewsSquare"]},{"icon":"faHackerrank","aliases":[]},{"icon":"faHashnode","aliases":[]},{"icon":"faHips","aliases":[]},{"icon":"faHireAHelper","aliases":[]},{"icon":"faHive","aliases":[]},{"icon":"faHooli","aliases":[]},{"icon":"faHornbill","aliases":[]},{"icon":"faHotjar","aliases":[]},{"icon":"faHouzz","aliases":[]},{"icon":"faHtml5","aliases":[]},{"icon":"faHubspot","aliases":[]},{"icon":"faIdeal","aliases":[]},{"icon":"faImdb","aliases":[]},{"icon":"faInnosoft","aliases":["faInnosoft"]},{"icon":"faInstagram","aliases":[]},{"icon":"faInstagramSquare","aliases":["faInstagramSquare"]},{"icon":"faInstalod","aliases":[]},{"icon":"faIntercom","aliases":[]},{"icon":"faInternetExplorer","aliases":[]},{"icon":"faInvision","aliases":[]},{"icon":"faIoxhost","aliases":[]},{"icon":"faItchIo","aliases":[]},{"icon":"faItunes","aliases":[]},{"icon":"faItunesNote","aliases":[]},{"icon":"faJava","aliases":[]},{"icon":"faJediOrder","aliases":[]},{"icon":"faJenkins","aliases":[]},{"icon":"faJira","aliases":[]},{"icon":"faJoget","aliases":[]},{"icon":"faJoomla","aliases":[]},{"icon":"faJs","aliases":[]},{"icon":"faJsSquare","aliases":["faJsSquare"]},{"icon":"faJsfiddle","aliases":[]},{"icon":"faJxl","aliases":[]},{"icon":"faKaggle","aliases":[]},{"icon":"faKeybase","aliases":[]},{"icon":"faKeycdn","aliases":[]},{"icon":"faKickstarter","aliases":["faSquareKickstarter"]},{"icon":"faKickstarterK","aliases":[]},{"icon":"faKorvue","aliases":[]},{"icon":"faLaravel","aliases":[]},{"icon":"faLastfm","aliases":[]},{"icon":"faLastfmSquare","aliases":["faLastfmSquare"]},{"icon":"faLeanpub","aliases":[]},{"icon":"faLess","aliases":[]},{"icon":"faLetterboxd","aliases":[]},{"icon":"faLine","aliases":[]},{"icon":"faLinkedin","aliases":[]},{"icon":"faLinkedinIn","aliases":[]},{"icon":"faLinode","aliases":[]},{"icon":"faLinux","aliases":[]},{"icon":"faLyft","aliases":[]},{"icon":"faMagento","aliases":[]},{"icon":"faMailchimp","aliases":[]},{"icon":"faMandalorian","aliases":[]},{"icon":"faMarkdown","aliases":[]},{"icon":"faMastodon","aliases":[]},{"icon":"faMaxcdn","aliases":[]},{"icon":"faMdb","aliases":[]},{"icon":"faMedapps","aliases":[]},{"icon":"faMedium","aliases":["faMediumM"]},{"icon":"faMediumM","aliases":["faMediumM"]},{"icon":"faMedrt","aliases":[]},{"icon":"faMeetup","aliases":[]},{"icon":"faMegaport","aliases":[]},{"icon":"faMendeley","aliases":[]},{"icon":"faMeta","aliases":[]},{"icon":"faMicroblog","aliases":[]},{"icon":"faMicrosoft","aliases":[]},{"icon":"faMintbit","aliases":[]},{"icon":"faMix","aliases":[]},{"icon":"faMixcloud","aliases":[]},{"icon":"faMixer","aliases":[]},{"icon":"faMizuni","aliases":[]},{"icon":"faModx","aliases":[]},{"icon":"faMonero","aliases":[]},{"icon":"faNapster","aliases":[]},{"icon":"faNeos","aliases":[]},{"icon":"faNfcDirectional","aliases":[]},{"icon":"faNfcSymbol","aliases":[]},{"icon":"faNimblr","aliases":[]},{"icon":"faNode","aliases":[]},{"icon":"faNodeJs","aliases":[]},{"icon":"faNpm","aliases":[]},{"icon":"faNs8","aliases":[]},{"icon":"faNutritionix","aliases":[]},{"icon":"faOctopusDeploy","aliases":[]},{"icon":"faOdnoklassniki","aliases":[]},{"icon":"faOdnoklassnikiSquare","aliases":["faOdnoklassnikiSquare"]},{"icon":"faOdysee","aliases":[]},{"icon":"faOldRepublic","aliases":[]},{"icon":"faOpencart","aliases":[]},{"icon":"faOpenid","aliases":[]},{"icon":"faOpensuse","aliases":[]},{"icon":"faOpera","aliases":[]},{"icon":"faOptinMonster","aliases":[]},{"icon":"faOrcid","aliases":[]},{"icon":"faOsi","aliases":[]},{"icon":"faPadlet","aliases":[]},{"icon":"faPage4","aliases":[]},{"icon":"faPagelines","aliases":[]},{"icon":"faPalfed","aliases":[]},{"icon":"faPatreon","aliases":[]},{"icon":"faPaypal","aliases":[]},{"icon":"faPerbyte","aliases":[]},{"icon":"faPeriscope","aliases":[]},{"icon":"faPhabricator","aliases":[]},{"icon":"faPhoenixFramework","aliases":[]},{"icon":"faPhoenixSquadron","aliases":[]},{"icon":"faPhp","aliases":[]},{"icon":"faPiedPiper","aliases":[]},{"icon":"faPiedPiperAlt","aliases":[]},{"icon":"faPiedPiperHat","aliases":[]},{"icon":"faPiedPiperPp","aliases":[]},{"icon":"faPiedPiperSquare","aliases":["faPiedPiperSquare"]},{"icon":"faPinterest","aliases":[]},{"icon":"faPinterestP","aliases":[]},{"icon":"faPinterestSquare","aliases":["faPinterestSquare"]},{"icon":"faPix","aliases":[]},{"icon":"faPixiv","aliases":[]},{"icon":"faPlaystation","aliases":[]},{"icon":"faProductHunt","aliases":[]},{"icon":"faPushed","aliases":[]},{"icon":"faPython","aliases":[]},{"icon":"faQq","aliases":[]},{"icon":"faQuinscape","aliases":[]},{"icon":"faQuora","aliases":[]},{"icon":"faRProject","aliases":[]},{"icon":"faRaspberryPi","aliases":[]},{"icon":"faRavelry","aliases":[]},{"icon":"faReact","aliases":[]},{"icon":"faReacteurope","aliases":[]},{"icon":"faReadme","aliases":[]},{"icon":"faRebel","aliases":[]},{"icon":"faRedRiver","aliases":[]},{"icon":"faReddit","aliases":[]},{"icon":"faRedditAlien","aliases":[]},{"icon":"faRedditSquare","aliases":["faRedditSquare"]},{"icon":"faRedhat","aliases":[]},{"icon":"faRendact","aliases":["faRendact"]},{"icon":"faRenren","aliases":[]},{"icon":"faReplyd","aliases":[]},{"icon":"faResearchgate","aliases":[]},{"icon":"faResolving","aliases":[]},{"icon":"faRev","aliases":[]},{"icon":"faRocketchat","aliases":[]},{"icon":"faRockrms","aliases":[]},{"icon":"faRust","aliases":[]},{"icon":"faSafari","aliases":[]},{"icon":"faSalesforce","aliases":[]},{"icon":"faSass","aliases":[]},{"icon":"faSchlix","aliases":[]},{"icon":"faScreenpal","aliases":[]},{"icon":"faScribd","aliases":[]},{"icon":"faSearchengin","aliases":[]},{"icon":"faSellcast","aliases":[]},{"icon":"faSellsy","aliases":[]},{"icon":"faServicestack","aliases":[]},{"icon":"faShirtsinbulk","aliases":[]},{"icon":"faShoelace","aliases":[]},{"icon":"faShopify","aliases":[]},{"icon":"faShopware","aliases":[]},{"icon":"faSignalMessenger","aliases":[]},{"icon":"faSimplybuilt","aliases":[]},{"icon":"faSistrix","aliases":[]},{"icon":"faSith","aliases":[]},{"icon":"faSitrox","aliases":[]},{"icon":"faSketch","aliases":[]},{"icon":"faSkyatlas","aliases":[]},{"icon":"faSkype","aliases":[]},{"icon":"faSlack","aliases":["faSlackHash"]},{"icon":"faSlackHash","aliases":["faSlackHash"]},{"icon":"faSlideshare","aliases":[]},{"icon":"faSnapchat","aliases":["faSnapchatGhost"]},{"icon":"faSnapchatGhost","aliases":["faSnapchatGhost"]},{"icon":"faSnapchatSquare","aliases":["faSnapchatSquare"]},{"icon":"faSoundcloud","aliases":[]},{"icon":"faSourcetree","aliases":[]},{"icon":"faSpaceAwesome","aliases":[]},{"icon":"faSpeakap","aliases":[]},{"icon":"faSpeakerDeck","aliases":[]},{"icon":"faSpotify","aliases":[]},{"icon":"faSquareBehance","aliases":["faBehanceSquare"]},{"icon":"faSquareBluesky","aliases":[]},{"icon":"faSquareDribbble","aliases":["faDribbbleSquare"]},{"icon":"faSquareFacebook","aliases":["faFacebookSquare"]},{"icon":"faSquareFontAwesome","aliases":[]},{"icon":"faSquareFontAwesomeStroke","aliases":["faFontAwesomeAlt"]},{"icon":"faSquareGit","aliases":["faGitSquare"]},{"icon":"faSquareGithub","aliases":["faGithubSquare"]},{"icon":"faSquareGitlab","aliases":["faGitlabSquare"]},{"icon":"faSquareGooglePlus","aliases":["faGooglePlusSquare"]},{"icon":"faSquareHackerNews","aliases":["faHackerNewsSquare"]},{"icon":"faSquareInstagram","aliases":["faInstagramSquare"]},{"icon":"faSquareJs","aliases":["faJsSquare"]},{"icon":"faSquareKickstarter","aliases":["faSquareKickstarter"]},{"icon":"faSquareLastfm","aliases":["faLastfmSquare"]},{"icon":"faSquareLetterboxd","aliases":[]},{"icon":"faSquareOdnoklassniki","aliases":["faOdnoklassnikiSquare"]},{"icon":"faSquarePiedPiper","aliases":["faPiedPiperSquare"]},{"icon":"faSquarePinterest","aliases":["faPinterestSquare"]},{"icon":"faSquareReddit","aliases":["faRedditSquare"]},{"icon":"faSquareSnapchat","aliases":["faSnapchatSquare"]},{"icon":"faSquareSteam","aliases":["faSteamSquare"]},{"icon":"faSquareThreads","aliases":[]},{"icon":"faSquareTumblr","aliases":["faTumblrSquare"]},{"icon":"faSquareTwitter","aliases":["faTwitterSquare"]},{"icon":"faSquareUpwork","aliases":[]},{"icon":"faSquareViadeo","aliases":["faViadeoSquare"]},{"icon":"faSquareVimeo","aliases":["faVimeoSquare"]},{"icon":"faSquareWebAwesome","aliases":[]},{"icon":"faSquareWebAwesomeStroke","aliases":[]},{"icon":"faSquareWhatsapp","aliases":["faWhatsappSquare"]},{"icon":"faSquareXTwitter","aliases":[]},{"icon":"faSquareXing","aliases":["faXingSquare"]},{"icon":"faSquareYoutube","aliases":["faYoutubeSquare"]},{"icon":"faSquarespace","aliases":[]},{"icon":"faStackExchange","aliases":[]},{"icon":"faStackOverflow","aliases":[]},{"icon":"faStackpath","aliases":[]},{"icon":"faStaylinked","aliases":[]},{"icon":"faSteam","aliases":[]},{"icon":"faSteamSquare","aliases":["faSteamSquare"]},{"icon":"faSteamSymbol","aliases":[]},{"icon":"faStickerMule","aliases":[]},{"icon":"faStrava","aliases":[]},{"icon":"faStripe","aliases":[]},{"icon":"faStripeS","aliases":[]},{"icon":"faStubber","aliases":[]},{"icon":"faStudiovinari","aliases":[]},{"icon":"faStumbleupon","aliases":[]},{"icon":"faStumbleuponCircle","aliases":[]},{"icon":"faSuperpowers","aliases":[]},{"icon":"faSupple","aliases":[]},{"icon":"faSuse","aliases":[]},{"icon":"faSwift","aliases":[]},{"icon":"faSymfony","aliases":[]},{"icon":"faTeamspeak","aliases":[]},{"icon":"faTelegram","aliases":["faTelegramPlane"]},{"icon":"faTelegramPlane","aliases":["faTelegramPlane"]},{"icon":"faTencentWeibo","aliases":[]},{"icon":"faTheRedYeti","aliases":[]},{"icon":"faThemeco","aliases":[]},{"icon":"faThemeisle","aliases":[]},{"icon":"faThinkPeaks","aliases":[]},{"icon":"faThreads","aliases":[]},{"icon":"faTiktok","aliases":[]},{"icon":"faTradeFederation","aliases":[]},{"icon":"faTrello","aliases":[]},{"icon":"faTumblr","aliases":[]},{"icon":"faTumblrSquare","aliases":["faTumblrSquare"]},{"icon":"faTwitch","aliases":[]},{"icon":"faTwitter","aliases":[]},{"icon":"faTwitterSquare","aliases":["faTwitterSquare"]},{"icon":"faTypo3","aliases":[]},{"icon":"faUber","aliases":[]},{"icon":"faUbuntu","aliases":[]},{"icon":"faUikit","aliases":[]},{"icon":"faUmbraco","aliases":[]},{"icon":"faUncharted","aliases":[]},{"icon":"faUniregistry","aliases":[]},{"icon":"faUnity","aliases":[]},{"icon":"faUnsplash","aliases":[]},{"icon":"faUntappd","aliases":[]},{"icon":"faUps","aliases":[]},{"icon":"faUpwork","aliases":[]},{"icon":"faUsb","aliases":[]},{"icon":"faUsps","aliases":[]},{"icon":"faUssunnah","aliases":[]},{"icon":"faVaadin","aliases":[]},{"icon":"faViacoin","aliases":[]},{"icon":"faViadeo","aliases":[]},{"icon":"faViadeoSquare","aliases":["faViadeoSquare"]},{"icon":"faViber","aliases":[]},{"icon":"faVimeo","aliases":[]},{"icon":"faVimeoSquare","aliases":["faVimeoSquare"]},{"icon":"faVimeoV","aliases":[]},{"icon":"faVine","aliases":[]},{"icon":"faVk","aliases":[]},{"icon":"faVnv","aliases":[]},{"icon":"faVuejs","aliases":[]},{"icon":"faWatchmanMonitoring","aliases":[]},{"icon":"faWaze","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWebflow","aliases":[]},{"icon":"faWeebly","aliases":[]},{"icon":"faWeibo","aliases":[]},{"icon":"faWeixin","aliases":[]},{"icon":"faWhatsapp","aliases":[]},{"icon":"faWhatsappSquare","aliases":["faWhatsappSquare"]},{"icon":"faWhmcs","aliases":[]},{"icon":"faWikipediaW","aliases":[]},{"icon":"faWindows","aliases":[]},{"icon":"faWirsindhandwerk","aliases":["faWsh"]},{"icon":"faWix","aliases":[]},{"icon":"faWizardsOfTheCoast","aliases":[]},{"icon":"faWodu","aliases":[]},{"icon":"faWolfPackBattalion","aliases":[]},{"icon":"faWordpress","aliases":[]},{"icon":"faWordpressSimple","aliases":[]},{"icon":"faWpbeginner","aliases":[]},{"icon":"faWpexplorer","aliases":[]},{"icon":"faWpforms","aliases":[]},{"icon":"faWpressr","aliases":["faRendact"]},{"icon":"faWsh","aliases":["faWsh"]},{"icon":"faXTwitter","aliases":[]},{"icon":"faXbox","aliases":[]},{"icon":"faXing","aliases":[]},{"icon":"faXingSquare","aliases":["faXingSquare"]},{"icon":"faYCombinator","aliases":[]},{"icon":"faYahoo","aliases":[]},{"icon":"faYammer","aliases":[]},{"icon":"faYandex","aliases":[]},{"icon":"faYandexInternational","aliases":[]},{"icon":"faYarn","aliases":[]},{"icon":"faYelp","aliases":[]},{"icon":"faYoast","aliases":[]},{"icon":"faYoutube","aliases":[]},{"icon":"faYoutubeSquare","aliases":["faYoutubeSquare"]},{"icon":"faZhihu","aliases":[]}],"prefix":"fab"},"@fortawesome/pro-solid-svg-icons":{"icons":[{"icon":"fa0","aliases":[]},{"icon":"fa00","aliases":[]},{"icon":"fa1","aliases":[]},{"icon":"fa100","aliases":["fa100"]},{"icon":"fa2","aliases":[]},{"icon":"fa3","aliases":[]},{"icon":"fa360Degrees","aliases":[]},{"icon":"fa4","aliases":[]},{"icon":"fa5","aliases":[]},{"icon":"fa6","aliases":[]},{"icon":"fa7","aliases":[]},{"icon":"fa8","aliases":[]},{"icon":"fa9","aliases":[]},{"icon":"faA","aliases":[]},{"icon":"faAbacus","aliases":[]},{"icon":"faAccentGrave","aliases":[]},{"icon":"faAcorn","aliases":[]},{"icon":"faAd","aliases":["faAd"]},{"icon":"faAdd","aliases":["faAdd"]},{"icon":"faAddressBook","aliases":["faContactBook"]},{"icon":"faAddressCard","aliases":["faContactCard","faVcard"]},{"icon":"faAdjust","aliases":["faAdjust"]},{"icon":"faAirConditioner","aliases":[]},{"icon":"faAirFreshener","aliases":["faAirFreshener"]},{"icon":"faAirplay","aliases":[]},{"icon":"faAlarmClock","aliases":[]},{"icon":"faAlarmExclamation","aliases":[]},{"icon":"faAlarmPlus","aliases":[]},{"icon":"faAlarmSnooze","aliases":[]},{"icon":"faAlbum","aliases":[]},{"icon":"faAlbumCirclePlus","aliases":[]},{"icon":"faAlbumCircleUser","aliases":[]},{"icon":"faAlbumCollection","aliases":[]},{"icon":"faAlbumCollectionCirclePlus","aliases":[]},{"icon":"faAlbumCollectionCircleUser","aliases":[]},{"icon":"faAlicorn","aliases":[]},{"icon":"faAlien","aliases":[]},{"icon":"faAlien8bit","aliases":["faAlienMonster"]},{"icon":"faAlienMonster","aliases":["faAlienMonster"]},{"icon":"faAlignCenter","aliases":[]},{"icon":"faAlignJustify","aliases":[]},{"icon":"faAlignLeft","aliases":[]},{"icon":"faAlignRight","aliases":[]},{"icon":"faAlignSlash","aliases":[]},{"icon":"faAllergies","aliases":["faAllergies"]},{"icon":"faAlt","aliases":[]},{"icon":"faAmbulance","aliases":["faAmbulance"]},{"icon":"faAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAmpGuitar","aliases":[]},{"icon":"faAmpersand","aliases":[]},{"icon":"faAnalytics","aliases":["faAnalytics"]},{"icon":"faAnchor","aliases":[]},{"icon":"faAnchorCircleCheck","aliases":[]},{"icon":"faAnchorCircleExclamation","aliases":[]},{"icon":"faAnchorCircleXmark","aliases":[]},{"icon":"faAnchorLock","aliases":[]},{"icon":"faAngel","aliases":[]},{"icon":"faAngle","aliases":[]},{"icon":"faAngle90","aliases":[]},{"icon":"faAngleDoubleDown","aliases":["faAngleDoubleDown"]},{"icon":"faAngleDoubleLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAngleDoubleRight","aliases":["faAngleDoubleRight"]},{"icon":"faAngleDoubleUp","aliases":["faAngleDoubleUp"]},{"icon":"faAngleDown","aliases":[]},{"icon":"faAngleLeft","aliases":[]},{"icon":"faAngleRight","aliases":[]},{"icon":"faAngleUp","aliases":[]},{"icon":"faAnglesDown","aliases":["faAngleDoubleDown"]},{"icon":"faAnglesLeft","aliases":["faAngleDoubleLeft"]},{"icon":"faAnglesRight","aliases":["faAngleDoubleRight"]},{"icon":"faAnglesUp","aliases":["faAngleDoubleUp"]},{"icon":"faAnglesUpDown","aliases":[]},{"icon":"faAngry","aliases":["faAngry"]},{"icon":"faAnkh","aliases":[]},{"icon":"faAnt","aliases":[]},{"icon":"faApartment","aliases":[]},{"icon":"faAperture","aliases":[]},{"icon":"faApostrophe","aliases":[]},{"icon":"faAppleAlt","aliases":["faAppleAlt"]},{"icon":"faAppleCore","aliases":[]},{"icon":"faAppleCrate","aliases":["faAppleCrate"]},{"icon":"faAppleWhole","aliases":["faAppleAlt"]},{"icon":"faArchive","aliases":["faArchive"]},{"icon":"faArchway","aliases":[]},{"icon":"faAreaChart","aliases":["faAreaChart"]},{"icon":"faArrowAltCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faArrowAltCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faArrowAltCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faArrowAltCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faArrowAltDown","aliases":["faArrowAltDown"]},{"icon":"faArrowAltFromBottom","aliases":["faArrowAltFromBottom"]},{"icon":"faArrowAltFromLeft","aliases":["faArrowAltFromLeft"]},{"icon":"faArrowAltFromRight","aliases":["faArrowAltFromRight"]},{"icon":"faArrowAltFromTop","aliases":["faArrowAltFromTop"]},{"icon":"faArrowAltLeft","aliases":["faArrowAltLeft"]},{"icon":"faArrowAltRight","aliases":["faArrowAltRight"]},{"icon":"faArrowAltSquareDown","aliases":["faArrowAltSquareDown"]},{"icon":"faArrowAltSquareLeft","aliases":["faArrowAltSquareLeft"]},{"icon":"faArrowAltSquareRight","aliases":["faArrowAltSquareRight"]},{"icon":"faArrowAltSquareUp","aliases":["faArrowAltSquareUp"]},{"icon":"faArrowAltToBottom","aliases":["faArrowAltToBottom"]},{"icon":"faArrowAltToLeft","aliases":["faArrowAltToLeft"]},{"icon":"faArrowAltToRight","aliases":["faArrowAltToRight"]},{"icon":"faArrowAltToTop","aliases":["faArrowAltToTop"]},{"icon":"faArrowAltUp","aliases":["faArrowAltUp"]},{"icon":"faArrowCircleDown","aliases":["faArrowCircleDown"]},{"icon":"faArrowCircleLeft","aliases":["faArrowCircleLeft"]},{"icon":"faArrowCircleRight","aliases":["faArrowCircleRight"]},{"icon":"faArrowCircleUp","aliases":["faArrowCircleUp"]},{"icon":"faArrowDown","aliases":[]},{"icon":"faArrowDown19","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faArrowDown91","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faArrowDownAZ","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faArrowDownArrowUp","aliases":["faSortAlt"]},{"icon":"faArrowDownBigSmall","aliases":["faSortSizeDown"]},{"icon":"faArrowDownFromArc","aliases":[]},{"icon":"faArrowDownFromBracket","aliases":[]},{"icon":"faArrowDownFromDottedLine","aliases":[]},{"icon":"faArrowDownFromLine","aliases":["faArrowFromTop"]},{"icon":"faArrowDownLeft","aliases":[]},{"icon":"faArrowDownLeftAndArrowUpRightToCenter","aliases":[]},{"icon":"faArrowDownLong","aliases":["faLongArrowDown"]},{"icon":"faArrowDownRight","aliases":[]},{"icon":"faArrowDownShortWide","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faArrowDownSmallBig","aliases":["faSortSizeDownAlt"]},{"icon":"faArrowDownSquareTriangle","aliases":["faSortShapesDownAlt"]},{"icon":"faArrowDownToArc","aliases":[]},{"icon":"faArrowDownToBracket","aliases":[]},{"icon":"faArrowDownToDottedLine","aliases":[]},{"icon":"faArrowDownToLine","aliases":["faArrowToBottom"]},{"icon":"faArrowDownToSquare","aliases":[]},{"icon":"faArrowDownTriangleSquare","aliases":["faSortShapesDown"]},{"icon":"faArrowDownUpAcrossLine","aliases":[]},{"icon":"faArrowDownUpLock","aliases":[]},{"icon":"faArrowDownWideShort","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faArrowDownZA","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faArrowFromBottom","aliases":["faArrowFromBottom"]},{"icon":"faArrowFromLeft","aliases":["faArrowFromLeft"]},{"icon":"faArrowFromRight","aliases":["faArrowFromRight"]},{"icon":"faArrowFromTop","aliases":["faArrowFromTop"]},{"icon":"faArrowLeft","aliases":[]},{"icon":"faArrowLeftFromArc","aliases":[]},{"icon":"faArrowLeftFromBracket","aliases":[]},{"icon":"faArrowLeftFromLine","aliases":["faArrowFromRight"]},{"icon":"faArrowLeftLong","aliases":["faLongArrowLeft"]},{"icon":"faArrowLeftLongToLine","aliases":[]},{"icon":"faArrowLeftRotate","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowLeftToArc","aliases":[]},{"icon":"faArrowLeftToBracket","aliases":[]},{"icon":"faArrowLeftToLine","aliases":["faArrowToLeft"]},{"icon":"faArrowPointer","aliases":["faMousePointer"]},{"icon":"faArrowProgress","aliases":[]},{"icon":"faArrowRight","aliases":[]},{"icon":"faArrowRightArrowLeft","aliases":["faExchange"]},{"icon":"faArrowRightFromArc","aliases":[]},{"icon":"faArrowRightFromBracket","aliases":["faSignOut"]},{"icon":"faArrowRightFromFile","aliases":["faArrowRightFromFile"]},{"icon":"faArrowRightFromLine","aliases":["faArrowFromLeft"]},{"icon":"faArrowRightLong","aliases":["faLongArrowRight"]},{"icon":"faArrowRightLongToLine","aliases":[]},{"icon":"faArrowRightRotate","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRightToArc","aliases":[]},{"icon":"faArrowRightToBracket","aliases":["faSignIn"]},{"icon":"faArrowRightToCity","aliases":[]},{"icon":"faArrowRightToFile","aliases":["faArrowRightToFile"]},{"icon":"faArrowRightToLine","aliases":["faArrowToRight"]},{"icon":"faArrowRotateBack","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateBackward","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateForward","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowRotateLeft","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faArrowRotateRight","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faArrowSquareDown","aliases":["faArrowSquareDown"]},{"icon":"faArrowSquareLeft","aliases":["faArrowSquareLeft"]},{"icon":"faArrowSquareRight","aliases":["faArrowSquareRight"]},{"icon":"faArrowSquareUp","aliases":["faArrowSquareUp"]},{"icon":"faArrowToBottom","aliases":["faArrowToBottom"]},{"icon":"faArrowToLeft","aliases":["faArrowToLeft"]},{"icon":"faArrowToRight","aliases":["faArrowToRight"]},{"icon":"faArrowToTop","aliases":["faArrowToTop"]},{"icon":"faArrowTrendDown","aliases":[]},{"icon":"faArrowTrendUp","aliases":[]},{"icon":"faArrowTurnDown","aliases":["faLevelDown"]},{"icon":"faArrowTurnDownLeft","aliases":[]},{"icon":"faArrowTurnDownRight","aliases":[]},{"icon":"faArrowTurnLeft","aliases":[]},{"icon":"faArrowTurnLeftDown","aliases":[]},{"icon":"faArrowTurnLeftUp","aliases":[]},{"icon":"faArrowTurnRight","aliases":[]},{"icon":"faArrowTurnUp","aliases":["faLevelUp"]},{"icon":"faArrowUp","aliases":[]},{"icon":"faArrowUp19","aliases":["faSortNumericUp"]},{"icon":"faArrowUp91","aliases":["faSortNumericUpAlt"]},{"icon":"faArrowUpAZ","aliases":["faSortAlphaUp"]},{"icon":"faArrowUpArrowDown","aliases":["faSortUpDown"]},{"icon":"faArrowUpBigSmall","aliases":["faSortSizeUp"]},{"icon":"faArrowUpFromArc","aliases":[]},{"icon":"faArrowUpFromBracket","aliases":[]},{"icon":"faArrowUpFromDottedLine","aliases":[]},{"icon":"faArrowUpFromGroundWater","aliases":[]},{"icon":"faArrowUpFromLine","aliases":["faArrowFromBottom"]},{"icon":"faArrowUpFromSquare","aliases":[]},{"icon":"faArrowUpFromWaterPump","aliases":[]},{"icon":"faArrowUpLeft","aliases":[]},{"icon":"faArrowUpLeftFromCircle","aliases":[]},{"icon":"faArrowUpLong","aliases":["faLongArrowUp"]},{"icon":"faArrowUpRight","aliases":[]},{"icon":"faArrowUpRightAndArrowDownLeftFromCenter","aliases":[]},{"icon":"faArrowUpRightDots","aliases":[]},{"icon":"faArrowUpRightFromSquare","aliases":["faExternalLink"]},{"icon":"faArrowUpShortWide","aliases":["faSortAmountUpAlt"]},{"icon":"faArrowUpSmallBig","aliases":["faSortSizeUpAlt"]},{"icon":"faArrowUpSquareTriangle","aliases":["faSortShapesUpAlt"]},{"icon":"faArrowUpToArc","aliases":[]},{"icon":"faArrowUpToBracket","aliases":[]},{"icon":"faArrowUpToDottedLine","aliases":[]},{"icon":"faArrowUpToLine","aliases":["faArrowToTop"]},{"icon":"faArrowUpTriangleSquare","aliases":["faSortShapesUp"]},{"icon":"faArrowUpWideShort","aliases":["faSortAmountUp"]},{"icon":"faArrowUpZA","aliases":["faSortAlphaUpAlt"]},{"icon":"faArrows","aliases":["faArrows"]},{"icon":"faArrowsAlt","aliases":["faArrowsAlt"]},{"icon":"faArrowsAltH","aliases":["faArrowsAltH"]},{"icon":"faArrowsAltV","aliases":["faArrowsAltV"]},{"icon":"faArrowsCross","aliases":[]},{"icon":"faArrowsDownToLine","aliases":[]},{"icon":"faArrowsDownToPeople","aliases":[]},{"icon":"faArrowsFromDottedLine","aliases":[]},{"icon":"faArrowsFromLine","aliases":[]},{"icon":"faArrowsH","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRight","aliases":["faArrowsH"]},{"icon":"faArrowsLeftRightToLine","aliases":[]},{"icon":"faArrowsMaximize","aliases":["faExpandArrows"]},{"icon":"faArrowsMinimize","aliases":["faCompressArrows"]},{"icon":"faArrowsRepeat","aliases":["faRepeatAlt"]},{"icon":"faArrowsRepeat1","aliases":["faRepeat1Alt"]},{"icon":"faArrowsRetweet","aliases":["faRetweetAlt"]},{"icon":"faArrowsRotate","aliases":["faRefresh","faSync"]},{"icon":"faArrowsRotateReverse","aliases":[]},{"icon":"faArrowsSpin","aliases":[]},{"icon":"faArrowsSplitUpAndLeft","aliases":[]},{"icon":"faArrowsToCircle","aliases":[]},{"icon":"faArrowsToDot","aliases":[]},{"icon":"faArrowsToDottedLine","aliases":[]},{"icon":"faArrowsToEye","aliases":[]},{"icon":"faArrowsToLine","aliases":[]},{"icon":"faArrowsTurnRight","aliases":[]},{"icon":"faArrowsTurnToDots","aliases":[]},{"icon":"faArrowsUpDown","aliases":["faArrowsV"]},{"icon":"faArrowsUpDownLeftRight","aliases":["faArrows"]},{"icon":"faArrowsUpToLine","aliases":[]},{"icon":"faArrowsV","aliases":["faArrowsV"]},{"icon":"faAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faAssistiveListeningSystems","aliases":["faAssistiveListeningSystems"]},{"icon":"faAsterisk","aliases":[]},{"icon":"faAt","aliases":[]},{"icon":"faAtlas","aliases":["faAtlas"]},{"icon":"faAtom","aliases":[]},{"icon":"faAtomAlt","aliases":["faAtomAlt"]},{"icon":"faAtomSimple","aliases":["faAtomAlt"]},{"icon":"faAudioDescription","aliases":[]},{"icon":"faAudioDescriptionSlash","aliases":[]},{"icon":"faAustralSign","aliases":[]},{"icon":"faAutomobile","aliases":["faAutomobile"]},{"icon":"faAvocado","aliases":[]},{"icon":"faAward","aliases":[]},{"icon":"faAwardSimple","aliases":[]},{"icon":"faAxe","aliases":[]},{"icon":"faAxeBattle","aliases":[]},{"icon":"faB","aliases":[]},{"icon":"faBaby","aliases":[]},{"icon":"faBabyCarriage","aliases":["faCarriageBaby"]},{"icon":"faBackpack","aliases":[]},{"icon":"faBackspace","aliases":["faBackspace"]},{"icon":"faBackward","aliases":[]},{"icon":"faBackwardFast","aliases":["faFastBackward"]},{"icon":"faBackwardStep","aliases":["faStepBackward"]},{"icon":"faBacon","aliases":[]},{"icon":"faBacteria","aliases":[]},{"icon":"faBacterium","aliases":[]},{"icon":"faBadge","aliases":[]},{"icon":"faBadgeCheck","aliases":[]},{"icon":"faBadgeDollar","aliases":[]},{"icon":"faBadgePercent","aliases":[]},{"icon":"faBadgeSheriff","aliases":[]},{"icon":"faBadgerHoney","aliases":[]},{"icon":"faBadminton","aliases":[]},{"icon":"faBagSeedling","aliases":[]},{"icon":"faBagShopping","aliases":["faShoppingBag"]},{"icon":"faBagShoppingMinus","aliases":[]},{"icon":"faBagShoppingPlus","aliases":[]},{"icon":"faBagel","aliases":[]},{"icon":"faBagsShopping","aliases":[]},{"icon":"faBaguette","aliases":[]},{"icon":"faBahai","aliases":["faHaykal"]},{"icon":"faBahtSign","aliases":[]},{"icon":"faBalanceScale","aliases":["faBalanceScale"]},{"icon":"faBalanceScaleLeft","aliases":["faBalanceScaleLeft"]},{"icon":"faBalanceScaleRight","aliases":["faBalanceScaleRight"]},{"icon":"faBallPile","aliases":[]},{"icon":"faBalloon","aliases":[]},{"icon":"faBalloons","aliases":[]},{"icon":"faBallot","aliases":[]},{"icon":"faBallotCheck","aliases":[]},{"icon":"faBan","aliases":["faCancel"]},{"icon":"faBanBug","aliases":["faDebug"]},{"icon":"faBanParking","aliases":["faParkingCircleSlash"]},{"icon":"faBanSmoking","aliases":["faSmokingBan"]},{"icon":"faBanana","aliases":[]},{"icon":"faBandAid","aliases":["faBandAid"]},{"icon":"faBandage","aliases":["faBandAid"]},{"icon":"faBangladeshiTakaSign","aliases":[]},{"icon":"faBanjo","aliases":[]},{"icon":"faBank","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBarChart","aliases":["faBarChart"]},{"icon":"faBarcode","aliases":[]},{"icon":"faBarcodeAlt","aliases":["faBarcodeAlt"]},{"icon":"faBarcodeRead","aliases":[]},{"icon":"faBarcodeScan","aliases":[]},{"icon":"faBarnSilo","aliases":["faBarnSilo"]},{"icon":"faBars","aliases":["faNavicon"]},{"icon":"faBarsFilter","aliases":[]},{"icon":"faBarsProgress","aliases":["faTasksAlt"]},{"icon":"faBarsSort","aliases":[]},{"icon":"faBarsStaggered","aliases":["faReorder","faStream"]},{"icon":"faBaseball","aliases":["faBaseballBall"]},{"icon":"faBaseballBall","aliases":["faBaseballBall"]},{"icon":"faBaseballBatBall","aliases":[]},{"icon":"faBasketShopping","aliases":["faShoppingBasket"]},{"icon":"faBasketShoppingMinus","aliases":[]},{"icon":"faBasketShoppingPlus","aliases":[]},{"icon":"faBasketShoppingSimple","aliases":["faShoppingBasketAlt"]},{"icon":"faBasketball","aliases":["faBasketballBall"]},{"icon":"faBasketballBall","aliases":["faBasketballBall"]},{"icon":"faBasketballHoop","aliases":[]},{"icon":"faBat","aliases":[]},{"icon":"faBath","aliases":["faBathtub"]},{"icon":"faBathtub","aliases":["faBathtub"]},{"icon":"faBattery","aliases":["faBattery","faBattery5"]},{"icon":"faBattery0","aliases":["faBattery0"]},{"icon":"faBattery1","aliases":["faBattery1"]},{"icon":"faBattery2","aliases":["faBattery2"]},{"icon":"faBattery3","aliases":["faBattery3"]},{"icon":"faBattery4","aliases":["faBattery4"]},{"icon":"faBattery5","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryBolt","aliases":[]},{"icon":"faBatteryCar","aliases":["faBatteryCar"]},{"icon":"faBatteryEmpty","aliases":["faBattery0"]},{"icon":"faBatteryExclamation","aliases":[]},{"icon":"faBatteryFull","aliases":["faBattery","faBattery5"]},{"icon":"faBatteryHalf","aliases":["faBattery3"]},{"icon":"faBatteryLow","aliases":["faBattery1"]},{"icon":"faBatteryQuarter","aliases":["faBattery2"]},{"icon":"faBatterySlash","aliases":[]},{"icon":"faBatteryThreeQuarters","aliases":["faBattery4"]},{"icon":"faBed","aliases":[]},{"icon":"faBedAlt","aliases":["faBedAlt"]},{"icon":"faBedBunk","aliases":[]},{"icon":"faBedEmpty","aliases":[]},{"icon":"faBedFront","aliases":["faBedAlt"]},{"icon":"faBedPulse","aliases":["faProcedures"]},{"icon":"faBee","aliases":[]},{"icon":"faBeer","aliases":["faBeer"]},{"icon":"faBeerFoam","aliases":["faBeerFoam"]},{"icon":"faBeerMug","aliases":["faBeerFoam"]},{"icon":"faBeerMugEmpty","aliases":["faBeer"]},{"icon":"faBell","aliases":[]},{"icon":"faBellConcierge","aliases":["faConciergeBell"]},{"icon":"faBellExclamation","aliases":[]},{"icon":"faBellOn","aliases":[]},{"icon":"faBellPlus","aliases":[]},{"icon":"faBellRing","aliases":[]},{"icon":"faBellSchool","aliases":[]},{"icon":"faBellSchoolSlash","aliases":[]},{"icon":"faBellSlash","aliases":[]},{"icon":"faBells","aliases":[]},{"icon":"faBenchTree","aliases":[]},{"icon":"faBetamax","aliases":["faBetamax"]},{"icon":"faBezierCurve","aliases":[]},{"icon":"faBible","aliases":["faBible"]},{"icon":"faBicycle","aliases":[]},{"icon":"faBiking","aliases":["faBiking"]},{"icon":"faBikingMountain","aliases":["faBikingMountain"]},{"icon":"faBillboard","aliases":[]},{"icon":"faBinBottles","aliases":[]},{"icon":"faBinBottlesRecycle","aliases":[]},{"icon":"faBinRecycle","aliases":[]},{"icon":"faBinary","aliases":[]},{"icon":"faBinaryCircleCheck","aliases":[]},{"icon":"faBinaryLock","aliases":[]},{"icon":"faBinarySlash","aliases":[]},{"icon":"faBinoculars","aliases":[]},{"icon":"faBiohazard","aliases":[]},{"icon":"faBird","aliases":[]},{"icon":"faBirthdayCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faBitcoinSign","aliases":[]},{"icon":"faBlackboard","aliases":["faBlackboard"]},{"icon":"faBlanket","aliases":[]},{"icon":"faBlanketFire","aliases":[]},{"icon":"faBlender","aliases":[]},{"icon":"faBlenderPhone","aliases":[]},{"icon":"faBlind","aliases":["faBlind"]},{"icon":"faBlinds","aliases":[]},{"icon":"faBlindsOpen","aliases":[]},{"icon":"faBlindsRaised","aliases":[]},{"icon":"faBlock","aliases":[]},{"icon":"faBlockBrick","aliases":["faWallBrick"]},{"icon":"faBlockBrickFire","aliases":["faFirewall"]},{"icon":"faBlockQuestion","aliases":[]},{"icon":"faBlockQuote","aliases":[]},{"icon":"faBlog","aliases":[]},{"icon":"faBlueberries","aliases":[]},{"icon":"faBluetooth","aliases":[]},{"icon":"faBold","aliases":[]},{"icon":"faBolt","aliases":["faZap"]},{"icon":"faBoltAuto","aliases":[]},{"icon":"faBoltLightning","aliases":[]},{"icon":"faBoltSlash","aliases":[]},{"icon":"faBomb","aliases":[]},{"icon":"faBone","aliases":[]},{"icon":"faBoneBreak","aliases":[]},{"icon":"faBong","aliases":[]},{"icon":"faBook","aliases":[]},{"icon":"faBookAlt","aliases":["faBookAlt"]},{"icon":"faBookArrowRight","aliases":[]},{"icon":"faBookArrowUp","aliases":[]},{"icon":"faBookAtlas","aliases":["faAtlas"]},{"icon":"faBookBible","aliases":["faBible"]},{"icon":"faBookBlank","aliases":["faBookAlt"]},{"icon":"faBookBookmark","aliases":[]},{"icon":"faBookCircle","aliases":["faBookCircle"]},{"icon":"faBookCircleArrowRight","aliases":[]},{"icon":"faBookCircleArrowUp","aliases":[]},{"icon":"faBookCopy","aliases":[]},{"icon":"faBookDead","aliases":["faBookDead"]},{"icon":"faBookFont","aliases":[]},{"icon":"faBookHeart","aliases":[]},{"icon":"faBookJournalWhills","aliases":["faJournalWhills"]},{"icon":"faBookLaw","aliases":["faBookLaw"]},{"icon":"faBookMedical","aliases":[]},{"icon":"faBookOpen","aliases":[]},{"icon":"faBookOpenAlt","aliases":["faBookOpenAlt"]},{"icon":"faBookOpenCover","aliases":["faBookOpenAlt"]},{"icon":"faBookOpenReader","aliases":["faBookReader"]},{"icon":"faBookQuran","aliases":["faQuran"]},{"icon":"faBookReader","aliases":["faBookReader"]},{"icon":"faBookSection","aliases":["faBookLaw"]},{"icon":"faBookSkull","aliases":["faBookDead"]},{"icon":"faBookSparkles","aliases":["faBookSpells"]},{"icon":"faBookSpells","aliases":["faBookSpells"]},{"icon":"faBookTanakh","aliases":["faTanakh"]},{"icon":"faBookUser","aliases":[]},{"icon":"faBookmark","aliases":[]},{"icon":"faBookmarkCircle","aliases":["faBookmarkCircle"]},{"icon":"faBookmarkSlash","aliases":[]},{"icon":"faBooks","aliases":[]},{"icon":"faBooksMedical","aliases":[]},{"icon":"faBoombox","aliases":[]},{"icon":"faBoot","aliases":[]},{"icon":"faBootHeeled","aliases":[]},{"icon":"faBoothCurtain","aliases":[]},{"icon":"faBorderAll","aliases":[]},{"icon":"faBorderBottom","aliases":[]},{"icon":"faBorderBottomRight","aliases":["faBorderStyleAlt"]},{"icon":"faBorderCenterH","aliases":[]},{"icon":"faBorderCenterV","aliases":[]},{"icon":"faBorderInner","aliases":[]},{"icon":"faBorderLeft","aliases":[]},{"icon":"faBorderNone","aliases":[]},{"icon":"faBorderOuter","aliases":[]},{"icon":"faBorderRight","aliases":[]},{"icon":"faBorderStyle","aliases":["faBorderStyle"]},{"icon":"faBorderStyleAlt","aliases":["faBorderStyleAlt"]},{"icon":"faBorderTop","aliases":[]},{"icon":"faBorderTopLeft","aliases":["faBorderStyle"]},{"icon":"faBoreHole","aliases":[]},{"icon":"faBottleBaby","aliases":[]},{"icon":"faBottleDroplet","aliases":[]},{"icon":"faBottleWater","aliases":[]},{"icon":"faBowArrow","aliases":[]},{"icon":"faBowlChopsticks","aliases":[]},{"icon":"faBowlChopsticksNoodles","aliases":[]},{"icon":"faBowlFood","aliases":[]},{"icon":"faBowlHot","aliases":["faSoup"]},{"icon":"faBowlRice","aliases":[]},{"icon":"faBowlSalad","aliases":["faBowlSalad"]},{"icon":"faBowlScoop","aliases":["faBowlShavedIce"]},{"icon":"faBowlScoops","aliases":[]},{"icon":"faBowlShavedIce","aliases":["faBowlShavedIce"]},{"icon":"faBowlSoftServe","aliases":[]},{"icon":"faBowlSpoon","aliases":[]},{"icon":"faBowlingBall","aliases":[]},{"icon":"faBowlingBallPin","aliases":[]},{"icon":"faBowlingPins","aliases":[]},{"icon":"faBox","aliases":[]},{"icon":"faBoxAlt","aliases":["faBoxAlt"]},{"icon":"faBoxArchive","aliases":["faArchive"]},{"icon":"faBoxBallot","aliases":[]},{"icon":"faBoxCheck","aliases":[]},{"icon":"faBoxCircleCheck","aliases":[]},{"icon":"faBoxDollar","aliases":["faBoxUsd"]},{"icon":"faBoxFragile","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faBoxFull","aliases":["faBoxFull"]},{"icon":"faBoxHeart","aliases":[]},{"icon":"faBoxOpen","aliases":[]},{"icon":"faBoxOpenFull","aliases":["faBoxFull"]},{"icon":"faBoxTaped","aliases":["faBoxAlt"]},{"icon":"faBoxTissue","aliases":[]},{"icon":"faBoxUp","aliases":["faBoxUp"]},{"icon":"faBoxUsd","aliases":["faBoxUsd"]},{"icon":"faBoxes","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesAlt","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxesPacking","aliases":[]},{"icon":"faBoxesStacked","aliases":["faBoxes","faBoxesAlt"]},{"icon":"faBoxingGlove","aliases":["faGloveBoxing"]},{"icon":"faBracket","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketCurly","aliases":["faBracketCurlyLeft"]},{"icon":"faBracketCurlyLeft","aliases":["faBracketCurlyLeft"]},{"icon":"faBracketCurlyRight","aliases":[]},{"icon":"faBracketLeft","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketRound","aliases":["faParenthesis"]},{"icon":"faBracketRoundRight","aliases":[]},{"icon":"faBracketSquare","aliases":["faBracket","faBracketLeft"]},{"icon":"faBracketSquareRight","aliases":[]},{"icon":"faBrackets","aliases":["faBrackets"]},{"icon":"faBracketsCurly","aliases":[]},{"icon":"faBracketsRound","aliases":["faParentheses"]},{"icon":"faBracketsSquare","aliases":["faBrackets"]},{"icon":"faBraille","aliases":[]},{"icon":"faBrain","aliases":[]},{"icon":"faBrainArrowCurvedRight","aliases":["faMindShare"]},{"icon":"faBrainCircuit","aliases":[]},{"icon":"faBrakeWarning","aliases":[]},{"icon":"faBrazilianRealSign","aliases":[]},{"icon":"faBreadLoaf","aliases":[]},{"icon":"faBreadSlice","aliases":[]},{"icon":"faBreadSliceButter","aliases":[]},{"icon":"faBridge","aliases":[]},{"icon":"faBridgeCircleCheck","aliases":[]},{"icon":"faBridgeCircleExclamation","aliases":[]},{"icon":"faBridgeCircleXmark","aliases":[]},{"icon":"faBridgeLock","aliases":[]},{"icon":"faBridgeSuspension","aliases":[]},{"icon":"faBridgeWater","aliases":[]},{"icon":"faBriefcase","aliases":[]},{"icon":"faBriefcaseArrowRight","aliases":[]},{"icon":"faBriefcaseBlank","aliases":[]},{"icon":"faBriefcaseClock","aliases":["faBriefcaseClock"]},{"icon":"faBriefcaseMedical","aliases":[]},{"icon":"faBrightness","aliases":[]},{"icon":"faBrightnessLow","aliases":[]},{"icon":"faBringForward","aliases":[]},{"icon":"faBringFront","aliases":[]},{"icon":"faBroadcastTower","aliases":["faBroadcastTower"]},{"icon":"faBroccoli","aliases":[]},{"icon":"faBroom","aliases":[]},{"icon":"faBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faBroomWide","aliases":[]},{"icon":"faBrowser","aliases":[]},{"icon":"faBrowsers","aliases":[]},{"icon":"faBrush","aliases":[]},{"icon":"faBucket","aliases":[]},{"icon":"faBug","aliases":[]},{"icon":"faBugSlash","aliases":[]},{"icon":"faBugs","aliases":[]},{"icon":"faBuilding","aliases":[]},{"icon":"faBuildingCircleArrowRight","aliases":[]},{"icon":"faBuildingCircleCheck","aliases":[]},{"icon":"faBuildingCircleExclamation","aliases":[]},{"icon":"faBuildingCircleXmark","aliases":[]},{"icon":"faBuildingColumns","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faBuildingFlag","aliases":[]},{"icon":"faBuildingLock","aliases":[]},{"icon":"faBuildingMagnifyingGlass","aliases":[]},{"icon":"faBuildingMemo","aliases":[]},{"icon":"faBuildingNgo","aliases":[]},{"icon":"faBuildingShield","aliases":[]},{"icon":"faBuildingUn","aliases":[]},{"icon":"faBuildingUser","aliases":[]},{"icon":"faBuildingWheat","aliases":[]},{"icon":"faBuildings","aliases":[]},{"icon":"faBulldozer","aliases":[]},{"icon":"faBullhorn","aliases":[]},{"icon":"faBullseye","aliases":[]},{"icon":"faBullseyeArrow","aliases":[]},{"icon":"faBullseyePointer","aliases":[]},{"icon":"faBuoy","aliases":[]},{"icon":"faBuoyMooring","aliases":[]},{"icon":"faBurger","aliases":["faHamburger"]},{"icon":"faBurgerCheese","aliases":["faCheeseburger"]},{"icon":"faBurgerFries","aliases":[]},{"icon":"faBurgerGlass","aliases":[]},{"icon":"faBurgerLettuce","aliases":[]},{"icon":"faBurgerSoda","aliases":[]},{"icon":"faBurn","aliases":["faBurn"]},{"icon":"faBurrito","aliases":[]},{"icon":"faBurst","aliases":[]},{"icon":"faBus","aliases":[]},{"icon":"faBusAlt","aliases":["faBusAlt"]},{"icon":"faBusSchool","aliases":[]},{"icon":"faBusSimple","aliases":["faBusAlt"]},{"icon":"faBusinessFront","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faBusinessTime","aliases":["faBriefcaseClock"]},{"icon":"faButter","aliases":[]},{"icon":"faC","aliases":[]},{"icon":"faCab","aliases":["faCab"]},{"icon":"faCabin","aliases":[]},{"icon":"faCabinetFiling","aliases":[]},{"icon":"faCableCar","aliases":["faTram"]},{"icon":"faCactus","aliases":[]},{"icon":"faCaduceus","aliases":[]},{"icon":"faCake","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeCandles","aliases":["faBirthdayCake","faCake"]},{"icon":"faCakeSlice","aliases":["faShortcake"]},{"icon":"faCalculator","aliases":[]},{"icon":"faCalculatorAlt","aliases":["faCalculatorAlt"]},{"icon":"faCalculatorSimple","aliases":["faCalculatorAlt"]},{"icon":"faCalendar","aliases":[]},{"icon":"faCalendarAlt","aliases":["faCalendarAlt"]},{"icon":"faCalendarArrowDown","aliases":["faCalendarDownload"]},{"icon":"faCalendarArrowUp","aliases":["faCalendarUpload"]},{"icon":"faCalendarCheck","aliases":[]},{"icon":"faCalendarCircle","aliases":["faCalendarCircle"]},{"icon":"faCalendarCircleExclamation","aliases":[]},{"icon":"faCalendarCircleMinus","aliases":[]},{"icon":"faCalendarCirclePlus","aliases":[]},{"icon":"faCalendarCircleUser","aliases":[]},{"icon":"faCalendarClock","aliases":["faCalendarTime"]},{"icon":"faCalendarDay","aliases":[]},{"icon":"faCalendarDays","aliases":["faCalendarAlt"]},{"icon":"faCalendarDownload","aliases":["faCalendarDownload"]},{"icon":"faCalendarEdit","aliases":["faCalendarEdit"]},{"icon":"faCalendarExclamation","aliases":[]},{"icon":"faCalendarHeart","aliases":[]},{"icon":"faCalendarImage","aliases":[]},{"icon":"faCalendarLines","aliases":["faCalendarNote"]},{"icon":"faCalendarLinesPen","aliases":[]},{"icon":"faCalendarMinus","aliases":[]},{"icon":"faCalendarNote","aliases":["faCalendarNote"]},{"icon":"faCalendarPen","aliases":["faCalendarEdit"]},{"icon":"faCalendarPlus","aliases":[]},{"icon":"faCalendarRange","aliases":[]},{"icon":"faCalendarStar","aliases":[]},{"icon":"faCalendarTime","aliases":["faCalendarTime"]},{"icon":"faCalendarTimes","aliases":["faCalendarTimes"]},{"icon":"faCalendarUpload","aliases":["faCalendarUpload"]},{"icon":"faCalendarUsers","aliases":[]},{"icon":"faCalendarWeek","aliases":[]},{"icon":"faCalendarXmark","aliases":["faCalendarTimes"]},{"icon":"faCalendars","aliases":[]},{"icon":"faCamcorder","aliases":["faVideoHandheld"]},{"icon":"faCamera","aliases":["faCameraAlt"]},{"icon":"faCameraAlt","aliases":["faCameraAlt"]},{"icon":"faCameraCctv","aliases":["faCctv"]},{"icon":"faCameraCircle","aliases":["faCameraCircle"]},{"icon":"faCameraHome","aliases":["faCameraHome"]},{"icon":"faCameraMovie","aliases":[]},{"icon":"faCameraPolaroid","aliases":[]},{"icon":"faCameraRetro","aliases":[]},{"icon":"faCameraRotate","aliases":[]},{"icon":"faCameraSecurity","aliases":["faCameraHome"]},{"icon":"faCameraSlash","aliases":[]},{"icon":"faCameraViewfinder","aliases":["faScreenshot"]},{"icon":"faCameraWeb","aliases":["faWebcam"]},{"icon":"faCameraWebSlash","aliases":["faWebcamSlash"]},{"icon":"faCampfire","aliases":[]},{"icon":"faCampground","aliases":[]},{"icon":"faCanFood","aliases":[]},{"icon":"faCancel","aliases":["faCancel"]},{"icon":"faCandleHolder","aliases":[]},{"icon":"faCandy","aliases":[]},{"icon":"faCandyBar","aliases":["faChocolateBar"]},{"icon":"faCandyCane","aliases":[]},{"icon":"faCandyCorn","aliases":[]},{"icon":"faCannabis","aliases":[]},{"icon":"faCannon","aliases":[]},{"icon":"faCapsules","aliases":[]},{"icon":"faCar","aliases":["faAutomobile"]},{"icon":"faCarAlt","aliases":["faCarAlt"]},{"icon":"faCarBattery","aliases":["faBatteryCar"]},{"icon":"faCarBolt","aliases":[]},{"icon":"faCarBuilding","aliases":[]},{"icon":"faCarBump","aliases":[]},{"icon":"faCarBurst","aliases":["faCarCrash"]},{"icon":"faCarBus","aliases":[]},{"icon":"faCarCircleBolt","aliases":[]},{"icon":"faCarCrash","aliases":["faCarCrash"]},{"icon":"faCarGarage","aliases":[]},{"icon":"faCarMechanic","aliases":["faCarMechanic"]},{"icon":"faCarMirrors","aliases":[]},{"icon":"faCarOn","aliases":[]},{"icon":"faCarRear","aliases":["faCarAlt"]},{"icon":"faCarSide","aliases":[]},{"icon":"faCarSideBolt","aliases":[]},{"icon":"faCarTilt","aliases":[]},{"icon":"faCarTunnel","aliases":[]},{"icon":"faCarWash","aliases":[]},{"icon":"faCarWrench","aliases":["faCarMechanic"]},{"icon":"faCaravan","aliases":[]},{"icon":"faCaravanAlt","aliases":["faCaravanAlt"]},{"icon":"faCaravanSimple","aliases":["faCaravanAlt"]},{"icon":"faCardClub","aliases":[]},{"icon":"faCardDiamond","aliases":[]},{"icon":"faCardHeart","aliases":[]},{"icon":"faCardSpade","aliases":[]},{"icon":"faCards","aliases":[]},{"icon":"faCardsBlank","aliases":[]},{"icon":"faCaretCircleDown","aliases":["faCaretCircleDown"]},{"icon":"faCaretCircleLeft","aliases":["faCaretCircleLeft"]},{"icon":"faCaretCircleRight","aliases":["faCaretCircleRight"]},{"icon":"faCaretCircleUp","aliases":["faCaretCircleUp"]},{"icon":"faCaretDown","aliases":[]},{"icon":"faCaretLeft","aliases":[]},{"icon":"faCaretRight","aliases":[]},{"icon":"faCaretSquareDown","aliases":["faCaretSquareDown"]},{"icon":"faCaretSquareLeft","aliases":["faCaretSquareLeft"]},{"icon":"faCaretSquareRight","aliases":["faCaretSquareRight"]},{"icon":"faCaretSquareUp","aliases":["faCaretSquareUp"]},{"icon":"faCaretUp","aliases":[]},{"icon":"faCarriageBaby","aliases":["faCarriageBaby"]},{"icon":"faCarrot","aliases":[]},{"icon":"faCars","aliases":[]},{"icon":"faCartArrowDown","aliases":[]},{"icon":"faCartArrowUp","aliases":[]},{"icon":"faCartCircleArrowDown","aliases":[]},{"icon":"faCartCircleArrowUp","aliases":[]},{"icon":"faCartCircleCheck","aliases":[]},{"icon":"faCartCircleExclamation","aliases":[]},{"icon":"faCartCirclePlus","aliases":[]},{"icon":"faCartCircleXmark","aliases":[]},{"icon":"faCartFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faCartFlatbedBoxes","aliases":["faDollyFlatbedAlt"]},{"icon":"faCartFlatbedEmpty","aliases":["faDollyFlatbedEmpty"]},{"icon":"faCartFlatbedSuitcase","aliases":["faLuggageCart"]},{"icon":"faCartMinus","aliases":[]},{"icon":"faCartPlus","aliases":[]},{"icon":"faCartShopping","aliases":["faShoppingCart"]},{"icon":"faCartShoppingFast","aliases":[]},{"icon":"faCartXmark","aliases":[]},{"icon":"faCashRegister","aliases":[]},{"icon":"faCassetteBetamax","aliases":["faBetamax"]},{"icon":"faCassetteTape","aliases":[]},{"icon":"faCassetteVhs","aliases":["faVhs"]},{"icon":"faCastle","aliases":[]},{"icon":"faCat","aliases":[]},{"icon":"faCatSpace","aliases":[]},{"icon":"faCauldron","aliases":[]},{"icon":"faCctv","aliases":["faCctv"]},{"icon":"faCediSign","aliases":[]},{"icon":"faCentSign","aliases":[]},{"icon":"faCertificate","aliases":[]},{"icon":"faChain","aliases":["faChain"]},{"icon":"faChainBroken","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChainHorizontal","aliases":["faChainHorizontal"]},{"icon":"faChainHorizontalSlash","aliases":["faChainHorizontalSlash"]},{"icon":"faChainSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faChair","aliases":[]},{"icon":"faChairOffice","aliases":[]},{"icon":"faChalkboard","aliases":["faBlackboard"]},{"icon":"faChalkboardTeacher","aliases":["faChalkboardTeacher"]},{"icon":"faChalkboardUser","aliases":["faChalkboardTeacher"]},{"icon":"faChampagneGlass","aliases":["faGlassChampagne"]},{"icon":"faChampagneGlasses","aliases":["faGlassCheers"]},{"icon":"faChargingStation","aliases":[]},{"icon":"faChartArea","aliases":["faAreaChart"]},{"icon":"faChartBar","aliases":["faBarChart"]},{"icon":"faChartBullet","aliases":[]},{"icon":"faChartCandlestick","aliases":[]},{"icon":"faChartColumn","aliases":[]},{"icon":"faChartGantt","aliases":[]},{"icon":"faChartKanban","aliases":[]},{"icon":"faChartLine","aliases":["faLineChart"]},{"icon":"faChartLineDown","aliases":[]},{"icon":"faChartLineUp","aliases":[]},{"icon":"faChartLineUpDown","aliases":[]},{"icon":"faChartMixed","aliases":["faAnalytics"]},{"icon":"faChartMixedUpCircleCurrency","aliases":[]},{"icon":"faChartMixedUpCircleDollar","aliases":[]},{"icon":"faChartNetwork","aliases":[]},{"icon":"faChartPie","aliases":["faPieChart"]},{"icon":"faChartPieAlt","aliases":["faChartPieAlt"]},{"icon":"faChartPieSimple","aliases":["faChartPieAlt"]},{"icon":"faChartPieSimpleCircleCurrency","aliases":[]},{"icon":"faChartPieSimpleCircleDollar","aliases":[]},{"icon":"faChartPyramid","aliases":[]},{"icon":"faChartRadar","aliases":[]},{"icon":"faChartScatter","aliases":[]},{"icon":"faChartScatter3d","aliases":[]},{"icon":"faChartScatterBubble","aliases":[]},{"icon":"faChartSimple","aliases":[]},{"icon":"faChartSimpleHorizontal","aliases":[]},{"icon":"faChartTreeMap","aliases":[]},{"icon":"faChartUser","aliases":["faUserChart"]},{"icon":"faChartWaterfall","aliases":[]},{"icon":"faCheck","aliases":[]},{"icon":"faCheckCircle","aliases":["faCheckCircle"]},{"icon":"faCheckDouble","aliases":[]},{"icon":"faCheckSquare","aliases":["faCheckSquare"]},{"icon":"faCheckToSlot","aliases":["faVoteYea"]},{"icon":"faCheese","aliases":[]},{"icon":"faCheeseSwiss","aliases":[]},{"icon":"faCheeseburger","aliases":["faCheeseburger"]},{"icon":"faCherries","aliases":[]},{"icon":"faChess","aliases":[]},{"icon":"faChessBishop","aliases":[]},{"icon":"faChessBishopAlt","aliases":["faChessBishopAlt"]},{"icon":"faChessBishopPiece","aliases":["faChessBishopAlt"]},{"icon":"faChessBoard","aliases":[]},{"icon":"faChessClock","aliases":[]},{"icon":"faChessClockAlt","aliases":["faChessClockAlt"]},{"icon":"faChessClockFlip","aliases":["faChessClockAlt"]},{"icon":"faChessKing","aliases":[]},{"icon":"faChessKingAlt","aliases":["faChessKingAlt"]},{"icon":"faChessKingPiece","aliases":["faChessKingAlt"]},{"icon":"faChessKnight","aliases":[]},{"icon":"faChessKnightAlt","aliases":["faChessKnightAlt"]},{"icon":"faChessKnightPiece","aliases":["faChessKnightAlt"]},{"icon":"faChessPawn","aliases":[]},{"icon":"faChessPawnAlt","aliases":["faChessPawnAlt"]},{"icon":"faChessPawnPiece","aliases":["faChessPawnAlt"]},{"icon":"faChessQueen","aliases":[]},{"icon":"faChessQueenAlt","aliases":["faChessQueenAlt"]},{"icon":"faChessQueenPiece","aliases":["faChessQueenAlt"]},{"icon":"faChessRook","aliases":[]},{"icon":"faChessRookAlt","aliases":["faChessRookAlt"]},{"icon":"faChessRookPiece","aliases":["faChessRookAlt"]},{"icon":"faChestnut","aliases":[]},{"icon":"faChevronCircleDown","aliases":["faChevronCircleDown"]},{"icon":"faChevronCircleLeft","aliases":["faChevronCircleLeft"]},{"icon":"faChevronCircleRight","aliases":["faChevronCircleRight"]},{"icon":"faChevronCircleUp","aliases":["faChevronCircleUp"]},{"icon":"faChevronDoubleDown","aliases":["faChevronDoubleDown"]},{"icon":"faChevronDoubleLeft","aliases":["faChevronDoubleLeft"]},{"icon":"faChevronDoubleRight","aliases":["faChevronDoubleRight"]},{"icon":"faChevronDoubleUp","aliases":["faChevronDoubleUp"]},{"icon":"faChevronDown","aliases":[]},{"icon":"faChevronLeft","aliases":[]},{"icon":"faChevronRight","aliases":[]},{"icon":"faChevronSquareDown","aliases":["faChevronSquareDown"]},{"icon":"faChevronSquareLeft","aliases":["faChevronSquareLeft"]},{"icon":"faChevronSquareRight","aliases":["faChevronSquareRight"]},{"icon":"faChevronSquareUp","aliases":["faChevronSquareUp"]},{"icon":"faChevronUp","aliases":[]},{"icon":"faChevronsDown","aliases":["faChevronDoubleDown"]},{"icon":"faChevronsLeft","aliases":["faChevronDoubleLeft"]},{"icon":"faChevronsRight","aliases":["faChevronDoubleRight"]},{"icon":"faChevronsUp","aliases":["faChevronDoubleUp"]},{"icon":"faChfSign","aliases":[]},{"icon":"faChild","aliases":[]},{"icon":"faChildCombatant","aliases":["faChildRifle"]},{"icon":"faChildDress","aliases":[]},{"icon":"faChildReaching","aliases":[]},{"icon":"faChildRifle","aliases":["faChildRifle"]},{"icon":"faChildren","aliases":[]},{"icon":"faChimney","aliases":[]},{"icon":"faChocolateBar","aliases":["faChocolateBar"]},{"icon":"faChopsticks","aliases":[]},{"icon":"faChurch","aliases":[]},{"icon":"faCircle","aliases":[]},{"icon":"faCircle0","aliases":[]},{"icon":"faCircle1","aliases":[]},{"icon":"faCircle2","aliases":[]},{"icon":"faCircle3","aliases":[]},{"icon":"faCircle4","aliases":[]},{"icon":"faCircle5","aliases":[]},{"icon":"faCircle6","aliases":[]},{"icon":"faCircle7","aliases":[]},{"icon":"faCircle8","aliases":[]},{"icon":"faCircle9","aliases":[]},{"icon":"faCircleA","aliases":[]},{"icon":"faCircleAmpersand","aliases":[]},{"icon":"faCircleArrowDown","aliases":["faArrowCircleDown"]},{"icon":"faCircleArrowDownLeft","aliases":[]},{"icon":"faCircleArrowDownRight","aliases":[]},{"icon":"faCircleArrowLeft","aliases":["faArrowCircleLeft"]},{"icon":"faCircleArrowRight","aliases":["faArrowCircleRight"]},{"icon":"faCircleArrowUp","aliases":["faArrowCircleUp"]},{"icon":"faCircleArrowUpLeft","aliases":[]},{"icon":"faCircleArrowUpRight","aliases":[]},{"icon":"faCircleB","aliases":[]},{"icon":"faCircleBolt","aliases":[]},{"icon":"faCircleBookOpen","aliases":["faBookCircle"]},{"icon":"faCircleBookmark","aliases":["faBookmarkCircle"]},{"icon":"faCircleC","aliases":[]},{"icon":"faCircleCalendar","aliases":["faCalendarCircle"]},{"icon":"faCircleCamera","aliases":["faCameraCircle"]},{"icon":"faCircleCaretDown","aliases":["faCaretCircleDown"]},{"icon":"faCircleCaretLeft","aliases":["faCaretCircleLeft"]},{"icon":"faCircleCaretRight","aliases":["faCaretCircleRight"]},{"icon":"faCircleCaretUp","aliases":["faCaretCircleUp"]},{"icon":"faCircleCheck","aliases":["faCheckCircle"]},{"icon":"faCircleChevronDown","aliases":["faChevronCircleDown"]},{"icon":"faCircleChevronLeft","aliases":["faChevronCircleLeft"]},{"icon":"faCircleChevronRight","aliases":["faChevronCircleRight"]},{"icon":"faCircleChevronUp","aliases":["faChevronCircleUp"]},{"icon":"faCircleD","aliases":[]},{"icon":"faCircleDashed","aliases":[]},{"icon":"faCircleDivide","aliases":[]},{"icon":"faCircleDollar","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faCircleDollarToSlot","aliases":["faDonate"]},{"icon":"faCircleDot","aliases":["faDotCircle"]},{"icon":"faCircleDown","aliases":["faArrowAltCircleDown"]},{"icon":"faCircleDownLeft","aliases":[]},{"icon":"faCircleDownRight","aliases":[]},{"icon":"faCircleE","aliases":[]},{"icon":"faCircleEllipsis","aliases":[]},{"icon":"faCircleEllipsisVertical","aliases":[]},{"icon":"faCircleEnvelope","aliases":["faEnvelopeCircle"]},{"icon":"faCircleEuro","aliases":[]},{"icon":"faCircleExclamation","aliases":["faExclamationCircle"]},{"icon":"faCircleExclamationCheck","aliases":[]},{"icon":"faCircleF","aliases":[]},{"icon":"faCircleG","aliases":[]},{"icon":"faCircleGf","aliases":[]},{"icon":"faCircleH","aliases":["faHospitalSymbol"]},{"icon":"faCircleHalf","aliases":[]},{"icon":"faCircleHalfStroke","aliases":["faAdjust"]},{"icon":"faCircleHeart","aliases":["faHeartCircle"]},{"icon":"faCircleI","aliases":[]},{"icon":"faCircleInfo","aliases":["faInfoCircle"]},{"icon":"faCircleJ","aliases":[]},{"icon":"faCircleK","aliases":[]},{"icon":"faCircleL","aliases":[]},{"icon":"faCircleLeft","aliases":["faArrowAltCircleLeft"]},{"icon":"faCircleLocationArrow","aliases":["faLocationCircle"]},{"icon":"faCircleM","aliases":[]},{"icon":"faCircleMicrophone","aliases":["faMicrophoneCircle"]},{"icon":"faCircleMicrophoneLines","aliases":["faMicrophoneCircleAlt"]},{"icon":"faCircleMinus","aliases":["faMinusCircle"]},{"icon":"faCircleN","aliases":[]},{"icon":"faCircleNodes","aliases":[]},{"icon":"faCircleNotch","aliases":[]},{"icon":"faCircleO","aliases":[]},{"icon":"faCircleP","aliases":[]},{"icon":"faCircleParking","aliases":["faParkingCircle"]},{"icon":"faCirclePause","aliases":["faPauseCircle"]},{"icon":"faCirclePhone","aliases":["faPhoneCircle"]},{"icon":"faCirclePhoneFlip","aliases":["faPhoneCircleAlt"]},{"icon":"faCirclePhoneHangup","aliases":["faPhoneCircleDown"]},{"icon":"faCirclePlay","aliases":["faPlayCircle"]},{"icon":"faCirclePlus","aliases":["faPlusCircle"]},{"icon":"faCircleQ","aliases":[]},{"icon":"faCircleQuarter","aliases":[]},{"icon":"faCircleQuarterStroke","aliases":[]},{"icon":"faCircleQuarters","aliases":[]},{"icon":"faCircleQuestion","aliases":["faQuestionCircle"]},{"icon":"faCircleR","aliases":[]},{"icon":"faCircleRadiation","aliases":["faRadiationAlt"]},{"icon":"faCircleRight","aliases":["faArrowAltCircleRight"]},{"icon":"faCircleS","aliases":[]},{"icon":"faCircleSmall","aliases":[]},{"icon":"faCircleSort","aliases":["faSortCircle"]},{"icon":"faCircleSortDown","aliases":["faSortCircleDown"]},{"icon":"faCircleSortUp","aliases":["faSortCircleUp"]},{"icon":"faCircleStar","aliases":["faStarCircle"]},{"icon":"faCircleSterling","aliases":[]},{"icon":"faCircleStop","aliases":["faStopCircle"]},{"icon":"faCircleT","aliases":[]},{"icon":"faCircleThreeQuarters","aliases":[]},{"icon":"faCircleThreeQuartersStroke","aliases":[]},{"icon":"faCircleTrash","aliases":["faTrashCircle"]},{"icon":"faCircleU","aliases":[]},{"icon":"faCircleUp","aliases":["faArrowAltCircleUp"]},{"icon":"faCircleUpLeft","aliases":[]},{"icon":"faCircleUpRight","aliases":[]},{"icon":"faCircleUser","aliases":["faUserCircle"]},{"icon":"faCircleV","aliases":[]},{"icon":"faCircleVideo","aliases":["faVideoCircle"]},{"icon":"faCircleW","aliases":[]},{"icon":"faCircleWaveformLines","aliases":["faWaveformCircle"]},{"icon":"faCircleWifi","aliases":[]},{"icon":"faCircleWifiCircleWifi","aliases":["faCircleWifiGroup"]},{"icon":"faCircleWifiGroup","aliases":["faCircleWifiGroup"]},{"icon":"faCircleX","aliases":[]},{"icon":"faCircleXmark","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faCircleY","aliases":[]},{"icon":"faCircleYen","aliases":[]},{"icon":"faCircleZ","aliases":[]},{"icon":"faCirclesOverlap","aliases":[]},{"icon":"faCitrus","aliases":[]},{"icon":"faCitrusSlice","aliases":[]},{"icon":"faCity","aliases":[]},{"icon":"faClapperboard","aliases":[]},{"icon":"faClapperboardPlay","aliases":[]},{"icon":"faClarinet","aliases":[]},{"icon":"faClawMarks","aliases":[]},{"icon":"faClinicMedical","aliases":["faClinicMedical"]},{"icon":"faClipboard","aliases":[]},{"icon":"faClipboardCheck","aliases":[]},{"icon":"faClipboardList","aliases":[]},{"icon":"faClipboardListCheck","aliases":[]},{"icon":"faClipboardMedical","aliases":[]},{"icon":"faClipboardPrescription","aliases":[]},{"icon":"faClipboardQuestion","aliases":[]},{"icon":"faClipboardUser","aliases":[]},{"icon":"faClock","aliases":["faClockFour"]},{"icon":"faClockDesk","aliases":[]},{"icon":"faClockEight","aliases":[]},{"icon":"faClockEightThirty","aliases":[]},{"icon":"faClockEleven","aliases":[]},{"icon":"faClockElevenThirty","aliases":[]},{"icon":"faClockFive","aliases":[]},{"icon":"faClockFiveThirty","aliases":[]},{"icon":"faClockFour","aliases":["faClockFour"]},{"icon":"faClockFourThirty","aliases":[]},{"icon":"faClockNine","aliases":[]},{"icon":"faClockNineThirty","aliases":[]},{"icon":"faClockOne","aliases":[]},{"icon":"faClockOneThirty","aliases":[]},{"icon":"faClockRotateLeft","aliases":["faHistory"]},{"icon":"faClockSeven","aliases":[]},{"icon":"faClockSevenThirty","aliases":[]},{"icon":"faClockSix","aliases":[]},{"icon":"faClockSixThirty","aliases":[]},{"icon":"faClockTen","aliases":[]},{"icon":"faClockTenThirty","aliases":[]},{"icon":"faClockThree","aliases":[]},{"icon":"faClockThreeThirty","aliases":[]},{"icon":"faClockTwelve","aliases":[]},{"icon":"faClockTwelveThirty","aliases":[]},{"icon":"faClockTwo","aliases":[]},{"icon":"faClockTwoThirty","aliases":[]},{"icon":"faClone","aliases":[]},{"icon":"faClose","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faClosedCaptioning","aliases":[]},{"icon":"faClosedCaptioningSlash","aliases":[]},{"icon":"faClothesHanger","aliases":[]},{"icon":"faCloud","aliases":[]},{"icon":"faCloudArrowDown","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudArrowUp","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudBinary","aliases":[]},{"icon":"faCloudBolt","aliases":["faThunderstorm"]},{"icon":"faCloudBoltMoon","aliases":["faThunderstormMoon"]},{"icon":"faCloudBoltSun","aliases":["faThunderstormSun"]},{"icon":"faCloudCheck","aliases":[]},{"icon":"faCloudDownload","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDownloadAlt","aliases":["faCloudDownload","faCloudDownloadAlt"]},{"icon":"faCloudDrizzle","aliases":[]},{"icon":"faCloudExclamation","aliases":[]},{"icon":"faCloudFog","aliases":["faFog"]},{"icon":"faCloudHail","aliases":[]},{"icon":"faCloudHailMixed","aliases":[]},{"icon":"faCloudMeatball","aliases":[]},{"icon":"faCloudMinus","aliases":[]},{"icon":"faCloudMoon","aliases":[]},{"icon":"faCloudMoonRain","aliases":[]},{"icon":"faCloudMusic","aliases":[]},{"icon":"faCloudPlus","aliases":[]},{"icon":"faCloudQuestion","aliases":[]},{"icon":"faCloudRain","aliases":[]},{"icon":"faCloudRainbow","aliases":[]},{"icon":"faCloudShowers","aliases":[]},{"icon":"faCloudShowersHeavy","aliases":[]},{"icon":"faCloudShowersWater","aliases":[]},{"icon":"faCloudSlash","aliases":[]},{"icon":"faCloudSleet","aliases":[]},{"icon":"faCloudSnow","aliases":[]},{"icon":"faCloudSun","aliases":[]},{"icon":"faCloudSunRain","aliases":[]},{"icon":"faCloudUpload","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudUploadAlt","aliases":["faCloudUpload","faCloudUploadAlt"]},{"icon":"faCloudWord","aliases":[]},{"icon":"faCloudXmark","aliases":[]},{"icon":"faClouds","aliases":[]},{"icon":"faCloudsMoon","aliases":[]},{"icon":"faCloudsSun","aliases":[]},{"icon":"faClover","aliases":[]},{"icon":"faClub","aliases":[]},{"icon":"faCny","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faCocktail","aliases":["faCocktail"]},{"icon":"faCoconut","aliases":[]},{"icon":"faCode","aliases":[]},{"icon":"faCodeBranch","aliases":[]},{"icon":"faCodeCommit","aliases":[]},{"icon":"faCodeCompare","aliases":[]},{"icon":"faCodeFork","aliases":[]},{"icon":"faCodeMerge","aliases":[]},{"icon":"faCodePullRequest","aliases":[]},{"icon":"faCodePullRequestClosed","aliases":[]},{"icon":"faCodePullRequestDraft","aliases":[]},{"icon":"faCodeSimple","aliases":[]},{"icon":"faCoffee","aliases":["faCoffee"]},{"icon":"faCoffeeBean","aliases":[]},{"icon":"faCoffeeBeans","aliases":[]},{"icon":"faCoffeePot","aliases":[]},{"icon":"faCoffeeTogo","aliases":["faCoffeeTogo"]},{"icon":"faCoffin","aliases":[]},{"icon":"faCoffinCross","aliases":[]},{"icon":"faCog","aliases":["faCog"]},{"icon":"faCogs","aliases":["faCogs"]},{"icon":"faCoin","aliases":[]},{"icon":"faCoinBlank","aliases":[]},{"icon":"faCoinFront","aliases":[]},{"icon":"faCoinVertical","aliases":[]},{"icon":"faCoins","aliases":[]},{"icon":"faColon","aliases":[]},{"icon":"faColonSign","aliases":[]},{"icon":"faColumns","aliases":["faColumns"]},{"icon":"faColumns3","aliases":[]},{"icon":"faComet","aliases":[]},{"icon":"faComma","aliases":[]},{"icon":"faCommand","aliases":[]},{"icon":"faComment","aliases":[]},{"icon":"faCommentAlt","aliases":["faCommentAlt"]},{"icon":"faCommentAltArrowDown","aliases":["faCommentAltArrowDown"]},{"icon":"faCommentAltArrowUp","aliases":["faCommentAltArrowUp"]},{"icon":"faCommentAltCaptions","aliases":["faCommentAltCaptions"]},{"icon":"faCommentAltCheck","aliases":["faCommentAltCheck"]},{"icon":"faCommentAltDollar","aliases":["faCommentAltDollar"]},{"icon":"faCommentAltDots","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faCommentAltEdit","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faCommentAltExclamation","aliases":["faCommentAltExclamation"]},{"icon":"faCommentAltImage","aliases":["faCommentAltImage"]},{"icon":"faCommentAltLines","aliases":["faCommentAltLines"]},{"icon":"faCommentAltMedical","aliases":["faCommentAltMedical"]},{"icon":"faCommentAltMinus","aliases":["faCommentAltMinus"]},{"icon":"faCommentAltMusic","aliases":["faCommentAltMusic"]},{"icon":"faCommentAltPlus","aliases":["faCommentAltPlus"]},{"icon":"faCommentAltQuote","aliases":["faCommentAltQuote"]},{"icon":"faCommentAltSlash","aliases":["faCommentAltSlash"]},{"icon":"faCommentAltSmile","aliases":["faCommentAltSmile"]},{"icon":"faCommentAltText","aliases":["faCommentAltText"]},{"icon":"faCommentAltTimes","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faCommentArrowDown","aliases":[]},{"icon":"faCommentArrowUp","aliases":[]},{"icon":"faCommentArrowUpRight","aliases":[]},{"icon":"faCommentCaptions","aliases":[]},{"icon":"faCommentCheck","aliases":[]},{"icon":"faCommentCode","aliases":[]},{"icon":"faCommentDollar","aliases":[]},{"icon":"faCommentDots","aliases":["faCommenting"]},{"icon":"faCommentEdit","aliases":["faCommentEdit"]},{"icon":"faCommentExclamation","aliases":[]},{"icon":"faCommentHeart","aliases":[]},{"icon":"faCommentImage","aliases":[]},{"icon":"faCommentLines","aliases":[]},{"icon":"faCommentMedical","aliases":[]},{"icon":"faCommentMiddle","aliases":[]},{"icon":"faCommentMiddleAlt","aliases":["faCommentMiddleAlt"]},{"icon":"faCommentMiddleTop","aliases":[]},{"icon":"faCommentMiddleTopAlt","aliases":["faCommentMiddleTopAlt"]},{"icon":"faCommentMinus","aliases":[]},{"icon":"faCommentMusic","aliases":[]},{"icon":"faCommentPen","aliases":["faCommentEdit"]},{"icon":"faCommentPlus","aliases":[]},{"icon":"faCommentQuestion","aliases":[]},{"icon":"faCommentQuote","aliases":[]},{"icon":"faCommentSlash","aliases":[]},{"icon":"faCommentSmile","aliases":[]},{"icon":"faCommentSms","aliases":["faSms"]},{"icon":"faCommentText","aliases":[]},{"icon":"faCommentTimes","aliases":["faCommentTimes"]},{"icon":"faCommentXmark","aliases":["faCommentTimes"]},{"icon":"faCommenting","aliases":["faCommenting"]},{"icon":"faComments","aliases":[]},{"icon":"faCommentsAlt","aliases":["faCommentsAlt"]},{"icon":"faCommentsAltDollar","aliases":["faCommentsAltDollar"]},{"icon":"faCommentsDollar","aliases":[]},{"icon":"faCommentsQuestion","aliases":[]},{"icon":"faCommentsQuestionCheck","aliases":[]},{"icon":"faCompactDisc","aliases":[]},{"icon":"faCompass","aliases":[]},{"icon":"faCompassDrafting","aliases":["faDraftingCompass"]},{"icon":"faCompassSlash","aliases":[]},{"icon":"faCompress","aliases":[]},{"icon":"faCompressAlt","aliases":["faCompressAlt"]},{"icon":"faCompressArrows","aliases":["faCompressArrows"]},{"icon":"faCompressArrowsAlt","aliases":["faCompressArrowsAlt"]},{"icon":"faCompressWide","aliases":[]},{"icon":"faComputer","aliases":[]},{"icon":"faComputerClassic","aliases":[]},{"icon":"faComputerMouse","aliases":["faMouse"]},{"icon":"faComputerMouseScrollwheel","aliases":["faMouseAlt"]},{"icon":"faComputerSpeaker","aliases":[]},{"icon":"faConciergeBell","aliases":["faConciergeBell"]},{"icon":"faConstruction","aliases":["faConstruction"]},{"icon":"faContactBook","aliases":["faContactBook"]},{"icon":"faContactCard","aliases":["faContactCard","faVcard"]},{"icon":"faContainerStorage","aliases":[]},{"icon":"faConveyorBelt","aliases":[]},{"icon":"faConveyorBeltAlt","aliases":["faConveyorBeltAlt"]},{"icon":"faConveyorBeltArm","aliases":[]},{"icon":"faConveyorBeltBoxes","aliases":["faConveyorBeltAlt"]},{"icon":"faConveyorBeltEmpty","aliases":[]},{"icon":"faCookie","aliases":[]},{"icon":"faCookieBite","aliases":[]},{"icon":"faCopy","aliases":[]},{"icon":"faCopyright","aliases":[]},{"icon":"faCorn","aliases":[]},{"icon":"faCorner","aliases":[]},{"icon":"faCouch","aliases":[]},{"icon":"faCouchSmall","aliases":["faCouchSmall"]},{"icon":"faCourtSport","aliases":[]},{"icon":"faCow","aliases":[]},{"icon":"faCowbell","aliases":[]},{"icon":"faCowbellCirclePlus","aliases":["faCowbellMore"]},{"icon":"faCowbellMore","aliases":["faCowbellMore"]},{"icon":"faCrab","aliases":[]},{"icon":"faCrateApple","aliases":["faAppleCrate"]},{"icon":"faCrateEmpty","aliases":[]},{"icon":"faCreditCard","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardAlt","aliases":["faCreditCardAlt"]},{"icon":"faCreditCardBlank","aliases":[]},{"icon":"faCreditCardFront","aliases":[]},{"icon":"faCreemee","aliases":["faCreemee"]},{"icon":"faCricket","aliases":["faCricket"]},{"icon":"faCricketBatBall","aliases":["faCricket"]},{"icon":"faCroissant","aliases":[]},{"icon":"faCrop","aliases":[]},{"icon":"faCropAlt","aliases":["faCropAlt"]},{"icon":"faCropSimple","aliases":["faCropAlt"]},{"icon":"faCross","aliases":[]},{"icon":"faCrosshairs","aliases":[]},{"icon":"faCrosshairsSimple","aliases":[]},{"icon":"faCrow","aliases":[]},{"icon":"faCrown","aliases":[]},{"icon":"faCrutch","aliases":[]},{"icon":"faCrutches","aliases":[]},{"icon":"faCruzeiroSign","aliases":[]},{"icon":"faCrystalBall","aliases":[]},{"icon":"faCube","aliases":[]},{"icon":"faCubes","aliases":[]},{"icon":"faCubesStacked","aliases":[]},{"icon":"faCucumber","aliases":[]},{"icon":"faCupStraw","aliases":[]},{"icon":"faCupStrawSwoosh","aliases":[]},{"icon":"faCupTogo","aliases":["faCoffeeTogo"]},{"icon":"faCupcake","aliases":[]},{"icon":"faCurling","aliases":["faCurling"]},{"icon":"faCurlingStone","aliases":["faCurling"]},{"icon":"faCustard","aliases":[]},{"icon":"faCut","aliases":["faCut"]},{"icon":"faCutlery","aliases":["faCutlery"]},{"icon":"faD","aliases":[]},{"icon":"faDagger","aliases":[]},{"icon":"faDash","aliases":["faMinusLarge"]},{"icon":"faDashboard","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faDatabase","aliases":[]},{"icon":"faDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDeafness","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faDebug","aliases":["faDebug"]},{"icon":"faDedent","aliases":["faDedent"]},{"icon":"faDeer","aliases":[]},{"icon":"faDeerRudolph","aliases":[]},{"icon":"faDeleteLeft","aliases":["faBackspace"]},{"icon":"faDeleteRight","aliases":[]},{"icon":"faDemocrat","aliases":[]},{"icon":"faDesktop","aliases":["faDesktopAlt"]},{"icon":"faDesktopAlt","aliases":["faDesktopAlt"]},{"icon":"faDesktopArrowDown","aliases":[]},{"icon":"faDesktopCode","aliases":["faDesktopCode"]},{"icon":"faDesktopMedical","aliases":["faDesktopMedical"]},{"icon":"faDesktopSlash","aliases":["faDesktopSlash"]},{"icon":"faDewpoint","aliases":["faDewpoint"]},{"icon":"faDharmachakra","aliases":[]},{"icon":"faDiagnoses","aliases":["faDiagnoses"]},{"icon":"faDiagramCells","aliases":[]},{"icon":"faDiagramLeanCanvas","aliases":[]},{"icon":"faDiagramNested","aliases":[]},{"icon":"faDiagramNext","aliases":[]},{"icon":"faDiagramPredecessor","aliases":[]},{"icon":"faDiagramPrevious","aliases":[]},{"icon":"faDiagramProject","aliases":["faProjectDiagram"]},{"icon":"faDiagramSankey","aliases":[]},{"icon":"faDiagramSubtask","aliases":[]},{"icon":"faDiagramSuccessor","aliases":[]},{"icon":"faDiagramVenn","aliases":[]},{"icon":"faDial","aliases":["faDialMedHigh"]},{"icon":"faDialHigh","aliases":[]},{"icon":"faDialLow","aliases":[]},{"icon":"faDialMax","aliases":[]},{"icon":"faDialMed","aliases":[]},{"icon":"faDialMedHigh","aliases":["faDialMedHigh"]},{"icon":"faDialMedLow","aliases":[]},{"icon":"faDialMin","aliases":[]},{"icon":"faDialOff","aliases":[]},{"icon":"faDiamond","aliases":[]},{"icon":"faDiamondExclamation","aliases":[]},{"icon":"faDiamondHalf","aliases":[]},{"icon":"faDiamondHalfStroke","aliases":[]},{"icon":"faDiamondTurnRight","aliases":["faDirections"]},{"icon":"faDiamonds4","aliases":[]},{"icon":"faDice","aliases":[]},{"icon":"faDiceD10","aliases":[]},{"icon":"faDiceD12","aliases":[]},{"icon":"faDiceD20","aliases":[]},{"icon":"faDiceD4","aliases":[]},{"icon":"faDiceD6","aliases":[]},{"icon":"faDiceD8","aliases":[]},{"icon":"faDiceFive","aliases":[]},{"icon":"faDiceFour","aliases":[]},{"icon":"faDiceOne","aliases":[]},{"icon":"faDiceSix","aliases":[]},{"icon":"faDiceThree","aliases":[]},{"icon":"faDiceTwo","aliases":[]},{"icon":"faDigging","aliases":["faDigging"]},{"icon":"faDigitalTachograph","aliases":["faDigitalTachograph"]},{"icon":"faDinosaur","aliases":[]},{"icon":"faDiploma","aliases":["faScrollRibbon"]},{"icon":"faDirections","aliases":["faDirections"]},{"icon":"faDiscDrive","aliases":[]},{"icon":"faDisease","aliases":[]},{"icon":"faDisplay","aliases":[]},{"icon":"faDisplayArrowDown","aliases":[]},{"icon":"faDisplayChartUp","aliases":[]},{"icon":"faDisplayChartUpCircleCurrency","aliases":[]},{"icon":"faDisplayChartUpCircleDollar","aliases":[]},{"icon":"faDisplayCode","aliases":["faDesktopCode"]},{"icon":"faDisplayMedical","aliases":["faDesktopMedical"]},{"icon":"faDisplaySlash","aliases":["faDesktopSlash"]},{"icon":"faDistributeSpacingHorizontal","aliases":[]},{"icon":"faDistributeSpacingVertical","aliases":[]},{"icon":"faDitto","aliases":[]},{"icon":"faDivide","aliases":[]},{"icon":"faDizzy","aliases":["faDizzy"]},{"icon":"faDna","aliases":[]},{"icon":"faDoNotEnter","aliases":[]},{"icon":"faDog","aliases":[]},{"icon":"faDogLeashed","aliases":[]},{"icon":"faDollar","aliases":["faDollar","faUsd"]},{"icon":"faDollarCircle","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faDollarSign","aliases":["faDollar","faUsd"]},{"icon":"faDollarSquare","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faDolly","aliases":["faDollyBox"]},{"icon":"faDollyBox","aliases":["faDollyBox"]},{"icon":"faDollyEmpty","aliases":[]},{"icon":"faDollyFlatbed","aliases":["faDollyFlatbed"]},{"icon":"faDollyFlatbedAlt","aliases":["faDollyFlatbedAlt"]},{"icon":"faDollyFlatbedEmpty","aliases":["faDollyFlatbedEmpty"]},{"icon":"faDolphin","aliases":[]},{"icon":"faDonate","aliases":["faDonate"]},{"icon":"faDongSign","aliases":[]},{"icon":"faDonut","aliases":["faDoughnut"]},{"icon":"faDoorClosed","aliases":[]},{"icon":"faDoorOpen","aliases":[]},{"icon":"faDotCircle","aliases":["faDotCircle"]},{"icon":"faDoughnut","aliases":["faDoughnut"]},{"icon":"faDove","aliases":[]},{"icon":"faDown","aliases":["faArrowAltDown"]},{"icon":"faDownFromBracket","aliases":[]},{"icon":"faDownFromDottedLine","aliases":[]},{"icon":"faDownFromLine","aliases":["faArrowAltFromTop"]},{"icon":"faDownLeft","aliases":[]},{"icon":"faDownLeftAndUpRightToCenter","aliases":["faCompressAlt"]},{"icon":"faDownLong","aliases":["faLongArrowAltDown"]},{"icon":"faDownRight","aliases":[]},{"icon":"faDownToBracket","aliases":[]},{"icon":"faDownToDottedLine","aliases":[]},{"icon":"faDownToLine","aliases":["faArrowAltToBottom"]},{"icon":"faDownload","aliases":[]},{"icon":"faDraftingCompass","aliases":["faDraftingCompass"]},{"icon":"faDragon","aliases":[]},{"icon":"faDrawCircle","aliases":[]},{"icon":"faDrawPolygon","aliases":[]},{"icon":"faDrawSquare","aliases":[]},{"icon":"faDreidel","aliases":[]},{"icon":"faDriversLicense","aliases":["faDriversLicense"]},{"icon":"faDrone","aliases":[]},{"icon":"faDroneAlt","aliases":["faDroneAlt"]},{"icon":"faDroneFront","aliases":["faDroneAlt"]},{"icon":"faDroplet","aliases":["faTint"]},{"icon":"faDropletDegree","aliases":["faDewpoint"]},{"icon":"faDropletPercent","aliases":["faHumidity"]},{"icon":"faDropletSlash","aliases":["faTintSlash"]},{"icon":"faDrum","aliases":[]},{"icon":"faDrumSteelpan","aliases":[]},{"icon":"faDrumstick","aliases":[]},{"icon":"faDrumstickBite","aliases":[]},{"icon":"faDryer","aliases":[]},{"icon":"faDryerAlt","aliases":["faDryerAlt"]},{"icon":"faDryerHeat","aliases":["faDryerAlt"]},{"icon":"faDuck","aliases":[]},{"icon":"faDumbbell","aliases":[]},{"icon":"faDumpster","aliases":[]},{"icon":"faDumpsterFire","aliases":[]},{"icon":"faDungeon","aliases":[]},{"icon":"faE","aliases":[]},{"icon":"faEar","aliases":[]},{"icon":"faEarDeaf","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faEarListen","aliases":["faAssistiveListeningSystems"]},{"icon":"faEarMuffs","aliases":[]},{"icon":"faEarth","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAfrica","aliases":["faGlobeAfrica"]},{"icon":"faEarthAmerica","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faEarthAsia","aliases":["faGlobeAsia"]},{"icon":"faEarthEurope","aliases":["faGlobeEurope"]},{"icon":"faEarthOceania","aliases":["faGlobeOceania"]},{"icon":"faEclipse","aliases":[]},{"icon":"faEclipseAlt","aliases":["faEclipseAlt"]},{"icon":"faEdit","aliases":["faEdit"]},{"icon":"faEgg","aliases":[]},{"icon":"faEggFried","aliases":[]},{"icon":"faEggplant","aliases":[]},{"icon":"faEject","aliases":[]},{"icon":"faElephant","aliases":[]},{"icon":"faElevator","aliases":[]},{"icon":"faEllipsis","aliases":["faEllipsisH"]},{"icon":"faEllipsisH","aliases":["faEllipsisH"]},{"icon":"faEllipsisHAlt","aliases":["faEllipsisHAlt"]},{"icon":"faEllipsisStroke","aliases":["faEllipsisHAlt"]},{"icon":"faEllipsisStrokeVertical","aliases":["faEllipsisVAlt"]},{"icon":"faEllipsisV","aliases":["faEllipsisV"]},{"icon":"faEllipsisVAlt","aliases":["faEllipsisVAlt"]},{"icon":"faEllipsisVertical","aliases":["faEllipsisV"]},{"icon":"faEmptySet","aliases":[]},{"icon":"faEngine","aliases":[]},{"icon":"faEngineExclamation","aliases":["faEngineExclamation"]},{"icon":"faEngineWarning","aliases":["faEngineExclamation"]},{"icon":"faEnvelope","aliases":[]},{"icon":"faEnvelopeBadge","aliases":["faEnvelopeBadge"]},{"icon":"faEnvelopeCircle","aliases":["faEnvelopeCircle"]},{"icon":"faEnvelopeCircleCheck","aliases":[]},{"icon":"faEnvelopeDot","aliases":["faEnvelopeBadge"]},{"icon":"faEnvelopeOpen","aliases":[]},{"icon":"faEnvelopeOpenDollar","aliases":[]},{"icon":"faEnvelopeOpenText","aliases":[]},{"icon":"faEnvelopeSquare","aliases":["faEnvelopeSquare"]},{"icon":"faEnvelopes","aliases":[]},{"icon":"faEnvelopesBulk","aliases":["faMailBulk"]},{"icon":"faEquals","aliases":[]},{"icon":"faEraser","aliases":[]},{"icon":"faEscalator","aliases":[]},{"icon":"faEthernet","aliases":[]},{"icon":"faEur","aliases":["faEur","faEuro"]},{"icon":"faEuro","aliases":["faEur","faEuro"]},{"icon":"faEuroSign","aliases":["faEur","faEuro"]},{"icon":"faExcavator","aliases":[]},{"icon":"faExchange","aliases":["faExchange"]},{"icon":"faExchangeAlt","aliases":["faExchangeAlt"]},{"icon":"faExclamation","aliases":[]},{"icon":"faExclamationCircle","aliases":["faExclamationCircle"]},{"icon":"faExclamationSquare","aliases":["faExclamationSquare"]},{"icon":"faExclamationTriangle","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faExpand","aliases":[]},{"icon":"faExpandAlt","aliases":["faExpandAlt"]},{"icon":"faExpandArrows","aliases":["faExpandArrows"]},{"icon":"faExpandArrowsAlt","aliases":["faExpandArrowsAlt"]},{"icon":"faExpandWide","aliases":[]},{"icon":"faExplodingHead","aliases":["faExplodingHead"]},{"icon":"faExplosion","aliases":[]},{"icon":"faExternalLink","aliases":["faExternalLink"]},{"icon":"faExternalLinkAlt","aliases":["faExternalLinkAlt"]},{"icon":"faExternalLinkSquare","aliases":["faExternalLinkSquare"]},{"icon":"faExternalLinkSquareAlt","aliases":["faExternalLinkSquareAlt"]},{"icon":"faEye","aliases":[]},{"icon":"faEyeDropper","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperEmpty","aliases":["faEyeDropperEmpty","faEyedropper"]},{"icon":"faEyeDropperFull","aliases":[]},{"icon":"faEyeDropperHalf","aliases":[]},{"icon":"faEyeEvil","aliases":[]},{"icon":"faEyeLowVision","aliases":["faLowVision"]},{"icon":"faEyeSlash","aliases":[]},{"icon":"faEyes","aliases":[]},{"icon":"faF","aliases":[]},{"icon":"faFaceAngry","aliases":["faAngry"]},{"icon":"faFaceAngryHorns","aliases":[]},{"icon":"faFaceAnguished","aliases":[]},{"icon":"faFaceAnxiousSweat","aliases":[]},{"icon":"faFaceAstonished","aliases":[]},{"icon":"faFaceAwesome","aliases":["faGaveDandy"]},{"icon":"faFaceBeamHandOverMouth","aliases":[]},{"icon":"faFaceClouds","aliases":[]},{"icon":"faFaceConfounded","aliases":[]},{"icon":"faFaceConfused","aliases":[]},{"icon":"faFaceCowboyHat","aliases":[]},{"icon":"faFaceDiagonalMouth","aliases":[]},{"icon":"faFaceDisappointed","aliases":[]},{"icon":"faFaceDisguise","aliases":[]},{"icon":"faFaceDizzy","aliases":["faDizzy"]},{"icon":"faFaceDotted","aliases":[]},{"icon":"faFaceDowncastSweat","aliases":[]},{"icon":"faFaceDrooling","aliases":[]},{"icon":"faFaceExhaling","aliases":[]},{"icon":"faFaceExplode","aliases":["faExplodingHead"]},{"icon":"faFaceExpressionless","aliases":[]},{"icon":"faFaceEyesXmarks","aliases":[]},{"icon":"faFaceFearful","aliases":[]},{"icon":"faFaceFlushed","aliases":["faFlushed"]},{"icon":"faFaceFrown","aliases":["faFrown"]},{"icon":"faFaceFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFaceFrownSlight","aliases":[]},{"icon":"faFaceGlasses","aliases":[]},{"icon":"faFaceGrimace","aliases":["faGrimace"]},{"icon":"faFaceGrin","aliases":["faGrin"]},{"icon":"faFaceGrinBeam","aliases":["faGrinBeam"]},{"icon":"faFaceGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faFaceGrinHearts","aliases":["faGrinHearts"]},{"icon":"faFaceGrinSquint","aliases":["faGrinSquint"]},{"icon":"faFaceGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faFaceGrinStars","aliases":["faGrinStars"]},{"icon":"faFaceGrinTears","aliases":["faGrinTears"]},{"icon":"faFaceGrinTongue","aliases":["faGrinTongue"]},{"icon":"faFaceGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faFaceGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faFaceGrinWide","aliases":["faGrinAlt"]},{"icon":"faFaceGrinWink","aliases":["faGrinWink"]},{"icon":"faFaceHandOverMouth","aliases":[]},{"icon":"faFaceHandPeeking","aliases":[]},{"icon":"faFaceHandYawn","aliases":[]},{"icon":"faFaceHeadBandage","aliases":[]},{"icon":"faFaceHoldingBackTears","aliases":[]},{"icon":"faFaceHushed","aliases":[]},{"icon":"faFaceIcicles","aliases":[]},{"icon":"faFaceKiss","aliases":["faKiss"]},{"icon":"faFaceKissBeam","aliases":["faKissBeam"]},{"icon":"faFaceKissClosedEyes","aliases":[]},{"icon":"faFaceKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faFaceLaugh","aliases":["faLaugh"]},{"icon":"faFaceLaughBeam","aliases":["faLaughBeam"]},{"icon":"faFaceLaughSquint","aliases":["faLaughSquint"]},{"icon":"faFaceLaughWink","aliases":["faLaughWink"]},{"icon":"faFaceLying","aliases":[]},{"icon":"faFaceMask","aliases":[]},{"icon":"faFaceMeh","aliases":["faMeh"]},{"icon":"faFaceMehBlank","aliases":["faMehBlank"]},{"icon":"faFaceMelting","aliases":[]},{"icon":"faFaceMonocle","aliases":[]},{"icon":"faFaceNauseated","aliases":[]},{"icon":"faFaceNoseSteam","aliases":[]},{"icon":"faFaceParty","aliases":[]},{"icon":"faFacePensive","aliases":[]},{"icon":"faFacePersevering","aliases":[]},{"icon":"faFacePleading","aliases":[]},{"icon":"faFacePouting","aliases":[]},{"icon":"faFaceRaisedEyebrow","aliases":[]},{"icon":"faFaceRelieved","aliases":[]},{"icon":"faFaceRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faFaceSadCry","aliases":["faSadCry"]},{"icon":"faFaceSadSweat","aliases":[]},{"icon":"faFaceSadTear","aliases":["faSadTear"]},{"icon":"faFaceSaluting","aliases":[]},{"icon":"faFaceScream","aliases":[]},{"icon":"faFaceShush","aliases":[]},{"icon":"faFaceSleeping","aliases":[]},{"icon":"faFaceSleepy","aliases":[]},{"icon":"faFaceSmile","aliases":["faSmile"]},{"icon":"faFaceSmileBeam","aliases":["faSmileBeam"]},{"icon":"faFaceSmileHalo","aliases":[]},{"icon":"faFaceSmileHearts","aliases":[]},{"icon":"faFaceSmileHorns","aliases":[]},{"icon":"faFaceSmilePlus","aliases":["faSmilePlus"]},{"icon":"faFaceSmileRelaxed","aliases":[]},{"icon":"faFaceSmileTear","aliases":[]},{"icon":"faFaceSmileTongue","aliases":[]},{"icon":"faFaceSmileUpsideDown","aliases":[]},{"icon":"faFaceSmileWink","aliases":["faSmileWink"]},{"icon":"faFaceSmilingHands","aliases":[]},{"icon":"faFaceSmirking","aliases":[]},{"icon":"faFaceSpiralEyes","aliases":[]},{"icon":"faFaceSunglasses","aliases":[]},{"icon":"faFaceSurprise","aliases":["faSurprise"]},{"icon":"faFaceSwear","aliases":[]},{"icon":"faFaceThermometer","aliases":[]},{"icon":"faFaceThinking","aliases":[]},{"icon":"faFaceTired","aliases":["faTired"]},{"icon":"faFaceTissue","aliases":[]},{"icon":"faFaceTongueMoney","aliases":[]},{"icon":"faFaceTongueSweat","aliases":[]},{"icon":"faFaceUnamused","aliases":[]},{"icon":"faFaceViewfinder","aliases":[]},{"icon":"faFaceVomit","aliases":[]},{"icon":"faFaceWeary","aliases":[]},{"icon":"faFaceWoozy","aliases":[]},{"icon":"faFaceWorried","aliases":[]},{"icon":"faFaceZany","aliases":[]},{"icon":"faFaceZipper","aliases":[]},{"icon":"faFalafel","aliases":[]},{"icon":"faFamily","aliases":[]},{"icon":"faFamilyDress","aliases":[]},{"icon":"faFamilyPants","aliases":[]},{"icon":"faFan","aliases":[]},{"icon":"faFanTable","aliases":[]},{"icon":"faFarm","aliases":["faBarnSilo"]},{"icon":"faFastBackward","aliases":["faFastBackward"]},{"icon":"faFastForward","aliases":["faFastForward"]},{"icon":"faFaucet","aliases":[]},{"icon":"faFaucetDrip","aliases":[]},{"icon":"faFax","aliases":[]},{"icon":"faFeather","aliases":[]},{"icon":"faFeatherAlt","aliases":["faFeatherAlt"]},{"icon":"faFeatherPointed","aliases":["faFeatherAlt"]},{"icon":"faFeed","aliases":["faFeed"]},{"icon":"faFemale","aliases":["faFemale"]},{"icon":"faFence","aliases":[]},{"icon":"faFerrisWheel","aliases":[]},{"icon":"faFerry","aliases":[]},{"icon":"faFieldHockey","aliases":["faFieldHockey"]},{"icon":"faFieldHockeyStickBall","aliases":["faFieldHockey"]},{"icon":"faFighterJet","aliases":["faFighterJet"]},{"icon":"faFile","aliases":[]},{"icon":"faFileAlt","aliases":["faFileAlt","faFileText"]},{"icon":"faFileArchive","aliases":["faFileArchive"]},{"icon":"faFileArrowDown","aliases":["faFileDownload"]},{"icon":"faFileArrowUp","aliases":["faFileUpload"]},{"icon":"faFileAudio","aliases":[]},{"icon":"faFileAward","aliases":["faFileAward"]},{"icon":"faFileBinary","aliases":[]},{"icon":"faFileCad","aliases":[]},{"icon":"faFileCaretDown","aliases":["faFileCaretDown"]},{"icon":"faFileCaretUp","aliases":["faFileCaretUp"]},{"icon":"faFileCertificate","aliases":["faFileAward"]},{"icon":"faFileChartColumn","aliases":["faFileChartLine"]},{"icon":"faFileChartLine","aliases":["faFileChartLine"]},{"icon":"faFileChartPie","aliases":[]},{"icon":"faFileCheck","aliases":[]},{"icon":"faFileCircleCheck","aliases":[]},{"icon":"faFileCircleExclamation","aliases":[]},{"icon":"faFileCircleInfo","aliases":[]},{"icon":"faFileCircleMinus","aliases":[]},{"icon":"faFileCirclePlus","aliases":[]},{"icon":"faFileCircleQuestion","aliases":[]},{"icon":"faFileCircleXmark","aliases":[]},{"icon":"faFileClipboard","aliases":["faFileClipboard"]},{"icon":"faFileCode","aliases":[]},{"icon":"faFileContract","aliases":[]},{"icon":"faFileCsv","aliases":[]},{"icon":"faFileDashedLine","aliases":["faPageBreak"]},{"icon":"faFileDoc","aliases":[]},{"icon":"faFileDownload","aliases":["faFileDownload"]},{"icon":"faFileEdit","aliases":["faFileEdit"]},{"icon":"faFileEps","aliases":[]},{"icon":"faFileExcel","aliases":[]},{"icon":"faFileExclamation","aliases":[]},{"icon":"faFileExport","aliases":["faArrowRightFromFile"]},{"icon":"faFileGif","aliases":[]},{"icon":"faFileHeart","aliases":[]},{"icon":"faFileImage","aliases":[]},{"icon":"faFileImport","aliases":["faArrowRightToFile"]},{"icon":"faFileInvoice","aliases":[]},{"icon":"faFileInvoiceDollar","aliases":[]},{"icon":"faFileJpg","aliases":[]},{"icon":"faFileLines","aliases":["faFileAlt","faFileText"]},{"icon":"faFileLock","aliases":[]},{"icon":"faFileMagnifyingGlass","aliases":["faFileSearch"]},{"icon":"faFileMedical","aliases":[]},{"icon":"faFileMedicalAlt","aliases":["faFileMedicalAlt"]},{"icon":"faFileMinus","aliases":[]},{"icon":"faFileMov","aliases":[]},{"icon":"faFileMp3","aliases":[]},{"icon":"faFileMp4","aliases":[]},{"icon":"faFileMusic","aliases":[]},{"icon":"faFilePdf","aliases":[]},{"icon":"faFilePen","aliases":["faFileEdit"]},{"icon":"faFilePlus","aliases":[]},{"icon":"faFilePlusMinus","aliases":[]},{"icon":"faFilePng","aliases":[]},{"icon":"faFilePowerpoint","aliases":[]},{"icon":"faFilePpt","aliases":[]},{"icon":"faFilePrescription","aliases":[]},{"icon":"faFileSearch","aliases":["faFileSearch"]},{"icon":"faFileShield","aliases":[]},{"icon":"faFileSignature","aliases":[]},{"icon":"faFileSlash","aliases":[]},{"icon":"faFileSpreadsheet","aliases":[]},{"icon":"faFileSvg","aliases":[]},{"icon":"faFileText","aliases":["faFileAlt","faFileText"]},{"icon":"faFileTimes","aliases":["faFileTimes"]},{"icon":"faFileUpload","aliases":["faFileUpload"]},{"icon":"faFileUser","aliases":[]},{"icon":"faFileVector","aliases":[]},{"icon":"faFileVideo","aliases":[]},{"icon":"faFileWaveform","aliases":["faFileMedicalAlt"]},{"icon":"faFileWord","aliases":[]},{"icon":"faFileXls","aliases":[]},{"icon":"faFileXmark","aliases":["faFileTimes"]},{"icon":"faFileXml","aliases":[]},{"icon":"faFileZip","aliases":[]},{"icon":"faFileZipper","aliases":["faFileArchive"]},{"icon":"faFiles","aliases":[]},{"icon":"faFilesMedical","aliases":[]},{"icon":"faFill","aliases":[]},{"icon":"faFillDrip","aliases":[]},{"icon":"faFilm","aliases":[]},{"icon":"faFilmAlt","aliases":["faFilmAlt"]},{"icon":"faFilmCanister","aliases":["faFilmCannister"]},{"icon":"faFilmCannister","aliases":["faFilmCannister"]},{"icon":"faFilmSimple","aliases":["faFilmAlt"]},{"icon":"faFilmSlash","aliases":[]},{"icon":"faFilms","aliases":[]},{"icon":"faFilter","aliases":[]},{"icon":"faFilterCircleDollar","aliases":["faFunnelDollar"]},{"icon":"faFilterCircleXmark","aliases":[]},{"icon":"faFilterList","aliases":[]},{"icon":"faFilterSlash","aliases":[]},{"icon":"faFilters","aliases":[]},{"icon":"faFingerprint","aliases":[]},{"icon":"faFire","aliases":[]},{"icon":"faFireAlt","aliases":["faFireAlt"]},{"icon":"faFireBurner","aliases":[]},{"icon":"faFireExtinguisher","aliases":[]},{"icon":"faFireFlame","aliases":["faFlame"]},{"icon":"faFireFlameCurved","aliases":["faFireAlt"]},{"icon":"faFireFlameSimple","aliases":["faBurn"]},{"icon":"faFireHydrant","aliases":[]},{"icon":"faFireSmoke","aliases":[]},{"icon":"faFireplace","aliases":[]},{"icon":"faFirewall","aliases":["faFirewall"]},{"icon":"faFirstAid","aliases":["faFirstAid"]},{"icon":"faFish","aliases":[]},{"icon":"faFishBones","aliases":[]},{"icon":"faFishCooked","aliases":[]},{"icon":"faFishFins","aliases":[]},{"icon":"faFishingRod","aliases":[]},{"icon":"faFistRaised","aliases":["faFistRaised"]},{"icon":"faFlag","aliases":[]},{"icon":"faFlagAlt","aliases":["faFlagAlt"]},{"icon":"faFlagCheckered","aliases":[]},{"icon":"faFlagPennant","aliases":["faPennant"]},{"icon":"faFlagSwallowtail","aliases":["faFlagAlt"]},{"icon":"faFlagUsa","aliases":[]},{"icon":"faFlame","aliases":["faFlame"]},{"icon":"faFlashlight","aliases":[]},{"icon":"faFlask","aliases":[]},{"icon":"faFlaskGear","aliases":[]},{"icon":"faFlaskPoison","aliases":["faFlaskPoison"]},{"icon":"faFlaskPotion","aliases":["faFlaskPotion"]},{"icon":"faFlaskRoundPoison","aliases":["faFlaskPoison"]},{"icon":"faFlaskRoundPotion","aliases":["faFlaskPotion"]},{"icon":"faFlaskVial","aliases":[]},{"icon":"faFlatbread","aliases":[]},{"icon":"faFlatbreadStuffed","aliases":[]},{"icon":"faFloppyDisk","aliases":["faSave"]},{"icon":"faFloppyDiskCircleArrowRight","aliases":["faSaveCircleArrowRight"]},{"icon":"faFloppyDiskCircleXmark","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faFloppyDiskPen","aliases":[]},{"icon":"faFloppyDiskTimes","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faFloppyDisks","aliases":[]},{"icon":"faFlorinSign","aliases":[]},{"icon":"faFlower","aliases":[]},{"icon":"faFlowerDaffodil","aliases":[]},{"icon":"faFlowerTulip","aliases":[]},{"icon":"faFlushed","aliases":["faFlushed"]},{"icon":"faFlute","aliases":[]},{"icon":"faFluxCapacitor","aliases":[]},{"icon":"faFlyingDisc","aliases":[]},{"icon":"faFog","aliases":["faFog"]},{"icon":"faFolder","aliases":["faFolderBlank"]},{"icon":"faFolderArrowDown","aliases":["faFolderDownload"]},{"icon":"faFolderArrowUp","aliases":["faFolderUpload"]},{"icon":"faFolderBlank","aliases":["faFolderBlank"]},{"icon":"faFolderBookmark","aliases":[]},{"icon":"faFolderCheck","aliases":[]},{"icon":"faFolderClosed","aliases":[]},{"icon":"faFolderCog","aliases":["faFolderCog"]},{"icon":"faFolderDownload","aliases":["faFolderDownload"]},{"icon":"faFolderGear","aliases":["faFolderCog"]},{"icon":"faFolderGrid","aliases":[]},{"icon":"faFolderHeart","aliases":[]},{"icon":"faFolderImage","aliases":[]},{"icon":"faFolderMagnifyingGlass","aliases":["faFolderSearch"]},{"icon":"faFolderMedical","aliases":[]},{"icon":"faFolderMinus","aliases":[]},{"icon":"faFolderMusic","aliases":[]},{"icon":"faFolderOpen","aliases":[]},{"icon":"faFolderPlus","aliases":[]},{"icon":"faFolderSearch","aliases":["faFolderSearch"]},{"icon":"faFolderTimes","aliases":["faFolderTimes"]},{"icon":"faFolderTree","aliases":[]},{"icon":"faFolderUpload","aliases":["faFolderUpload"]},{"icon":"faFolderUser","aliases":[]},{"icon":"faFolderXmark","aliases":["faFolderTimes"]},{"icon":"faFolders","aliases":[]},{"icon":"faFonduePot","aliases":[]},{"icon":"faFont","aliases":[]},{"icon":"faFontAwesome","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeFlag","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontAwesomeLogoFull","aliases":["faFontAwesomeFlag","faFontAwesomeLogoFull"]},{"icon":"faFontCase","aliases":[]},{"icon":"faFootball","aliases":["faFootballBall"]},{"icon":"faFootballBall","aliases":["faFootballBall"]},{"icon":"faFootballHelmet","aliases":[]},{"icon":"faFork","aliases":["faUtensilFork"]},{"icon":"faForkKnife","aliases":["faUtensilsAlt"]},{"icon":"faForklift","aliases":[]},{"icon":"faFort","aliases":[]},{"icon":"faForward","aliases":[]},{"icon":"faForwardFast","aliases":["faFastForward"]},{"icon":"faForwardStep","aliases":["faStepForward"]},{"icon":"faFragile","aliases":["faFragile"]},{"icon":"faFrame","aliases":[]},{"icon":"faFrancSign","aliases":[]},{"icon":"faFrenchFries","aliases":[]},{"icon":"faFrog","aliases":[]},{"icon":"faFrostyHead","aliases":["faFrostyHead"]},{"icon":"faFrown","aliases":["faFrown"]},{"icon":"faFrownOpen","aliases":["faFrownOpen"]},{"icon":"faFunction","aliases":[]},{"icon":"faFunnelDollar","aliases":["faFunnelDollar"]},{"icon":"faFutbol","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faFutbolBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faG","aliases":[]},{"icon":"faGalaxy","aliases":[]},{"icon":"faGalleryThumbnails","aliases":[]},{"icon":"faGameBoard","aliases":[]},{"icon":"faGameBoardAlt","aliases":["faGameBoardAlt"]},{"icon":"faGameBoardSimple","aliases":["faGameBoardAlt"]},{"icon":"faGameConsoleHandheld","aliases":[]},{"icon":"faGameConsoleHandheldCrank","aliases":[]},{"icon":"faGamepad","aliases":[]},{"icon":"faGamepadAlt","aliases":["faGamepadAlt"]},{"icon":"faGamepadModern","aliases":["faGamepadAlt"]},{"icon":"faGarage","aliases":[]},{"icon":"faGarageCar","aliases":[]},{"icon":"faGarageOpen","aliases":[]},{"icon":"faGarlic","aliases":[]},{"icon":"faGasPump","aliases":[]},{"icon":"faGasPumpSlash","aliases":[]},{"icon":"faGauge","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeCircleBolt","aliases":[]},{"icon":"faGaugeCircleMinus","aliases":[]},{"icon":"faGaugeCirclePlus","aliases":[]},{"icon":"faGaugeHigh","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faGaugeLow","aliases":["faTachometerAltSlow"]},{"icon":"faGaugeMax","aliases":["faTachometerAltFastest"]},{"icon":"faGaugeMed","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faGaugeMin","aliases":["faTachometerAltSlowest"]},{"icon":"faGaugeSimple","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleHigh","aliases":["faTachometer","faTachometerFast"]},{"icon":"faGaugeSimpleLow","aliases":["faTachometerSlow"]},{"icon":"faGaugeSimpleMax","aliases":["faTachometerFastest"]},{"icon":"faGaugeSimpleMed","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faGaugeSimpleMin","aliases":["faTachometerSlowest"]},{"icon":"faGaveDandy","aliases":["faGaveDandy"]},{"icon":"faGavel","aliases":["faLegal"]},{"icon":"faGbp","aliases":["faGbp","faPoundSign"]},{"icon":"faGear","aliases":["faCog"]},{"icon":"faGearCode","aliases":[]},{"icon":"faGearComplex","aliases":[]},{"icon":"faGearComplexCode","aliases":[]},{"icon":"faGears","aliases":["faCogs"]},{"icon":"faGem","aliases":[]},{"icon":"faGenderless","aliases":[]},{"icon":"faGhost","aliases":[]},{"icon":"faGif","aliases":[]},{"icon":"faGift","aliases":[]},{"icon":"faGiftCard","aliases":[]},{"icon":"faGifts","aliases":[]},{"icon":"faGingerbreadMan","aliases":[]},{"icon":"faGlass","aliases":[]},{"icon":"faGlassChampagne","aliases":["faGlassChampagne"]},{"icon":"faGlassCheers","aliases":["faGlassCheers"]},{"icon":"faGlassCitrus","aliases":[]},{"icon":"faGlassEmpty","aliases":[]},{"icon":"faGlassHalf","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassHalfEmpty","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassHalfFull","aliases":["faGlassHalfEmpty","faGlassHalfFull"]},{"icon":"faGlassMartini","aliases":["faGlassMartini"]},{"icon":"faGlassMartiniAlt","aliases":["faGlassMartiniAlt"]},{"icon":"faGlassWater","aliases":[]},{"icon":"faGlassWaterDroplet","aliases":[]},{"icon":"faGlassWhiskey","aliases":["faGlassWhiskey"]},{"icon":"faGlassWhiskeyRocks","aliases":["faGlassWhiskeyRocks"]},{"icon":"faGlasses","aliases":[]},{"icon":"faGlassesAlt","aliases":["faGlassesAlt"]},{"icon":"faGlassesRound","aliases":["faGlassesAlt"]},{"icon":"faGlobe","aliases":[]},{"icon":"faGlobeAfrica","aliases":["faGlobeAfrica"]},{"icon":"faGlobeAmericas","aliases":["faEarth","faEarthAmerica","faGlobeAmericas"]},{"icon":"faGlobeAsia","aliases":["faGlobeAsia"]},{"icon":"faGlobeEurope","aliases":["faGlobeEurope"]},{"icon":"faGlobeOceania","aliases":["faGlobeOceania"]},{"icon":"faGlobePointer","aliases":[]},{"icon":"faGlobeSnow","aliases":[]},{"icon":"faGlobeStand","aliases":[]},{"icon":"faGlobeWifi","aliases":[]},{"icon":"faGloveBoxing","aliases":["faGloveBoxing"]},{"icon":"faGoalNet","aliases":[]},{"icon":"faGolfBall","aliases":["faGolfBall"]},{"icon":"faGolfBallTee","aliases":["faGolfBall"]},{"icon":"faGolfClub","aliases":[]},{"icon":"faGolfFlagHole","aliases":[]},{"icon":"faGopuram","aliases":[]},{"icon":"faGraduationCap","aliases":["faMortarBoard"]},{"icon":"faGramophone","aliases":[]},{"icon":"faGrapes","aliases":[]},{"icon":"faGrate","aliases":[]},{"icon":"faGrateDroplet","aliases":[]},{"icon":"faGreaterThan","aliases":[]},{"icon":"faGreaterThanEqual","aliases":[]},{"icon":"faGrid","aliases":["faGrid3"]},{"icon":"faGrid2","aliases":[]},{"icon":"faGrid2Plus","aliases":[]},{"icon":"faGrid3","aliases":["faGrid3"]},{"icon":"faGrid4","aliases":[]},{"icon":"faGrid5","aliases":[]},{"icon":"faGridDividers","aliases":[]},{"icon":"faGridHorizontal","aliases":[]},{"icon":"faGridRound","aliases":[]},{"icon":"faGridRound2","aliases":[]},{"icon":"faGridRound2Plus","aliases":[]},{"icon":"faGridRound4","aliases":[]},{"icon":"faGridRound5","aliases":[]},{"icon":"faGrill","aliases":[]},{"icon":"faGrillFire","aliases":[]},{"icon":"faGrillHot","aliases":[]},{"icon":"faGrimace","aliases":["faGrimace"]},{"icon":"faGrin","aliases":["faGrin"]},{"icon":"faGrinAlt","aliases":["faGrinAlt"]},{"icon":"faGrinBeam","aliases":["faGrinBeam"]},{"icon":"faGrinBeamSweat","aliases":["faGrinBeamSweat"]},{"icon":"faGrinHearts","aliases":["faGrinHearts"]},{"icon":"faGrinSquint","aliases":["faGrinSquint"]},{"icon":"faGrinSquintTears","aliases":["faGrinSquintTears"]},{"icon":"faGrinStars","aliases":["faGrinStars"]},{"icon":"faGrinTears","aliases":["faGrinTears"]},{"icon":"faGrinTongue","aliases":["faGrinTongue"]},{"icon":"faGrinTongueSquint","aliases":["faGrinTongueSquint"]},{"icon":"faGrinTongueWink","aliases":["faGrinTongueWink"]},{"icon":"faGrinWink","aliases":["faGrinWink"]},{"icon":"faGrip","aliases":["faGripHorizontal"]},{"icon":"faGripDots","aliases":[]},{"icon":"faGripDotsVertical","aliases":[]},{"icon":"faGripHorizontal","aliases":["faGripHorizontal"]},{"icon":"faGripLines","aliases":[]},{"icon":"faGripLinesVertical","aliases":[]},{"icon":"faGripVertical","aliases":[]},{"icon":"faGroupArrowsRotate","aliases":[]},{"icon":"faGuaraniSign","aliases":[]},{"icon":"faGuitar","aliases":[]},{"icon":"faGuitarElectric","aliases":[]},{"icon":"faGuitars","aliases":[]},{"icon":"faGun","aliases":[]},{"icon":"faGunSlash","aliases":[]},{"icon":"faGunSquirt","aliases":[]},{"icon":"faH","aliases":[]},{"icon":"faH1","aliases":[]},{"icon":"faH2","aliases":[]},{"icon":"faH3","aliases":[]},{"icon":"faH4","aliases":[]},{"icon":"faH5","aliases":[]},{"icon":"faH6","aliases":[]},{"icon":"faHSquare","aliases":["faHSquare"]},{"icon":"faHamburger","aliases":["faHamburger"]},{"icon":"faHammer","aliases":[]},{"icon":"faHammerBrush","aliases":[]},{"icon":"faHammerCrash","aliases":[]},{"icon":"faHammerWar","aliases":[]},{"icon":"faHamsa","aliases":[]},{"icon":"faHand","aliases":["faHandPaper"]},{"icon":"faHandBackFist","aliases":["faHandRock"]},{"icon":"faHandBackPointDown","aliases":[]},{"icon":"faHandBackPointLeft","aliases":[]},{"icon":"faHandBackPointRibbon","aliases":[]},{"icon":"faHandBackPointRight","aliases":[]},{"icon":"faHandBackPointUp","aliases":[]},{"icon":"faHandDots","aliases":["faAllergies"]},{"icon":"faHandFingersCrossed","aliases":[]},{"icon":"faHandFist","aliases":["faFistRaised"]},{"icon":"faHandHeart","aliases":[]},{"icon":"faHandHolding","aliases":[]},{"icon":"faHandHoldingBox","aliases":[]},{"icon":"faHandHoldingCircleDollar","aliases":[]},{"icon":"faHandHoldingDollar","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingDroplet","aliases":["faHandHoldingWater"]},{"icon":"faHandHoldingHand","aliases":[]},{"icon":"faHandHoldingHeart","aliases":[]},{"icon":"faHandHoldingMagic","aliases":[]},{"icon":"faHandHoldingMedical","aliases":[]},{"icon":"faHandHoldingSeedling","aliases":[]},{"icon":"faHandHoldingSkull","aliases":[]},{"icon":"faHandHoldingUsd","aliases":["faHandHoldingUsd"]},{"icon":"faHandHoldingWater","aliases":["faHandHoldingWater"]},{"icon":"faHandHorns","aliases":[]},{"icon":"faHandLizard","aliases":[]},{"icon":"faHandLove","aliases":[]},{"icon":"faHandMiddleFinger","aliases":[]},{"icon":"faHandPaper","aliases":["faHandPaper"]},{"icon":"faHandPeace","aliases":[]},{"icon":"faHandPointDown","aliases":[]},{"icon":"faHandPointLeft","aliases":[]},{"icon":"faHandPointRibbon","aliases":[]},{"icon":"faHandPointRight","aliases":[]},{"icon":"faHandPointUp","aliases":[]},{"icon":"faHandPointer","aliases":[]},{"icon":"faHandReceiving","aliases":["faHandReceiving"]},{"icon":"faHandRock","aliases":["faHandRock"]},{"icon":"faHandScissors","aliases":[]},{"icon":"faHandSparkles","aliases":[]},{"icon":"faHandSpock","aliases":[]},{"icon":"faHandWave","aliases":[]},{"icon":"faHandcuffs","aliases":[]},{"icon":"faHands","aliases":["faSignLanguage","faSigning"]},{"icon":"faHandsAmericanSignLanguageInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsAslInterpreting","aliases":["faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting"]},{"icon":"faHandsBound","aliases":[]},{"icon":"faHandsBubbles","aliases":["faHandsWash"]},{"icon":"faHandsClapping","aliases":[]},{"icon":"faHandsHeart","aliases":["faHandsHeart"]},{"icon":"faHandsHelping","aliases":["faHandsHelping"]},{"icon":"faHandsHolding","aliases":[]},{"icon":"faHandsHoldingChild","aliases":[]},{"icon":"faHandsHoldingCircle","aliases":[]},{"icon":"faHandsHoldingDiamond","aliases":["faHandReceiving"]},{"icon":"faHandsHoldingDollar","aliases":["faHandsUsd"]},{"icon":"faHandsHoldingHeart","aliases":["faHandsHeart"]},{"icon":"faHandsPraying","aliases":["faPrayingHands"]},{"icon":"faHandsUsd","aliases":["faHandsUsd"]},{"icon":"faHandsWash","aliases":["faHandsWash"]},{"icon":"faHandshake","aliases":[]},{"icon":"faHandshakeAlt","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeAltSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeAngle","aliases":["faHandsHelping"]},{"icon":"faHandshakeSimple","aliases":["faHandshakeAlt"]},{"icon":"faHandshakeSimpleSlash","aliases":["faHandshakeAltSlash"]},{"icon":"faHandshakeSlash","aliases":[]},{"icon":"faHanukiah","aliases":[]},{"icon":"faHardDrive","aliases":["faHdd"]},{"icon":"faHardHat","aliases":["faHardHat","faHatHard"]},{"icon":"faHardOfHearing","aliases":["faDeaf","faDeafness","faHardOfHearing"]},{"icon":"faHashtag","aliases":[]},{"icon":"faHashtagLock","aliases":[]},{"icon":"faHatBeach","aliases":[]},{"icon":"faHatChef","aliases":[]},{"icon":"faHatCowboy","aliases":[]},{"icon":"faHatCowboySide","aliases":[]},{"icon":"faHatHard","aliases":["faHardHat","faHatHard"]},{"icon":"faHatSanta","aliases":[]},{"icon":"faHatWinter","aliases":[]},{"icon":"faHatWitch","aliases":[]},{"icon":"faHatWizard","aliases":[]},{"icon":"faHaykal","aliases":["faHaykal"]},{"icon":"faHdd","aliases":["faHdd"]},{"icon":"faHeadSide","aliases":[]},{"icon":"faHeadSideBrain","aliases":[]},{"icon":"faHeadSideCough","aliases":[]},{"icon":"faHeadSideCoughSlash","aliases":[]},{"icon":"faHeadSideGear","aliases":[]},{"icon":"faHeadSideGoggles","aliases":["faHeadVr"]},{"icon":"faHeadSideHeadphones","aliases":[]},{"icon":"faHeadSideHeart","aliases":[]},{"icon":"faHeadSideMask","aliases":[]},{"icon":"faHeadSideMedical","aliases":[]},{"icon":"faHeadSideVirus","aliases":[]},{"icon":"faHeadVr","aliases":["faHeadVr"]},{"icon":"faHeader","aliases":["faHeader"]},{"icon":"faHeading","aliases":["faHeader"]},{"icon":"faHeadphones","aliases":[]},{"icon":"faHeadphonesAlt","aliases":["faHeadphonesAlt"]},{"icon":"faHeadphonesSimple","aliases":["faHeadphonesAlt"]},{"icon":"faHeadset","aliases":[]},{"icon":"faHeart","aliases":[]},{"icon":"faHeartBroken","aliases":["faHeartBroken"]},{"icon":"faHeartCircle","aliases":["faHeartCircle"]},{"icon":"faHeartCircleBolt","aliases":[]},{"icon":"faHeartCircleCheck","aliases":[]},{"icon":"faHeartCircleExclamation","aliases":[]},{"icon":"faHeartCircleMinus","aliases":[]},{"icon":"faHeartCirclePlus","aliases":[]},{"icon":"faHeartCircleXmark","aliases":[]},{"icon":"faHeartCrack","aliases":["faHeartBroken"]},{"icon":"faHeartHalf","aliases":[]},{"icon":"faHeartHalfAlt","aliases":["faHeartHalfAlt"]},{"icon":"faHeartHalfStroke","aliases":["faHeartHalfAlt"]},{"icon":"faHeartMusicCameraBolt","aliases":["faHeartMusicCameraBolt"]},{"icon":"faHeartPulse","aliases":["faHeartbeat"]},{"icon":"faHeartRate","aliases":["faHeartRate"]},{"icon":"faHeartSquare","aliases":["faHeartSquare"]},{"icon":"faHeartbeat","aliases":["faHeartbeat"]},{"icon":"faHeat","aliases":[]},{"icon":"faHelicopter","aliases":[]},{"icon":"faHelicopterSymbol","aliases":[]},{"icon":"faHelmetBattle","aliases":[]},{"icon":"faHelmetSafety","aliases":["faHardHat","faHatHard"]},{"icon":"faHelmetUn","aliases":[]},{"icon":"faHexagon","aliases":[]},{"icon":"faHexagonCheck","aliases":[]},{"icon":"faHexagonDivide","aliases":[]},{"icon":"faHexagonExclamation","aliases":[]},{"icon":"faHexagonImage","aliases":[]},{"icon":"faHexagonMinus","aliases":["faMinusHexagon"]},{"icon":"faHexagonPlus","aliases":["faPlusHexagon"]},{"icon":"faHexagonVerticalNft","aliases":[]},{"icon":"faHexagonVerticalNftSlanted","aliases":[]},{"icon":"faHexagonXmark","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faHighDefinition","aliases":["faRectangleHd"]},{"icon":"faHighlighter","aliases":[]},{"icon":"faHighlighterLine","aliases":[]},{"icon":"faHiking","aliases":["faHiking"]},{"icon":"faHillAvalanche","aliases":[]},{"icon":"faHillRockslide","aliases":[]},{"icon":"faHippo","aliases":[]},{"icon":"faHistory","aliases":["faHistory"]},{"icon":"faHockeyMask","aliases":[]},{"icon":"faHockeyPuck","aliases":[]},{"icon":"faHockeyStickPuck","aliases":[]},{"icon":"faHockeySticks","aliases":[]},{"icon":"faHollyBerry","aliases":[]},{"icon":"faHome","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeBlank","aliases":["faHomeBlank"]},{"icon":"faHomeHeart","aliases":["faHomeHeart"]},{"icon":"faHomeLg","aliases":["faHomeLg"]},{"icon":"faHomeLgAlt","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHomeUser","aliases":["faHomeUser"]},{"icon":"faHoneyPot","aliases":[]},{"icon":"faHoodCloak","aliases":[]},{"icon":"faHorizontalRule","aliases":[]},{"icon":"faHorse","aliases":[]},{"icon":"faHorseHead","aliases":[]},{"icon":"faHorseSaddle","aliases":[]},{"icon":"faHose","aliases":[]},{"icon":"faHoseReel","aliases":[]},{"icon":"faHospital","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalAlt","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitalSymbol","aliases":["faHospitalSymbol"]},{"icon":"faHospitalUser","aliases":[]},{"icon":"faHospitalWide","aliases":["faHospitalAlt","faHospitalWide"]},{"icon":"faHospitals","aliases":[]},{"icon":"faHotTub","aliases":["faHotTub"]},{"icon":"faHotTubPerson","aliases":["faHotTub"]},{"icon":"faHotdog","aliases":[]},{"icon":"faHotel","aliases":[]},{"icon":"faHourglass","aliases":["faHourglassEmpty"]},{"icon":"faHourglass1","aliases":["faHourglass1"]},{"icon":"faHourglass2","aliases":["faHourglass2"]},{"icon":"faHourglass3","aliases":["faHourglass3"]},{"icon":"faHourglassClock","aliases":[]},{"icon":"faHourglassEmpty","aliases":["faHourglassEmpty"]},{"icon":"faHourglassEnd","aliases":["faHourglass3"]},{"icon":"faHourglassHalf","aliases":["faHourglass2"]},{"icon":"faHourglassStart","aliases":["faHourglass1"]},{"icon":"faHouse","aliases":["faHome","faHomeAlt","faHomeLgAlt"]},{"icon":"faHouseBlank","aliases":["faHomeBlank"]},{"icon":"faHouseBuilding","aliases":[]},{"icon":"faHouseChimney","aliases":["faHomeLg"]},{"icon":"faHouseChimneyBlank","aliases":[]},{"icon":"faHouseChimneyCrack","aliases":["faHouseDamage"]},{"icon":"faHouseChimneyHeart","aliases":[]},{"icon":"faHouseChimneyMedical","aliases":["faClinicMedical"]},{"icon":"faHouseChimneyUser","aliases":[]},{"icon":"faHouseChimneyWindow","aliases":[]},{"icon":"faHouseCircleCheck","aliases":[]},{"icon":"faHouseCircleExclamation","aliases":[]},{"icon":"faHouseCircleXmark","aliases":[]},{"icon":"faHouseCrack","aliases":[]},{"icon":"faHouseDamage","aliases":["faHouseDamage"]},{"icon":"faHouseDay","aliases":[]},{"icon":"faHouseFire","aliases":[]},{"icon":"faHouseFlag","aliases":[]},{"icon":"faHouseFlood","aliases":["faHouseFlood"]},{"icon":"faHouseFloodWater","aliases":[]},{"icon":"faHouseFloodWaterCircleArrowRight","aliases":[]},{"icon":"faHouseHeart","aliases":["faHomeHeart"]},{"icon":"faHouseLaptop","aliases":["faLaptopHouse"]},{"icon":"faHouseLeave","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHouseLock","aliases":[]},{"icon":"faHouseMedical","aliases":[]},{"icon":"faHouseMedicalCircleCheck","aliases":[]},{"icon":"faHouseMedicalCircleExclamation","aliases":[]},{"icon":"faHouseMedicalCircleXmark","aliases":[]},{"icon":"faHouseMedicalFlag","aliases":[]},{"icon":"faHouseNight","aliases":[]},{"icon":"faHousePersonArrive","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHousePersonDepart","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHousePersonLeave","aliases":["faHouseLeave","faHousePersonDepart"]},{"icon":"faHousePersonReturn","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHouseReturn","aliases":["faHousePersonArrive","faHouseReturn"]},{"icon":"faHouseSignal","aliases":[]},{"icon":"faHouseTree","aliases":[]},{"icon":"faHouseTsunami","aliases":[]},{"icon":"faHouseTurret","aliases":[]},{"icon":"faHouseUser","aliases":["faHomeUser"]},{"icon":"faHouseWater","aliases":["faHouseFlood"]},{"icon":"faHouseWindow","aliases":[]},{"icon":"faHryvnia","aliases":["faHryvnia"]},{"icon":"faHryvniaSign","aliases":["faHryvnia"]},{"icon":"faHumidity","aliases":["faHumidity"]},{"icon":"faHundredPoints","aliases":["fa100"]},{"icon":"faHurricane","aliases":[]},{"icon":"faHydra","aliases":[]},{"icon":"faHyphen","aliases":[]},{"icon":"faI","aliases":[]},{"icon":"faICursor","aliases":[]},{"icon":"faIceCream","aliases":[]},{"icon":"faIceSkate","aliases":[]},{"icon":"faIcicles","aliases":[]},{"icon":"faIcons","aliases":["faHeartMusicCameraBolt"]},{"icon":"faIconsAlt","aliases":["faIconsAlt"]},{"icon":"faIdBadge","aliases":[]},{"icon":"faIdCard","aliases":["faDriversLicense"]},{"icon":"faIdCardAlt","aliases":["faIdCardAlt"]},{"icon":"faIdCardClip","aliases":["faIdCardAlt"]},{"icon":"faIgloo","aliases":[]},{"icon":"faIls","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faImage","aliases":[]},{"icon":"faImageLandscape","aliases":["faLandscape"]},{"icon":"faImagePolaroid","aliases":[]},{"icon":"faImagePolaroidUser","aliases":[]},{"icon":"faImagePortrait","aliases":["faPortrait"]},{"icon":"faImageSlash","aliases":[]},{"icon":"faImageUser","aliases":[]},{"icon":"faImages","aliases":[]},{"icon":"faImagesUser","aliases":[]},{"icon":"faInbox","aliases":[]},{"icon":"faInboxArrowDown","aliases":["faInboxArrowDown"]},{"icon":"faInboxArrowUp","aliases":["faInboxArrowUp"]},{"icon":"faInboxFull","aliases":[]},{"icon":"faInboxIn","aliases":["faInboxArrowDown"]},{"icon":"faInboxOut","aliases":["faInboxArrowUp"]},{"icon":"faInboxes","aliases":[]},{"icon":"faIndent","aliases":[]},{"icon":"faIndianRupee","aliases":["faIndianRupee","faInr"]},{"icon":"faIndianRupeeSign","aliases":["faIndianRupee","faInr"]},{"icon":"faIndustry","aliases":[]},{"icon":"faIndustryAlt","aliases":["faIndustryAlt"]},{"icon":"faIndustryWindows","aliases":["faIndustryAlt"]},{"icon":"faInfinity","aliases":[]},{"icon":"faInfo","aliases":[]},{"icon":"faInfoCircle","aliases":["faInfoCircle"]},{"icon":"faInfoSquare","aliases":["faInfoSquare"]},{"icon":"faInhaler","aliases":[]},{"icon":"faInputNumeric","aliases":[]},{"icon":"faInputPipe","aliases":[]},{"icon":"faInputText","aliases":[]},{"icon":"faInr","aliases":["faIndianRupee","faInr"]},{"icon":"faInstitution","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faIntegral","aliases":[]},{"icon":"faInterrobang","aliases":[]},{"icon":"faIntersection","aliases":[]},{"icon":"faInventory","aliases":["faInventory"]},{"icon":"faIslandTreePalm","aliases":["faIslandTreePalm"]},{"icon":"faIslandTropical","aliases":["faIslandTreePalm"]},{"icon":"faItalic","aliases":[]},{"icon":"faJ","aliases":[]},{"icon":"faJackOLantern","aliases":[]},{"icon":"faJar","aliases":[]},{"icon":"faJarWheat","aliases":[]},{"icon":"faJedi","aliases":[]},{"icon":"faJetFighter","aliases":["faFighterJet"]},{"icon":"faJetFighterUp","aliases":[]},{"icon":"faJoint","aliases":[]},{"icon":"faJournalWhills","aliases":["faJournalWhills"]},{"icon":"faJoystick","aliases":[]},{"icon":"faJpy","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faJug","aliases":[]},{"icon":"faJugBottle","aliases":[]},{"icon":"faJugDetergent","aliases":[]},{"icon":"faK","aliases":[]},{"icon":"faKaaba","aliases":[]},{"icon":"faKazoo","aliases":[]},{"icon":"faKerning","aliases":[]},{"icon":"faKey","aliases":[]},{"icon":"faKeySkeleton","aliases":[]},{"icon":"faKeySkeletonLeftRight","aliases":[]},{"icon":"faKeyboard","aliases":[]},{"icon":"faKeyboardBrightness","aliases":[]},{"icon":"faKeyboardBrightnessLow","aliases":[]},{"icon":"faKeyboardDown","aliases":[]},{"icon":"faKeyboardLeft","aliases":[]},{"icon":"faKeynote","aliases":[]},{"icon":"faKhanda","aliases":[]},{"icon":"faKidneys","aliases":[]},{"icon":"faKipSign","aliases":[]},{"icon":"faKiss","aliases":["faKiss"]},{"icon":"faKissBeam","aliases":["faKissBeam"]},{"icon":"faKissWinkHeart","aliases":["faKissWinkHeart"]},{"icon":"faKitMedical","aliases":["faFirstAid"]},{"icon":"faKitchenSet","aliases":[]},{"icon":"faKite","aliases":[]},{"icon":"faKiwiBird","aliases":[]},{"icon":"faKiwiFruit","aliases":[]},{"icon":"faKnife","aliases":["faUtensilKnife"]},{"icon":"faKnifeKitchen","aliases":[]},{"icon":"faKrw","aliases":["faKrw","faWon"]},{"icon":"faL","aliases":[]},{"icon":"faLacrosseStick","aliases":[]},{"icon":"faLacrosseStickBall","aliases":[]},{"icon":"faLadderWater","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faLambda","aliases":[]},{"icon":"faLamp","aliases":[]},{"icon":"faLampDesk","aliases":[]},{"icon":"faLampFloor","aliases":[]},{"icon":"faLampStreet","aliases":[]},{"icon":"faLandMineOn","aliases":[]},{"icon":"faLandmark","aliases":[]},{"icon":"faLandmarkAlt","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkDome","aliases":["faLandmarkAlt"]},{"icon":"faLandmarkFlag","aliases":[]},{"icon":"faLandmarkMagnifyingGlass","aliases":[]},{"icon":"faLandscape","aliases":["faLandscape"]},{"icon":"faLanguage","aliases":[]},{"icon":"faLaptop","aliases":[]},{"icon":"faLaptopArrowDown","aliases":[]},{"icon":"faLaptopBinary","aliases":[]},{"icon":"faLaptopCode","aliases":[]},{"icon":"faLaptopFile","aliases":[]},{"icon":"faLaptopHouse","aliases":["faLaptopHouse"]},{"icon":"faLaptopMedical","aliases":[]},{"icon":"faLaptopMobile","aliases":["faPhoneLaptop"]},{"icon":"faLaptopSlash","aliases":[]},{"icon":"faLariSign","aliases":[]},{"icon":"faLasso","aliases":[]},{"icon":"faLassoSparkles","aliases":[]},{"icon":"faLaugh","aliases":["faLaugh"]},{"icon":"faLaughBeam","aliases":["faLaughBeam"]},{"icon":"faLaughSquint","aliases":["faLaughSquint"]},{"icon":"faLaughWink","aliases":["faLaughWink"]},{"icon":"faLayerGroup","aliases":[]},{"icon":"faLayerGroupMinus","aliases":["faLayerGroupMinus"]},{"icon":"faLayerGroupPlus","aliases":["faLayerGroupPlus"]},{"icon":"faLayerMinus","aliases":["faLayerGroupMinus"]},{"icon":"faLayerPlus","aliases":["faLayerGroupPlus"]},{"icon":"faLeaf","aliases":[]},{"icon":"faLeafHeart","aliases":[]},{"icon":"faLeafMaple","aliases":[]},{"icon":"faLeafOak","aliases":[]},{"icon":"faLeafyGreen","aliases":[]},{"icon":"faLeft","aliases":["faArrowAltLeft"]},{"icon":"faLeftFromBracket","aliases":[]},{"icon":"faLeftFromLine","aliases":["faArrowAltFromRight"]},{"icon":"faLeftLong","aliases":["faLongArrowAltLeft"]},{"icon":"faLeftLongToLine","aliases":[]},{"icon":"faLeftRight","aliases":["faArrowsAltH"]},{"icon":"faLeftToBracket","aliases":[]},{"icon":"faLeftToLine","aliases":["faArrowAltToLeft"]},{"icon":"faLegal","aliases":["faLegal"]},{"icon":"faLemon","aliases":[]},{"icon":"faLessThan","aliases":[]},{"icon":"faLessThanEqual","aliases":[]},{"icon":"faLevelDown","aliases":["faLevelDown"]},{"icon":"faLevelDownAlt","aliases":["faLevelDownAlt"]},{"icon":"faLevelUp","aliases":["faLevelUp"]},{"icon":"faLevelUpAlt","aliases":["faLevelUpAlt"]},{"icon":"faLifeRing","aliases":[]},{"icon":"faLightCeiling","aliases":[]},{"icon":"faLightEmergency","aliases":[]},{"icon":"faLightEmergencyOn","aliases":[]},{"icon":"faLightSwitch","aliases":[]},{"icon":"faLightSwitchOff","aliases":[]},{"icon":"faLightSwitchOn","aliases":[]},{"icon":"faLightbulb","aliases":[]},{"icon":"faLightbulbCfl","aliases":[]},{"icon":"faLightbulbCflOn","aliases":[]},{"icon":"faLightbulbDollar","aliases":[]},{"icon":"faLightbulbExclamation","aliases":[]},{"icon":"faLightbulbExclamationOn","aliases":[]},{"icon":"faLightbulbGear","aliases":[]},{"icon":"faLightbulbMessage","aliases":[]},{"icon":"faLightbulbOn","aliases":[]},{"icon":"faLightbulbSlash","aliases":[]},{"icon":"faLighthouse","aliases":[]},{"icon":"faLightsHoliday","aliases":[]},{"icon":"faLineChart","aliases":["faLineChart"]},{"icon":"faLineColumns","aliases":[]},{"icon":"faLineHeight","aliases":[]},{"icon":"faLinesLeaning","aliases":[]},{"icon":"faLink","aliases":["faChain"]},{"icon":"faLinkHorizontal","aliases":["faChainHorizontal"]},{"icon":"faLinkHorizontalSlash","aliases":["faChainHorizontalSlash"]},{"icon":"faLinkSimple","aliases":[]},{"icon":"faLinkSimpleSlash","aliases":[]},{"icon":"faLinkSlash","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faLips","aliases":[]},{"icon":"faLiraSign","aliases":[]},{"icon":"faList","aliases":["faListSquares"]},{"icon":"faList12","aliases":["faList12","faListNumeric"]},{"icon":"faListAlt","aliases":["faListAlt"]},{"icon":"faListCheck","aliases":["faTasks"]},{"icon":"faListDots","aliases":["faListDots"]},{"icon":"faListDropdown","aliases":[]},{"icon":"faListMusic","aliases":[]},{"icon":"faListNumeric","aliases":["faList12","faListNumeric"]},{"icon":"faListOl","aliases":["faList12","faListNumeric"]},{"icon":"faListRadio","aliases":[]},{"icon":"faListSquares","aliases":["faListSquares"]},{"icon":"faListTimeline","aliases":[]},{"icon":"faListTree","aliases":[]},{"icon":"faListUl","aliases":["faListDots"]},{"icon":"faLitecoinSign","aliases":[]},{"icon":"faLoader","aliases":[]},{"icon":"faLobster","aliases":[]},{"icon":"faLocation","aliases":["faLocation"]},{"icon":"faLocationArrow","aliases":[]},{"icon":"faLocationArrowUp","aliases":[]},{"icon":"faLocationCheck","aliases":["faMapMarkerCheck"]},{"icon":"faLocationCircle","aliases":["faLocationCircle"]},{"icon":"faLocationCrosshairs","aliases":["faLocation"]},{"icon":"faLocationCrosshairsSlash","aliases":["faLocationSlash"]},{"icon":"faLocationDot","aliases":["faMapMarkerAlt"]},{"icon":"faLocationDotSlash","aliases":["faMapMarkerAltSlash"]},{"icon":"faLocationExclamation","aliases":["faMapMarkerExclamation"]},{"icon":"faLocationMinus","aliases":["faMapMarkerMinus"]},{"icon":"faLocationPen","aliases":["faMapMarkerEdit"]},{"icon":"faLocationPin","aliases":["faMapMarker"]},{"icon":"faLocationPinLock","aliases":[]},{"icon":"faLocationPinSlash","aliases":["faMapMarkerSlash"]},{"icon":"faLocationPlus","aliases":["faMapMarkerPlus"]},{"icon":"faLocationQuestion","aliases":["faMapMarkerQuestion"]},{"icon":"faLocationSlash","aliases":["faLocationSlash"]},{"icon":"faLocationSmile","aliases":["faMapMarkerSmile"]},{"icon":"faLocationXmark","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faLock","aliases":[]},{"icon":"faLockA","aliases":[]},{"icon":"faLockAlt","aliases":["faLockAlt"]},{"icon":"faLockHashtag","aliases":[]},{"icon":"faLockKeyhole","aliases":["faLockAlt"]},{"icon":"faLockKeyholeOpen","aliases":["faLockOpenAlt"]},{"icon":"faLockOpen","aliases":[]},{"icon":"faLockOpenAlt","aliases":["faLockOpenAlt"]},{"icon":"faLocust","aliases":[]},{"icon":"faLollipop","aliases":["faLollypop"]},{"icon":"faLollypop","aliases":["faLollypop"]},{"icon":"faLongArrowAltDown","aliases":["faLongArrowAltDown"]},{"icon":"faLongArrowAltLeft","aliases":["faLongArrowAltLeft"]},{"icon":"faLongArrowAltRight","aliases":["faLongArrowAltRight"]},{"icon":"faLongArrowAltUp","aliases":["faLongArrowAltUp"]},{"icon":"faLongArrowDown","aliases":["faLongArrowDown"]},{"icon":"faLongArrowLeft","aliases":["faLongArrowLeft"]},{"icon":"faLongArrowRight","aliases":["faLongArrowRight"]},{"icon":"faLongArrowUp","aliases":["faLongArrowUp"]},{"icon":"faLoveseat","aliases":["faCouchSmall"]},{"icon":"faLowVision","aliases":["faLowVision"]},{"icon":"faLuchador","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faLuchadorMask","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faLuggageCart","aliases":["faLuggageCart"]},{"icon":"faLungs","aliases":[]},{"icon":"faLungsVirus","aliases":[]},{"icon":"faM","aliases":[]},{"icon":"faMace","aliases":[]},{"icon":"faMagic","aliases":["faMagic"]},{"icon":"faMagicWandSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faMagnet","aliases":[]},{"icon":"faMagnifyingGlass","aliases":["faSearch"]},{"icon":"faMagnifyingGlassArrowRight","aliases":[]},{"icon":"faMagnifyingGlassArrowsRotate","aliases":[]},{"icon":"faMagnifyingGlassChart","aliases":[]},{"icon":"faMagnifyingGlassDollar","aliases":["faSearchDollar"]},{"icon":"faMagnifyingGlassLocation","aliases":["faSearchLocation"]},{"icon":"faMagnifyingGlassMinus","aliases":["faSearchMinus"]},{"icon":"faMagnifyingGlassMusic","aliases":[]},{"icon":"faMagnifyingGlassPlay","aliases":[]},{"icon":"faMagnifyingGlassPlus","aliases":["faSearchPlus"]},{"icon":"faMagnifyingGlassWaveform","aliases":[]},{"icon":"faMailBulk","aliases":["faMailBulk"]},{"icon":"faMailForward","aliases":["faMailForward"]},{"icon":"faMailReply","aliases":["faMailReply"]},{"icon":"faMailReplyAll","aliases":["faMailReplyAll"]},{"icon":"faMailbox","aliases":[]},{"icon":"faMailboxFlagUp","aliases":[]},{"icon":"faMakiRoll","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faMakizushi","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faMale","aliases":["faMale"]},{"icon":"faManatSign","aliases":[]},{"icon":"faMandolin","aliases":[]},{"icon":"faMango","aliases":[]},{"icon":"faManhole","aliases":[]},{"icon":"faMap","aliases":[]},{"icon":"faMapLocation","aliases":["faMapMarked"]},{"icon":"faMapLocationDot","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarked","aliases":["faMapMarked"]},{"icon":"faMapMarkedAlt","aliases":["faMapMarkedAlt"]},{"icon":"faMapMarker","aliases":["faMapMarker"]},{"icon":"faMapMarkerAlt","aliases":["faMapMarkerAlt"]},{"icon":"faMapMarkerAltSlash","aliases":["faMapMarkerAltSlash"]},{"icon":"faMapMarkerCheck","aliases":["faMapMarkerCheck"]},{"icon":"faMapMarkerEdit","aliases":["faMapMarkerEdit"]},{"icon":"faMapMarkerExclamation","aliases":["faMapMarkerExclamation"]},{"icon":"faMapMarkerMinus","aliases":["faMapMarkerMinus"]},{"icon":"faMapMarkerPlus","aliases":["faMapMarkerPlus"]},{"icon":"faMapMarkerQuestion","aliases":["faMapMarkerQuestion"]},{"icon":"faMapMarkerSlash","aliases":["faMapMarkerSlash"]},{"icon":"faMapMarkerSmile","aliases":["faMapMarkerSmile"]},{"icon":"faMapMarkerTimes","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faMapMarkerXmark","aliases":["faMapMarkerTimes","faMapMarkerXmark"]},{"icon":"faMapPin","aliases":[]},{"icon":"faMapSigns","aliases":["faMapSigns"]},{"icon":"faMarker","aliases":[]},{"icon":"faMars","aliases":[]},{"icon":"faMarsAndVenus","aliases":[]},{"icon":"faMarsAndVenusBurst","aliases":[]},{"icon":"faMarsDouble","aliases":[]},{"icon":"faMarsStroke","aliases":[]},{"icon":"faMarsStrokeH","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeRight","aliases":["faMarsStrokeH"]},{"icon":"faMarsStrokeUp","aliases":["faMarsStrokeV"]},{"icon":"faMarsStrokeV","aliases":["faMarsStrokeV"]},{"icon":"faMartiniGlass","aliases":["faGlassMartiniAlt"]},{"icon":"faMartiniGlassCitrus","aliases":["faCocktail"]},{"icon":"faMartiniGlassEmpty","aliases":["faGlassMartini"]},{"icon":"faMask","aliases":[]},{"icon":"faMaskFace","aliases":[]},{"icon":"faMaskLuchador","aliases":["faLuchador","faMaskLuchador"]},{"icon":"faMaskSnorkel","aliases":[]},{"icon":"faMaskVentilator","aliases":[]},{"icon":"faMasksTheater","aliases":["faTheaterMasks"]},{"icon":"faMattressPillow","aliases":[]},{"icon":"faMaximize","aliases":["faExpandArrowsAlt"]},{"icon":"faMeat","aliases":[]},{"icon":"faMedal","aliases":[]},{"icon":"faMedkit","aliases":["faMedkit"]},{"icon":"faMegaphone","aliases":[]},{"icon":"faMeh","aliases":["faMeh"]},{"icon":"faMehBlank","aliases":["faMehBlank"]},{"icon":"faMehRollingEyes","aliases":["faMehRollingEyes"]},{"icon":"faMelon","aliases":[]},{"icon":"faMelonSlice","aliases":[]},{"icon":"faMemo","aliases":[]},{"icon":"faMemoCircleCheck","aliases":[]},{"icon":"faMemoCircleInfo","aliases":[]},{"icon":"faMemoPad","aliases":[]},{"icon":"faMemory","aliases":[]},{"icon":"faMenorah","aliases":[]},{"icon":"faMercury","aliases":[]},{"icon":"faMerge","aliases":[]},{"icon":"faMessage","aliases":["faCommentAlt"]},{"icon":"faMessageArrowDown","aliases":["faCommentAltArrowDown"]},{"icon":"faMessageArrowUp","aliases":["faCommentAltArrowUp"]},{"icon":"faMessageArrowUpRight","aliases":[]},{"icon":"faMessageBot","aliases":[]},{"icon":"faMessageCaptions","aliases":["faCommentAltCaptions"]},{"icon":"faMessageCheck","aliases":["faCommentAltCheck"]},{"icon":"faMessageCode","aliases":[]},{"icon":"faMessageDollar","aliases":["faCommentAltDollar"]},{"icon":"faMessageDots","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faMessageEdit","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faMessageExclamation","aliases":["faCommentAltExclamation"]},{"icon":"faMessageHeart","aliases":[]},{"icon":"faMessageImage","aliases":["faCommentAltImage"]},{"icon":"faMessageLines","aliases":["faCommentAltLines"]},{"icon":"faMessageMedical","aliases":["faCommentAltMedical"]},{"icon":"faMessageMiddle","aliases":["faCommentMiddleAlt"]},{"icon":"faMessageMiddleTop","aliases":["faCommentMiddleTopAlt"]},{"icon":"faMessageMinus","aliases":["faCommentAltMinus"]},{"icon":"faMessageMusic","aliases":["faCommentAltMusic"]},{"icon":"faMessagePen","aliases":["faCommentAltEdit","faMessageEdit"]},{"icon":"faMessagePlus","aliases":["faCommentAltPlus"]},{"icon":"faMessageQuestion","aliases":[]},{"icon":"faMessageQuote","aliases":["faCommentAltQuote"]},{"icon":"faMessageSlash","aliases":["faCommentAltSlash"]},{"icon":"faMessageSmile","aliases":["faCommentAltSmile"]},{"icon":"faMessageSms","aliases":[]},{"icon":"faMessageText","aliases":["faCommentAltText"]},{"icon":"faMessageTimes","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faMessageXmark","aliases":["faCommentAltTimes","faMessageTimes"]},{"icon":"faMessages","aliases":["faCommentsAlt"]},{"icon":"faMessagesDollar","aliases":["faCommentsAltDollar"]},{"icon":"faMessagesQuestion","aliases":[]},{"icon":"faMessaging","aliases":["faCommentAltDots","faMessaging"]},{"icon":"faMeteor","aliases":[]},{"icon":"faMeter","aliases":[]},{"icon":"faMeterBolt","aliases":[]},{"icon":"faMeterDroplet","aliases":[]},{"icon":"faMeterFire","aliases":[]},{"icon":"faMicrochip","aliases":[]},{"icon":"faMicrochipAi","aliases":[]},{"icon":"faMicrophone","aliases":[]},{"icon":"faMicrophoneAlt","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneAltSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneCircle","aliases":["faMicrophoneCircle"]},{"icon":"faMicrophoneCircleAlt","aliases":["faMicrophoneCircleAlt"]},{"icon":"faMicrophoneLines","aliases":["faMicrophoneAlt"]},{"icon":"faMicrophoneLinesSlash","aliases":["faMicrophoneAltSlash"]},{"icon":"faMicrophoneSlash","aliases":[]},{"icon":"faMicrophoneStand","aliases":[]},{"icon":"faMicroscope","aliases":[]},{"icon":"faMicrowave","aliases":[]},{"icon":"faMillSign","aliases":[]},{"icon":"faMindShare","aliases":["faMindShare"]},{"icon":"faMinimize","aliases":["faCompressArrowsAlt"]},{"icon":"faMinus","aliases":["faSubtract"]},{"icon":"faMinusCircle","aliases":["faMinusCircle"]},{"icon":"faMinusHexagon","aliases":["faMinusHexagon"]},{"icon":"faMinusLarge","aliases":["faMinusLarge"]},{"icon":"faMinusOctagon","aliases":["faMinusOctagon"]},{"icon":"faMinusSquare","aliases":["faMinusSquare"]},{"icon":"faMistletoe","aliases":[]},{"icon":"faMitten","aliases":[]},{"icon":"faMobile","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAlt","aliases":["faMobileAlt"]},{"icon":"faMobileAndroid","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileAndroidAlt","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileButton","aliases":[]},{"icon":"faMobileIphone","aliases":["faMobileIphone"]},{"icon":"faMobileNotch","aliases":["faMobileIphone"]},{"icon":"faMobilePhone","aliases":["faMobileAndroid","faMobilePhone"]},{"icon":"faMobileRetro","aliases":[]},{"icon":"faMobileScreen","aliases":["faMobileAndroidAlt"]},{"icon":"faMobileScreenButton","aliases":["faMobileAlt"]},{"icon":"faMobileSignal","aliases":[]},{"icon":"faMobileSignalOut","aliases":[]},{"icon":"faMoneyBill","aliases":[]},{"icon":"faMoneyBill1","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBill1Wave","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillAlt","aliases":["faMoneyBillAlt"]},{"icon":"faMoneyBillSimple","aliases":[]},{"icon":"faMoneyBillSimpleWave","aliases":[]},{"icon":"faMoneyBillTransfer","aliases":[]},{"icon":"faMoneyBillTrendUp","aliases":[]},{"icon":"faMoneyBillWave","aliases":[]},{"icon":"faMoneyBillWaveAlt","aliases":["faMoneyBillWaveAlt"]},{"icon":"faMoneyBillWheat","aliases":[]},{"icon":"faMoneyBills","aliases":[]},{"icon":"faMoneyBillsAlt","aliases":["faMoneyBillsAlt"]},{"icon":"faMoneyBillsSimple","aliases":["faMoneyBillsAlt"]},{"icon":"faMoneyCheck","aliases":[]},{"icon":"faMoneyCheckAlt","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollar","aliases":["faMoneyCheckAlt"]},{"icon":"faMoneyCheckDollarPen","aliases":["faMoneyCheckEditAlt"]},{"icon":"faMoneyCheckEdit","aliases":["faMoneyCheckEdit"]},{"icon":"faMoneyCheckEditAlt","aliases":["faMoneyCheckEditAlt"]},{"icon":"faMoneyCheckPen","aliases":["faMoneyCheckEdit"]},{"icon":"faMoneyFromBracket","aliases":[]},{"icon":"faMoneySimpleFromBracket","aliases":[]},{"icon":"faMonitorHeartRate","aliases":["faMonitorHeartRate"]},{"icon":"faMonitorWaveform","aliases":["faMonitorHeartRate"]},{"icon":"faMonkey","aliases":[]},{"icon":"faMonument","aliases":[]},{"icon":"faMoon","aliases":[]},{"icon":"faMoonCloud","aliases":[]},{"icon":"faMoonOverSun","aliases":["faEclipseAlt"]},{"icon":"faMoonStars","aliases":[]},{"icon":"faMoped","aliases":[]},{"icon":"faMortarBoard","aliases":["faMortarBoard"]},{"icon":"faMortarPestle","aliases":[]},{"icon":"faMosque","aliases":[]},{"icon":"faMosquito","aliases":[]},{"icon":"faMosquitoNet","aliases":[]},{"icon":"faMotorcycle","aliases":[]},{"icon":"faMound","aliases":[]},{"icon":"faMountain","aliases":[]},{"icon":"faMountainCity","aliases":[]},{"icon":"faMountainSun","aliases":[]},{"icon":"faMountains","aliases":[]},{"icon":"faMouse","aliases":["faMouse"]},{"icon":"faMouseAlt","aliases":["faMouseAlt"]},{"icon":"faMouseField","aliases":[]},{"icon":"faMousePointer","aliases":["faMousePointer"]},{"icon":"faMp3Player","aliases":[]},{"icon":"faMug","aliases":[]},{"icon":"faMugHot","aliases":[]},{"icon":"faMugMarshmallows","aliases":[]},{"icon":"faMugSaucer","aliases":["faCoffee"]},{"icon":"faMugTea","aliases":[]},{"icon":"faMugTeaSaucer","aliases":[]},{"icon":"faMultiply","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faMuseum","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faMushroom","aliases":[]},{"icon":"faMusic","aliases":[]},{"icon":"faMusicAlt","aliases":["faMusicAlt"]},{"icon":"faMusicAltSlash","aliases":["faMusicAltSlash"]},{"icon":"faMusicMagnifyingGlass","aliases":[]},{"icon":"faMusicNote","aliases":["faMusicAlt"]},{"icon":"faMusicNoteSlash","aliases":["faMusicAltSlash"]},{"icon":"faMusicSlash","aliases":[]},{"icon":"faMustache","aliases":[]},{"icon":"faN","aliases":[]},{"icon":"faNairaSign","aliases":[]},{"icon":"faNarwhal","aliases":[]},{"icon":"faNavicon","aliases":["faNavicon"]},{"icon":"faNestingDolls","aliases":[]},{"icon":"faNetworkWired","aliases":[]},{"icon":"faNeuter","aliases":[]},{"icon":"faNewspaper","aliases":[]},{"icon":"faNfc","aliases":[]},{"icon":"faNfcLock","aliases":[]},{"icon":"faNfcMagnifyingGlass","aliases":[]},{"icon":"faNfcPen","aliases":[]},{"icon":"faNfcSignal","aliases":[]},{"icon":"faNfcSlash","aliases":[]},{"icon":"faNfcSymbol","aliases":[]},{"icon":"faNfcTrash","aliases":[]},{"icon":"faNigiri","aliases":["faNigiri"]},{"icon":"faNose","aliases":[]},{"icon":"faNotEqual","aliases":[]},{"icon":"faNotdef","aliases":[]},{"icon":"faNote","aliases":[]},{"icon":"faNoteMedical","aliases":[]},{"icon":"faNoteSticky","aliases":["faStickyNote"]},{"icon":"faNotebook","aliases":[]},{"icon":"faNotes","aliases":[]},{"icon":"faNotesMedical","aliases":[]},{"icon":"faO","aliases":[]},{"icon":"faObjectExclude","aliases":[]},{"icon":"faObjectGroup","aliases":[]},{"icon":"faObjectIntersect","aliases":[]},{"icon":"faObjectSubtract","aliases":[]},{"icon":"faObjectUngroup","aliases":[]},{"icon":"faObjectUnion","aliases":[]},{"icon":"faObjectsAlignBottom","aliases":[]},{"icon":"faObjectsAlignCenterHorizontal","aliases":[]},{"icon":"faObjectsAlignCenterVertical","aliases":[]},{"icon":"faObjectsAlignLeft","aliases":[]},{"icon":"faObjectsAlignRight","aliases":[]},{"icon":"faObjectsAlignTop","aliases":[]},{"icon":"faObjectsColumn","aliases":[]},{"icon":"faOctagon","aliases":[]},{"icon":"faOctagonCheck","aliases":[]},{"icon":"faOctagonDivide","aliases":[]},{"icon":"faOctagonExclamation","aliases":[]},{"icon":"faOctagonMinus","aliases":["faMinusOctagon"]},{"icon":"faOctagonPlus","aliases":["faPlusOctagon"]},{"icon":"faOctagonXmark","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faOctopus","aliases":[]},{"icon":"faOilCan","aliases":[]},{"icon":"faOilCanDrip","aliases":[]},{"icon":"faOilTemp","aliases":["faOilTemp"]},{"icon":"faOilTemperature","aliases":["faOilTemp"]},{"icon":"faOilWell","aliases":[]},{"icon":"faOlive","aliases":[]},{"icon":"faOliveBranch","aliases":[]},{"icon":"faOm","aliases":[]},{"icon":"faOmega","aliases":[]},{"icon":"faOnion","aliases":[]},{"icon":"faOption","aliases":[]},{"icon":"faOrnament","aliases":[]},{"icon":"faOtter","aliases":[]},{"icon":"faOutdent","aliases":["faDedent"]},{"icon":"faOutlet","aliases":[]},{"icon":"faOven","aliases":[]},{"icon":"faOverline","aliases":[]},{"icon":"faP","aliases":[]},{"icon":"faPage","aliases":[]},{"icon":"faPageBreak","aliases":["faPageBreak"]},{"icon":"faPageCaretDown","aliases":["faFileCaretDown"]},{"icon":"faPageCaretUp","aliases":["faFileCaretUp"]},{"icon":"faPager","aliases":[]},{"icon":"faPaintBrushAlt","aliases":["faPaintBrushAlt","faPaintBrushFine","faPaintbrushAlt"]},{"icon":"faPaintRoller","aliases":[]},{"icon":"faPaintbrush","aliases":["faPaintBrush"]},{"icon":"faPaintbrushFine","aliases":["faPaintBrushAlt","faPaintBrushFine","faPaintbrushAlt"]},{"icon":"faPaintbrushPencil","aliases":[]},{"icon":"faPalette","aliases":[]},{"icon":"faPaletteBoxes","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPallet","aliases":[]},{"icon":"faPalletAlt","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPalletBox","aliases":[]},{"icon":"faPalletBoxes","aliases":["faPaletteBoxes","faPalletAlt"]},{"icon":"faPanFood","aliases":[]},{"icon":"faPanFrying","aliases":[]},{"icon":"faPancakes","aliases":[]},{"icon":"faPanelEws","aliases":[]},{"icon":"faPanelFire","aliases":[]},{"icon":"faPanorama","aliases":[]},{"icon":"faPaperPlane","aliases":[]},{"icon":"faPaperPlaneAlt","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faPaperPlaneTop","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faPaperclip","aliases":[]},{"icon":"faPaperclipVertical","aliases":[]},{"icon":"faParachuteBox","aliases":[]},{"icon":"faParagraph","aliases":[]},{"icon":"faParagraphLeft","aliases":["faParagraphRtl"]},{"icon":"faParagraphRtl","aliases":["faParagraphRtl"]},{"icon":"faParentheses","aliases":["faParentheses"]},{"icon":"faParenthesis","aliases":["faParenthesis"]},{"icon":"faParking","aliases":["faParking"]},{"icon":"faParkingCircle","aliases":["faParkingCircle"]},{"icon":"faParkingCircleSlash","aliases":["faParkingCircleSlash"]},{"icon":"faParkingSlash","aliases":["faParkingSlash"]},{"icon":"faPartyBack","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faPartyBell","aliases":[]},{"icon":"faPartyHorn","aliases":[]},{"icon":"faPassport","aliases":[]},{"icon":"faPastafarianism","aliases":["faPastafarianism"]},{"icon":"faPaste","aliases":["faFileClipboard"]},{"icon":"faPause","aliases":[]},{"icon":"faPauseCircle","aliases":["faPauseCircle"]},{"icon":"faPaw","aliases":[]},{"icon":"faPawAlt","aliases":["faPawAlt"]},{"icon":"faPawClaws","aliases":[]},{"icon":"faPawSimple","aliases":["faPawAlt"]},{"icon":"faPeace","aliases":[]},{"icon":"faPeach","aliases":[]},{"icon":"faPeanut","aliases":[]},{"icon":"faPeanuts","aliases":[]},{"icon":"faPeapod","aliases":[]},{"icon":"faPear","aliases":[]},{"icon":"faPedestal","aliases":[]},{"icon":"faPegasus","aliases":[]},{"icon":"faPen","aliases":[]},{"icon":"faPenAlt","aliases":["faPenAlt"]},{"icon":"faPenAltSlash","aliases":["faPenAltSlash"]},{"icon":"faPenCircle","aliases":[]},{"icon":"faPenClip","aliases":["faPenAlt"]},{"icon":"faPenClipSlash","aliases":["faPenAltSlash"]},{"icon":"faPenFancy","aliases":[]},{"icon":"faPenFancySlash","aliases":[]},{"icon":"faPenField","aliases":[]},{"icon":"faPenLine","aliases":[]},{"icon":"faPenNib","aliases":[]},{"icon":"faPenNibSlash","aliases":[]},{"icon":"faPenPaintbrush","aliases":["faPencilPaintbrush"]},{"icon":"faPenRuler","aliases":["faPencilRuler"]},{"icon":"faPenSlash","aliases":[]},{"icon":"faPenSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPenSwirl","aliases":[]},{"icon":"faPenToSquare","aliases":["faEdit"]},{"icon":"faPencil","aliases":["faPencilAlt"]},{"icon":"faPencilAlt","aliases":["faPencilAlt"]},{"icon":"faPencilMechanical","aliases":[]},{"icon":"faPencilPaintbrush","aliases":["faPencilPaintbrush"]},{"icon":"faPencilRuler","aliases":["faPencilRuler"]},{"icon":"faPencilSlash","aliases":[]},{"icon":"faPencilSquare","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faPennant","aliases":["faPennant"]},{"icon":"faPeople","aliases":[]},{"icon":"faPeopleArrows","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleArrowsLeftRight","aliases":["faPeopleArrowsLeftRight"]},{"icon":"faPeopleCarry","aliases":["faPeopleCarry"]},{"icon":"faPeopleCarryBox","aliases":["faPeopleCarry"]},{"icon":"faPeopleDress","aliases":[]},{"icon":"faPeopleDressSimple","aliases":[]},{"icon":"faPeopleGroup","aliases":[]},{"icon":"faPeopleLine","aliases":[]},{"icon":"faPeoplePants","aliases":[]},{"icon":"faPeoplePantsSimple","aliases":[]},{"icon":"faPeoplePulling","aliases":[]},{"icon":"faPeopleRobbery","aliases":[]},{"icon":"faPeopleRoof","aliases":[]},{"icon":"faPeopleSimple","aliases":[]},{"icon":"faPepper","aliases":[]},{"icon":"faPepperHot","aliases":[]},{"icon":"faPercent","aliases":["faPercentage"]},{"icon":"faPercentage","aliases":["faPercentage"]},{"icon":"faPeriod","aliases":[]},{"icon":"faPerson","aliases":["faMale"]},{"icon":"faPersonArrowDownToLine","aliases":[]},{"icon":"faPersonArrowUpFromLine","aliases":[]},{"icon":"faPersonBiking","aliases":["faBiking"]},{"icon":"faPersonBikingMountain","aliases":["faBikingMountain"]},{"icon":"faPersonBooth","aliases":[]},{"icon":"faPersonBreastfeeding","aliases":[]},{"icon":"faPersonBurst","aliases":[]},{"icon":"faPersonCane","aliases":[]},{"icon":"faPersonCarry","aliases":["faPersonCarry"]},{"icon":"faPersonCarryBox","aliases":["faPersonCarry"]},{"icon":"faPersonChalkboard","aliases":[]},{"icon":"faPersonCircleCheck","aliases":[]},{"icon":"faPersonCircleExclamation","aliases":[]},{"icon":"faPersonCircleMinus","aliases":[]},{"icon":"faPersonCirclePlus","aliases":[]},{"icon":"faPersonCircleQuestion","aliases":[]},{"icon":"faPersonCircleXmark","aliases":[]},{"icon":"faPersonDigging","aliases":["faDigging"]},{"icon":"faPersonDolly","aliases":[]},{"icon":"faPersonDollyEmpty","aliases":[]},{"icon":"faPersonDotsFromLine","aliases":["faDiagnoses"]},{"icon":"faPersonDress","aliases":["faFemale"]},{"icon":"faPersonDressBurst","aliases":[]},{"icon":"faPersonDressFairy","aliases":[]},{"icon":"faPersonDressSimple","aliases":[]},{"icon":"faPersonDrowning","aliases":[]},{"icon":"faPersonFairy","aliases":[]},{"icon":"faPersonFalling","aliases":[]},{"icon":"faPersonFallingBurst","aliases":[]},{"icon":"faPersonFromPortal","aliases":["faPortalExit"]},{"icon":"faPersonHalfDress","aliases":[]},{"icon":"faPersonHarassing","aliases":[]},{"icon":"faPersonHiking","aliases":["faHiking"]},{"icon":"faPersonMilitaryPointing","aliases":[]},{"icon":"faPersonMilitaryRifle","aliases":[]},{"icon":"faPersonMilitaryToPerson","aliases":[]},{"icon":"faPersonPinball","aliases":[]},{"icon":"faPersonPraying","aliases":["faPray"]},{"icon":"faPersonPregnant","aliases":[]},{"icon":"faPersonRays","aliases":[]},{"icon":"faPersonRifle","aliases":[]},{"icon":"faPersonRunning","aliases":["faRunning"]},{"icon":"faPersonRunningFast","aliases":[]},{"icon":"faPersonSeat","aliases":[]},{"icon":"faPersonSeatReclined","aliases":[]},{"icon":"faPersonShelter","aliases":[]},{"icon":"faPersonSign","aliases":[]},{"icon":"faPersonSimple","aliases":[]},{"icon":"faPersonSkating","aliases":["faSkating"]},{"icon":"faPersonSkiJumping","aliases":["faSkiJump"]},{"icon":"faPersonSkiLift","aliases":["faSkiLift"]},{"icon":"faPersonSkiing","aliases":["faSkiing"]},{"icon":"faPersonSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faPersonSledding","aliases":["faSledding"]},{"icon":"faPersonSnowboarding","aliases":["faSnowboarding"]},{"icon":"faPersonSnowmobiling","aliases":["faSnowmobile"]},{"icon":"faPersonSwimming","aliases":["faSwimmer"]},{"icon":"faPersonThroughWindow","aliases":[]},{"icon":"faPersonToDoor","aliases":[]},{"icon":"faPersonToPortal","aliases":["faPortalEnter"]},{"icon":"faPersonWalking","aliases":["faWalking"]},{"icon":"faPersonWalkingArrowLoopLeft","aliases":[]},{"icon":"faPersonWalkingArrowRight","aliases":[]},{"icon":"faPersonWalkingDashedLineArrowRight","aliases":[]},{"icon":"faPersonWalkingLuggage","aliases":[]},{"icon":"faPersonWalkingWithCane","aliases":["faBlind"]},{"icon":"faPesetaSign","aliases":[]},{"icon":"faPesoSign","aliases":[]},{"icon":"faPhone","aliases":[]},{"icon":"faPhoneAlt","aliases":["faPhoneAlt"]},{"icon":"faPhoneArrowDown","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneArrowDownLeft","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneArrowRight","aliases":[]},{"icon":"faPhoneArrowUp","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhoneArrowUpRight","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhoneCircle","aliases":["faPhoneCircle"]},{"icon":"faPhoneCircleAlt","aliases":["faPhoneCircleAlt"]},{"icon":"faPhoneCircleDown","aliases":["faPhoneCircleDown"]},{"icon":"faPhoneFlip","aliases":["faPhoneAlt"]},{"icon":"faPhoneHangup","aliases":[]},{"icon":"faPhoneIncoming","aliases":["faPhoneArrowDown","faPhoneIncoming"]},{"icon":"faPhoneIntercom","aliases":[]},{"icon":"faPhoneLaptop","aliases":["faPhoneLaptop"]},{"icon":"faPhoneMissed","aliases":[]},{"icon":"faPhoneOffice","aliases":[]},{"icon":"faPhoneOutgoing","aliases":["faPhoneArrowUp","faPhoneOutgoing"]},{"icon":"faPhonePlus","aliases":[]},{"icon":"faPhoneRotary","aliases":[]},{"icon":"faPhoneSlash","aliases":[]},{"icon":"faPhoneSquare","aliases":["faPhoneSquare"]},{"icon":"faPhoneSquareAlt","aliases":["faPhoneSquareAlt"]},{"icon":"faPhoneSquareDown","aliases":["faPhoneSquareDown"]},{"icon":"faPhoneVolume","aliases":["faVolumeControlPhone"]},{"icon":"faPhoneXmark","aliases":[]},{"icon":"faPhotoFilm","aliases":["faPhotoVideo"]},{"icon":"faPhotoFilmMusic","aliases":[]},{"icon":"faPhotoVideo","aliases":["faPhotoVideo"]},{"icon":"faPi","aliases":[]},{"icon":"faPiano","aliases":[]},{"icon":"faPianoKeyboard","aliases":[]},{"icon":"faPickaxe","aliases":[]},{"icon":"faPickleball","aliases":[]},{"icon":"faPie","aliases":[]},{"icon":"faPieChart","aliases":["faPieChart"]},{"icon":"faPig","aliases":[]},{"icon":"faPiggyBank","aliases":[]},{"icon":"faPills","aliases":[]},{"icon":"faPinata","aliases":[]},{"icon":"faPinball","aliases":[]},{"icon":"faPineapple","aliases":[]},{"icon":"faPingPongPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faPipe","aliases":[]},{"icon":"faPipeCircleCheck","aliases":[]},{"icon":"faPipeCollar","aliases":[]},{"icon":"faPipeSection","aliases":[]},{"icon":"faPipeSmoking","aliases":[]},{"icon":"faPipeValve","aliases":[]},{"icon":"faPizza","aliases":[]},{"icon":"faPizzaSlice","aliases":[]},{"icon":"faPlaceOfWorship","aliases":[]},{"icon":"faPlane","aliases":[]},{"icon":"faPlaneAlt","aliases":["faPlaneAlt"]},{"icon":"faPlaneArrival","aliases":[]},{"icon":"faPlaneCircleCheck","aliases":[]},{"icon":"faPlaneCircleExclamation","aliases":[]},{"icon":"faPlaneCircleXmark","aliases":[]},{"icon":"faPlaneDeparture","aliases":[]},{"icon":"faPlaneEngines","aliases":["faPlaneAlt"]},{"icon":"faPlaneLock","aliases":[]},{"icon":"faPlaneProp","aliases":[]},{"icon":"faPlaneSlash","aliases":[]},{"icon":"faPlaneTail","aliases":[]},{"icon":"faPlaneUp","aliases":[]},{"icon":"faPlaneUpSlash","aliases":[]},{"icon":"faPlanetMoon","aliases":[]},{"icon":"faPlanetRinged","aliases":[]},{"icon":"faPlantWilt","aliases":[]},{"icon":"faPlateUtensils","aliases":[]},{"icon":"faPlateWheat","aliases":[]},{"icon":"faPlay","aliases":[]},{"icon":"faPlayCircle","aliases":["faPlayCircle"]},{"icon":"faPlayPause","aliases":[]},{"icon":"faPlug","aliases":[]},{"icon":"faPlugCircleBolt","aliases":[]},{"icon":"faPlugCircleCheck","aliases":[]},{"icon":"faPlugCircleExclamation","aliases":[]},{"icon":"faPlugCircleMinus","aliases":[]},{"icon":"faPlugCirclePlus","aliases":[]},{"icon":"faPlugCircleXmark","aliases":[]},{"icon":"faPlus","aliases":["faAdd"]},{"icon":"faPlusCircle","aliases":["faPlusCircle"]},{"icon":"faPlusHexagon","aliases":["faPlusHexagon"]},{"icon":"faPlusLarge","aliases":[]},{"icon":"faPlusMinus","aliases":[]},{"icon":"faPlusOctagon","aliases":["faPlusOctagon"]},{"icon":"faPlusSquare","aliases":["faPlusSquare"]},{"icon":"faPodcast","aliases":[]},{"icon":"faPodium","aliases":[]},{"icon":"faPodiumStar","aliases":[]},{"icon":"faPoliceBox","aliases":[]},{"icon":"faPoll","aliases":["faPoll"]},{"icon":"faPollH","aliases":["faPollH"]},{"icon":"faPollPeople","aliases":[]},{"icon":"faPompebled","aliases":[]},{"icon":"faPoo","aliases":[]},{"icon":"faPooBolt","aliases":["faPooBolt"]},{"icon":"faPooStorm","aliases":["faPooBolt"]},{"icon":"faPool8Ball","aliases":[]},{"icon":"faPoop","aliases":[]},{"icon":"faPopcorn","aliases":[]},{"icon":"faPopsicle","aliases":[]},{"icon":"faPortalEnter","aliases":["faPortalEnter"]},{"icon":"faPortalExit","aliases":["faPortalExit"]},{"icon":"faPortrait","aliases":["faPortrait"]},{"icon":"faPotFood","aliases":[]},{"icon":"faPotato","aliases":[]},{"icon":"faPoundSign","aliases":["faGbp","faPoundSign"]},{"icon":"faPowerOff","aliases":[]},{"icon":"faPray","aliases":["faPray"]},{"icon":"faPrayingHands","aliases":["faPrayingHands"]},{"icon":"faPrescription","aliases":[]},{"icon":"faPrescriptionBottle","aliases":[]},{"icon":"faPrescriptionBottleAlt","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottleMedical","aliases":["faPrescriptionBottleAlt"]},{"icon":"faPrescriptionBottlePill","aliases":[]},{"icon":"faPresentation","aliases":["faPresentation"]},{"icon":"faPresentationScreen","aliases":["faPresentation"]},{"icon":"faPretzel","aliases":[]},{"icon":"faPrint","aliases":[]},{"icon":"faPrintMagnifyingGlass","aliases":["faPrintSearch"]},{"icon":"faPrintSearch","aliases":["faPrintSearch"]},{"icon":"faPrintSlash","aliases":[]},{"icon":"faPro","aliases":["faPro"]},{"icon":"faProcedures","aliases":["faProcedures"]},{"icon":"faProjectDiagram","aliases":["faProjectDiagram"]},{"icon":"faProjector","aliases":[]},{"icon":"faPump","aliases":[]},{"icon":"faPumpMedical","aliases":[]},{"icon":"faPumpSoap","aliases":[]},{"icon":"faPumpkin","aliases":[]},{"icon":"faPuzzle","aliases":[]},{"icon":"faPuzzlePiece","aliases":[]},{"icon":"faPuzzlePieceAlt","aliases":["faPuzzlePieceAlt"]},{"icon":"faPuzzlePieceSimple","aliases":["faPuzzlePieceAlt"]},{"icon":"faQ","aliases":[]},{"icon":"faQrcode","aliases":[]},{"icon":"faQuestion","aliases":[]},{"icon":"faQuestionCircle","aliases":["faQuestionCircle"]},{"icon":"faQuestionSquare","aliases":["faQuestionSquare"]},{"icon":"faQuidditch","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuidditchBroomBall","aliases":["faQuidditch","faQuidditchBroomBall"]},{"icon":"faQuoteLeft","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteLeftAlt","aliases":["faQuoteLeftAlt"]},{"icon":"faQuoteRight","aliases":["faQuoteRightAlt"]},{"icon":"faQuoteRightAlt","aliases":["faQuoteRightAlt"]},{"icon":"faQuotes","aliases":[]},{"icon":"faQuran","aliases":["faQuran"]},{"icon":"faR","aliases":[]},{"icon":"faRabbit","aliases":[]},{"icon":"faRabbitFast","aliases":["faRabbitFast"]},{"icon":"faRabbitRunning","aliases":["faRabbitFast"]},{"icon":"faRaccoon","aliases":[]},{"icon":"faRacquet","aliases":[]},{"icon":"faRadar","aliases":[]},{"icon":"faRadiation","aliases":[]},{"icon":"faRadiationAlt","aliases":["faRadiationAlt"]},{"icon":"faRadio","aliases":[]},{"icon":"faRadioAlt","aliases":["faRadioAlt"]},{"icon":"faRadioTuner","aliases":["faRadioAlt"]},{"icon":"faRainbow","aliases":[]},{"icon":"faRaindrops","aliases":[]},{"icon":"faRam","aliases":[]},{"icon":"faRampLoading","aliases":[]},{"icon":"faRandom","aliases":["faRandom"]},{"icon":"faRankingStar","aliases":[]},{"icon":"faRaygun","aliases":[]},{"icon":"faReceipt","aliases":[]},{"icon":"faRecordVinyl","aliases":[]},{"icon":"faRectangle","aliases":["faRectangleLandscape"]},{"icon":"faRectangleAd","aliases":["faAd"]},{"icon":"faRectangleBarcode","aliases":["faBarcodeAlt"]},{"icon":"faRectangleCode","aliases":[]},{"icon":"faRectangleHd","aliases":["faRectangleHd"]},{"icon":"faRectangleHistory","aliases":[]},{"icon":"faRectangleHistoryCirclePlus","aliases":[]},{"icon":"faRectangleHistoryCircleUser","aliases":[]},{"icon":"faRectangleLandscape","aliases":["faRectangleLandscape"]},{"icon":"faRectangleList","aliases":["faListAlt"]},{"icon":"faRectanglePortrait","aliases":["faRectanglePortrait"]},{"icon":"faRectanglePro","aliases":["faPro"]},{"icon":"faRectangleSd","aliases":["faRectangleSd"]},{"icon":"faRectangleTerminal","aliases":[]},{"icon":"faRectangleTimes","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectangleVertical","aliases":["faRectanglePortrait"]},{"icon":"faRectangleVerticalHistory","aliases":[]},{"icon":"faRectangleWide","aliases":[]},{"icon":"faRectangleXmark","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faRectanglesMixed","aliases":[]},{"icon":"faRecycle","aliases":[]},{"icon":"faRedo","aliases":["faArrowRightRotate","faArrowRotateForward","faRedo"]},{"icon":"faRedoAlt","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faReel","aliases":[]},{"icon":"faReflectBoth","aliases":[]},{"icon":"faReflectHorizontal","aliases":[]},{"icon":"faReflectVertical","aliases":[]},{"icon":"faRefresh","aliases":["faRefresh","faSync"]},{"icon":"faRefrigerator","aliases":[]},{"icon":"faRegistered","aliases":[]},{"icon":"faRemove","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faRemoveFormat","aliases":["faRemoveFormat"]},{"icon":"faReorder","aliases":["faReorder","faStream"]},{"icon":"faRepeat","aliases":[]},{"icon":"faRepeat1","aliases":[]},{"icon":"faRepeat1Alt","aliases":["faRepeat1Alt"]},{"icon":"faRepeatAlt","aliases":["faRepeatAlt"]},{"icon":"faReply","aliases":["faMailReply"]},{"icon":"faReplyAll","aliases":["faMailReplyAll"]},{"icon":"faReplyClock","aliases":["faReplyTime"]},{"icon":"faReplyTime","aliases":["faReplyTime"]},{"icon":"faRepublican","aliases":[]},{"icon":"faRestroom","aliases":[]},{"icon":"faRestroomSimple","aliases":[]},{"icon":"faRetweet","aliases":[]},{"icon":"faRetweetAlt","aliases":["faRetweetAlt"]},{"icon":"faRhombus","aliases":[]},{"icon":"faRibbon","aliases":[]},{"icon":"faRight","aliases":["faArrowAltRight"]},{"icon":"faRightFromBracket","aliases":["faSignOutAlt"]},{"icon":"faRightFromLine","aliases":["faArrowAltFromLeft"]},{"icon":"faRightLeft","aliases":["faExchangeAlt"]},{"icon":"faRightLeftLarge","aliases":[]},{"icon":"faRightLong","aliases":["faLongArrowAltRight"]},{"icon":"faRightLongToLine","aliases":[]},{"icon":"faRightToBracket","aliases":["faSignInAlt"]},{"icon":"faRightToLine","aliases":["faArrowAltToRight"]},{"icon":"faRing","aliases":[]},{"icon":"faRingDiamond","aliases":[]},{"icon":"faRingsWedding","aliases":[]},{"icon":"faRmb","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faRoad","aliases":[]},{"icon":"faRoadBarrier","aliases":[]},{"icon":"faRoadBridge","aliases":[]},{"icon":"faRoadCircleCheck","aliases":[]},{"icon":"faRoadCircleExclamation","aliases":[]},{"icon":"faRoadCircleXmark","aliases":[]},{"icon":"faRoadLock","aliases":[]},{"icon":"faRoadSpikes","aliases":[]},{"icon":"faRobot","aliases":[]},{"icon":"faRobotAstromech","aliases":[]},{"icon":"faRocket","aliases":[]},{"icon":"faRocketLaunch","aliases":[]},{"icon":"faRodAsclepius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRodSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faRollerCoaster","aliases":[]},{"icon":"faRotate","aliases":["faSyncAlt"]},{"icon":"faRotateBack","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateBackward","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateExclamation","aliases":[]},{"icon":"faRotateForward","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRotateLeft","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faRotateReverse","aliases":[]},{"icon":"faRotateRight","aliases":["faRedoAlt","faRotateForward"]},{"icon":"faRouble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRoute","aliases":[]},{"icon":"faRouteHighway","aliases":[]},{"icon":"faRouteInterstate","aliases":[]},{"icon":"faRouter","aliases":[]},{"icon":"faRows","aliases":["faRows"]},{"icon":"faRss","aliases":["faFeed"]},{"icon":"faRssSquare","aliases":["faRssSquare"]},{"icon":"faRub","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRuble","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRubleSign","aliases":["faRouble","faRub","faRuble"]},{"icon":"faRug","aliases":[]},{"icon":"faRugbyBall","aliases":[]},{"icon":"faRuler","aliases":[]},{"icon":"faRulerCombined","aliases":[]},{"icon":"faRulerHorizontal","aliases":[]},{"icon":"faRulerTriangle","aliases":[]},{"icon":"faRulerVertical","aliases":[]},{"icon":"faRunning","aliases":["faRunning"]},{"icon":"faRupee","aliases":["faRupee"]},{"icon":"faRupeeSign","aliases":["faRupee"]},{"icon":"faRupiahSign","aliases":[]},{"icon":"faRv","aliases":[]},{"icon":"faS","aliases":[]},{"icon":"faSack","aliases":[]},{"icon":"faSackDollar","aliases":[]},{"icon":"faSackXmark","aliases":[]},{"icon":"faSadCry","aliases":["faSadCry"]},{"icon":"faSadTear","aliases":["faSadTear"]},{"icon":"faSailboat","aliases":[]},{"icon":"faSalad","aliases":["faBowlSalad"]},{"icon":"faSaltShaker","aliases":[]},{"icon":"faSandwich","aliases":[]},{"icon":"faSatellite","aliases":[]},{"icon":"faSatelliteDish","aliases":[]},{"icon":"faSausage","aliases":[]},{"icon":"faSave","aliases":["faSave"]},{"icon":"faSaveCircleArrowRight","aliases":["faSaveCircleArrowRight"]},{"icon":"faSaveCircleXmark","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faSaveTimes","aliases":["faFloppyDiskTimes","faSaveCircleXmark","faSaveTimes"]},{"icon":"faSaxHot","aliases":["faSaxHot"]},{"icon":"faSaxophone","aliases":[]},{"icon":"faSaxophoneFire","aliases":["faSaxHot"]},{"icon":"faScaleBalanced","aliases":["faBalanceScale"]},{"icon":"faScaleUnbalanced","aliases":["faBalanceScaleLeft"]},{"icon":"faScaleUnbalancedFlip","aliases":["faBalanceScaleRight"]},{"icon":"faScalpel","aliases":[]},{"icon":"faScalpelLineDashed","aliases":["faScalpelPath"]},{"icon":"faScalpelPath","aliases":["faScalpelPath"]},{"icon":"faScanner","aliases":["faScanner"]},{"icon":"faScannerGun","aliases":["faScanner"]},{"icon":"faScannerImage","aliases":[]},{"icon":"faScannerKeyboard","aliases":[]},{"icon":"faScannerTouchscreen","aliases":[]},{"icon":"faScarecrow","aliases":[]},{"icon":"faScarf","aliases":[]},{"icon":"faSchool","aliases":[]},{"icon":"faSchoolCircleCheck","aliases":[]},{"icon":"faSchoolCircleExclamation","aliases":[]},{"icon":"faSchoolCircleXmark","aliases":[]},{"icon":"faSchoolFlag","aliases":[]},{"icon":"faSchoolLock","aliases":[]},{"icon":"faScissors","aliases":["faCut"]},{"icon":"faScreenUsers","aliases":["faUsersClass"]},{"icon":"faScreencast","aliases":[]},{"icon":"faScreenshot","aliases":["faScreenshot"]},{"icon":"faScrewdriver","aliases":[]},{"icon":"faScrewdriverWrench","aliases":["faTools"]},{"icon":"faScribble","aliases":[]},{"icon":"faScroll","aliases":[]},{"icon":"faScrollOld","aliases":[]},{"icon":"faScrollRibbon","aliases":["faScrollRibbon"]},{"icon":"faScrollTorah","aliases":["faTorah"]},{"icon":"faScrubber","aliases":[]},{"icon":"faScythe","aliases":[]},{"icon":"faSdCard","aliases":[]},{"icon":"faSdCards","aliases":[]},{"icon":"faSeal","aliases":[]},{"icon":"faSealExclamation","aliases":[]},{"icon":"faSealQuestion","aliases":[]},{"icon":"faSearch","aliases":["faSearch"]},{"icon":"faSearchDollar","aliases":["faSearchDollar"]},{"icon":"faSearchLocation","aliases":["faSearchLocation"]},{"icon":"faSearchMinus","aliases":["faSearchMinus"]},{"icon":"faSearchPlus","aliases":["faSearchPlus"]},{"icon":"faSeatAirline","aliases":[]},{"icon":"faSection","aliases":[]},{"icon":"faSeedling","aliases":["faSprout"]},{"icon":"faSemicolon","aliases":[]},{"icon":"faSend","aliases":["faPaperPlaneAlt","faSend"]},{"icon":"faSendBack","aliases":[]},{"icon":"faSendBackward","aliases":[]},{"icon":"faSensor","aliases":[]},{"icon":"faSensorAlert","aliases":["faSensorAlert"]},{"icon":"faSensorCloud","aliases":["faSensorSmoke"]},{"icon":"faSensorFire","aliases":[]},{"icon":"faSensorOn","aliases":[]},{"icon":"faSensorSmoke","aliases":["faSensorSmoke"]},{"icon":"faSensorTriangleExclamation","aliases":["faSensorAlert"]},{"icon":"faServer","aliases":[]},{"icon":"faShapes","aliases":["faTriangleCircleSquare"]},{"icon":"faShare","aliases":["faMailForward"]},{"icon":"faShareAll","aliases":[]},{"icon":"faShareAlt","aliases":["faShareAlt"]},{"icon":"faShareAltSquare","aliases":["faShareAltSquare"]},{"icon":"faShareFromSquare","aliases":["faShareSquare"]},{"icon":"faShareNodes","aliases":["faShareAlt"]},{"icon":"faShareSquare","aliases":["faShareSquare"]},{"icon":"faSheep","aliases":[]},{"icon":"faSheetPlastic","aliases":[]},{"icon":"faShekel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShekelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShelves","aliases":["faInventory"]},{"icon":"faShelvesEmpty","aliases":[]},{"icon":"faSheqel","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faSheqelSign","aliases":["faIls","faShekel","faSheqel","faSheqelSign"]},{"icon":"faShield","aliases":["faShieldBlank"]},{"icon":"faShieldAlt","aliases":["faShieldAlt"]},{"icon":"faShieldBlank","aliases":["faShieldBlank"]},{"icon":"faShieldCat","aliases":[]},{"icon":"faShieldCheck","aliases":[]},{"icon":"faShieldCross","aliases":[]},{"icon":"faShieldDog","aliases":[]},{"icon":"faShieldExclamation","aliases":[]},{"icon":"faShieldHalved","aliases":["faShieldAlt"]},{"icon":"faShieldHeart","aliases":[]},{"icon":"faShieldKeyhole","aliases":[]},{"icon":"faShieldMinus","aliases":[]},{"icon":"faShieldPlus","aliases":[]},{"icon":"faShieldQuartered","aliases":[]},{"icon":"faShieldSlash","aliases":[]},{"icon":"faShieldTimes","aliases":["faShieldTimes"]},{"icon":"faShieldVirus","aliases":[]},{"icon":"faShieldXmark","aliases":["faShieldTimes"]},{"icon":"faShip","aliases":[]},{"icon":"faShippingFast","aliases":["faShippingFast"]},{"icon":"faShippingTimed","aliases":["faShippingTimed"]},{"icon":"faShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faShirtLongSleeve","aliases":[]},{"icon":"faShirtRunning","aliases":[]},{"icon":"faShirtTankTop","aliases":[]},{"icon":"faShishKebab","aliases":[]},{"icon":"faShoePrints","aliases":[]},{"icon":"faShop","aliases":["faStoreAlt"]},{"icon":"faShopLock","aliases":[]},{"icon":"faShopSlash","aliases":["faStoreAltSlash"]},{"icon":"faShoppingBag","aliases":["faShoppingBag"]},{"icon":"faShoppingBasket","aliases":["faShoppingBasket"]},{"icon":"faShoppingBasketAlt","aliases":["faShoppingBasketAlt"]},{"icon":"faShoppingCart","aliases":["faShoppingCart"]},{"icon":"faShortcake","aliases":["faShortcake"]},{"icon":"faShovel","aliases":[]},{"icon":"faShovelSnow","aliases":[]},{"icon":"faShower","aliases":[]},{"icon":"faShowerAlt","aliases":["faShowerAlt"]},{"icon":"faShowerDown","aliases":["faShowerAlt"]},{"icon":"faShredder","aliases":[]},{"icon":"faShrimp","aliases":[]},{"icon":"faShuffle","aliases":["faRandom"]},{"icon":"faShutters","aliases":[]},{"icon":"faShuttleSpace","aliases":["faSpaceShuttle"]},{"icon":"faShuttleVan","aliases":["faShuttleVan"]},{"icon":"faShuttlecock","aliases":[]},{"icon":"faSickle","aliases":[]},{"icon":"faSidebar","aliases":[]},{"icon":"faSidebarFlip","aliases":[]},{"icon":"faSigma","aliases":[]},{"icon":"faSign","aliases":["faSign"]},{"icon":"faSignHanging","aliases":["faSign"]},{"icon":"faSignIn","aliases":["faSignIn"]},{"icon":"faSignInAlt","aliases":["faSignInAlt"]},{"icon":"faSignLanguage","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignOut","aliases":["faSignOut"]},{"icon":"faSignOutAlt","aliases":["faSignOutAlt"]},{"icon":"faSignPost","aliases":[]},{"icon":"faSignPosts","aliases":[]},{"icon":"faSignPostsWrench","aliases":[]},{"icon":"faSignal","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignal1","aliases":["faSignal1"]},{"icon":"faSignal2","aliases":["faSignal2"]},{"icon":"faSignal3","aliases":["faSignal3"]},{"icon":"faSignal4","aliases":["faSignal4"]},{"icon":"faSignal5","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalAlt","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalAlt1","aliases":["faSignalAlt1"]},{"icon":"faSignalAlt2","aliases":["faSignalAlt2"]},{"icon":"faSignalAlt3","aliases":["faSignalAlt3"]},{"icon":"faSignalAlt4","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalAltSlash","aliases":["faSignalAltSlash"]},{"icon":"faSignalBars","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalBarsFair","aliases":["faSignalAlt2"]},{"icon":"faSignalBarsGood","aliases":["faSignalAlt3"]},{"icon":"faSignalBarsSlash","aliases":["faSignalAltSlash"]},{"icon":"faSignalBarsStrong","aliases":["faSignalAlt","faSignalAlt4","faSignalBarsStrong"]},{"icon":"faSignalBarsWeak","aliases":["faSignalAlt1"]},{"icon":"faSignalFair","aliases":["faSignal2"]},{"icon":"faSignalGood","aliases":["faSignal3"]},{"icon":"faSignalPerfect","aliases":["faSignal5","faSignalPerfect"]},{"icon":"faSignalSlash","aliases":[]},{"icon":"faSignalStream","aliases":[]},{"icon":"faSignalStreamSlash","aliases":[]},{"icon":"faSignalStrong","aliases":["faSignal4"]},{"icon":"faSignalWeak","aliases":["faSignal1"]},{"icon":"faSignature","aliases":[]},{"icon":"faSignatureLock","aliases":[]},{"icon":"faSignatureSlash","aliases":[]},{"icon":"faSigning","aliases":["faSignLanguage","faSigning"]},{"icon":"faSignsPost","aliases":["faMapSigns"]},{"icon":"faSimCard","aliases":[]},{"icon":"faSimCards","aliases":[]},{"icon":"faSink","aliases":[]},{"icon":"faSiren","aliases":[]},{"icon":"faSirenOn","aliases":[]},{"icon":"faSitemap","aliases":[]},{"icon":"faSkating","aliases":["faSkating"]},{"icon":"faSkeleton","aliases":[]},{"icon":"faSkeletonRibs","aliases":[]},{"icon":"faSkiBoot","aliases":[]},{"icon":"faSkiBootSki","aliases":[]},{"icon":"faSkiJump","aliases":["faSkiJump"]},{"icon":"faSkiLift","aliases":["faSkiLift"]},{"icon":"faSkiing","aliases":["faSkiing"]},{"icon":"faSkiingNordic","aliases":["faSkiingNordic"]},{"icon":"faSkull","aliases":[]},{"icon":"faSkullCow","aliases":[]},{"icon":"faSkullCrossbones","aliases":[]},{"icon":"faSlash","aliases":[]},{"icon":"faSlashBack","aliases":[]},{"icon":"faSlashForward","aliases":[]},{"icon":"faSledding","aliases":["faSledding"]},{"icon":"faSleigh","aliases":[]},{"icon":"faSlider","aliases":[]},{"icon":"faSliders","aliases":["faSlidersH"]},{"icon":"faSlidersH","aliases":["faSlidersH"]},{"icon":"faSlidersHSquare","aliases":["faSlidersHSquare"]},{"icon":"faSlidersSimple","aliases":[]},{"icon":"faSlidersUp","aliases":["faSlidersV"]},{"icon":"faSlidersV","aliases":["faSlidersV"]},{"icon":"faSlidersVSquare","aliases":["faSlidersVSquare"]},{"icon":"faSlotMachine","aliases":[]},{"icon":"faSmile","aliases":["faSmile"]},{"icon":"faSmileBeam","aliases":["faSmileBeam"]},{"icon":"faSmilePlus","aliases":["faSmilePlus"]},{"icon":"faSmileWink","aliases":["faSmileWink"]},{"icon":"faSmog","aliases":[]},{"icon":"faSmoke","aliases":[]},{"icon":"faSmoking","aliases":[]},{"icon":"faSmokingBan","aliases":["faSmokingBan"]},{"icon":"faSms","aliases":["faSms"]},{"icon":"faSnake","aliases":[]},{"icon":"faSnooze","aliases":["faZzz"]},{"icon":"faSnowBlowing","aliases":[]},{"icon":"faSnowboarding","aliases":["faSnowboarding"]},{"icon":"faSnowflake","aliases":[]},{"icon":"faSnowflakeDroplets","aliases":[]},{"icon":"faSnowflakes","aliases":[]},{"icon":"faSnowman","aliases":[]},{"icon":"faSnowmanHead","aliases":["faFrostyHead"]},{"icon":"faSnowmobile","aliases":["faSnowmobile"]},{"icon":"faSnowplow","aliases":[]},{"icon":"faSoap","aliases":[]},{"icon":"faSoccerBall","aliases":["faFutbolBall","faSoccerBall"]},{"icon":"faSocks","aliases":[]},{"icon":"faSoftServe","aliases":["faCreemee"]},{"icon":"faSolarPanel","aliases":[]},{"icon":"faSolarSystem","aliases":[]},{"icon":"faSort","aliases":["faUnsorted"]},{"icon":"faSortAlphaAsc","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDesc","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaDown","aliases":["faSortAlphaAsc","faSortAlphaDown"]},{"icon":"faSortAlphaDownAlt","aliases":["faSortAlphaDesc","faSortAlphaDownAlt"]},{"icon":"faSortAlphaUp","aliases":["faSortAlphaUp"]},{"icon":"faSortAlphaUpAlt","aliases":["faSortAlphaUpAlt"]},{"icon":"faSortAlt","aliases":["faSortAlt"]},{"icon":"faSortAmountAsc","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDesc","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountDown","aliases":["faSortAmountAsc","faSortAmountDown"]},{"icon":"faSortAmountDownAlt","aliases":["faSortAmountDesc","faSortAmountDownAlt"]},{"icon":"faSortAmountUp","aliases":["faSortAmountUp"]},{"icon":"faSortAmountUpAlt","aliases":["faSortAmountUpAlt"]},{"icon":"faSortAsc","aliases":["faSortAsc"]},{"icon":"faSortCircle","aliases":["faSortCircle"]},{"icon":"faSortCircleDown","aliases":["faSortCircleDown"]},{"icon":"faSortCircleUp","aliases":["faSortCircleUp"]},{"icon":"faSortDesc","aliases":["faSortDesc"]},{"icon":"faSortDown","aliases":["faSortDesc"]},{"icon":"faSortNumericAsc","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDesc","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericDown","aliases":["faSortNumericAsc","faSortNumericDown"]},{"icon":"faSortNumericDownAlt","aliases":["faSortNumericDesc","faSortNumericDownAlt"]},{"icon":"faSortNumericUp","aliases":["faSortNumericUp"]},{"icon":"faSortNumericUpAlt","aliases":["faSortNumericUpAlt"]},{"icon":"faSortShapesDown","aliases":["faSortShapesDown"]},{"icon":"faSortShapesDownAlt","aliases":["faSortShapesDownAlt"]},{"icon":"faSortShapesUp","aliases":["faSortShapesUp"]},{"icon":"faSortShapesUpAlt","aliases":["faSortShapesUpAlt"]},{"icon":"faSortSizeDown","aliases":["faSortSizeDown"]},{"icon":"faSortSizeDownAlt","aliases":["faSortSizeDownAlt"]},{"icon":"faSortSizeUp","aliases":["faSortSizeUp"]},{"icon":"faSortSizeUpAlt","aliases":["faSortSizeUpAlt"]},{"icon":"faSortUp","aliases":["faSortAsc"]},{"icon":"faSortUpDown","aliases":["faSortUpDown"]},{"icon":"faSoup","aliases":["faSoup"]},{"icon":"faSpa","aliases":[]},{"icon":"faSpaceShuttle","aliases":["faSpaceShuttle"]},{"icon":"faSpaceStationMoon","aliases":[]},{"icon":"faSpaceStationMoonAlt","aliases":["faSpaceStationMoonAlt"]},{"icon":"faSpaceStationMoonConstruction","aliases":["faSpaceStationMoonAlt"]},{"icon":"faSpade","aliases":[]},{"icon":"faSpaghettiMonsterFlying","aliases":["faPastafarianism"]},{"icon":"faSparkle","aliases":[]},{"icon":"faSparkles","aliases":[]},{"icon":"faSpeaker","aliases":[]},{"icon":"faSpeakers","aliases":[]},{"icon":"faSpellCheck","aliases":[]},{"icon":"faSpider","aliases":[]},{"icon":"faSpiderBlackWidow","aliases":[]},{"icon":"faSpiderWeb","aliases":[]},{"icon":"faSpinner","aliases":[]},{"icon":"faSpinnerScale","aliases":[]},{"icon":"faSpinnerThird","aliases":[]},{"icon":"faSplit","aliases":[]},{"icon":"faSplotch","aliases":[]},{"icon":"faSpoon","aliases":["faUtensilSpoon"]},{"icon":"faSportsball","aliases":[]},{"icon":"faSprayCan","aliases":[]},{"icon":"faSprayCanSparkles","aliases":["faAirFreshener"]},{"icon":"faSprinkler","aliases":[]},{"icon":"faSprinklerCeiling","aliases":[]},{"icon":"faSprout","aliases":["faSprout"]},{"icon":"faSquare","aliases":[]},{"icon":"faSquare0","aliases":[]},{"icon":"faSquare1","aliases":[]},{"icon":"faSquare2","aliases":[]},{"icon":"faSquare3","aliases":[]},{"icon":"faSquare4","aliases":[]},{"icon":"faSquare5","aliases":[]},{"icon":"faSquare6","aliases":[]},{"icon":"faSquare7","aliases":[]},{"icon":"faSquare8","aliases":[]},{"icon":"faSquare9","aliases":[]},{"icon":"faSquareA","aliases":[]},{"icon":"faSquareALock","aliases":[]},{"icon":"faSquareAmpersand","aliases":[]},{"icon":"faSquareArrowDown","aliases":["faArrowSquareDown"]},{"icon":"faSquareArrowDownLeft","aliases":[]},{"icon":"faSquareArrowDownRight","aliases":[]},{"icon":"faSquareArrowLeft","aliases":["faArrowSquareLeft"]},{"icon":"faSquareArrowRight","aliases":["faArrowSquareRight"]},{"icon":"faSquareArrowUp","aliases":["faArrowSquareUp"]},{"icon":"faSquareArrowUpLeft","aliases":[]},{"icon":"faSquareArrowUpRight","aliases":["faExternalLinkSquare"]},{"icon":"faSquareB","aliases":[]},{"icon":"faSquareBolt","aliases":[]},{"icon":"faSquareC","aliases":[]},{"icon":"faSquareCaretDown","aliases":["faCaretSquareDown"]},{"icon":"faSquareCaretLeft","aliases":["faCaretSquareLeft"]},{"icon":"faSquareCaretRight","aliases":["faCaretSquareRight"]},{"icon":"faSquareCaretUp","aliases":["faCaretSquareUp"]},{"icon":"faSquareCheck","aliases":["faCheckSquare"]},{"icon":"faSquareChevronDown","aliases":["faChevronSquareDown"]},{"icon":"faSquareChevronLeft","aliases":["faChevronSquareLeft"]},{"icon":"faSquareChevronRight","aliases":["faChevronSquareRight"]},{"icon":"faSquareChevronUp","aliases":["faChevronSquareUp"]},{"icon":"faSquareCode","aliases":[]},{"icon":"faSquareD","aliases":[]},{"icon":"faSquareDashed","aliases":[]},{"icon":"faSquareDashedCirclePlus","aliases":[]},{"icon":"faSquareDivide","aliases":[]},{"icon":"faSquareDollar","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faSquareDown","aliases":["faArrowAltSquareDown"]},{"icon":"faSquareDownLeft","aliases":[]},{"icon":"faSquareDownRight","aliases":[]},{"icon":"faSquareE","aliases":[]},{"icon":"faSquareEllipsis","aliases":[]},{"icon":"faSquareEllipsisVertical","aliases":[]},{"icon":"faSquareEnvelope","aliases":["faEnvelopeSquare"]},{"icon":"faSquareExclamation","aliases":["faExclamationSquare"]},{"icon":"faSquareF","aliases":[]},{"icon":"faSquareFragile","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faSquareFull","aliases":[]},{"icon":"faSquareG","aliases":[]},{"icon":"faSquareH","aliases":["faHSquare"]},{"icon":"faSquareHeart","aliases":["faHeartSquare"]},{"icon":"faSquareI","aliases":[]},{"icon":"faSquareInfo","aliases":["faInfoSquare"]},{"icon":"faSquareJ","aliases":[]},{"icon":"faSquareK","aliases":[]},{"icon":"faSquareKanban","aliases":[]},{"icon":"faSquareL","aliases":[]},{"icon":"faSquareLeft","aliases":["faArrowAltSquareLeft"]},{"icon":"faSquareList","aliases":[]},{"icon":"faSquareM","aliases":[]},{"icon":"faSquareMinus","aliases":["faMinusSquare"]},{"icon":"faSquareN","aliases":[]},{"icon":"faSquareNfi","aliases":[]},{"icon":"faSquareO","aliases":[]},{"icon":"faSquareP","aliases":[]},{"icon":"faSquareParking","aliases":["faParking"]},{"icon":"faSquareParkingSlash","aliases":["faParkingSlash"]},{"icon":"faSquarePen","aliases":["faPenSquare","faPencilSquare"]},{"icon":"faSquarePersonConfined","aliases":[]},{"icon":"faSquarePhone","aliases":["faPhoneSquare"]},{"icon":"faSquarePhoneFlip","aliases":["faPhoneSquareAlt"]},{"icon":"faSquarePhoneHangup","aliases":["faPhoneSquareDown"]},{"icon":"faSquarePlus","aliases":["faPlusSquare"]},{"icon":"faSquarePollHorizontal","aliases":["faPollH"]},{"icon":"faSquarePollVertical","aliases":["faPoll"]},{"icon":"faSquareQ","aliases":[]},{"icon":"faSquareQuarters","aliases":[]},{"icon":"faSquareQuestion","aliases":["faQuestionSquare"]},{"icon":"faSquareQuote","aliases":[]},{"icon":"faSquareR","aliases":[]},{"icon":"faSquareRight","aliases":["faArrowAltSquareRight"]},{"icon":"faSquareRing","aliases":[]},{"icon":"faSquareRoot","aliases":[]},{"icon":"faSquareRootAlt","aliases":["faSquareRootAlt"]},{"icon":"faSquareRootVariable","aliases":["faSquareRootAlt"]},{"icon":"faSquareRss","aliases":["faRssSquare"]},{"icon":"faSquareS","aliases":[]},{"icon":"faSquareShareNodes","aliases":["faShareAltSquare"]},{"icon":"faSquareSliders","aliases":["faSlidersHSquare"]},{"icon":"faSquareSlidersVertical","aliases":["faSlidersVSquare"]},{"icon":"faSquareSmall","aliases":[]},{"icon":"faSquareStar","aliases":[]},{"icon":"faSquareT","aliases":[]},{"icon":"faSquareTerminal","aliases":[]},{"icon":"faSquareThisWayUp","aliases":["faBoxUp"]},{"icon":"faSquareU","aliases":[]},{"icon":"faSquareUp","aliases":["faArrowAltSquareUp"]},{"icon":"faSquareUpLeft","aliases":[]},{"icon":"faSquareUpRight","aliases":["faExternalLinkSquareAlt"]},{"icon":"faSquareUser","aliases":[]},{"icon":"faSquareV","aliases":[]},{"icon":"faSquareVirus","aliases":[]},{"icon":"faSquareW","aliases":[]},{"icon":"faSquareWineGlassCrack","aliases":["faBoxFragile","faSquareWineGlassCrack"]},{"icon":"faSquareX","aliases":[]},{"icon":"faSquareXmark","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faSquareY","aliases":[]},{"icon":"faSquareZ","aliases":[]},{"icon":"faSquid","aliases":[]},{"icon":"faSquirrel","aliases":[]},{"icon":"faStaff","aliases":[]},{"icon":"faStaffAesculapius","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStaffSnake","aliases":["faRodAsclepius","faRodSnake","faStaffAesculapius"]},{"icon":"faStairs","aliases":[]},{"icon":"faStamp","aliases":[]},{"icon":"faStandardDefinition","aliases":["faRectangleSd"]},{"icon":"faStapler","aliases":[]},{"icon":"faStar","aliases":[]},{"icon":"faStarAndCrescent","aliases":[]},{"icon":"faStarChristmas","aliases":[]},{"icon":"faStarCircle","aliases":["faStarCircle"]},{"icon":"faStarExclamation","aliases":[]},{"icon":"faStarHalf","aliases":[]},{"icon":"faStarHalfAlt","aliases":["faStarHalfAlt"]},{"icon":"faStarHalfStroke","aliases":["faStarHalfAlt"]},{"icon":"faStarOfDavid","aliases":[]},{"icon":"faStarOfLife","aliases":[]},{"icon":"faStarSharp","aliases":[]},{"icon":"faStarSharpHalf","aliases":[]},{"icon":"faStarSharpHalfAlt","aliases":["faStarSharpHalfAlt"]},{"icon":"faStarSharpHalfStroke","aliases":["faStarSharpHalfAlt"]},{"icon":"faStarShooting","aliases":[]},{"icon":"faStarfighter","aliases":[]},{"icon":"faStarfighterAlt","aliases":["faStarfighterAlt"]},{"icon":"faStarfighterAltAdvanced","aliases":["faStarfighterAltAdvanced"]},{"icon":"faStarfighterTwinIonEngine","aliases":["faStarfighterAlt"]},{"icon":"faStarfighterTwinIonEngineAdvanced","aliases":["faStarfighterAltAdvanced"]},{"icon":"faStars","aliases":[]},{"icon":"faStarship","aliases":[]},{"icon":"faStarshipFreighter","aliases":[]},{"icon":"faSteak","aliases":[]},{"icon":"faSteeringWheel","aliases":[]},{"icon":"faStepBackward","aliases":["faStepBackward"]},{"icon":"faStepForward","aliases":["faStepForward"]},{"icon":"faSterlingSign","aliases":["faGbp","faPoundSign"]},{"icon":"faStethoscope","aliases":[]},{"icon":"faStickyNote","aliases":["faStickyNote"]},{"icon":"faStocking","aliases":[]},{"icon":"faStomach","aliases":[]},{"icon":"faStop","aliases":[]},{"icon":"faStopCircle","aliases":["faStopCircle"]},{"icon":"faStopwatch","aliases":[]},{"icon":"faStopwatch20","aliases":[]},{"icon":"faStore","aliases":[]},{"icon":"faStoreAlt","aliases":["faStoreAlt"]},{"icon":"faStoreAltSlash","aliases":["faStoreAltSlash"]},{"icon":"faStoreLock","aliases":[]},{"icon":"faStoreSlash","aliases":[]},{"icon":"faStrawberry","aliases":[]},{"icon":"faStream","aliases":["faReorder","faStream"]},{"icon":"faStreetView","aliases":[]},{"icon":"faStretcher","aliases":[]},{"icon":"faStrikethrough","aliases":[]},{"icon":"faStroopwafel","aliases":[]},{"icon":"faSubscript","aliases":[]},{"icon":"faSubtitles","aliases":[]},{"icon":"faSubtitlesSlash","aliases":[]},{"icon":"faSubtract","aliases":["faSubtract"]},{"icon":"faSubway","aliases":["faSubway"]},{"icon":"faSubwayTunnel","aliases":["faSubwayTunnel"]},{"icon":"faSuitcase","aliases":[]},{"icon":"faSuitcaseMedical","aliases":["faMedkit"]},{"icon":"faSuitcaseRolling","aliases":[]},{"icon":"faSun","aliases":[]},{"icon":"faSunAlt","aliases":["faSunAlt"]},{"icon":"faSunBright","aliases":["faSunAlt"]},{"icon":"faSunCloud","aliases":[]},{"icon":"faSunDust","aliases":[]},{"icon":"faSunHaze","aliases":[]},{"icon":"faSunPlantWilt","aliases":[]},{"icon":"faSunglasses","aliases":[]},{"icon":"faSunrise","aliases":[]},{"icon":"faSunset","aliases":[]},{"icon":"faSuperscript","aliases":[]},{"icon":"faSurprise","aliases":["faSurprise"]},{"icon":"faSushi","aliases":["faNigiri"]},{"icon":"faSushiRoll","aliases":["faMakiRoll","faMakizushi"]},{"icon":"faSwap","aliases":[]},{"icon":"faSwapArrows","aliases":[]},{"icon":"faSwatchbook","aliases":[]},{"icon":"faSwimmer","aliases":["faSwimmer"]},{"icon":"faSwimmingPool","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faSword","aliases":[]},{"icon":"faSwordLaser","aliases":[]},{"icon":"faSwordLaserAlt","aliases":[]},{"icon":"faSwords","aliases":[]},{"icon":"faSwordsLaser","aliases":[]},{"icon":"faSymbols","aliases":["faIconsAlt"]},{"icon":"faSynagogue","aliases":[]},{"icon":"faSync","aliases":["faRefresh","faSync"]},{"icon":"faSyncAlt","aliases":["faSyncAlt"]},{"icon":"faSyringe","aliases":[]},{"icon":"faT","aliases":[]},{"icon":"faTRex","aliases":[]},{"icon":"faTShirt","aliases":["faTShirt","faTshirt"]},{"icon":"faTable","aliases":[]},{"icon":"faTableCells","aliases":["faTh"]},{"icon":"faTableCellsColumnLock","aliases":[]},{"icon":"faTableCellsColumnUnlock","aliases":[]},{"icon":"faTableCellsLarge","aliases":["faThLarge"]},{"icon":"faTableCellsLock","aliases":[]},{"icon":"faTableCellsRowLock","aliases":[]},{"icon":"faTableCellsRowUnlock","aliases":[]},{"icon":"faTableCellsUnlock","aliases":[]},{"icon":"faTableColumns","aliases":["faColumns"]},{"icon":"faTableLayout","aliases":[]},{"icon":"faTableList","aliases":["faThList"]},{"icon":"faTablePicnic","aliases":[]},{"icon":"faTablePivot","aliases":[]},{"icon":"faTableRows","aliases":["faRows"]},{"icon":"faTableTennis","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTennisPaddleBall","aliases":["faPingPongPaddleBall","faTableTennis"]},{"icon":"faTableTree","aliases":[]},{"icon":"faTablet","aliases":["faTabletAndroid"]},{"icon":"faTabletAlt","aliases":["faTabletAlt"]},{"icon":"faTabletAndroid","aliases":["faTabletAndroid"]},{"icon":"faTabletAndroidAlt","aliases":["faTabletAndroidAlt"]},{"icon":"faTabletButton","aliases":[]},{"icon":"faTabletRugged","aliases":[]},{"icon":"faTabletScreen","aliases":["faTabletAndroidAlt"]},{"icon":"faTabletScreenButton","aliases":["faTabletAlt"]},{"icon":"faTablets","aliases":[]},{"icon":"faTachographDigital","aliases":["faDigitalTachograph"]},{"icon":"faTachometer","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerAlt","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltAverage","aliases":["faDashboard","faGaugeMed","faTachometerAltAverage"]},{"icon":"faTachometerAltFast","aliases":["faTachometerAlt","faTachometerAltFast"]},{"icon":"faTachometerAltFastest","aliases":["faTachometerAltFastest"]},{"icon":"faTachometerAltSlow","aliases":["faTachometerAltSlow"]},{"icon":"faTachometerAltSlowest","aliases":["faTachometerAltSlowest"]},{"icon":"faTachometerAverage","aliases":["faGaugeSimpleMed","faTachometerAverage"]},{"icon":"faTachometerFast","aliases":["faTachometer","faTachometerFast"]},{"icon":"faTachometerFastest","aliases":["faTachometerFastest"]},{"icon":"faTachometerSlow","aliases":["faTachometerSlow"]},{"icon":"faTachometerSlowest","aliases":["faTachometerSlowest"]},{"icon":"faTaco","aliases":[]},{"icon":"faTag","aliases":[]},{"icon":"faTags","aliases":[]},{"icon":"faTally","aliases":["faTally5"]},{"icon":"faTally1","aliases":[]},{"icon":"faTally2","aliases":[]},{"icon":"faTally3","aliases":[]},{"icon":"faTally4","aliases":[]},{"icon":"faTally5","aliases":["faTally5"]},{"icon":"faTamale","aliases":[]},{"icon":"faTanakh","aliases":["faTanakh"]},{"icon":"faTankWater","aliases":[]},{"icon":"faTape","aliases":[]},{"icon":"faTarp","aliases":[]},{"icon":"faTarpDroplet","aliases":[]},{"icon":"faTasks","aliases":["faTasks"]},{"icon":"faTasksAlt","aliases":["faTasksAlt"]},{"icon":"faTaxi","aliases":["faCab"]},{"icon":"faTaxiBus","aliases":[]},{"icon":"faTeddyBear","aliases":[]},{"icon":"faTeeth","aliases":[]},{"icon":"faTeethOpen","aliases":[]},{"icon":"faTelescope","aliases":[]},{"icon":"faTeletype","aliases":["faTeletype"]},{"icon":"faTeletypeAnswer","aliases":["faTeletypeAnswer"]},{"icon":"faTelevision","aliases":["faTelevision","faTvAlt"]},{"icon":"faTemperature0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperature1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperature2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperature3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperature4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureArrowDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureArrowUp","aliases":["faTemperatureUp"]},{"icon":"faTemperatureDown","aliases":["faTemperatureDown"]},{"icon":"faTemperatureEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faTemperatureFrigid","aliases":["faTemperatureFrigid"]},{"icon":"faTemperatureFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faTemperatureHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faTemperatureHigh","aliases":[]},{"icon":"faTemperatureHot","aliases":["faTemperatureHot"]},{"icon":"faTemperatureList","aliases":[]},{"icon":"faTemperatureLow","aliases":[]},{"icon":"faTemperatureQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faTemperatureSnow","aliases":["faTemperatureFrigid"]},{"icon":"faTemperatureSun","aliases":["faTemperatureHot"]},{"icon":"faTemperatureThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTemperatureUp","aliases":["faTemperatureUp"]},{"icon":"faTenge","aliases":["faTenge"]},{"icon":"faTengeSign","aliases":["faTenge"]},{"icon":"faTennisBall","aliases":[]},{"icon":"faTent","aliases":[]},{"icon":"faTentArrowDownToLine","aliases":[]},{"icon":"faTentArrowLeftRight","aliases":[]},{"icon":"faTentArrowTurnLeft","aliases":[]},{"icon":"faTentArrowsDown","aliases":[]},{"icon":"faTentDoublePeak","aliases":[]},{"icon":"faTents","aliases":[]},{"icon":"faTerminal","aliases":[]},{"icon":"faText","aliases":[]},{"icon":"faTextHeight","aliases":[]},{"icon":"faTextSize","aliases":[]},{"icon":"faTextSlash","aliases":["faRemoveFormat"]},{"icon":"faTextWidth","aliases":[]},{"icon":"faTh","aliases":["faTh"]},{"icon":"faThLarge","aliases":["faThLarge"]},{"icon":"faThList","aliases":["faThList"]},{"icon":"faTheaterMasks","aliases":["faTheaterMasks"]},{"icon":"faThermometer","aliases":[]},{"icon":"faThermometer0","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometer1","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometer2","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometer3","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faThermometer4","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerEmpty","aliases":["faTemperature0","faThermometer0","faThermometerEmpty"]},{"icon":"faThermometerFull","aliases":["faTemperature4","faThermometer4","faThermometerFull"]},{"icon":"faThermometerHalf","aliases":["faTemperature2","faThermometer2","faThermometerHalf"]},{"icon":"faThermometerQuarter","aliases":["faTemperature1","faThermometer1","faThermometerQuarter"]},{"icon":"faThermometerThreeQuarters","aliases":["faTemperature3","faThermometer3","faThermometerThreeQuarters"]},{"icon":"faTheta","aliases":[]},{"icon":"faThoughtBubble","aliases":[]},{"icon":"faThumbsDown","aliases":[]},{"icon":"faThumbsUp","aliases":[]},{"icon":"faThumbtack","aliases":["faThumbTack"]},{"icon":"faThumbtackSlash","aliases":["faThumbTackSlash"]},{"icon":"faThunderstorm","aliases":["faThunderstorm"]},{"icon":"faThunderstormMoon","aliases":["faThunderstormMoon"]},{"icon":"faThunderstormSun","aliases":["faThunderstormSun"]},{"icon":"faTick","aliases":[]},{"icon":"faTicket","aliases":[]},{"icon":"faTicketAirline","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketAlt","aliases":["faTicketAlt"]},{"icon":"faTicketPerforated","aliases":[]},{"icon":"faTicketPerforatedPlane","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketPlane","aliases":["faTicketPerforatedPlane","faTicketPlane"]},{"icon":"faTicketSimple","aliases":["faTicketAlt"]},{"icon":"faTickets","aliases":[]},{"icon":"faTicketsAirline","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsPerforated","aliases":[]},{"icon":"faTicketsPerforatedPlane","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsPlane","aliases":["faTicketsPerforatedPlane","faTicketsPlane"]},{"icon":"faTicketsSimple","aliases":[]},{"icon":"faTilde","aliases":[]},{"icon":"faTimeline","aliases":[]},{"icon":"faTimelineArrow","aliases":[]},{"icon":"faTimer","aliases":[]},{"icon":"faTimes","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faTimesCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faTimesHexagon","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faTimesOctagon","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faTimesRectangle","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faTimesSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faTimesToSlot","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faTint","aliases":["faTint"]},{"icon":"faTintSlash","aliases":["faTintSlash"]},{"icon":"faTire","aliases":[]},{"icon":"faTireFlat","aliases":[]},{"icon":"faTirePressureWarning","aliases":[]},{"icon":"faTireRugged","aliases":[]},{"icon":"faTired","aliases":["faTired"]},{"icon":"faToggleLargeOff","aliases":[]},{"icon":"faToggleLargeOn","aliases":[]},{"icon":"faToggleOff","aliases":[]},{"icon":"faToggleOn","aliases":[]},{"icon":"faToilet","aliases":[]},{"icon":"faToiletPaper","aliases":[]},{"icon":"faToiletPaperAlt","aliases":["faToiletPaperAlt"]},{"icon":"faToiletPaperBlank","aliases":["faToiletPaperAlt"]},{"icon":"faToiletPaperBlankUnder","aliases":["faToiletPaperReverseAlt"]},{"icon":"faToiletPaperCheck","aliases":[]},{"icon":"faToiletPaperReverse","aliases":["faToiletPaperReverse"]},{"icon":"faToiletPaperReverseAlt","aliases":["faToiletPaperReverseAlt"]},{"icon":"faToiletPaperReverseSlash","aliases":["faToiletPaperReverseSlash"]},{"icon":"faToiletPaperSlash","aliases":[]},{"icon":"faToiletPaperUnder","aliases":["faToiletPaperReverse"]},{"icon":"faToiletPaperUnderSlash","aliases":["faToiletPaperReverseSlash"]},{"icon":"faToiletPaperXmark","aliases":[]},{"icon":"faToiletPortable","aliases":[]},{"icon":"faToiletsPortable","aliases":[]},{"icon":"faTomato","aliases":[]},{"icon":"faTombstone","aliases":[]},{"icon":"faTombstoneAlt","aliases":["faTombstoneAlt"]},{"icon":"faTombstoneBlank","aliases":["faTombstoneAlt"]},{"icon":"faToolbox","aliases":[]},{"icon":"faTools","aliases":["faTools"]},{"icon":"faTooth","aliases":[]},{"icon":"faToothbrush","aliases":[]},{"icon":"faTorah","aliases":["faTorah"]},{"icon":"faToriiGate","aliases":[]},{"icon":"faTornado","aliases":[]},{"icon":"faTowerBroadcast","aliases":["faBroadcastTower"]},{"icon":"faTowerCell","aliases":[]},{"icon":"faTowerControl","aliases":[]},{"icon":"faTowerObservation","aliases":[]},{"icon":"faTractor","aliases":[]},{"icon":"faTrademark","aliases":[]},{"icon":"faTrafficCone","aliases":[]},{"icon":"faTrafficLight","aliases":[]},{"icon":"faTrafficLightGo","aliases":[]},{"icon":"faTrafficLightSlow","aliases":[]},{"icon":"faTrafficLightStop","aliases":[]},{"icon":"faTrailer","aliases":[]},{"icon":"faTrain","aliases":[]},{"icon":"faTrainSubway","aliases":["faSubway"]},{"icon":"faTrainSubwayTunnel","aliases":["faSubwayTunnel"]},{"icon":"faTrainTrack","aliases":[]},{"icon":"faTrainTram","aliases":[]},{"icon":"faTrainTunnel","aliases":[]},{"icon":"faTram","aliases":["faTram"]},{"icon":"faTransformerBolt","aliases":[]},{"icon":"faTransgender","aliases":["faTransgenderAlt"]},{"icon":"faTransgenderAlt","aliases":["faTransgenderAlt"]},{"icon":"faTransporter","aliases":[]},{"icon":"faTransporter1","aliases":[]},{"icon":"faTransporter2","aliases":[]},{"icon":"faTransporter3","aliases":[]},{"icon":"faTransporter4","aliases":[]},{"icon":"faTransporter5","aliases":[]},{"icon":"faTransporter6","aliases":[]},{"icon":"faTransporter7","aliases":[]},{"icon":"faTransporterEmpty","aliases":[]},{"icon":"faTrash","aliases":[]},{"icon":"faTrashAlt","aliases":["faTrashAlt"]},{"icon":"faTrashAltSlash","aliases":["faTrashAltSlash"]},{"icon":"faTrashArrowTurnLeft","aliases":["faTrashArrowTurnLeft"]},{"icon":"faTrashArrowUp","aliases":["faTrashRestore"]},{"icon":"faTrashCan","aliases":["faTrashAlt"]},{"icon":"faTrashCanArrowTurnLeft","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashCanArrowUp","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashCanCheck","aliases":[]},{"icon":"faTrashCanClock","aliases":[]},{"icon":"faTrashCanList","aliases":[]},{"icon":"faTrashCanPlus","aliases":[]},{"icon":"faTrashCanSlash","aliases":["faTrashAltSlash"]},{"icon":"faTrashCanUndo","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashCanXmark","aliases":[]},{"icon":"faTrashCheck","aliases":[]},{"icon":"faTrashCircle","aliases":["faTrashCircle"]},{"icon":"faTrashClock","aliases":[]},{"icon":"faTrashList","aliases":[]},{"icon":"faTrashPlus","aliases":[]},{"icon":"faTrashRestore","aliases":["faTrashRestore"]},{"icon":"faTrashRestoreAlt","aliases":["faTrashRestoreAlt"]},{"icon":"faTrashSlash","aliases":[]},{"icon":"faTrashUndo","aliases":["faTrashArrowTurnLeft"]},{"icon":"faTrashUndoAlt","aliases":["faTrashCanArrowTurnLeft","faTrashUndoAlt"]},{"icon":"faTrashXmark","aliases":[]},{"icon":"faTreasureChest","aliases":[]},{"icon":"faTree","aliases":[]},{"icon":"faTreeAlt","aliases":["faTreeAlt"]},{"icon":"faTreeChristmas","aliases":[]},{"icon":"faTreeCity","aliases":[]},{"icon":"faTreeDeciduous","aliases":["faTreeAlt"]},{"icon":"faTreeDecorated","aliases":[]},{"icon":"faTreeLarge","aliases":[]},{"icon":"faTreePalm","aliases":[]},{"icon":"faTrees","aliases":[]},{"icon":"faTrianBalbot","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faTriangle","aliases":[]},{"icon":"faTriangleCircleSquare","aliases":["faTriangleCircleSquare"]},{"icon":"faTriangleExclamation","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faTriangleInstrument","aliases":["faTriangleMusic"]},{"icon":"faTriangleMusic","aliases":["faTriangleMusic"]},{"icon":"faTrianglePersonDigging","aliases":["faConstruction"]},{"icon":"faTricycle","aliases":[]},{"icon":"faTricycleAdult","aliases":[]},{"icon":"faTrillium","aliases":[]},{"icon":"faTrophy","aliases":[]},{"icon":"faTrophyAlt","aliases":["faTrophyAlt"]},{"icon":"faTrophyStar","aliases":["faTrophyAlt"]},{"icon":"faTrowel","aliases":[]},{"icon":"faTrowelBricks","aliases":[]},{"icon":"faTruck","aliases":[]},{"icon":"faTruckArrowRight","aliases":[]},{"icon":"faTruckBolt","aliases":[]},{"icon":"faTruckClock","aliases":["faShippingTimed"]},{"icon":"faTruckContainer","aliases":[]},{"icon":"faTruckContainerEmpty","aliases":[]},{"icon":"faTruckCouch","aliases":["faTruckCouch"]},{"icon":"faTruckDroplet","aliases":[]},{"icon":"faTruckFast","aliases":["faShippingFast"]},{"icon":"faTruckField","aliases":[]},{"icon":"faTruckFieldUn","aliases":[]},{"icon":"faTruckFire","aliases":[]},{"icon":"faTruckFlatbed","aliases":[]},{"icon":"faTruckFront","aliases":[]},{"icon":"faTruckLadder","aliases":[]},{"icon":"faTruckLoading","aliases":["faTruckLoading"]},{"icon":"faTruckMedical","aliases":["faAmbulance"]},{"icon":"faTruckMonster","aliases":[]},{"icon":"faTruckMoving","aliases":[]},{"icon":"faTruckPickup","aliases":[]},{"icon":"faTruckPlane","aliases":[]},{"icon":"faTruckPlow","aliases":[]},{"icon":"faTruckRamp","aliases":[]},{"icon":"faTruckRampBox","aliases":["faTruckLoading"]},{"icon":"faTruckRampCouch","aliases":["faTruckCouch"]},{"icon":"faTruckTow","aliases":[]},{"icon":"faTruckUtensils","aliases":[]},{"icon":"faTrumpet","aliases":[]},{"icon":"faTry","aliases":["faTry","faTurkishLira"]},{"icon":"faTty","aliases":["faTeletype"]},{"icon":"faTtyAnswer","aliases":["faTeletypeAnswer"]},{"icon":"faTugrikSign","aliases":[]},{"icon":"faTurkey","aliases":[]},{"icon":"faTurkishLira","aliases":["faTry","faTurkishLira"]},{"icon":"faTurkishLiraSign","aliases":["faTry","faTurkishLira"]},{"icon":"faTurnDown","aliases":["faLevelDownAlt"]},{"icon":"faTurnDownLeft","aliases":[]},{"icon":"faTurnDownRight","aliases":[]},{"icon":"faTurnLeft","aliases":[]},{"icon":"faTurnLeftDown","aliases":[]},{"icon":"faTurnLeftUp","aliases":[]},{"icon":"faTurnRight","aliases":[]},{"icon":"faTurnUp","aliases":["faLevelUpAlt"]},{"icon":"faTurntable","aliases":[]},{"icon":"faTurtle","aliases":[]},{"icon":"faTv","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvAlt","aliases":["faTelevision","faTvAlt"]},{"icon":"faTvMusic","aliases":[]},{"icon":"faTvRetro","aliases":[]},{"icon":"faTypewriter","aliases":[]},{"icon":"faU","aliases":[]},{"icon":"faUfo","aliases":[]},{"icon":"faUfoBeam","aliases":[]},{"icon":"faUmbrella","aliases":[]},{"icon":"faUmbrellaAlt","aliases":["faUmbrellaAlt"]},{"icon":"faUmbrellaBeach","aliases":[]},{"icon":"faUmbrellaSimple","aliases":["faUmbrellaAlt"]},{"icon":"faUnderline","aliases":[]},{"icon":"faUndo","aliases":["faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo"]},{"icon":"faUndoAlt","aliases":["faRotateBack","faRotateBackward","faUndoAlt"]},{"icon":"faUnicorn","aliases":[]},{"icon":"faUniformMartialArts","aliases":[]},{"icon":"faUnion","aliases":[]},{"icon":"faUniversalAccess","aliases":[]},{"icon":"faUniversity","aliases":["faBank","faInstitution","faMuseum","faUniversity"]},{"icon":"faUnlink","aliases":["faChainBroken","faChainSlash","faUnlink"]},{"icon":"faUnlock","aliases":[]},{"icon":"faUnlockAlt","aliases":["faUnlockAlt"]},{"icon":"faUnlockKeyhole","aliases":["faUnlockAlt"]},{"icon":"faUnsorted","aliases":["faUnsorted"]},{"icon":"faUp","aliases":["faArrowAltUp"]},{"icon":"faUpDown","aliases":["faArrowsAltV"]},{"icon":"faUpDownLeftRight","aliases":["faArrowsAlt"]},{"icon":"faUpFromBracket","aliases":[]},{"icon":"faUpFromDottedLine","aliases":[]},{"icon":"faUpFromLine","aliases":["faArrowAltFromBottom"]},{"icon":"faUpLeft","aliases":[]},{"icon":"faUpLong","aliases":["faLongArrowAltUp"]},{"icon":"faUpRight","aliases":[]},{"icon":"faUpRightAndDownLeftFromCenter","aliases":["faExpandAlt"]},{"icon":"faUpRightFromSquare","aliases":["faExternalLinkAlt"]},{"icon":"faUpToBracket","aliases":[]},{"icon":"faUpToDottedLine","aliases":[]},{"icon":"faUpToLine","aliases":["faArrowAltToTop"]},{"icon":"faUpload","aliases":[]},{"icon":"faUsbDrive","aliases":[]},{"icon":"faUsd","aliases":["faDollar","faUsd"]},{"icon":"faUsdCircle","aliases":["faDollarCircle","faUsdCircle"]},{"icon":"faUsdSquare","aliases":["faDollarSquare","faUsdSquare"]},{"icon":"faUser","aliases":[]},{"icon":"faUserAlien","aliases":[]},{"icon":"faUserAlt","aliases":["faUserAlt"]},{"icon":"faUserAltSlash","aliases":["faUserAltSlash"]},{"icon":"faUserAstronaut","aliases":[]},{"icon":"faUserBeardBolt","aliases":[]},{"icon":"faUserBountyHunter","aliases":[]},{"icon":"faUserChart","aliases":["faUserChart"]},{"icon":"faUserCheck","aliases":[]},{"icon":"faUserChef","aliases":[]},{"icon":"faUserCircle","aliases":["faUserCircle"]},{"icon":"faUserClock","aliases":[]},{"icon":"faUserCog","aliases":["faUserCog"]},{"icon":"faUserConstruction","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserCowboy","aliases":[]},{"icon":"faUserCrown","aliases":[]},{"icon":"faUserDoctor","aliases":["faUserMd"]},{"icon":"faUserDoctorHair","aliases":[]},{"icon":"faUserDoctorHairLong","aliases":[]},{"icon":"faUserDoctorMessage","aliases":["faUserMdChat"]},{"icon":"faUserEdit","aliases":["faUserEdit"]},{"icon":"faUserFriends","aliases":["faUserFriends"]},{"icon":"faUserGear","aliases":["faUserCog"]},{"icon":"faUserGraduate","aliases":[]},{"icon":"faUserGroup","aliases":["faUserFriends"]},{"icon":"faUserGroupCrown","aliases":["faUsersCrown"]},{"icon":"faUserGroupSimple","aliases":[]},{"icon":"faUserHair","aliases":[]},{"icon":"faUserHairBuns","aliases":[]},{"icon":"faUserHairLong","aliases":[]},{"icon":"faUserHairMullet","aliases":["faBusinessFront","faPartyBack","faTrianBalbot"]},{"icon":"faUserHardHat","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserHeadset","aliases":[]},{"icon":"faUserHelmetSafety","aliases":["faUserConstruction","faUserHardHat"]},{"icon":"faUserHoodie","aliases":[]},{"icon":"faUserInjured","aliases":[]},{"icon":"faUserLarge","aliases":["faUserAlt"]},{"icon":"faUserLargeSlash","aliases":["faUserAltSlash"]},{"icon":"faUserLock","aliases":[]},{"icon":"faUserMagnifyingGlass","aliases":[]},{"icon":"faUserMd","aliases":["faUserMd"]},{"icon":"faUserMdChat","aliases":["faUserMdChat"]},{"icon":"faUserMinus","aliases":[]},{"icon":"faUserMusic","aliases":[]},{"icon":"faUserNinja","aliases":[]},{"icon":"faUserNurse","aliases":[]},{"icon":"faUserNurseHair","aliases":[]},{"icon":"faUserNurseHairLong","aliases":[]},{"icon":"faUserPen","aliases":["faUserEdit"]},{"icon":"faUserPilot","aliases":[]},{"icon":"faUserPilotTie","aliases":[]},{"icon":"faUserPlus","aliases":[]},{"icon":"faUserPolice","aliases":[]},{"icon":"faUserPoliceTie","aliases":[]},{"icon":"faUserRobot","aliases":[]},{"icon":"faUserRobotXmarks","aliases":[]},{"icon":"faUserSecret","aliases":[]},{"icon":"faUserShakespeare","aliases":[]},{"icon":"faUserShield","aliases":[]},{"icon":"faUserSlash","aliases":[]},{"icon":"faUserTag","aliases":[]},{"icon":"faUserTie","aliases":[]},{"icon":"faUserTieHair","aliases":[]},{"icon":"faUserTieHairLong","aliases":[]},{"icon":"faUserTimes","aliases":["faUserTimes"]},{"icon":"faUserUnlock","aliases":[]},{"icon":"faUserVisor","aliases":[]},{"icon":"faUserVneck","aliases":[]},{"icon":"faUserVneckHair","aliases":[]},{"icon":"faUserVneckHairLong","aliases":[]},{"icon":"faUserXmark","aliases":["faUserTimes"]},{"icon":"faUsers","aliases":[]},{"icon":"faUsersBetweenLines","aliases":[]},{"icon":"faUsersClass","aliases":["faUsersClass"]},{"icon":"faUsersCog","aliases":["faUsersCog"]},{"icon":"faUsersCrown","aliases":["faUsersCrown"]},{"icon":"faUsersGear","aliases":["faUsersCog"]},{"icon":"faUsersLine","aliases":[]},{"icon":"faUsersMedical","aliases":[]},{"icon":"faUsersRays","aliases":[]},{"icon":"faUsersRectangle","aliases":[]},{"icon":"faUsersSlash","aliases":[]},{"icon":"faUsersViewfinder","aliases":[]},{"icon":"faUtensilFork","aliases":["faUtensilFork"]},{"icon":"faUtensilKnife","aliases":["faUtensilKnife"]},{"icon":"faUtensilSpoon","aliases":["faUtensilSpoon"]},{"icon":"faUtensils","aliases":["faCutlery"]},{"icon":"faUtensilsAlt","aliases":["faUtensilsAlt"]},{"icon":"faUtensilsSlash","aliases":[]},{"icon":"faUtilityPole","aliases":[]},{"icon":"faUtilityPoleDouble","aliases":[]},{"icon":"faV","aliases":[]},{"icon":"faVacuum","aliases":[]},{"icon":"faVacuumRobot","aliases":[]},{"icon":"faValueAbsolute","aliases":[]},{"icon":"faVanShuttle","aliases":["faShuttleVan"]},{"icon":"faVault","aliases":[]},{"icon":"faVcard","aliases":["faContactCard","faVcard"]},{"icon":"faVectorCircle","aliases":[]},{"icon":"faVectorPolygon","aliases":[]},{"icon":"faVectorSquare","aliases":[]},{"icon":"faVentDamper","aliases":[]},{"icon":"faVenus","aliases":[]},{"icon":"faVenusDouble","aliases":[]},{"icon":"faVenusMars","aliases":[]},{"icon":"faVest","aliases":[]},{"icon":"faVestPatches","aliases":[]},{"icon":"faVhs","aliases":["faVhs"]},{"icon":"faVial","aliases":[]},{"icon":"faVialCircleCheck","aliases":[]},{"icon":"faVialVirus","aliases":[]},{"icon":"faVials","aliases":[]},{"icon":"faVideo","aliases":["faVideoCamera"]},{"icon":"faVideoArrowDownLeft","aliases":[]},{"icon":"faVideoArrowUpRight","aliases":[]},{"icon":"faVideoCamera","aliases":["faVideoCamera"]},{"icon":"faVideoCircle","aliases":["faVideoCircle"]},{"icon":"faVideoHandheld","aliases":["faVideoHandheld"]},{"icon":"faVideoPlus","aliases":[]},{"icon":"faVideoSlash","aliases":[]},{"icon":"faVihara","aliases":[]},{"icon":"faViolin","aliases":[]},{"icon":"faVirus","aliases":[]},{"icon":"faVirusCovid","aliases":[]},{"icon":"faVirusCovidSlash","aliases":[]},{"icon":"faVirusSlash","aliases":[]},{"icon":"faViruses","aliases":[]},{"icon":"faVoicemail","aliases":[]},{"icon":"faVolcano","aliases":[]},{"icon":"faVolleyball","aliases":["faVolleyballBall"]},{"icon":"faVolleyballBall","aliases":["faVolleyballBall"]},{"icon":"faVolume","aliases":["faVolumeMedium"]},{"icon":"faVolumeControlPhone","aliases":["faVolumeControlPhone"]},{"icon":"faVolumeDown","aliases":["faVolumeDown"]},{"icon":"faVolumeHigh","aliases":["faVolumeUp"]},{"icon":"faVolumeLow","aliases":["faVolumeDown"]},{"icon":"faVolumeMedium","aliases":["faVolumeMedium"]},{"icon":"faVolumeMute","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeOff","aliases":[]},{"icon":"faVolumeSlash","aliases":[]},{"icon":"faVolumeTimes","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVolumeUp","aliases":["faVolumeUp"]},{"icon":"faVolumeXmark","aliases":["faVolumeMute","faVolumeTimes"]},{"icon":"faVoteNay","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faVoteYea","aliases":["faVoteYea"]},{"icon":"faVrCardboard","aliases":[]},{"icon":"faW","aliases":[]},{"icon":"faWaffle","aliases":[]},{"icon":"faWagonCovered","aliases":[]},{"icon":"faWalker","aliases":[]},{"icon":"faWalkieTalkie","aliases":[]},{"icon":"faWalking","aliases":["faWalking"]},{"icon":"faWallBrick","aliases":["faWallBrick"]},{"icon":"faWallet","aliases":[]},{"icon":"faWand","aliases":[]},{"icon":"faWandMagic","aliases":["faMagic"]},{"icon":"faWandMagicSparkles","aliases":["faMagicWandSparkles"]},{"icon":"faWandSparkles","aliases":[]},{"icon":"faWarehouse","aliases":[]},{"icon":"faWarehouseAlt","aliases":["faWarehouseAlt"]},{"icon":"faWarehouseFull","aliases":["faWarehouseAlt"]},{"icon":"faWarning","aliases":["faExclamationTriangle","faWarning"]},{"icon":"faWasher","aliases":["faWasher"]},{"icon":"faWashingMachine","aliases":["faWasher"]},{"icon":"faWatch","aliases":[]},{"icon":"faWatchApple","aliases":[]},{"icon":"faWatchCalculator","aliases":[]},{"icon":"faWatchFitness","aliases":[]},{"icon":"faWatchSmart","aliases":[]},{"icon":"faWater","aliases":[]},{"icon":"faWaterArrowDown","aliases":["faWaterLower"]},{"icon":"faWaterArrowUp","aliases":["faWaterRise"]},{"icon":"faWaterLadder","aliases":["faLadderWater","faSwimmingPool"]},{"icon":"faWaterLower","aliases":["faWaterLower"]},{"icon":"faWaterRise","aliases":["faWaterRise"]},{"icon":"faWatermelonSlice","aliases":[]},{"icon":"faWave","aliases":[]},{"icon":"faWavePulse","aliases":["faHeartRate"]},{"icon":"faWaveSine","aliases":[]},{"icon":"faWaveSquare","aliases":[]},{"icon":"faWaveTriangle","aliases":[]},{"icon":"faWaveform","aliases":[]},{"icon":"faWaveformCircle","aliases":["faWaveformCircle"]},{"icon":"faWaveformLines","aliases":["faWaveformPath"]},{"icon":"faWaveformPath","aliases":["faWaveformPath"]},{"icon":"faWavesSine","aliases":[]},{"icon":"faWebAwesome","aliases":[]},{"icon":"faWebcam","aliases":["faWebcam"]},{"icon":"faWebcamSlash","aliases":["faWebcamSlash"]},{"icon":"faWebhook","aliases":[]},{"icon":"faWeight","aliases":["faWeight"]},{"icon":"faWeightHanging","aliases":[]},{"icon":"faWeightScale","aliases":["faWeight"]},{"icon":"faWhale","aliases":[]},{"icon":"faWheat","aliases":[]},{"icon":"faWheatAlt","aliases":["faWheatAlt"]},{"icon":"faWheatAwn","aliases":["faWheatAlt"]},{"icon":"faWheatAwnCircleExclamation","aliases":[]},{"icon":"faWheatAwnSlash","aliases":[]},{"icon":"faWheatSlash","aliases":[]},{"icon":"faWheelchair","aliases":[]},{"icon":"faWheelchairAlt","aliases":["faWheelchairAlt"]},{"icon":"faWheelchairMove","aliases":["faWheelchairAlt"]},{"icon":"faWhiskeyGlass","aliases":["faGlassWhiskey"]},{"icon":"faWhiskeyGlassIce","aliases":["faGlassWhiskeyRocks"]},{"icon":"faWhistle","aliases":[]},{"icon":"faWifi","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifi1","aliases":["faWifi1"]},{"icon":"faWifi2","aliases":["faWifi2"]},{"icon":"faWifi3","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiExclamation","aliases":[]},{"icon":"faWifiFair","aliases":["faWifi2"]},{"icon":"faWifiSlash","aliases":[]},{"icon":"faWifiStrong","aliases":["faWifi3","faWifiStrong"]},{"icon":"faWifiWeak","aliases":["faWifi1"]},{"icon":"faWind","aliases":[]},{"icon":"faWindCircleExclamation","aliases":["faWindCircleExclamation"]},{"icon":"faWindTurbine","aliases":[]},{"icon":"faWindWarning","aliases":["faWindCircleExclamation"]},{"icon":"faWindow","aliases":[]},{"icon":"faWindowAlt","aliases":["faWindowAlt"]},{"icon":"faWindowClose","aliases":["faRectangleTimes","faTimesRectangle","faWindowClose"]},{"icon":"faWindowFlip","aliases":["faWindowAlt"]},{"icon":"faWindowFrame","aliases":[]},{"icon":"faWindowFrameOpen","aliases":[]},{"icon":"faWindowMaximize","aliases":[]},{"icon":"faWindowMinimize","aliases":[]},{"icon":"faWindowRestore","aliases":[]},{"icon":"faWindsock","aliases":[]},{"icon":"faWineBottle","aliases":[]},{"icon":"faWineGlass","aliases":[]},{"icon":"faWineGlassAlt","aliases":["faWineGlassAlt"]},{"icon":"faWineGlassCrack","aliases":["faFragile"]},{"icon":"faWineGlassEmpty","aliases":["faWineGlassAlt"]},{"icon":"faWon","aliases":["faKrw","faWon"]},{"icon":"faWonSign","aliases":["faKrw","faWon"]},{"icon":"faWorm","aliases":[]},{"icon":"faWreath","aliases":[]},{"icon":"faWreathLaurel","aliases":[]},{"icon":"faWrench","aliases":[]},{"icon":"faWrenchSimple","aliases":[]},{"icon":"faX","aliases":[]},{"icon":"faXRay","aliases":[]},{"icon":"faXmark","aliases":["faClose","faMultiply","faRemove","faTimes"]},{"icon":"faXmarkCircle","aliases":["faTimesCircle","faXmarkCircle"]},{"icon":"faXmarkHexagon","aliases":["faTimesHexagon","faXmarkHexagon"]},{"icon":"faXmarkLarge","aliases":[]},{"icon":"faXmarkOctagon","aliases":["faTimesOctagon","faXmarkOctagon"]},{"icon":"faXmarkSquare","aliases":["faTimesSquare","faXmarkSquare"]},{"icon":"faXmarkToSlot","aliases":["faTimesToSlot","faVoteNay"]},{"icon":"faXmarksLines","aliases":[]},{"icon":"faY","aliases":[]},{"icon":"faYen","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYenSign","aliases":["faCny","faJpy","faRmb","faYen"]},{"icon":"faYinYang","aliases":[]},{"icon":"faZ","aliases":[]},{"icon":"faZap","aliases":["faZap"]},{"icon":"faZzz","aliases":["faZzz"]}],"prefix":"fas"},"@awesome.me/kit-63db24046b/icons/kit/custom":{"icons":[{"icon":"faActors","aliases":[]},{"icon":"faActorsBorderless","aliases":[]},{"icon":"faFreestyle","aliases":[]},{"icon":"faGb","aliases":[]},{"icon":"faGoogleCloud","aliases":[]},{"icon":"faHetzner","aliases":[]},{"icon":"faHetznerH","aliases":[]},{"icon":"faKubernetes","aliases":[]},{"icon":"faLinear","aliases":[]},{"icon":"faNextjs","aliases":[]},{"icon":"faProject","aliases":[]},{"icon":"faRailway","aliases":[]},{"icon":"faRegex","aliases":[]},{"icon":"faRivet","aliases":[]},{"icon":"faSelect","aliases":[]},{"icon":"faTs","aliases":[]},{"icon":"faVercel","aliases":[]},{"icon":"faWord","aliases":[]}]}} \ No newline at end of file diff --git a/frontend/packages/icons/scripts/postinstall.js b/frontend/packages/icons/scripts/postinstall.js index 8a5595025b..6f9c835c30 100644 --- a/frontend/packages/icons/scripts/postinstall.js +++ b/frontend/packages/icons/scripts/postinstall.js @@ -34,7 +34,7 @@ if (process.env.FONTAWESOME_PACKAGE_TOKEN) { private: true, sideEffects: false, dependencies: { - "@awesome.me/kit-63db24046b": "1.0.26", + "@awesome.me/kit-63db24046b": "1.0.27", "@fortawesome/pro-regular-svg-icons": "6.6.0", "@fortawesome/pro-solid-svg-icons": "6.6.0", }, diff --git a/site/public/docs.md b/site/public/docs.md index dfe930d82a..6cbe2f4756 100644 --- a/site/public/docs.md +++ b/site/public/docs.md @@ -2,30 +2,13 @@ Rivet is a library for long-lived processes with durable state, realtime, and scalability. It is easily self-hostable and works with your infrastructure. -## Features - -- **Stateful Workloads**: Keep memory between operations & run complex logic that requires stateful processes -- **Realtime**: Powered by WebSockets or SSE without the complexity -- **Elastic Scalability**: Scale from zero to millions without cold starts -- **Multi-Region Durable Storage**: Keep state & operations near your users or comply with data soveirgnty - -## Tools +## Libraries Long-lived processes with durable state, realtime, and hibernation ## Use Cases - Deploy assistants that reason and act with durable memory - - Sync state instantly over WebSockets or SSE - - Run long-lived services with automatic failover - - Isolate customer data with multi-tenant storage - - Throttle requests using stateful counters per client - - Build chat and workflow bots with actor logic +))} ## Deploy Options diff --git a/site/public/icons/bolt.svg b/site/public/icons/bolt.svg new file mode 100644 index 0000000000..33b8c1074e --- /dev/null +++ b/site/public/icons/bolt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site/public/icons/database.svg b/site/public/icons/database.svg new file mode 100644 index 0000000000..af98bd5a33 --- /dev/null +++ b/site/public/icons/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site/public/icons/microchip.svg b/site/public/icons/microchip.svg new file mode 100644 index 0000000000..f0c93ee082 --- /dev/null +++ b/site/public/icons/microchip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site/public/llms-full.txt b/site/public/llms-full.txt index 2dd048574d..d3ef36e184 100644 --- a/site/public/llms-full.txt +++ b/site/public/llms-full.txt @@ -1870,13 +1870,13 @@ Actors for long-lived processes with durable state, realtime, and hibernate when ## Quickstart - Set up actors with Node.js, Bun, and web frameworks + Set up Rivet with Node.js, Bun, and web frameworks - Build real-time React applications with actors + Set up Rivet with React - Build server-rendered Next.js experiences backed by actors + Set up Rivet with Next.js - Deploy actors on Cloudflare Workers with zero infrastructure + Set up Rivet with Cloudflare Workers ## Features @@ -2745,7 +2745,6 @@ Create a simple counter actor: ```ts } const counter = actor(, actions: , - getCount: (c) => c.state.count, }, }); @@ -2852,12 +2851,11 @@ await connection.increment(1); See the [JavaScript client documentation](/docs/clients/javascript) for more information. ```tsx } -const client = createClient("http://localhost:8080"); -const = createRivetKit(client); +const = createRivetKit("http://localhost:8080"); function Counter() ); - counter.useEvent("countChanged", (newCount: number) => ); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => ; @@ -2904,7 +2902,6 @@ Create a simple counter actor: ```ts } const counter = actor(, actions: , - getCount: (c) => c.state.count, }, }); @@ -2983,6 +2980,8 @@ wrangler deploy Your actors will now run on Cloudflare's edge with persistent state backed by Durable Objects. +See the [Cloudflare Workers deployment guide](/docs/deploy/cloudflare-workers) for detailed deployment instructions and configuration options. + ## Configuration Options ### Connect Frontend To The Rivet Actor @@ -3015,12 +3014,11 @@ await connection.increment(1); See the [JavaScript client documentation](/docs/clients/javascript) for more information. ```tsx } -const client = createClient("https://your-app.workers.dev/rivet"); -const = createRivetKit(client); +const = createRivetKit("https://your-app.workers.dev/rivet"); function Counter() ); - counter.useEvent("countChanged", (newCount: number) => ); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => ; @@ -3061,6 +3059,10 @@ See the [Rust client documentation](/docs/clients/rust) for more information. Set up actors with Node.js, Bun, and web frameworks Build real-time React applications with actors + + Build server-rendered Next.js experiences backed by actors + + Deploy actors on Cloudflare Workers with zero infrastructure ## Next.js Quickstart # Next.js Quickstart @@ -3072,12 +3074,11 @@ npx create-next-app@latest my-app cd my-app ``` -Create a simple counter actor: +Create a file at `src/rivet/registry.ts` with a simple counter actor: ```ts } const counter = actor(, actions: , - getCount: (c) => c.state.count, }, }); @@ -3085,33 +3086,26 @@ const registry = setup(, }); ``` -Create a RivetKit client to connect to your actor: - -```ts } -"use client"; -const client = createClient(/api/rivet`, - transport: "sse", -}); - -const = createRivetKit(client); - -``` - -It's important to use SSE (Server-Sent Events) for real-time updates in Next.js. +Create a file at `src/app/api/rivet/[...all]/route.ts` to setup the API routes: ```ts } -// Export the Next.js handler for the API routes const = toNextHandler(registry); ``` +Create a file at `src/components/Counter.tsx` to use the actor in a component: + ```tsx } "use client"; + +const = createRivetKit( + process.env.NEXT_RIVET_ENDPOINT ?? "http://localhost:3000/api/rivet", +); + function Counter() ); - const [count, setCount] = useState(0); - counter.on("countChanged", (newCount) => ); + counter.useEvent("newCount", (x: number) => setCount(x)); - const increment = () => ; + const increment = async () => ; return ( @@ -3122,9 +3116,15 @@ function Counter() ); } ``` -Make sure to import the `Counter` component in your page or layout. +Import the `Counter` component in your page or layout to use it. + +For more examples on connecting to your actors using React, check the [React documentation for RivetKit](/docs/clients/react). + +See the [Vercel deployment guide](/docs/deploy/vercel) for detailed instructions on deploying your RivetKit app to Vercel. + +## API Reference -For more examples how to connect to your actors using React, check the [RivetKit React documentation](http://rivet.dev/docs/clients/react/). +For detailed information about the Next.js client API, see the [React Client API Reference](/docs/clients/react). ## React Quickstart # React Quickstart @@ -3138,10 +3138,8 @@ npm install rivetkit @rivetkit/react Create your actor registry on the backend: ```ts } -const counter = actor(, // Skip authentication (can be configured later) - state: , +const counter = actor(, actions: , - getCount: (c) => c.state.count, }, }); @@ -3159,19 +3157,15 @@ registry.start(); Set up your React application: ```tsx } -// Create typed client -const client = createClient("http://localhost:8080"); +const client = createClient(); const = createRivetKit(client); function App() ); - // Listen for real-time count updates - counter.useEvent("countChanged", (newCount: number) => ); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => ; - const incrementBy = async (amount: number) => ; - return ( Rivet Counter @@ -3182,13 +3176,7 @@ function App() ); style=} /> - +1 - - incrementBy(5)}> - +5 - - incrementBy(10)}> - +10 + Increment Connection Status: Try opening multiple tabs to see real-time sync. @@ -3229,6 +3217,10 @@ Open `http://localhost:5173` in your browser. Try opening multiple tabs to see r Add custom HTTP endpoints alongside your actors to handle additional business logic, authentication, and integrations with external services. See [backend quickstart](/docs/actors/quickstart/backend) for more information. + +## API Reference + +For detailed information about the React client API, see the [React Client API Reference](/docs/clients/react). ## Scaling & Concurrency # Scaling & Concurrency @@ -3669,28 +3661,13 @@ This is where the technical API docs live. The Rivet JavaScript client allows you to connect to and interact with actors from browser and Node.js applications. -## Basic Usage - -Install the RivetKit package: - - Make sure you have a running Rivet actor server to connect to. You can follow the [Node.js & Bun Quickstart](https://rivet.dev/docs/actors/quickstart/backend/) to set up a simple actor server. +## Getting Started -Create client and connect to actors and listen for real-time updates: - -```tsx } -async function main() - - await new Promise((resolve) => setTimeout(resolve, 10000)); - await counter.dispose(); -} - -main(); - -``` +See the [backend quickstart guide](/docs/actors/quickstart/backend) for getting started. ## API Reference -Follows the same [API as the Node.js client](http://rivet.dev/docs/actors/clients/#actor-client), allowing you to use the same methods and properties for interacting with actors. +See the [RivetKit client API](http://rivet.dev/docs/actors/clients/#actor-client). ## Next.js # Next.js @@ -3701,46 +3678,9 @@ The Rivet Next.js client allows you to connect to and interact with actors in Ne Use Next.js API routes to run RivetKit Registry -## Basic Usage - -Install the RivetKit React package: - - Follow the [Next.js backend integration guide](https://rivet.dev/docs/integrations/next-js/) to set up your Next.js backend with Rivet. - -Create a RivetKit client to connect to your actor: - -```ts } -"use client"; -const client = createClient(/api/rivet`, - transport: "sse", -}); - -const = createRivetKit(client); - -``` - -It's important to use SSE (Server-Sent Events) for real-time updates in Next.js. - -Connect to actors and listen for real-time updates: -```tsx } -"use client"; -function Counter() ); - const [count, setCount] = useState(0); +## Getting Started - counter.on("countChanged", (newCount) => ); - - const increment = () => ; - - return ( - - Count: - Increment - - ); -} -``` - -Make sure to import the `Counter` component in your page or layout. +See the [Next.js quickstart guide](/docs/actors/quickstart/next-js) for getting started. ## API Reference @@ -3750,47 +3690,17 @@ It's the same as the [React client API reference](https://rivet.dev/docs/clients # OpenAPI The Rivet OpenAPI spec is available [here](https://github.com/rivet-dev/rivetkit/blob/main/clients/openapi/openapi.json) + +The OpenAPI spec currently only exposes creating & managing actors. It does not expose how to communicate with actors. See the [HTTP client implementation](https://github.com/rivet-dev/rivetkit/blob/b5072fdac18d90a27bb6cd36e9ee73b00d36d42c/packages/rivetkit/src/client/actor-handle.ts) for reference. ## React # React Learn how to create real-time, stateful React applications with Rivet's actor model. The React integration provides intuitive hooks for managing actor connections and real-time updates. -## Basic Usage - -Install the RivetKit React package: - - Make sure you have a running Rivet actor server to connect to. You can follow the [Node.js & Bun Quickstart](https://rivet.dev/docs/actors/quickstart/backend/) to set up a simple actor server. +## Getting Started -Connect to actors and listen for real-time updates: - -```tsx } -function App() ); - - // Listen for real-time count updates - counter.useEvent("countChanged", (newCount: number) => ); - - const increment = async () => ; - - return ( - - Rivet Counter - Count: - - Counter Name: - setCounterName(e.target.value)} - style=} - /> - - Increment - - Status: - - ); -} - -default App; -``` +See the [React quickstart guide](/docs/actors/quickstart/react) for getting started. ## API Reference @@ -3799,7 +3709,7 @@ default App; Creates the Rivet hooks for React integration. ```tsx -const client = createClient("http://localhost:8080"); +const client = createClient(); const = createRivetKit(client); ``` @@ -3832,7 +3742,6 @@ const actor = useActor(, - `createWithInput`: Optional input to pass to the actor on creation - `createInRegion`: Optional region to create the actor in if does not exist - `enabled`: Optional boolean to conditionally enable/disable the connection (default: true) - - `enabled`: Optional boolean to conditionally enable/disable the connection (default: true) #### Returns @@ -3849,7 +3758,7 @@ Subscribe to events emitted by the actor. ```tsx const actor = useActor(); -actor.useEvent("countChanged", (newCount: number) => ); +actor.useEvent("newCount", (count: number) => ); ``` #### Parameters @@ -4006,8 +3915,6 @@ The Rivet Rust client provides a way to connect to and interact with actors from ## API Reference -_Coming Soon_ - For detailed API documentation, please refer to the [RivetKit Rust client implementation](https://github.com/rivet-dev/rivetkit/blob/main/clients/rust). ## Deploying to AWS ECS @@ -4099,90 +4006,43 @@ _AWS Lambda is coming soon_ ## Deploying to Cloudflare Workers # Deploying to Cloudflare Workers -# -Run Rivet Actors on Cloudflare Workers with Durable Objects. If you still need a sample app, walk through the [Cloudflare Workers Quickstart](/docs/actors/quickstart/cloudflare-workers) first. - -- [Cloudflare account](https://dash.cloudflare.com/) with Durable Objects enabled -- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/install-and-update/) v3 -- RivetKit project (or use the [Quickstart](/docs/actors/quickstart/cloudflare-workers)) - -Install the Cloudflare Worker driver alongside RivetKit: - -```sh -npm install rivetkit @rivetkit/cloudflare-workers -``` - -Wire your actors into a Cloudflare Worker using the same setup as the quickstart: - -```ts } -const counter = actor(, - actions: , - getCount: (c) => c.state.count, - }, -}); - -const registry = setup(, -}); -``` - -```ts } -const app = new Hono } }>(); - -app.post("/increment/:name", async (c) => ); -}); - -const = createHandler(registry, ); -; -``` - -```ts } -const = createHandler(registry, ), , - }); - } - return new Response("Not Found", ); - } -}); +Deploy your Cloudflare Workers + RivetKit app to [Cloudflare Workers](https://workers.cloudflare.com/). -; -``` +Complete example Cloudflare Workers + RivetKit app. -Configure Durable Objects and KV namespaces in `wrangler.json` (same as the quickstart): +## Guide -```json } +- [Cloudflare account](https://dash.cloudflare.com/) with Durable Objects enabled +- [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/install-and-update/) v3 +- Access to the [Rivet Cloud](https://dashboard.rivet.dev/) or a self-hosted [Rivet Engine](/docs/general/self-hosting) +- A Cloudflare Worker app integrated with RivetKit + - See the [Cloudflare Workers quickstart](/docs/actors/quickstart/cloudflare-workers/) or [Cloudflare Workers example](https://github.com/rivet-dev/rivetkit/tree/main/examples/cloudflare-workers) to get started - ], - "durable_objects": - ] - }, - "kv_namespaces": [ - - ] -} -``` +Your project should have the following files: -Configuration requirements: +- `src/index.ts` (or similar entry point with `createHandler`) +- `src/registry.ts` (or similar actor registry file) +- `wrangler.json` with proper Durable Objects and KV namespace configuration -- `ACTOR_DO` durable object binding for actor persistence -- `ACTOR_KV` KV namespace binding for metadata storage -- `nodejs_compat` compatibility flag -- Migration entry defining the `ActorHandler` class +If your project is not integrated with RivetKit yet, follow the [Cloudflare Workers quickstart guide](/docs/actors/quickstart/cloudflare-workers/) or see the [Cloudflare Workers example](https://github.com/rivet-dev/rivetkit/tree/main/examples/cloudflare-workers). -Start the worker locally: +Deploy to Cloudflare's global network: ```sh -wrangler dev +wrangler deploy ``` -Call your actor at `http://localhost:8787/increment/my-counter`. +Your worker will be deployed and you'll receive a URL like `https://my-rivetkit-worker.workers.dev`. -When you're ready, deploy to Cloudflare's network: +More information on deployments is available in [Cloudflare's docs](https://developers.cloudflare.com/workers/wrangler/commands/#deploy). -```sh -wrangler deploy -``` +After running `wrangler deploy`, note the URL printed in the output (e.g., `https://my-rivetkit-worker.workers.dev`). + +Your RivetKit endpoint will be available at this URL with `/rivet` appended: +- Example: `https://my-rivetkit-worker.workers.dev/rivet` -Durable Objects back your actor state globally, and the Rivet endpoint is automatically mounted at `/rivet`. +Use this endpoint URL when configuring your RivetKit client or connecting from the Rivet dashboard. ## Advanced @@ -4563,11 +4423,10 @@ Create or update your `vercel.json`: More information on deployments are available in [Vercel's docs](https://vercel.com/docs/deployments). -1. Visit the Rivet dashboard +1. Visit the [Rivet dashboard](https://dashboard.rivet.dev) 2. Navigate to _Connect > Vercel_ 3. Skip to the _Deploy to Vercel_ step 4. Input your deployed Vercel site URL (e.g. `https://my-app.vercel.app/api/rivet`) - - **Important**: Make sure to include the path `/api/rivet` 5. Once it shows as successfully connected, click _Done_ Your Vercel Functions deployment is now connected to Rivet. @@ -5235,30 +5094,13 @@ TODO Rivet is a library for long-lived processes with durable state, realtime, and scalability. It is easily self-hostable and works with your infrastructure. -## Features - -- **Stateful Workloads**: Keep memory between operations & run complex logic that requires stateful processes -- **Realtime**: Powered by WebSockets or SSE without the complexity -- **Elastic Scalability**: Scale from zero to millions without cold starts -- **Multi-Region Durable Storage**: Keep state & operations near your users or comply with data soveirgnty - -## Tools +## Libraries Long-lived processes with durable state, realtime, and hibernation ## Use Cases - Deploy assistants that reason and act with durable memory - - Sync state instantly over WebSockets or SSE - - Run long-lived services with automatic failover - - Isolate customer data with multi-tenant storage - - Throttle requests using stateful counters per client - - Build chat and workflow bots with actor logic +))} ## Deploy Options @@ -5410,8 +5252,7 @@ Use authenticated sessions with Rivet: ```tsx // ChatRoom.tsx -const client = createClient("http://localhost:8080"); -const = createRivetKit(client); +const = createRivetKit("http://localhost:8080"); interface ChatRoomProps }; roomId: string; @@ -6452,57 +6293,416 @@ Follow the [Railway Quick Start guide](https://docs.railway.com/quick-start) to # AI Agents -Build durable assistants that keep memory between conversations, call tools, and react instantly to user input. +## Challenges of Building AI Agents + +Common tools: LangChain, OpenAI SDK, custom state management systems, Redis for memory storage + +Main pain points: +- Managing conversation history and agent memory across sessions requires external databases +- Keeping context and state synchronized while handling multiple concurrent conversations +- High latency from database round trips to fetch conversation history +- Complex infrastructure for realtime streaming responses to users +- Handling tool calls and maintaining agent state during long-running operations + +## How Rivet Solves This + +Rivet makes building stateful AI agents simple by providing durable actors that keep conversation history and agent state in memory without external databases. + +**Persistent Memory**: Each agent actor maintains its own state including conversation history, tool results, and context. State survives restarts and deployments automatically. + +```typescript +const aiAgent = actor( + }, + + actions: ); + + const response = await callLLM(c.state.messages); + c.state.messages.push(); + + c.broadcast("message", ); + return response; + } + } +}); +``` + +**Realtime Streaming**: Use WebSocket connections to stream LLM responses in realtime without additional infrastructure. Learn more about [events](/docs/actors/events). + +**Tool Integration**: Execute tool calls within the actor context while maintaining state consistency. See [actions](/docs/actors/actions) for more details. + +**No Cold Starts**: Agents hibernate when idle and wake instantly when needed, keeping conversation context ready without paying for idle time. Read about [actor lifecycle](/docs/actors/lifecycle). + +## Full Example Projects +## Background Jobs + +# Background Jobs + +## Challenges of Building Background Job Systems + +Common tools: Celery, Bull, Sidekiq, AWS SQS, RabbitMQ, Redis queues, cron jobs + +Main pain points: +- Managing separate job queue infrastructure and worker processes +- Tracking job state and results across distributed systems +- Handling job retries, failures, and dead letter queues +- Coordinating scheduled and recurring jobs with cron syntax +- Persisting job state and intermediate results during long-running tasks + +## How Rivet Solves This + +Rivet actors provide built-in job scheduling and execution with automatic state persistence and no external queue infrastructure. + +**Self-Contained Job Execution**: Each actor can schedule and execute background tasks with full access to its persistent state. + +```typescript +const jobProcessor = actor( as Record, + queue: [] as string[] + }, + + actions: ; + c.state.queue.push(jobId); + + if (delay) else + + return jobId; + }, + + processJob: async (c, jobId: string) => ); + + try ; + c.broadcast("jobUpdate", ); + } catch (error) ; + c.broadcast("jobUpdate", ); + } + } + } +}); +``` + +**Built-in Scheduling**: Schedule delayed and recurring jobs using [scheduled actions](/docs/actors/schedule) without cron or external schedulers. + +**Durable State**: Job state persists automatically, surviving restarts and failures. See [state management](/docs/actors/state). -**Examples** -- [AI Agent Starter](https://github.com/rivet-dev/rivetkit/tree/main/examples/ai-agent) +**Realtime Progress**: Stream job progress and results to clients using [events](/docs/actors/events). + +**No Queue Infrastructure**: Execute jobs directly within actors without Redis, RabbitMQ, or other message queues. + +## Full Example Projects ## Bots # Bots -Run bots for Slack, Discord, or autonomous agents that need persistent workers listening, responding, and executing background tasks. +## Challenges of Building Bots + +Common tools: Discord.js, Slack Bolt, Telegraf, traditional web servers with databases, message queues + +Main pain points: +- Managing bot state and conversation context across sessions requires external storage +- Handling concurrent conversations with multiple users while maintaining per-user state +- Keeping bots online 24/7 on traditional servers is expensive +- Complex infrastructure for event-driven responses and background tasks +- Difficulty maintaining WebSocket connections to chat platforms reliably + +## How Rivet Solves This + +Rivet provides long-lived actors that maintain persistent connections and state for chat bots without managing infrastructure. + +**Always-On Bot Instances**: Each bot actor stays alive with persistent state, maintaining connections to chat platforms like Discord, Slack, or Telegram. Actors hibernate when idle but wake instantly when messages arrive. + +```typescript +const discordBot = actor( as Record, + userPreferences: as Record + }, + + actions: ; + + return response; + } + } +}); +``` + +**Persistent State**: Bot memory, user preferences, and conversation history persist automatically without external databases. See [state management](/docs/actors/state). + +**Background Tasks**: Use [scheduled actions](/docs/actors/schedule) to run periodic tasks like reminders, notifications, or cleanup jobs. + +**Realtime Events**: Send and receive messages in realtime using WebSocket connections. Learn more about [events](/docs/actors/events). + +## Full Example Projects +## Realtime Docs + +# Realtime Docs + +## Challenges of Building Realtime Collaborative Documents + +Common tools: Yjs, Automerge, operational transforms, WebSocket servers, Redis for pub/sub, database for persistence + +Main pain points: +- Coordinating realtime updates across multiple users requires complex pub/sub infrastructure +- Persisting document state and CRDT data structures to databases adds latency +- Managing conflict resolution and synchronization logic is complex +- Scaling WebSocket connections and state management across servers +- Handling offline users and reconnection scenarios + +## How Rivet Solves This + +Rivet provides actors that maintain CRDT document state in memory and broadcast updates in realtime without external infrastructure. + +**In-Memory CRDTs**: Store Yjs or Automerge documents directly in actor state for ultra-fast reads and writes with zero database latency. + +```typescript +const collaborativeDoc = actor(, + + actions: ); + } + } +}); +``` + +**Built-in Realtime**: WebSocket connections are built into actors, eliminating the need for separate pub/sub systems. See [events](/docs/actors/events). + +**Automatic Persistence**: Document state persists automatically without database round trips. Learn about [state management](/docs/actors/state). + +**Multi-User Support**: Track connected users and their cursor positions using [connection state](/docs/actors/connections). + +## Full Example Projects +## Per-User Database + +# Per-User Database + +## Challenges of Building Per-User Databases + +Common tools: PostgreSQL with row-level security, MongoDB with tenant isolation, SQLite per-user files, DynamoDB with partition keys + +Main pain points: +- High latency from database round trips for every read/write operation +- Complex query patterns to ensure tenant isolation and prevent data leaks +- Scaling challenges when users have large datasets +- Managing database connections and connection pooling per-tenant +- Expensive database operations for simple key-value access patterns + +## How Rivet Solves This + +Rivet actors provide isolated in-memory databases for each user with automatic persistence and zero-latency access. + +**Isolated User State**: Each user gets their own actor with completely isolated state, eliminating tenant isolation concerns. + +```typescript +const userDatabase = actor( as Record, + settings: , + metadata: + }, + + actions: , + + get: (c, key: string) => , + + query: (c, filter: (doc: any) => boolean) => )); + } + } +}); +``` + +**Zero-Latency Reads**: State lives in memory on the same machine as compute, making reads instant with no database round trips. See [state management](/docs/actors/state). -**Examples** -- [AI Agent Starter](https://github.com/rivet-dev/rivetkit/tree/main/examples/ai-agent) -- [Realtime Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) -## Durable Compute +**Automatic Persistence**: Data persists automatically without manual save operations or database drivers. -# Durable Compute +**Built-in SQLite Support**: Use SQLite databases within actors for relational data. See [external SQL](/docs/actors/external-sql) for integration with traditional databases. -Run long-lived workloads that survive restarts, keep state close to users, and recover automatically when nodes shift. +**Realtime Updates**: Broadcast data changes to connected clients using [events](/docs/actors/events). -**Examples** -- [Sync Offline Data](https://github.com/rivet-dev/rivetkit/tree/main/examples/sync) -- [Tenant Isolation](https://github.com/rivet-dev/rivetkit/tree/main/examples/tenant) -- [Realtime Counter](https://github.com/rivet-dev/rivetkit/tree/main/examples/counter) -- [Realtime Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) -- [Collaborative CRDT Docs](https://github.com/rivet-dev/rivetkit/tree/main/examples/crdt) -- [Multiplayer Game State](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) -## Per-Tenant Databases +## Full Example Projects +## Multiplayer Game -# Per-Tenant Databases +# Multiplayer Game -Provision isolated storage per customer while sharing infrastructure, keeping noisy neighbours separated and compliant. +## Challenges of Building Multiplayer Games -**Examples** -- [Tenant Isolation](https://github.com/rivet-dev/rivetkit/tree/main/examples/tenant) -- [SQLite Sharding](https://github.com/rivet-dev/rivetkit/tree/main/examples/database) +Common tools: Unity Netcode, Photon, Colyseus, custom WebSocket servers, Redis for state, game server hosting + +Main pain points: +- Managing game state synchronization across multiple players with low latency +- Handling player connections, disconnections, and reconnections gracefully +- Scaling game servers and matchmaking infrastructure +- Persisting game state between sessions +- Complex networking code for state replication and conflict resolution + +## How Rivet Solves This + +Rivet actors provide authoritative game servers with built-in state management and realtime networking. + +**Authoritative Game State**: Each game room runs in its own actor with server-authoritative state management. + +```typescript +const gameRoom = actor( as Record, + gameState: "waiting" as "waiting" | "playing" | "ended", + startTime: 0 + }, + + createConnState: (c, opts, params: ) => (), + + actions: ); + } + }, + + startGame: (c) => ); + } + } +}); +``` + +**Low-Latency Updates**: Broadcast game state changes in realtime using WebSockets with built-in [events](/docs/actors/events). + +**State Persistence**: Game state persists automatically, allowing players to rejoin games after disconnections. Learn about [state management](/docs/actors/state). + +**Connection Tracking**: Track connected players and handle disconnections gracefully using [connections](/docs/actors/connections). + +**Tick-Based Updates**: Use [scheduled actions](/docs/actors/schedule) for fixed-rate game loops and physics updates. + +## Full Example Projects ## Rate Limiting # Rate Limiting -Throttle abusive clients with actors that track counters, rolling windows, and quotas without sharing mutable state. +## Challenges of Building Rate Limiting + +Common tools: Redis with sliding windows, token bucket algorithms, NGINX rate limiting, Kong, custom middleware + +Main pain points: +- Coordinating rate limits across distributed servers requires shared state +- High latency from Redis lookups on every request +- Complex sliding window or token bucket implementations +- Handling rate limit resets and per-user quotas +- Managing rate limit state for millions of users + +## How Rivet Solves This + +Rivet actors provide low-latency distributed rate limiting with in-memory counters and automatic persistence. + +**Per-User Rate Limiting**: Each user gets their own actor to track request counts and enforce limits with zero-latency access. + +```typescript +const rateLimiter = actor(, + + actions: ; + } + + // Add new request + c.state.requests.push(now); + + return ; + }, + + getStatus: (c) => ; + } + } +}); +``` + +**Zero-Latency Checks**: Rate limit counters live in memory, eliminating Redis round trips for every request. + +**Automatic Persistence**: Counter state persists automatically without manual Redis operations. See [state management](/docs/actors/state). + +**Flexible Algorithms**: Implement sliding windows, token buckets, or custom rate limiting logic directly in actor code. + +**Per-User Isolation**: Each user's rate limit is isolated in their own actor, providing natural horizontal scaling. + +**Realtime Notifications**: Send rate limit warnings to users via [events](/docs/actors/events). + +## Full Example Projects +## Local-First Sync + +# Local-First Sync + +## Challenges of Building Local-First Sync + +Common tools: ElectricSQL, PowerSync, custom sync protocols, CRDTs, WebSockets, PostgreSQL logical replication + +Main pain points: +- Complex conflict resolution when syncing offline changes to server +- Managing sync state and tracking changes across devices +- Handling partial syncs and large datasets efficiently +- Infrastructure for WebSocket connections and pub/sub for realtime updates +- Coordinating between client-side databases and server-side storage + +## How Rivet Solves This + +Rivet actors provide stateful sync coordination with built-in realtime updates and automatic persistence. + +**Per-User Sync Actors**: Each user gets a dedicated actor to manage their sync state and coordinate updates across devices. + +```typescript +const userSync = actor( as Record, + lastSyncTimestamp: 0, + deviceStates: as Record + }, + + actions: ; + + // Broadcast to other devices + for (const conn of c.conns) ); + } + } + + return ; + } + }, + + createConnState: (c, opts, params: ) => () +}); +``` + +**Automatic State Persistence**: Sync state persists automatically without external databases. See [state management](/docs/actors/state). + +**Realtime Cross-Device Sync**: Broadcast updates to all connected devices instantly using [events](/docs/actors/events). + +**Connection Tracking**: Monitor online/offline devices using [connection state](/docs/actors/connections). + +**Conflict Resolution**: Implement custom merge strategies directly in actor logic with full access to state history. + +## Full Example Projects +## Workflows + +# Workflows + +## Challenges of Building Workflows + +Common tools: Temporal, Cadence, Apache Airflow, AWS Step Functions, custom orchestration systems + +Main pain points: +- Complex infrastructure setup and maintenance for workflow orchestration +- Managing state across long-running multi-step processes +- Handling retries, timeouts, and failure recovery across distributed steps +- Coordinating between different services and maintaining transaction boundaries +- High operational cost of running dedicated workflow engines + +## How Rivet Solves This + +Rivet actors provide built-in workflow capabilities with durable execution and automatic state management without external orchestration systems. + +**Durable Execution**: Actor actions automatically persist state between steps, surviving restarts and failures without additional infrastructure. + +```typescript +const orderWorkflow = actor(, + + actions: ); + + // Step 2: Schedule shipment + c.schedule.after(1000 * 60 * 60, "shipOrder"); // 1 hour + }, + + shipOrder: async (c) => ); + } + } +}); +``` + +**Scheduled Steps**: Use [scheduling](/docs/actors/schedule) to delay workflow steps or implement timeouts and reminders. -**Examples** -- [Stateful Rate Limiter](https://github.com/rivet-dev/rivetkit/tree/main/examples/rate) -## Realtime +**State Checkpointing**: State automatically persists after each action, ensuring workflow progress is never lost. Learn about [state management](/docs/actors/state). -# Realtime +**Actor Communication**: Coordinate across services using [actor-to-actor communication](/docs/actors/communicating-between-actors) without message queues. -Deliver sub-second updates with actors that push changes over WebSockets or SSE without juggling infrastructure. +**Realtime Updates**: Stream workflow progress to clients using [events](/docs/actors/events). -**Examples** -- [Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) -- [Multiplayer Game State](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) -- [Stream Processing](https://github.com/rivet-dev/rivetkit/tree/main/examples/stream) -- [Sync Offline Data](https://github.com/rivet-dev/rivetkit/tree/main/examples/sync) \ No newline at end of file +## Full Example Projects \ No newline at end of file diff --git a/site/public/llms.txt b/site/public/llms.txt index a2a50a07f8..0ce9a10368 100644 --- a/site/public/llms.txt +++ b/site/public/llms.txt @@ -122,12 +122,15 @@ https://rivet.dev/docs/self-hosting/install https://rivet.dev/docs/self-hosting/kubernetes https://rivet.dev/docs/self-hosting/multi-region https://rivet.dev/docs/self-hosting/railway -https://rivet.dev/docs/use-cases/ai-agents +https://rivet.dev/docs/use-cases/ai-agent +https://rivet.dev/docs/use-cases/background-jobs https://rivet.dev/docs/use-cases/bots -https://rivet.dev/docs/use-cases/durable-compute -https://rivet.dev/docs/use-cases/per-tenant-databases -https://rivet.dev/docs/use-cases/rate-limiting -https://rivet.dev/docs/use-cases/realtime +https://rivet.dev/docs/use-cases/crdt +https://rivet.dev/docs/use-cases/database +https://rivet.dev/docs/use-cases/game +https://rivet.dev/docs/use-cases/rate +https://rivet.dev/docs/use-cases/sync +https://rivet.dev/docs/use-cases/workflows https://rivet.dev/guides/chat https://rivet.dev/meme/wired-in https://rivet.dev/oss-friends diff --git a/site/scripts/examplesData.mjs b/site/scripts/examplesData.mjs index e06ca5f9ca..b1439a763a 100644 --- a/site/scripts/examplesData.mjs +++ b/site/scripts/examplesData.mjs @@ -1,58 +1,58 @@ // Shared example metadata used by both generateExamples.mjs and generateReadme.mjs export const EXAMPLE_METADATA = { - "ai-agent": { - icon: "faRobot", + "ai-agent": { + icon: "faRobot", title: "AI Agent", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], tab: "memory" }, - "chat-room": { - icon: "faMessage", - title: "Chat Room", + "crdt": { + icon: "faFilePen", + title: "Realtime Docs", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], tab: "memory" }, - "crdt": { - icon: "faFilePen", - title: "Collab (Yjs)", - filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], - tab: "memory" - }, - "game": { - icon: "faGamepad", - title: "Multiplayer Game", - filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], + "workflows": { + icon: "faDiagramNext", + title: "Workflows", + filesToOpen: ['src/registry.ts', 'src/server.ts'], tab: "memory" }, - "sync": { - icon: "faRotate", + "sync": { + icon: "faRotate", title: "Local-First Sync", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], tab: "memory" }, - "rate": { - icon: "faGaugeHigh", - title: "Rate Limiter", + "database": { + icon: "faDatabase", + title: "Per-User Database", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], + tab: "sqlite" + }, + "background-jobs": { + icon: "faClock", + title: "Background Jobs", + filesToOpen: ['src/registry.ts', 'src/server.ts'], tab: "memory" }, - "database": { - icon: "faDatabase", - title: "Per-User DB", + "rate": { + icon: "faGaugeHigh", + title: "Rate Limiting", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], - tab: "sqlite" + tab: "memory" }, - "tenant": { - icon: "faBuilding", - title: "Multi-Tenant SaaS", + "game": { + icon: "faGamepad", + title: "Multiplayer Game", filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], tab: "memory" }, - "stream": { - icon: "faWaveSine", - title: "Stream Processing", - filesToOpen: ['src/backend/registry.ts', 'src/frontend/App.tsx'], + "bots": { + icon: "faUserRobot", + title: "Bots", + filesToOpen: ['src/registry.ts', 'src/server.ts'], tab: "memory" }, -}; \ No newline at end of file +}; diff --git a/site/scripts/generateExamples.mjs b/site/scripts/generateExamples.mjs index b09582c0c9..778a623eb7 100644 --- a/site/scripts/generateExamples.mjs +++ b/site/scripts/generateExamples.mjs @@ -5,8 +5,8 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync, cpSync, rmSync } fr import { join } from 'path'; import { EXAMPLE_METADATA } from './examplesData.mjs'; -const REPO_URL = 'https://github.com/rivet-gg/rivetkit.git'; -const BRANCH = '07-09-chore_add_new_examples'; +const REPO_URL = 'https://github.com/rivet-dev/rivetkit.git'; +const BRANCH = 'main'; const TEMP_DIR = '/tmp/rivetkit-examples'; const TEMP_EXAMPLE_DIR = '/tmp/rivet-example-temp'; const OUTPUT_DIR = './src/data/examples'; @@ -34,7 +34,9 @@ function updateRepo() { // Replace workspace dependencies with version numbers function replaceWorkspaceDependencies(content) { - return content.replace(/@rivetkit\/([^"]+)": "workspace:\*"/g, '@rivetkit/$1": "^0.9.1"'); + return content + .replace(/@rivetkit\/([^"]+)": "workspace:\*"/g, '@rivetkit/$1": "^0.9.1"') + .replace(/"workspace:\*"/g, '"^0.9.1"'); } // Get only the examples defined in metadata diff --git a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippets.tsx b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippets.tsx index e20aac2b77..21b86537cf 100644 --- a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippets.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippets.tsx @@ -11,15 +11,9 @@ export default function CodeSnippets() { useState("memory"); return ( -
-
-

- Examples -

-
- + <> {/* Desktop view - hidden on small screens */} -
+
-
+ ); -} \ No newline at end of file +} diff --git a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsDesktop.tsx b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsDesktop.tsx index 0e7c671695..bd024301c1 100644 --- a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsDesktop.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsDesktop.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; import { faFolder, faFolderOpen, @@ -137,15 +137,15 @@ function FileTreeItem({ } }} className={`w-full text-left px-2 py-1 rounded text-xs transition-colors flex items-center gap-1 ${isActive && node.type === "file" - ? "bg-white/10 text-white/50" - : "text-white/40 hover:text-white/60 hover:bg-white/5" + ? "bg-white/15 text-white/80" + : "text-white/60 hover:text-white/80 hover:bg-white/8" }`} style={{ paddingLeft: `${8 + indentSize}px` }} > {node.type === "folder" && ( )} {node.name} @@ -187,18 +187,47 @@ interface TabProps { } function Tab({ children, isActive, onClick, className = "" }: TabProps) { + const buttonRef = useRef(null); + const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 }); + + const handleMouseMove = (e: React.MouseEvent) => { + if (!buttonRef.current) return; + const rect = buttonRef.current.getBoundingClientRect(); + setMousePosition({ + x: e.clientX - rect.left, + y: e.clientY - rect.top, + }); + }; + return ( ); } @@ -225,25 +254,17 @@ function TabGroup({ })); return ( -
- {/* Example Tabs */} -
-
- {examplesWithIcons.map((example) => ( - setActiveExample(example.id)} - > - - {example.title} - - ))} -
-
+
+ {examplesWithIcons.map((example) => ( + setActiveExample(example.id)} + > + + {example.title} + + ))}
); } @@ -260,7 +281,7 @@ function BottomBarButton({ onClick, icon, children }: BottomBarButtonProps) { return ( -
-
+ {/* Left sidebar - File tree */} +
+
+ {fileTree.map((node) => ( + -
+ ))}
- {/* Bottom bar */} - + {/* Right side - Code viewer */} +
+ {/* Copy button */} + +
+
+
+
); } @@ -447,7 +459,13 @@ export default function CodeSnippetsDesktop({ setActiveStateType, }: CodeSnippetsDesktopProps) { return ( - <> +
+ {/* Examples Header */} +

+ Examples +

+ + {/* Tabs */} - - + + {/* Code Editor with inset rounded rect */} +
+ +
+ + {/* Bottom bar - outside the inner rect */} + +
); -} \ No newline at end of file +} diff --git a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsMobile.tsx b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsMobile.tsx index 1345b9c1cb..051dcb4cdd 100644 --- a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsMobile.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/CodeSnippetsMobile.tsx @@ -1,10 +1,11 @@ "use client"; +import { useState, useEffect } from "react"; import { Icon, faGithub, - faFileZip, - faBolt, + faChevronDown, + faChevronRight, faCode, } from "@rivet-gg/icons"; import { @@ -12,69 +13,152 @@ import { type ExampleData, } from "@/data/examples/examples"; import { EXAMPLE_ICON_MAP, createExampleActions } from "./utils"; +import * as shiki from "shiki"; +import theme from "@/lib/textmate-code-theme"; interface ExampleListItemProps { example: ExampleData; icon: any; + isExpanded: boolean; + onToggle: () => void; } -function ExampleListItem({ example, icon }: ExampleListItemProps) { - const { handleOpenGithub, handleOpenStackBlitz, handleDownloadZip } = - createExampleActions(example.id, example.files); +let highlighter: shiki.Highlighter; + +function ExampleListItem({ example, icon, isExpanded, onToggle }: ExampleListItemProps) { + const [fileContent, setFileContent] = useState(""); + const [isCodeExpanded, setIsCodeExpanded] = useState(false); + const { handleOpenGithub } = createExampleActions(example.id, example.files); + + // Get the main file to display + const mainFile = example.filesToOpen[0] || Object.keys(example.files)[0]; + + // Reset code expanded state when accordion is collapsed + useEffect(() => { + if (!isExpanded) { + setIsCodeExpanded(false); + } + }, [isExpanded]); + + // Initialize highlighter and highlight code when expanded + useEffect(() => { + const highlightCode = async () => { + if (!isExpanded || !mainFile) return; + + highlighter ??= await shiki.getSingletonHighlighter({ + langs: ["typescript", "json"], + themes: [theme], + }); + + const code = example.files[mainFile] || ""; + const lang = mainFile.endsWith(".json") ? "json" : "typescript"; + + const highlighted = highlighter.codeToHtml(code, { + lang, + theme: theme.name, + }); + + setFileContent(highlighted); + }; + + highlightCode(); + }, [isExpanded, mainFile, example.files]); return ( -
-
- -
+
+
-
- - - -
+ + + {isExpanded && ( +
+ {/* Code snippet */} +
+
+
+ + {/* Gradient overlay and Show More button */} + {!isCodeExpanded && ( +
+ +
+ )} +
+
+ + {/* GitHub button - only shown when expanded */} +
+ +
+
+ )}
); } export default function CodeSnippetsMobile() { + const [expandedExamples, setExpandedExamples] = useState>(new Set()); + + const toggleExample = (exampleId: string) => { + setExpandedExamples(prev => { + const next = new Set(prev); + if (next.has(exampleId)) { + next.delete(exampleId); + } else { + next.add(exampleId); + } + return next; + }); + }; + const examplesWithIcons = examples.map((example) => ({ ...example, icon: EXAMPLE_ICON_MAP[example.id] || faCode, })); return ( -
-
+
+

+ Examples +

+
{examplesWithIcons.map((example) => ( toggleExample(example.id)} /> ))}
); -} \ No newline at end of file +} diff --git a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/utils.ts b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/utils.ts index 291abefa95..721dea6227 100644 --- a/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/utils.ts +++ b/site/src/app/(v2)/(marketing)/(index)/components/code-snippets/utils.ts @@ -16,6 +16,9 @@ import { faBracketsCurly, faJs, faFile, + faClock, + faUserRobot, + faDiagramNext, } from "@rivet-gg/icons"; import { examples } from "@/data/examples/examples"; import JSZip from "jszip"; @@ -30,6 +33,9 @@ export const EXAMPLE_ICON_MAP: Record = { game: faGamepad, sync: faRotate, tenant: faBuilding, + bots: faUserRobot, + workflows: faDiagramNext, + "background-jobs": faClock, }; // Shared functionality for example actions diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/CTASection.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/CTASection.tsx index 3f371a10d2..8251115c82 100644 --- a/site/src/app/(v2)/(marketing)/(index)/sections/CTASection.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/sections/CTASection.tsx @@ -9,7 +9,7 @@ export function CTASection() {
- + Quickstart — 5 minutes diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/FeaturesSection.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/FeaturesSection.tsx index eff3d8d770..519a02a81b 100644 --- a/site/src/app/(v2)/(marketing)/(index)/sections/FeaturesSection.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/sections/FeaturesSection.tsx @@ -1,113 +1,67 @@ -import { Icon, faArrowRight } from "@rivet-gg/icons"; +"use client"; -function DocsLink({ href }: { href: string }) { - return ( - - Documentation - - - ); -} +import { useRef } from "react"; +import { IconWithSpotlight } from "./IconWithSpotlight"; interface FeatureCardProps { title: string; description: string; - color: string; className?: string; docLink?: string; + iconPath?: string; } function FeatureCard({ title, description, - color, className = "", docLink, + iconPath, }: FeatureCardProps) { - return ( -
-
-
-

{title}

-

- {description} -

- {docLink && } -
-
-
-
- ); -} + const cardRef = useRef(null); -interface LargeFeatureCardProps { - title: string; - description: string; - color: string; - className?: string; - docLink?: string; -} + const handleMouseMove = (e: React.MouseEvent) => { + if (!cardRef.current) return; + const card = cardRef.current; + + // Find the icon container and convert coordinates to icon-relative + const iconContainer = card.querySelector('.icon-spotlight-container') as HTMLElement; + if (!iconContainer) return; + + // Get the icon's position relative to viewport + const iconRect = iconContainer.getBoundingClientRect(); + + // Calculate mouse position relative to the icon (not the card) + const x = ((e.clientX - iconRect.left) / iconRect.width) * 100; + const y = ((e.clientY - iconRect.top) / iconRect.height) * 100; + + // Set CSS custom properties on the icon container + iconContainer.style.setProperty('--mouse-x', `${x}%`); + iconContainer.style.setProperty('--mouse-y', `${y}%`); + }; -function LargeFeatureCard({ - title, - description, - color, - className = "", - docLink, -}: LargeFeatureCardProps) { return ( -
-
-
-

{title}

-

- {description} -

- {docLink && } -
-
+ +
+ {iconPath && ( + <> +
+
+ +
+ + )} +

{title}

+

+ {description} +

-
+
); } @@ -120,66 +74,67 @@ export function FeaturesSection() { Built for Modern Applications

- Everything you need to build fast, scalable, and real-time + Everything you need to build fast, scalable, and realtime applications without the complexity.

-
- + + + + +
diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/HeroSection.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/HeroSection.tsx index c59eb83ba5..c06450219f 100644 --- a/site/src/app/(v2)/(marketing)/(index)/sections/HeroSection.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/sections/HeroSection.tsx @@ -2,6 +2,7 @@ import { PlatformIcons } from "../components/PlatformIcons"; import { MarketingButton } from "../components/MarketingButton"; import { CopyCommand } from "../components/CopyCommand"; import Link from "next/link"; +import { WithTooltip } from "@rivet-gg/components"; export function HeroSection() { return ( @@ -21,12 +22,13 @@ export function HeroSection() {
-

- Rivet is a library for long-lived processes with{" "} - durable state + {/*

+ Rivet is a library for{" "} + long-lived processes{" "} with{" "} + state , realtime, and{" "} - scalability. + hibernation.
Easily{" "} self-hostable{" "} @@ -35,6 +37,25 @@ export function HeroSection() { your infrastructure . +

*/} + + +

+ Rivet is an open-source library for{" "} + long-lived processes. +
+ Like Lambda — but with{" "} + persistence,{" "} + realtime, and{" "} + hibernation. +
+ Easily{" "} + self-hostable{" "} + and works with{" "} + + your infrastructure + + .

@@ -47,7 +68,7 @@ export function HeroSection() { {/* CTA Buttons */}
Quickstart — 5 minutes diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/IconWithSpotlight.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/IconWithSpotlight.tsx new file mode 100644 index 0000000000..6ebc51b11a --- /dev/null +++ b/site/src/app/(v2)/(marketing)/(index)/sections/IconWithSpotlight.tsx @@ -0,0 +1,62 @@ +interface IconWithSpotlightProps { + iconPath: string; + title: string; +} + +export function IconWithSpotlight({ iconPath, title }: IconWithSpotlightProps) { + const getPathData = () => { + switch (iconPath) { + case "/icons/microchip.svg": + return "M240 88L240 64L192 64L192 128L128 128L128 192L64 192L64 240L128 240L128 296L64 296L64 344L128 344L128 400L64 400L64 448L128 448L128 512L192 512L192 576L240 576L240 512L296 512L296 576L344 576L344 512L400 512L400 576L448 576L448 512L512 512L512 448L576 448L576 400L512 400L512 344L576 344L576 296L512 296L512 240L576 240L576 192L512 192L512 128L448 128L448 64L400 64L400 128L344 128L344 64L296 64L296 128L240 128L240 88zM464 176L464 464L176 464L176 176L464 176zM368 272L368 368L272 368L272 272L368 272zM272 224L224 224L224 416L416 416L416 224L272 224z"; + case "/icons/database.svg": + return "M144 270L144 341.4L237.8 400L402.3 400L496.1 341.4L496.1 270L416.1 320L224.1 320L144.1 270zM96 240L96 144L224 64L416 64L544 144L544 496L416 576L224 576L96 496L96 240zM496 192L496 170.6L402.2 112L237.7 112L143.9 170.6L143.9 213.4L237.7 272L402.2 272L496 213.4L496 192zM144 469.4L237.8 528L402.3 528L496.1 469.4L496.1 398L416.1 448L224.1 448L144.1 398L144.1 469.4z"; + case "/icons/bolt.svg": + return "M414.7 48L407.8 54.6L103.8 342.6L60.1 384L247.5 384L193.4 561L183.9 592L225.9 592L232.8 585.4L536.8 297.4L580.5 256L393.1 256L447.2 79L456.7 48L414.7 48zM180.5 336L374.7 152C345.5 247.7 330 298.3 328.3 304L460 304L265.8 488C295 392.4 310.5 341.7 312.2 336L180.4 336z"; + default: + return ""; + } + }; + + const pathData = getPathData(); + + return ( +
+ + {/* Base stroke - always visible, lights up white on card hover */} + + + + {/* Spotlight layer with mask */} +
+ + + +
+
+ ); +} diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/StudioSection.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/StudioSection.tsx index 5c59af7ed2..7dd335921e 100644 --- a/site/src/app/(v2)/(marketing)/(index)/sections/StudioSection.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/sections/StudioSection.tsx @@ -13,7 +13,7 @@ import { faEye, faFlask, faMagnifyingGlass, - faNetworkWired, + faNetworkWired, } from "@rivet-gg/icons"; export interface FeatureItem { @@ -29,7 +29,7 @@ interface FeatureProps { function Feature({ feature }: FeatureProps) { const title = feature.title || feature.name; - + return (
@@ -49,20 +49,23 @@ export function StudioSection() { description: "View and edit your actor state in real-time as messages are sent and processed", }, + { + name: "Event Monitoring", + icon: faChartLine, + description: + "See all events happening in your actor in real-time - track every state change and action as it happens", + }, { name: "REPL", icon: faTerminal, - description: "Debug your actor in real-time - call actions, subscribe to events, and interact directly with your code" + description: + "Debug your actor in real-time - call actions, subscribe to events, and interact directly with your code", }, { name: "Connection Inspection", icon: faNetworkWired, - description: "Monitor active connections with state and parameters for each client", - }, - { - name: "Hot Reload Code Changes", - icon: faCodeBranch, - description: "See code changes instantly without restarting - modify and test on the fly" + description: + "Monitor active connections with state and parameters for each client", }, ]; @@ -70,7 +73,8 @@ export function StudioSection() {
@@ -115,8 +123,12 @@ export function StudioSection() { {/* Watch Demo overlay that appears on hover */}
- - + + Watch Demo
@@ -136,7 +148,7 @@ export function StudioSection() { {/* Screenshot */}
{/* Screenshot wrapper */} -
{/* Studio screenshot with enhanced depth */} @@ -174,7 +187,7 @@ export function StudioSection() { > Rivet Studio dashboard {/* Gradient overlay */} -
-
); diff --git a/site/src/components/docs/Hosting.tsx b/site/src/components/docs/Hosting.tsx index a036a09cb1..a2c39fb489 100644 --- a/site/src/components/docs/Hosting.tsx +++ b/site/src/components/docs/Hosting.tsx @@ -19,9 +19,16 @@ export function Hosting() { Hosting Providers

- {hostingProviders.map(({ title, href }) => ( - - ))} + {hostingProviders + .filter((x) => !x.specializedPlatform) + .map(({ title, href, icon }) => ( + + ))} ); diff --git a/site/src/content/docs/actors/index.mdx b/site/src/content/docs/actors/index.mdx index 93556fb88f..f03d012718 100644 --- a/site/src/content/docs/actors/index.mdx +++ b/site/src/content/docs/actors/index.mdx @@ -1,4 +1,4 @@ -import { faCloudflare, faNodeJs, faReact, faSquareJs } from "@rivet-gg/icons"; +import { faCloudflare, faNodeJs, faReact, faNextjs } from "@rivet-gg/icons"; # Overview @@ -8,16 +8,16 @@ Actors for long-lived processes with durable state, realtime, and hibernate when - Set up actors with Node.js, Bun, and web frameworks + Set up Rivet with Node.js, Bun, and web frameworks - Build real-time React applications with actors + Set up Rivet with React - - Build server-rendered Next.js experiences backed by actors + + Set up Rivet with Next.js - Deploy actors on Cloudflare Workers with zero infrastructure + Set up Rivet with Cloudflare Workers diff --git a/site/src/content/docs/actors/quickstart/backend.mdx b/site/src/content/docs/actors/quickstart/backend.mdx index 6fc568839d..8d326ffaf7 100644 --- a/site/src/content/docs/actors/quickstart/backend.mdx +++ b/site/src/content/docs/actors/quickstart/backend.mdx @@ -23,12 +23,11 @@ import { actor, setup } from "rivetkit"; export const counter = actor({ state: { count: 0 }, actions: { - increment: (c, amount: number = 1) => { - c.state.count += amount; - c.broadcast("countChanged", c.state.count); + increment: (c, x: number) => { + c.state.count += x; + c.broadcast("newCount", c.state.count); return c.state.count; }, - getCount: (c) => c.state.count, }, }); @@ -194,24 +193,21 @@ See the [JavaScript client documentation](/docs/clients/javascript) for more inf ```tsx {{"title":"Counter.tsx"}} +import { createRivetKit } from "@rivetkit/react"; import { useState } from "react"; -import { createClient, createRivetKit } from "@rivetkit/react"; import type { registry } from "./registry"; -const client = createClient("http://localhost:8080"); -const { useActor } = createRivetKit(client); +const { useActor } = createRivetKit("http://localhost:8080"); function Counter() { const [count, setCount] = useState(0); - + const counter = useActor({ name: "counter", key: ["my-counter"] }); - counter.useEvent("countChanged", (newCount: number) => { - setCount(newCount); - }); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => { await counter.connection?.increment(1); diff --git a/site/src/content/docs/actors/quickstart/cloudflare-workers.mdx b/site/src/content/docs/actors/quickstart/cloudflare-workers.mdx index 06630102a7..9f8081bbdf 100644 --- a/site/src/content/docs/actors/quickstart/cloudflare-workers.mdx +++ b/site/src/content/docs/actors/quickstart/cloudflare-workers.mdx @@ -23,12 +23,11 @@ import { actor, setup } from "rivetkit"; export const counter = actor({ state: { count: 0 }, actions: { - increment: (c, amount: number = 1) => { - c.state.count += amount; - c.broadcast("countChanged", c.state.count); + increment: (c, x: number) => { + c.state.count += x; + c.broadcast("newCount", c.state.count); return c.state.count; }, - getCount: (c) => c.state.count, }, }); @@ -170,7 +169,7 @@ curl -X POST http://localhost:8787/increment/my-counter - + Deploy to Cloudflare's global edge network: @@ -180,6 +179,8 @@ wrangler deploy Your actors will now run on Cloudflare's edge with persistent state backed by Durable Objects. +See the [Cloudflare Workers deployment guide](/docs/deploy/cloudflare-workers) for detailed deployment instructions and configuration options. + @@ -229,12 +230,11 @@ See the [JavaScript client documentation](/docs/clients/javascript) for more inf ```tsx {{"title":"Counter.tsx"}} +import { createRivetKit } from "@rivetkit/react"; import { useState } from "react"; -import { createClient, createRivetKit } from "@rivetkit/react"; import type { registry } from "./registry"; -const client = createClient("https://your-app.workers.dev/rivet"); -const { useActor } = createRivetKit(client); +const { useActor } = createRivetKit("https://your-app.workers.dev/rivet"); function Counter() { const [count, setCount] = useState(0); @@ -244,9 +244,7 @@ function Counter() { key: ["my-counter"] }); - counter.useEvent("countChanged", (newCount: number) => { - setCount(newCount); - }); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => { await counter.connection?.increment(1); diff --git a/site/src/content/docs/actors/quickstart/index.mdx b/site/src/content/docs/actors/quickstart/index.mdx index a38d2ee56c..3a097ace9f 100644 --- a/site/src/content/docs/actors/quickstart/index.mdx +++ b/site/src/content/docs/actors/quickstart/index.mdx @@ -1,4 +1,4 @@ -import { faNodeJs, faReact } from "@rivet-gg/icons"; +import { faNodeJs, faReact, faNextjs, faCloudflare } from "@rivet-gg/icons"; # Quickstart @@ -9,5 +9,11 @@ import { faNodeJs, faReact } from "@rivet-gg/icons"; Build real-time React applications with actors + + Build server-rendered Next.js experiences backed by actors + + + Deploy actors on Cloudflare Workers with zero infrastructure + diff --git a/site/src/content/docs/actors/quickstart/next-js.mdx b/site/src/content/docs/actors/quickstart/next-js.mdx index 19c69fca29..a4c4b00880 100644 --- a/site/src/content/docs/actors/quickstart/next-js.mdx +++ b/site/src/content/docs/actors/quickstart/next-js.mdx @@ -23,7 +23,7 @@ cd my-app -Create a simple counter actor: +Create a file at `src/rivet/registry.ts` with a simple counter actor: ```ts {{"title":"src/rivet/registry.ts"}} import { actor, setup } from "rivetkit"; @@ -31,12 +31,11 @@ import { actor, setup } from "rivetkit"; export const counter = actor({ state: { count: 0 }, actions: { - increment: (c, amount: number = 1) => { - c.state.count += amount; - c.broadcast("countChanged", c.state.count); + increment: (c, x: number) => { + c.state.count += x; + c.broadcast("newCount", c.state.count); return c.state.count; }, - getCount: (c) => c.state.count, }, }); @@ -47,62 +46,46 @@ export const registry = setup({ - + -Create a RivetKit client to connect to your actor: - -```ts {{"title":"src/lib/rivet-client.ts"}} -"use client"; -import { createClient, createRivetKit } from "@rivetkit/next-js/client"; -import type { registry } from "@/rivet/registry"; - -const client = createClient({ - endpoint: `${window.location.origin}/api/rivet`, - transport: "sse", -}); - -export const { useActor } = createRivetKit(client); - -``` - -It's important to use SSE (Server-Sent Events) for real-time updates in Next.js. - - - - +Create a file at `src/app/api/rivet/[...all]/route.ts` to setup the API routes: ```ts {{"title":"src/app/api/rivet/[...all]/route.ts"}} import { toNextHandler } from "@rivetkit/next-js"; import { registry } from "@/rivet/registry"; -// Export the Next.js handler for the API routes -export const { GET, POST, HEAD, PATCH, OPTIONS } = toNextHandler(registry); +export const { GET, POST, PUT, PATCH, HEAD, OPTIONS } = toNextHandler(registry); ``` - + +Create a file at `src/components/Counter.tsx` to use the actor in a component: ```tsx {{"title":"src/components/Counter.tsx"}} "use client"; -import { useActor } from "@/lib/rivet-client"; + +import { createRivetKit } from "@rivetkit/next-js/client"; +import type { registry } from "@/rivet/registry"; import { useState } from "react"; +export const { useActor } = createRivetKit( + process.env.NEXT_RIVET_ENDPOINT ?? "http://localhost:3000/api/rivet", +); export function Counter() { + const [count, setCount] = useState(0); + const counter = useActor({ name: "counter", - key: ["test"], // Use a unique key for the actor instance + key: ["test"], }); - const [count, setCount] = useState(0); - counter.on("countChanged", (newCount) => { - setCount(newCount); - }); + counter.useEvent("newCount", (x: number) => setCount(x)); - const increment = () => { - counter.increment(); + const increment = async () => { + await counter.connection?.increment(1); }; return ( @@ -114,10 +97,20 @@ export function Counter() { } ``` -Make sure to import the `Counter` component in your page or layout. +Import the `Counter` component in your page or layout to use it. -For more examples how to connect to your actors using React, check the [RivetKit React documentation](http://rivet.dev/docs/clients/react/). +For more examples on connecting to your actors using React, check the [React documentation for RivetKit](/docs/clients/react). + + + + + +See the [Vercel deployment guide](/docs/deploy/vercel) for detailed instructions on deploying your RivetKit app to Vercel. + +## API Reference + +For detailed information about the Next.js client API, see the [React Client API Reference](/docs/clients/react). diff --git a/site/src/content/docs/actors/quickstart/react.mdx b/site/src/content/docs/actors/quickstart/react.mdx index a01ac89256..c2a3b7492c 100644 --- a/site/src/content/docs/actors/quickstart/react.mdx +++ b/site/src/content/docs/actors/quickstart/react.mdx @@ -21,15 +21,13 @@ Create your actor registry on the backend: import { actor, setup } from "rivetkit"; export const counter = actor({ - onAuth: () => {}, // Skip authentication (can be configured later) state: { count: 0 }, actions: { - increment: (c, amount: number = 1) => { - c.state.count += amount; - c.broadcast("countChanged", c.state.count); + increment: (c, x: number) => { + c.state.count += x; + c.broadcast("newCount", c.state.count); return c.state.count; }, - getCount: (c) => c.state.count, }, }); @@ -58,43 +56,33 @@ registry.start(); Set up your React application: ```tsx {{"title":"frontend/App.tsx"}} -import { useState } from "react"; import { createClient, createRivetKit } from "@rivetkit/react"; +import { useState } from "react"; import type { registry } from "../backend/registry"; -// Create typed client -const client = createClient("http://localhost:8080"); +const client = createClient(); const { useActor } = createRivetKit(client); function App() { const [count, setCount] = useState(0); - const [counterName, setCounterName] = useState("my-counter"); + const [counterName, setCounterName] = useState("test-counter"); - // Connect to the counter actor const counter = useActor({ name: "counter", key: [counterName], }); - // Listen for real-time count updates - counter.useEvent("countChanged", (newCount: number) => { - setCount(newCount); - }); + counter.useEvent("newCount", (x: number) => setCount(x)); const increment = async () => { - // Call actor action through the connection await counter.connection?.increment(1); }; - const incrementBy = async (amount: number) => { - await counter.connection?.increment(amount); - }; - return (

Rivet Counter

Count: {count}

- +
-
- - - -
+

Connection Status: {counter.isConnected ? "Connected" : "Disconnected"}

@@ -186,3 +164,7 @@ Add custom HTTP endpoints alongside your actors to handle additional business lo See [backend quickstart](/docs/actors/quickstart/backend) for more information. +## API Reference + +For detailed information about the React client API, see the [React Client API Reference](/docs/clients/react). + diff --git a/site/src/content/docs/clients/javascript.mdx b/site/src/content/docs/clients/javascript.mdx index c8417dd43c..602a15e7d2 100644 --- a/site/src/content/docs/clients/javascript.mdx +++ b/site/src/content/docs/clients/javascript.mdx @@ -5,52 +5,11 @@ import { InstallPackage } from "@/components/docs/InstallPackage"; The Rivet JavaScript client allows you to connect to and interact with actors from browser and Node.js applications. -## Basic Usage +## Getting Started - - -Install the RivetKit package: - - - - - - - Make sure you have a running Rivet actor server to connect to. You can follow the [Node.js & Bun Quickstart](https://rivet.dev/docs/actors/quickstart/backend/) to set up a simple actor server. - - -Create client and connect to actors and listen for real-time updates: - -```tsx {{"title":"index.ts"}} -import { createClient } from "rivetkit/client"; -import type { Registry } from "../src/registry"; - -async function main() { - const client = createClient( - process.env.ENDPOINT ?? "http://127.0.0.1:8080", - ); - - const counter = await client.counter.getOrCreate().connect(); - - counter.on("countChanged", (count: number) => console.log("Count changed:", count)); - - for (let i = 0; i < 5; i++) { - const out = await counter.increment(1); - console.log("Increment:", out); - - await new Promise((resolve) => setTimeout(resolve, 1000)); - } - - await new Promise((resolve) => setTimeout(resolve, 10000)); - await counter.dispose(); -} - -main(); - -``` - - +See the [backend quickstart guide](/docs/actors/quickstart/backend) for getting started. ## API Reference -Follows the same [API as the Node.js client](http://rivet.dev/docs/actors/clients/#actor-client), allowing you to use the same methods and properties for interacting with actors. \ No newline at end of file +See the [RivetKit client API](http://rivet.dev/docs/actors/clients/#actor-client). + diff --git a/site/src/content/docs/clients/next-js.mdx b/site/src/content/docs/clients/next-js.mdx index 1ca3ab6fbe..202823da1f 100644 --- a/site/src/content/docs/clients/next-js.mdx +++ b/site/src/content/docs/clients/next-js.mdx @@ -14,81 +14,10 @@ The Rivet Next.js client allows you to connect to and interact with actors in Ne -## Basic Usage +## Getting Started - - - - -Install the RivetKit React package: - - - - - - - - - Follow the [Next.js backend integration guide](https://rivet.dev/docs/integrations/next-js/) to set up your Next.js backend with Rivet. - - -Create a RivetKit client to connect to your actor: - -```ts {{"title":"src/lib/rivet-client.ts"}} -"use client"; -import { createClient, createRivetKit } from "@rivetkit/next-js/client"; -import type { registry } from "@/rivet/registry"; - -const client = createClient({ - endpoint: `${window.location.origin}/api/rivet`, - transport: "sse", -}); - -export const { useActor } = createRivetKit(client); - -``` - -It's important to use SSE (Server-Sent Events) for real-time updates in Next.js. - - - - - -Connect to actors and listen for real-time updates: -```tsx {{"title":"src/components/Counter.tsx"}} -"use client"; -import { useActor } from "@/lib/rivet-client"; -import { useState } from "react"; - - -export function Counter() { - const counter = useActor({ - name: "counter", - key: ["test"], // Use a unique key for the actor instance - }); - const [count, setCount] = useState(0); - - counter.on("countChanged", (newCount) => { - setCount(newCount); - }); - - const increment = () => { - counter.increment(); - }; - - return ( -
-

Count: {count}

- -
- ); -} -``` - -Make sure to import the `Counter` component in your page or layout. -
-
+See the [Next.js quickstart guide](/docs/actors/quickstart/next-js) for getting started. ## API Reference -It's the same as the [React client API reference](https://rivet.dev/docs/clients/react#api-reference), since the RivetKit React package is used in both Next.js and React applications. \ No newline at end of file +It's the same as the [React client API reference](https://rivet.dev/docs/clients/react#api-reference), since the RivetKit React package is used in both Next.js and React applications. diff --git a/site/src/content/docs/clients/openapi.mdx b/site/src/content/docs/clients/openapi.mdx index b4a67c9d63..21e25d4295 100644 --- a/site/src/content/docs/clients/openapi.mdx +++ b/site/src/content/docs/clients/openapi.mdx @@ -1,3 +1,6 @@ # OpenAPI The Rivet OpenAPI spec is available [here](https://github.com/rivet-dev/rivetkit/blob/main/clients/openapi/openapi.json) + +The OpenAPI spec currently only exposes creating & managing actors. It does not expose how to communicate with actors. See the [HTTP client implementation](https://github.com/rivet-dev/rivetkit/blob/b5072fdac18d90a27bb6cd36e9ee73b00d36d42c/packages/rivetkit/src/client/actor-handle.ts) for reference. + diff --git a/site/src/content/docs/clients/react.mdx b/site/src/content/docs/clients/react.mdx index 56fa27b470..4f8fbd9dba 100644 --- a/site/src/content/docs/clients/react.mdx +++ b/site/src/content/docs/clients/react.mdx @@ -4,80 +4,9 @@ import { InstallPackage } from "@/components/docs/InstallPackage"; Learn how to create real-time, stateful React applications with Rivet's actor model. The React integration provides intuitive hooks for managing actor connections and real-time updates. -## Basic Usage +## Getting Started - - - - -Install the RivetKit React package: - - - - - - - - Make sure you have a running Rivet actor server to connect to. You can follow the [Node.js & Bun Quickstart](https://rivet.dev/docs/actors/quickstart/backend/) to set up a simple actor server. - - -Connect to actors and listen for real-time updates: - -```tsx {{"title":"frontend/App.tsx"}} -import { useState } from "react"; -import { useActor } from "./rivetkit"; - -function App() { - const [count, setCount] = useState(0); - const [counterName, setCounterName] = useState("my-counter"); - - // Connect to the counter actor - const counter = useActor({ - name: "counter", - key: [counterName], - }); - - // Listen for real-time count updates - counter.useEvent("countChanged", (newCount: number) => { - setCount(newCount); - }); - - const increment = async () => { - await counter.connection?.increment(1); - }; - - return ( -
-

Rivet Counter

-

Count: {count}

- -
- -
- - - -
-

Status: {counter.isConnected ? "Connected" : "Disconnected"}

-
-
- ); -} - -export default App; -``` -
-
+See the [React quickstart guide](/docs/actors/quickstart/react) for getting started. ## API Reference @@ -87,8 +16,9 @@ Creates the Rivet hooks for React integration. ```tsx import { createClient, createRivetKit } from "@rivetkit/react"; +import type { registry } from "./backend/registry"; -const client = createClient("http://localhost:8080"); +const client = createClient(); const { useActor } = createRivetKit(client); ``` @@ -124,7 +54,6 @@ const actor = useActor({ - `createWithInput`: Optional input to pass to the actor on creation - `createInRegion`: Optional region to create the actor in if does not exist - `enabled`: Optional boolean to conditionally enable/disable the connection (default: true) - - `enabled`: Optional boolean to conditionally enable/disable the connection (default: true) #### Returns @@ -141,8 +70,8 @@ Subscribe to events emitted by the actor. ```tsx const actor = useActor({ name: "counter", key: ["my-counter"] }); -actor.useEvent("countChanged", (newCount: number) => { - console.log("Count changed:", newCount); +actor.useEvent("newCount", (count: number) => { + console.log("Count changed:", count); }); ``` diff --git a/site/src/content/docs/clients/rust.mdx b/site/src/content/docs/clients/rust.mdx index e2448ca790..f48c76e959 100644 --- a/site/src/content/docs/clients/rust.mdx +++ b/site/src/content/docs/clients/rust.mdx @@ -79,6 +79,4 @@ The Rivet Rust client provides a way to connect to and interact with actors from ## API Reference -_Coming Soon_ - For detailed API documentation, please refer to the [RivetKit Rust client implementation](https://github.com/rivet-dev/rivetkit/blob/main/clients/rust). diff --git a/site/src/content/docs/deploy/cloudflare-workers.mdx b/site/src/content/docs/deploy/cloudflare-workers.mdx index af7b5eea83..0d9cc61df0 100644 --- a/site/src/content/docs/deploy/cloudflare-workers.mdx +++ b/site/src/content/docs/deploy/cloudflare-workers.mdx @@ -1,159 +1,60 @@ +import { faGithub } from "@rivet-gg/icons"; + # Deploying to Cloudflare Workers -# -Run Rivet Actors on Cloudflare Workers with Durable Objects. If you still need a sample app, walk through the [Cloudflare Workers Quickstart](/docs/actors/quickstart/cloudflare-workers) first. + +Deploy your Cloudflare Workers + RivetKit app to [Cloudflare Workers](https://workers.cloudflare.com/). + + + +Complete example Cloudflare Workers + RivetKit app. + + + +## Guide - [Cloudflare account](https://dash.cloudflare.com/) with Durable Objects enabled - [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/install-and-update/) v3 -- RivetKit project (or use the [Quickstart](/docs/actors/quickstart/cloudflare-workers)) +- Access to the [Rivet Cloud](https://dashboard.rivet.dev/) or a self-hosted [Rivet Engine](/docs/general/self-hosting) +- A Cloudflare Worker app integrated with RivetKit + - See the [Cloudflare Workers quickstart](/docs/actors/quickstart/cloudflare-workers/) or [Cloudflare Workers example](https://github.com/rivet-dev/rivetkit/tree/main/examples/cloudflare-workers) to get started - - -Install the Cloudflare Worker driver alongside RivetKit: + +Your project should have the following files: -```sh -npm install rivetkit @rivetkit/cloudflare-workers -``` +- `src/index.ts` (or similar entry point with `createHandler`) +- `src/registry.ts` (or similar actor registry file) +- `wrangler.json` with proper Durable Objects and KV namespace configuration +If your project is not integrated with RivetKit yet, follow the [Cloudflare Workers quickstart guide](/docs/actors/quickstart/cloudflare-workers/) or see the [Cloudflare Workers example](https://github.com/rivet-dev/rivetkit/tree/main/examples/cloudflare-workers). - - -Wire your actors into a Cloudflare Worker using the same setup as the quickstart: - -```ts {{"title":"registry.ts"}} -import { actor, setup } from "rivetkit"; - -export const counter = actor({ - state: { count: 0 }, - actions: { - increment: (c, amount: number = 1) => { - c.state.count += amount; - c.broadcast("countChanged", c.state.count); - return c.state.count; - }, - getCount: (c) => c.state.count, - }, -}); - -export const registry = setup({ - use: { counter }, -}); -``` - - - -```ts {{"title":"index.ts (Hono)"}} -import { createHandler, type Client } from "@rivetkit/cloudflare-workers"; -import { Hono } from "hono"; -import { registry } from "./registry"; - -const app = new Hono<{ Bindings: { RIVET: Client } }>(); - -app.post("/increment/:name", async (c) => { - const client = c.env.RIVET; - const name = c.req.param("name"); - - // Get or create actor and call action - const counter = client.counter.getOrCreate(name); - const newCount = await counter.increment(1); - - return c.json({ count: newCount }); -}); - -const { handler, ActorHandler } = createHandler(registry, { fetch: app.fetch }); -export { handler as default, ActorHandler }; -``` - -```ts {{"title":"index.ts (No Router)"}} -import { createHandler } from "@rivetkit/cloudflare-workers"; -import { registry } from "./registry"; - -const { handler, ActorHandler } = createHandler(registry, { - fetch: async (request, env, ctx) => { - const url = new URL(request.url); - - if (url.pathname.startsWith("/increment/")) { - const name = url.pathname.split("/")[2]; - const client = env.RIVET; + - const counter = client.counter.getOrCreate(name); - const newCount = await counter.increment(1); +Deploy to Cloudflare's global network: - return new Response(JSON.stringify({ count: newCount }), { - headers: { "Content-Type": "application/json" }, - }); - } - - return new Response("Not Found", { status: 404 }); - } -}); - -export { handler as default, ActorHandler }; -``` - - - -Configure Durable Objects and KV namespaces in `wrangler.json` (same as the quickstart): - -```json {{"title":"wrangler.json"}} -{ - "name": "my-rivetkit-worker", - "main": "src/index.ts", - "compatibility_date": "2025-01-20", - "compatibility_flags": ["nodejs_compat"], - "migrations": [ - { - "tag": "v1", - "new_classes": ["ActorHandler"] - } - ], - "durable_objects": { - "bindings": [ - { - "name": "ACTOR_DO", - "class_name": "ActorHandler" - } - ] - }, - "kv_namespaces": [ - { - "binding": "ACTOR_KV", - "id": "your_namespace_id" - } - ] -} +```sh +wrangler deploy ``` -Configuration requirements: +Your worker will be deployed and you'll receive a URL like `https://my-rivetkit-worker.workers.dev`. -- `ACTOR_DO` durable object binding for actor persistence -- `ACTOR_KV` KV namespace binding for metadata storage -- `nodejs_compat` compatibility flag -- Migration entry defining the `ActorHandler` class +More information on deployments is available in [Cloudflare's docs](https://developers.cloudflare.com/workers/wrangler/commands/#deploy). - - -Start the worker locally: + -```sh -wrangler dev -``` +After running `wrangler deploy`, note the URL printed in the output (e.g., `https://my-rivetkit-worker.workers.dev`). -Call your actor at `http://localhost:8787/increment/my-counter`. +Your RivetKit endpoint will be available at this URL with `/rivet` appended: +- Example: `https://my-rivetkit-worker.workers.dev/rivet` -When you're ready, deploy to Cloudflare's network: - -```sh -wrangler deploy -``` - -Durable Objects back your actor state globally, and the Rivet endpoint is automatically mounted at `/rivet`. +Use this endpoint URL when configuring your RivetKit client or connecting from the Rivet dashboard. + ## Advanced diff --git a/site/src/content/docs/deploy/vercel.mdx b/site/src/content/docs/deploy/vercel.mdx index b41e3e6b2d..ebab2bc04e 100644 --- a/site/src/content/docs/deploy/vercel.mdx +++ b/site/src/content/docs/deploy/vercel.mdx @@ -63,11 +63,10 @@ More information on deployments are available in [Vercel's docs](https://vercel. -1. Visit the Rivet dashboard +1. Visit the [Rivet dashboard](https://dashboard.rivet.dev) 2. Navigate to _Connect > Vercel_ 3. Skip to the _Deploy to Vercel_ step 4. Input your deployed Vercel site URL (e.g. `https://my-app.vercel.app/api/rivet`) - - **Important**: Make sure to include the path `/api/rivet` 5. Once it shows as successfully connected, click _Done_ Your Vercel Functions deployment is now connected to Rivet. diff --git a/site/src/content/docs/index.mdx b/site/src/content/docs/index.mdx index 344354a167..3163386bfd 100644 --- a/site/src/content/docs/index.mdx +++ b/site/src/content/docs/index.mdx @@ -1,28 +1,14 @@ import { integrationGroups } from "@/data/integrations/shared"; import { deployOptions } from "@/data/deploy-options"; +import { useCases } from "@/data/use-cases"; import { - faNodeJs, - faReact, faActorsBorderless, - faRobot, - faWaveSine, - faServer, - faDatabase, - faGaugeHigh, - faMessage, } from "@rivet-gg/icons"; # Overview Rivet is a library for long-lived processes with durable state, realtime, and scalability. It is easily self-hostable and works with your infrastructure. -## Features - -- **Stateful Workloads**: Keep memory between operations & run complex logic that requires stateful processes -- **Realtime**: Powered by WebSockets or SSE without the complexity -- **Elastic Scalability**: Scale from zero to millions without cold starts -- **Multi-Region Durable Storage**: Keep state & operations near your users or comply with data soveirgnty - ## Libraries @@ -40,24 +26,16 @@ Rivet is a library for long-lived processes with durable state, realtime, and sc ## Use Cases - - Deploy assistants that reason and act with durable memory - - - Sync state instantly over WebSockets or SSE - - - Run long-lived services with automatic failover - - - Isolate customer data with multi-tenant storage - - - Throttle requests using stateful counters per client - - - Build chat and workflow bots with actor logic - +{useCases.map((useCase) => ( + + {useCase.description} + +))} ## Deploy Options diff --git a/site/src/content/docs/integrations/better-auth.mdx b/site/src/content/docs/integrations/better-auth.mdx index bf44ada189..b6c9c99a2d 100644 --- a/site/src/content/docs/integrations/better-auth.mdx +++ b/site/src/content/docs/integrations/better-auth.mdx @@ -257,13 +257,11 @@ Use authenticated sessions with Rivet: ```tsx // ChatRoom.tsx import React, { useState } from "react"; -import { createClient } from "@rivetkit/client"; import { createRivetKit } from "@rivetkit/react"; import { authClient } from "./auth-client"; import type { registry } from "../backend/registry"; -const client = createClient("http://localhost:8080"); -const { useActor } = createRivetKit(client); +const { useActor } = createRivetKit("http://localhost:8080"); interface ChatRoomProps { session: { user: { id: string; name: string } }; diff --git a/site/src/content/docs/use-cases/ai-agent.mdx b/site/src/content/docs/use-cases/ai-agent.mdx new file mode 100644 index 0000000000..f22f3de324 --- /dev/null +++ b/site/src/content/docs/use-cases/ai-agent.mdx @@ -0,0 +1,51 @@ +# AI Agents + +## Challenges of Building AI Agents + +Common tools: LangChain, OpenAI SDK, custom state management systems, Redis for memory storage + +Main pain points: +- Managing conversation history and agent memory across sessions requires external databases +- Keeping context and state synchronized while handling multiple concurrent conversations +- High latency from database round trips to fetch conversation history +- Complex infrastructure for realtime streaming responses to users +- Handling tool calls and maintaining agent state during long-running operations + +## How Rivet Solves This + +Rivet makes building stateful AI agents simple by providing durable actors that keep conversation history and agent state in memory without external databases. + +**Persistent Memory**: Each agent actor maintains its own state including conversation history, tool results, and context. State survives restarts and deployments automatically. + +```typescript +const aiAgent = actor({ + state: { + messages: [] as Array<{role: string, content: string}>, + context: {} + }, + + actions: { + chat: async (c, userMessage: string) => { + c.state.messages.push({ role: "user", content: userMessage }); + + const response = await callLLM(c.state.messages); + c.state.messages.push({ role: "assistant", content: response }); + + c.broadcast("message", { role: "assistant", content: response }); + return response; + } + } +}); +``` + +**Realtime Streaming**: Use WebSocket connections to stream LLM responses in realtime without additional infrastructure. Learn more about [events](/docs/actors/events). + +**Tool Integration**: Execute tool calls within the actor context while maintaining state consistency. See [actions](/docs/actors/actions) for more details. + +**No Cold Starts**: Agents hibernate when idle and wake instantly when needed, keeping conversation context ready without paying for idle time. Read about [actor lifecycle](/docs/actors/lifecycle). + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/ai-agents.mdx b/site/src/content/docs/use-cases/ai-agents.mdx deleted file mode 100644 index 68d6a4efa2..0000000000 --- a/site/src/content/docs/use-cases/ai-agents.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# AI Agents - -Build durable assistants that keep memory between conversations, call tools, and react instantly to user input. - -**Examples** -- [AI Agent Starter](https://github.com/rivet-dev/rivetkit/tree/main/examples/ai-agent) diff --git a/site/src/content/docs/use-cases/background-jobs.mdx b/site/src/content/docs/use-cases/background-jobs.mdx new file mode 100644 index 0000000000..11a9f3e3e6 --- /dev/null +++ b/site/src/content/docs/use-cases/background-jobs.mdx @@ -0,0 +1,77 @@ +# Background Jobs + +## Challenges of Building Background Job Systems + +Common tools: Celery, Bull, Sidekiq, AWS SQS, RabbitMQ, Redis queues, cron jobs + +Main pain points: +- Managing separate job queue infrastructure and worker processes +- Tracking job state and results across distributed systems +- Handling job retries, failures, and dead letter queues +- Coordinating scheduled and recurring jobs with cron syntax +- Persisting job state and intermediate results during long-running tasks + +## How Rivet Solves This + +Rivet actors provide built-in job scheduling and execution with automatic state persistence and no external queue infrastructure. + +**Self-Contained Job Execution**: Each actor can schedule and execute background tasks with full access to its persistent state. + +```typescript +const jobProcessor = actor({ + state: { + jobs: {} as Record, + queue: [] as string[] + }, + + actions: { + enqueueJob: (c, jobId: string, delay?: number) => { + c.state.jobs[jobId] = { status: "pending" }; + c.state.queue.push(jobId); + + if (delay) { + c.schedule.after(delay, "processJob", jobId); + } else { + c.schedule.immediate("processJob", jobId); + } + + return jobId; + }, + + processJob: async (c, jobId: string) => { + c.state.jobs[jobId].status = "running"; + c.broadcast("jobUpdate", { jobId, status: "running" }); + + try { + const result = await performWork(jobId); + c.state.jobs[jobId] = { status: "completed", result }; + c.broadcast("jobUpdate", { jobId, status: "completed", result }); + } catch (error) { + c.state.jobs[jobId] = { + status: "failed", + error: error.message + }; + c.broadcast("jobUpdate", { jobId, status: "failed", error: error.message }); + } + } + } +}); +``` + +**Built-in Scheduling**: Schedule delayed and recurring jobs using [scheduled actions](/docs/actors/schedule) without cron or external schedulers. + +**Durable State**: Job state persists automatically, surviving restarts and failures. See [state management](/docs/actors/state). + +**Realtime Progress**: Stream job progress and results to clients using [events](/docs/actors/events). + +**No Queue Infrastructure**: Execute jobs directly within actors without Redis, RabbitMQ, or other message queues. + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/bots.mdx b/site/src/content/docs/use-cases/bots.mdx index 4050a882a8..ae35c02439 100644 --- a/site/src/content/docs/use-cases/bots.mdx +++ b/site/src/content/docs/use-cases/bots.mdx @@ -1,7 +1,51 @@ # Bots -Run bots for Slack, Discord, or autonomous agents that need persistent workers listening, responding, and executing background tasks. +## Challenges of Building Bots -**Examples** -- [AI Agent Starter](https://github.com/rivet-dev/rivetkit/tree/main/examples/ai-agent) -- [Realtime Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) +Common tools: Discord.js, Slack Bolt, Telegraf, traditional web servers with databases, message queues + +Main pain points: +- Managing bot state and conversation context across sessions requires external storage +- Handling concurrent conversations with multiple users while maintaining per-user state +- Keeping bots online 24/7 on traditional servers is expensive +- Complex infrastructure for event-driven responses and background tasks +- Difficulty maintaining WebSocket connections to chat platforms reliably + +## How Rivet Solves This + +Rivet provides long-lived actors that maintain persistent connections and state for chat bots without managing infrastructure. + +**Always-On Bot Instances**: Each bot actor stays alive with persistent state, maintaining connections to chat platforms like Discord, Slack, or Telegram. Actors hibernate when idle but wake instantly when messages arrive. + +```typescript +const discordBot = actor({ + state: { + channelData: {} as Record, + userPreferences: {} as Record + }, + + actions: { + handleMessage: async (c, userId: string, message: string) => { + // Process message with full context + const response = await processCommand(message, c.state.userPreferences[userId]); + + // Update state + c.state.channelData[userId] = { lastMessage: message, timestamp: Date.now() }; + + return response; + } + } +}); +``` + +**Persistent State**: Bot memory, user preferences, and conversation history persist automatically without external databases. See [state management](/docs/actors/state). + +**Background Tasks**: Use [scheduled actions](/docs/actors/schedule) to run periodic tasks like reminders, notifications, or cleanup jobs. + +**Realtime Events**: Send and receive messages in realtime using WebSocket connections. Learn more about [events](/docs/actors/events). + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/crdt.mdx b/site/src/content/docs/use-cases/crdt.mdx new file mode 100644 index 0000000000..e74ae85abd --- /dev/null +++ b/site/src/content/docs/use-cases/crdt.mdx @@ -0,0 +1,55 @@ +# Realtime Docs + +## Challenges of Building Realtime Collaborative Documents + +Common tools: Yjs, Automerge, operational transforms, WebSocket servers, Redis for pub/sub, database for persistence + +Main pain points: +- Coordinating realtime updates across multiple users requires complex pub/sub infrastructure +- Persisting document state and CRDT data structures to databases adds latency +- Managing conflict resolution and synchronization logic is complex +- Scaling WebSocket connections and state management across servers +- Handling offline users and reconnection scenarios + +## How Rivet Solves This + +Rivet provides actors that maintain CRDT document state in memory and broadcast updates in realtime without external infrastructure. + +**In-Memory CRDTs**: Store Yjs or Automerge documents directly in actor state for ultra-fast reads and writes with zero database latency. + +```typescript +import * as Y from "yjs"; + +const collaborativeDoc = actor({ + state: { + ydoc: new Uint8Array(), // Yjs document state + connectedUsers: [] as string[] + }, + + actions: { + applyUpdate: (c, update: Uint8Array, userId: string) => { + // Apply Yjs update to document + const doc = new Y.Doc(); + Y.applyUpdate(doc, c.state.ydoc); + Y.applyUpdate(doc, update); + + c.state.ydoc = Y.encodeStateAsUpdate(doc); + + // Broadcast to all connected users + c.broadcast("docUpdate", { update, userId }); + } + } +}); +``` + +**Built-in Realtime**: WebSocket connections are built into actors, eliminating the need for separate pub/sub systems. See [events](/docs/actors/events). + +**Automatic Persistence**: Document state persists automatically without database round trips. Learn about [state management](/docs/actors/state). + +**Multi-User Support**: Track connected users and their cursor positions using [connection state](/docs/actors/connections). + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/database.mdx b/site/src/content/docs/use-cases/database.mdx new file mode 100644 index 0000000000..1674c448e9 --- /dev/null +++ b/site/src/content/docs/use-cases/database.mdx @@ -0,0 +1,61 @@ +# Per-User Database + +## Challenges of Building Per-User Databases + +Common tools: PostgreSQL with row-level security, MongoDB with tenant isolation, SQLite per-user files, DynamoDB with partition keys + +Main pain points: +- High latency from database round trips for every read/write operation +- Complex query patterns to ensure tenant isolation and prevent data leaks +- Scaling challenges when users have large datasets +- Managing database connections and connection pooling per-tenant +- Expensive database operations for simple key-value access patterns + +## How Rivet Solves This + +Rivet actors provide isolated in-memory databases for each user with automatic persistence and zero-latency access. + +**Isolated User State**: Each user gets their own actor with completely isolated state, eliminating tenant isolation concerns. + +```typescript +const userDatabase = actor({ + state: { + documents: {} as Record, + settings: {}, + metadata: { createdAt: 0, lastAccess: 0 } + }, + + actions: { + set: (c, key: string, value: any) => { + c.state.documents[key] = value; + c.state.metadata.lastAccess = Date.now(); + return value; + }, + + get: (c, key: string) => { + c.state.metadata.lastAccess = Date.now(); + return c.state.documents[key]; + }, + + query: (c, filter: (doc: any) => boolean) => { + return Object.entries(c.state.documents) + .filter(([_, doc]) => filter(doc)) + .map(([key, doc]) => ({ key, ...doc })); + } + } +}); +``` + +**Zero-Latency Reads**: State lives in memory on the same machine as compute, making reads instant with no database round trips. See [state management](/docs/actors/state). + +**Automatic Persistence**: Data persists automatically without manual save operations or database drivers. + +**Built-in SQLite Support**: Use SQLite databases within actors for relational data. See [external SQL](/docs/actors/external-sql) for integration with traditional databases. + +**Realtime Updates**: Broadcast data changes to connected clients using [events](/docs/actors/events). + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/durable-compute.mdx b/site/src/content/docs/use-cases/durable-compute.mdx deleted file mode 100644 index c7cd2f79d3..0000000000 --- a/site/src/content/docs/use-cases/durable-compute.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Durable Compute - -Run long-lived workloads that survive restarts, keep state close to users, and recover automatically when nodes shift. - -**Examples** -- [Sync Offline Data](https://github.com/rivet-dev/rivetkit/tree/main/examples/sync) -- [Tenant Isolation](https://github.com/rivet-dev/rivetkit/tree/main/examples/tenant) -- [Realtime Counter](https://github.com/rivet-dev/rivetkit/tree/main/examples/counter) -- [Realtime Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) -- [Collaborative CRDT Docs](https://github.com/rivet-dev/rivetkit/tree/main/examples/crdt) -- [Multiplayer Game State](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) diff --git a/site/src/content/docs/use-cases/game.mdx b/site/src/content/docs/use-cases/game.mdx new file mode 100644 index 0000000000..dadeb02047 --- /dev/null +++ b/site/src/content/docs/use-cases/game.mdx @@ -0,0 +1,65 @@ +# Multiplayer Game + +## Challenges of Building Multiplayer Games + +Common tools: Unity Netcode, Photon, Colyseus, custom WebSocket servers, Redis for state, game server hosting + +Main pain points: +- Managing game state synchronization across multiple players with low latency +- Handling player connections, disconnections, and reconnections gracefully +- Scaling game servers and matchmaking infrastructure +- Persisting game state between sessions +- Complex networking code for state replication and conflict resolution + +## How Rivet Solves This + +Rivet actors provide authoritative game servers with built-in state management and realtime networking. + +**Authoritative Game State**: Each game room runs in its own actor with server-authoritative state management. + +```typescript +const gameRoom = actor({ + state: { + players: {} as Record, + gameState: "waiting" as "waiting" | "playing" | "ended", + startTime: 0 + }, + + createConnState: (c, opts, params: { playerId: string }) => ({ + playerId: params.playerId + }), + + actions: { + movePlayer: (c, x: number, y: number) => { + const playerId = c.conn.state.playerId; + if (c.state.players[playerId]) { + c.state.players[playerId].x = x; + c.state.players[playerId].y = y; + + // Broadcast position to all other players + c.broadcast("playerMoved", { playerId, x, y }); + } + }, + + startGame: (c) => { + c.state.gameState = "playing"; + c.state.startTime = Date.now(); + c.broadcast("gameStarted", { startTime: c.state.startTime }); + } + } +}); +``` + +**Low-Latency Updates**: Broadcast game state changes in realtime using WebSockets with built-in [events](/docs/actors/events). + +**State Persistence**: Game state persists automatically, allowing players to rejoin games after disconnections. Learn about [state management](/docs/actors/state). + +**Connection Tracking**: Track connected players and handle disconnections gracefully using [connections](/docs/actors/connections). + +**Tick-Based Updates**: Use [scheduled actions](/docs/actors/schedule) for fixed-rate game loops and physics updates. + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/per-tenant-databases.mdx b/site/src/content/docs/use-cases/per-tenant-databases.mdx deleted file mode 100644 index a6c2b32a45..0000000000 --- a/site/src/content/docs/use-cases/per-tenant-databases.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Per-Tenant Databases - -Provision isolated storage per customer while sharing infrastructure, keeping noisy neighbours separated and compliant. - -**Examples** -- [Tenant Isolation](https://github.com/rivet-dev/rivetkit/tree/main/examples/tenant) -- [SQLite Sharding](https://github.com/rivet-dev/rivetkit/tree/main/examples/database) diff --git a/site/src/content/docs/use-cases/rate-limiting.mdx b/site/src/content/docs/use-cases/rate-limiting.mdx deleted file mode 100644 index 629a6c2c90..0000000000 --- a/site/src/content/docs/use-cases/rate-limiting.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Rate Limiting - -Throttle abusive clients with actors that track counters, rolling windows, and quotas without sharing mutable state. - -**Examples** -- [Stateful Rate Limiter](https://github.com/rivet-dev/rivetkit/tree/main/examples/rate) diff --git a/site/src/content/docs/use-cases/rate.mdx b/site/src/content/docs/use-cases/rate.mdx new file mode 100644 index 0000000000..08b090a814 --- /dev/null +++ b/site/src/content/docs/use-cases/rate.mdx @@ -0,0 +1,85 @@ +# Rate Limiting + +## Challenges of Building Rate Limiting + +Common tools: Redis with sliding windows, token bucket algorithms, NGINX rate limiting, Kong, custom middleware + +Main pain points: +- Coordinating rate limits across distributed servers requires shared state +- High latency from Redis lookups on every request +- Complex sliding window or token bucket implementations +- Handling rate limit resets and per-user quotas +- Managing rate limit state for millions of users + +## How Rivet Solves This + +Rivet actors provide low-latency distributed rate limiting with in-memory counters and automatic persistence. + +**Per-User Rate Limiting**: Each user gets their own actor to track request counts and enforce limits with zero-latency access. + +```typescript +const rateLimiter = actor({ + state: { + requests: [] as number[], // timestamps + limit: 100, + windowMs: 60000 // 1 minute + }, + + actions: { + checkLimit: (c) => { + const now = Date.now(); + const windowStart = now - c.state.windowMs; + + // Remove old requests outside the window + c.state.requests = c.state.requests.filter(ts => ts > windowStart); + + if (c.state.requests.length >= c.state.limit) { + const oldestRequest = c.state.requests[0]; + const resetAt = oldestRequest + c.state.windowMs; + return { + allowed: false, + remaining: 0, + resetAt + }; + } + + // Add new request + c.state.requests.push(now); + + return { + allowed: true, + remaining: c.state.limit - c.state.requests.length, + resetAt: now + c.state.windowMs + }; + }, + + getStatus: (c) => { + const now = Date.now(); + const windowStart = now - c.state.windowMs; + const currentRequests = c.state.requests.filter(ts => ts > windowStart); + + return { + remaining: c.state.limit - currentRequests.length, + limit: c.state.limit, + windowMs: c.state.windowMs + }; + } + } +}); +``` + +**Zero-Latency Checks**: Rate limit counters live in memory, eliminating Redis round trips for every request. + +**Automatic Persistence**: Counter state persists automatically without manual Redis operations. See [state management](/docs/actors/state). + +**Flexible Algorithms**: Implement sliding windows, token buckets, or custom rate limiting logic directly in actor code. + +**Per-User Isolation**: Each user's rate limit is isolated in their own actor, providing natural horizontal scaling. + +**Realtime Notifications**: Send rate limit warnings to users via [events](/docs/actors/events). + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/realtime.mdx b/site/src/content/docs/use-cases/realtime.mdx deleted file mode 100644 index b593dcb58f..0000000000 --- a/site/src/content/docs/use-cases/realtime.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Realtime - -Deliver sub-second updates with actors that push changes over WebSockets or SSE without juggling infrastructure. - -**Examples** -- [Chat Room](https://github.com/rivet-dev/rivetkit/tree/main/examples/chat-room) -- [Multiplayer Game State](https://github.com/rivet-dev/rivetkit/tree/main/examples/game) -- [Stream Processing](https://github.com/rivet-dev/rivetkit/tree/main/examples/stream) -- [Sync Offline Data](https://github.com/rivet-dev/rivetkit/tree/main/examples/sync) diff --git a/site/src/content/docs/use-cases/sync.mdx b/site/src/content/docs/use-cases/sync.mdx new file mode 100644 index 0000000000..4e38c632c4 --- /dev/null +++ b/site/src/content/docs/use-cases/sync.mdx @@ -0,0 +1,68 @@ +# Local-First Sync + +## Challenges of Building Local-First Sync + +Common tools: ElectricSQL, PowerSync, custom sync protocols, CRDTs, WebSockets, PostgreSQL logical replication + +Main pain points: +- Complex conflict resolution when syncing offline changes to server +- Managing sync state and tracking changes across devices +- Handling partial syncs and large datasets efficiently +- Infrastructure for WebSocket connections and pub/sub for realtime updates +- Coordinating between client-side databases and server-side storage + +## How Rivet Solves This + +Rivet actors provide stateful sync coordination with built-in realtime updates and automatic persistence. + +**Per-User Sync Actors**: Each user gets a dedicated actor to manage their sync state and coordinate updates across devices. + +```typescript +const userSync = actor({ + state: { + syncedData: {} as Record, + lastSyncTimestamp: 0, + deviceStates: {} as Record + }, + + actions: { + sync: (c, deviceId: string, changes: any[], clientVersion: number) => { + // Merge changes with conflict resolution + const merged = mergeChanges(c.state.syncedData, changes, clientVersion); + c.state.syncedData = merged.data; + c.state.lastSyncTimestamp = Date.now(); + c.state.deviceStates[deviceId] = { + lastSeen: Date.now(), + version: clientVersion + }; + + // Broadcast to other devices + for (const conn of c.conns) { + if (conn.state.deviceId !== deviceId) { + conn.send("syncUpdate", { changes: merged.newChanges }); + } + } + + return { data: merged.data, version: merged.version }; + } + }, + + createConnState: (c, opts, params: { deviceId: string }) => ({ + deviceId: params.deviceId + }) +}); +``` + +**Automatic State Persistence**: Sync state persists automatically without external databases. See [state management](/docs/actors/state). + +**Realtime Cross-Device Sync**: Broadcast updates to all connected devices instantly using [events](/docs/actors/events). + +**Connection Tracking**: Monitor online/offline devices using [connection state](/docs/actors/connections). + +**Conflict Resolution**: Implement custom merge strategies directly in actor logic with full access to state history. + +## Full Example Projects + + + + diff --git a/site/src/content/docs/use-cases/workflows.mdx b/site/src/content/docs/use-cases/workflows.mdx new file mode 100644 index 0000000000..b5ec29d4f0 --- /dev/null +++ b/site/src/content/docs/use-cases/workflows.mdx @@ -0,0 +1,65 @@ +# Workflows + +## Challenges of Building Workflows + +Common tools: Temporal, Cadence, Apache Airflow, AWS Step Functions, custom orchestration systems + +Main pain points: +- Complex infrastructure setup and maintenance for workflow orchestration +- Managing state across long-running multi-step processes +- Handling retries, timeouts, and failure recovery across distributed steps +- Coordinating between different services and maintaining transaction boundaries +- High operational cost of running dedicated workflow engines + +## How Rivet Solves This + +Rivet actors provide built-in workflow capabilities with durable execution and automatic state management without external orchestration systems. + +**Durable Execution**: Actor actions automatically persist state between steps, surviving restarts and failures without additional infrastructure. + +```typescript +const orderWorkflow = actor({ + state: { + orderId: "", + status: "pending" as "pending" | "paid" | "shipped" | "completed", + steps: [] as string[] + }, + + actions: { + processOrder: async (c, orderId: string) => { + c.state.orderId = orderId; + c.state.steps.push("started"); + + // Step 1: Process payment + await processPayment(orderId); + c.state.status = "paid"; + c.state.steps.push("paid"); + c.broadcast("orderUpdate", { status: "paid" }); + + // Step 2: Schedule shipment + c.schedule.after(1000 * 60 * 60, "shipOrder"); // 1 hour + }, + + shipOrder: async (c) => { + await fulfillment.ship(c.state.orderId); + c.state.status = "shipped"; + c.state.steps.push("shipped"); + c.broadcast("orderUpdate", { status: "shipped" }); + } + } +}); +``` + +**Scheduled Steps**: Use [scheduling](/docs/actors/schedule) to delay workflow steps or implement timeouts and reminders. + +**State Checkpointing**: State automatically persists after each action, ensuring workflow progress is never lost. Learn about [state management](/docs/actors/state). + +**Actor Communication**: Coordinate across services using [actor-to-actor communication](/docs/actors/communicating-between-actors) without message queues. + +**Realtime Updates**: Stream workflow progress to clients using [events](/docs/actors/events). + +## Full Example Projects + + + + diff --git a/site/src/data/deploy-options.ts b/site/src/data/deploy-options.ts index 7a9dbb744d..ccd23f7abd 100644 --- a/site/src/data/deploy-options.ts +++ b/site/src/data/deploy-options.ts @@ -15,6 +15,8 @@ export interface DeployOption { href: string; icon?: any; badge?: string; + /** If true, this platform should NOT be shown for generic deploy guides for Node/Buns-specific platforms. */ + specializedPlatform?: boolean; } export const deployOptions: DeployOption[] = [ @@ -23,6 +25,7 @@ export const deployOptions: DeployOption[] = [ href: "/docs/deploy/vercel", icon: faVercel, badge: "1-Click Deploy", + specializedPlatform: true, }, { title: "Railway", @@ -34,6 +37,7 @@ export const deployOptions: DeployOption[] = [ title: "Cloudflare Workers", href: "/docs/deploy/cloudflare-workers", icon: faCloudflare, + specializedPlatform: true, }, { title: "Kubernetes", @@ -53,6 +57,7 @@ export const deployOptions: DeployOption[] = [ // { // title: "Freestyle", // href: "/docs/deploy/freestyle", + // specializedPlatform: true, // }, { title: "Hetzner", diff --git a/site/src/data/examples/examples.ts b/site/src/data/examples/examples.ts index 78e4d97242..9de4d2931e 100644 --- a/site/src/data/examples/examples.ts +++ b/site/src/data/examples/examples.ts @@ -23,94 +23,64 @@ export const examples: ExampleData[] = [ ], "tab": "memory", "files": { - "tests/ai-agent.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock the AI SDK and OpenAI\nvi.mock(\"@ai-sdk/openai\", () => ({\n\topenai: () => \"mock-model\",\n}));\n\nvi.mock(\"ai\", () => ({\n\tgenerateText: vi.fn().mockImplementation(async ({ prompt }) => ({\n\t\ttext: `AI response to: ${prompt}`,\n\t})),\n\ttool: vi.fn().mockImplementation(({ execute }) => ({ execute })),\n}));\n\nvi.mock(\"../src/backend/my-utils\", () => ({\n\tgetWeather: vi.fn().mockResolvedValue({\n\t\tlocation: \"San Francisco\",\n\t\ttemperature: 72,\n\t\tcondition: \"sunny\",\n\t}),\n}));\n\ntest(\"AI Agent can handle basic actions without connection\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-basic\"]);\n\n\t// Test initial state\n\tconst initialMessages = await agent.getMessages();\n\texpect(initialMessages).toEqual([]);\n\n\t// Send a message\n\tconst userMessage = \"Hello, how are you?\";\n\tconst response = await agent.sendMessage(userMessage);\n\n\t// Verify response structure\n\texpect(response).toMatchObject({\n\t\trole: \"assistant\",\n\t\tcontent: expect.stringContaining(\"AI response to: Hello, how are you?\"),\n\t\ttimestamp: expect.any(Number),\n\t});\n\n\t// Verify messages are stored\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(2);\n\texpect(messages[0]).toMatchObject({\n\t\trole: \"user\",\n\t\tcontent: userMessage,\n\t\ttimestamp: expect.any(Number),\n\t});\n\texpect(messages[1]).toEqual(response);\n});\n\ntest(\"AI Agent maintains conversation history\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-history\"]);\n\n\t// Send multiple messages\n\tawait agent.sendMessage(\"First message\");\n\tawait agent.sendMessage(\"Second message\");\n\tawait agent.sendMessage(\"Third message\");\n\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(6); // 3 user + 3 assistant messages\n\n\t// Verify message ordering and roles\n\texpect(messages[0].role).toBe(\"user\");\n\texpect(messages[0].content).toBe(\"First message\");\n\texpect(messages[1].role).toBe(\"assistant\");\n\texpect(messages[2].role).toBe(\"user\");\n\texpect(messages[2].content).toBe(\"Second message\");\n\texpect(messages[3].role).toBe(\"assistant\");\n\texpect(messages[4].role).toBe(\"user\");\n\texpect(messages[4].content).toBe(\"Third message\");\n\texpect(messages[5].role).toBe(\"assistant\");\n});\n\ntest(\"AI Agent handles weather tool usage\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-weather\"]);\n\n\t// Send a weather-related message\n\tconst response = await agent.sendMessage(\n\t\t\"What's the weather in San Francisco?\",\n\t);\n\n\t// Verify response was generated\n\texpect(response.role).toBe(\"assistant\");\n\texpect(response.content).toContain(\n\t\t\"AI response to: What's the weather in San Francisco?\",\n\t);\n\texpect(response.timestamp).toBeGreaterThan(0);\n\n\t// Verify message history includes both user and assistant messages\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(2);\n\texpect(messages[0].content).toBe(\"What's the weather in San Francisco?\");\n\texpect(messages[1]).toEqual(response);\n});\n\ntest(\"AI Agent timestamps are sequential\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-timestamps\"]);\n\n\tconst response1 = await agent.sendMessage(\"First\");\n\tconst response2 = await agent.sendMessage(\"Second\");\n\n\texpect(response2.timestamp).toBeGreaterThanOrEqual(response1.timestamp);\n\n\tconst messages = await agent.getMessages();\n\tfor (let i = 1; i < messages.length; i++) {\n\t\texpect(messages[i].timestamp).toBeGreaterThanOrEqual(\n\t\t\tmessages[i - 1].timestamp,\n\t\t);\n\t}\n});\n", + "tests/ai-agent.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock the AI SDK and OpenAI\nvi.mock(\"@ai-sdk/openai\", () => ({\n\topenai: () => \"mock-model\",\n}));\n\nvi.mock(\"ai\", () => ({\n\tgenerateText: vi.fn().mockImplementation(async ({ prompt }) => ({\n\t\ttext: `AI response to: ${prompt}`,\n\t})),\n\ttool: vi.fn().mockImplementation(({ execute }) => ({ execute })),\n}));\n\nvi.mock(\"../src/backend/my-tools\", () => ({\n\tgetWeather: vi.fn().mockResolvedValue({\n\t\tlocation: \"San Francisco\",\n\t\ttemperature: 72,\n\t\tcondition: \"sunny\",\n\t}),\n}));\n\ntest(\"AI Agent can handle basic actions without connection\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-basic\"]);\n\n\t// Test initial state\n\tconst initialMessages = await agent.getMessages();\n\texpect(initialMessages).toEqual([]);\n\n\t// Send a message\n\tconst userMessage = \"Hello, how are you?\";\n\tconst response = await agent.sendMessage(userMessage);\n\n\t// Verify response structure\n\texpect(response).toMatchObject({\n\t\trole: \"assistant\",\n\t\tcontent: expect.stringContaining(\"AI response to: Hello, how are you?\"),\n\t\ttimestamp: expect.any(Number),\n\t});\n\n\t// Verify messages are stored\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(2);\n\texpect(messages[0]).toMatchObject({\n\t\trole: \"user\",\n\t\tcontent: userMessage,\n\t\ttimestamp: expect.any(Number),\n\t});\n\texpect(messages[1]).toEqual(response);\n});\n\ntest(\"AI Agent maintains conversation history\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-history\"]);\n\n\t// Send multiple messages\n\tawait agent.sendMessage(\"First message\");\n\tawait agent.sendMessage(\"Second message\");\n\tawait agent.sendMessage(\"Third message\");\n\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(6); // 3 user + 3 assistant messages\n\n\t// Verify message ordering and roles\n\texpect(messages[0].role).toBe(\"user\");\n\texpect(messages[0].content).toBe(\"First message\");\n\texpect(messages[1].role).toBe(\"assistant\");\n\texpect(messages[2].role).toBe(\"user\");\n\texpect(messages[2].content).toBe(\"Second message\");\n\texpect(messages[3].role).toBe(\"assistant\");\n\texpect(messages[4].role).toBe(\"user\");\n\texpect(messages[4].content).toBe(\"Third message\");\n\texpect(messages[5].role).toBe(\"assistant\");\n});\n\ntest(\"AI Agent handles weather tool usage\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-weather\"]);\n\n\t// Send a weather-related message\n\tconst response = await agent.sendMessage(\n\t\t\"What's the weather in San Francisco?\",\n\t);\n\n\t// Verify response was generated\n\texpect(response.role).toBe(\"assistant\");\n\texpect(response.content).toContain(\n\t\t\"AI response to: What's the weather in San Francisco?\",\n\t);\n\texpect(response.timestamp).toBeGreaterThan(0);\n\n\t// Verify message history includes both user and assistant messages\n\tconst messages = await agent.getMessages();\n\texpect(messages).toHaveLength(2);\n\texpect(messages[0].content).toBe(\"What's the weather in San Francisco?\");\n\texpect(messages[1]).toEqual(response);\n});\n\ntest(\"AI Agent timestamps are sequential\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst agent = client.aiAgent.getOrCreate([\"test-timestamps\"]);\n\n\tconst response1 = await agent.sendMessage(\"First\");\n\tconst response2 = await agent.sendMessage(\"Second\");\n\n\texpect(response2.timestamp).toBeGreaterThanOrEqual(response1.timestamp);\n\n\tconst messages = await agent.getMessages();\n\tfor (let i = 1; i < messages.length; i++) {\n\t\texpect(messages[i].timestamp).toBeGreaterThanOrEqual(\n\t\t\tmessages[i - 1].timestamp,\n\t\t);\n\t}\n});\n", "README.md": "# AI Agent Chat for RivetKit\n\nExample project demonstrating AI agent integration with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n- OpenAI API key\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/ai-agent\nnpm install\n```\n\n### Development\n\n1. Set your OpenAI API key:\n```sh\nexport OPENAI_API_KEY=your-api-key-here\n```\n\n2. Start the development server:\n```sh\nnpm run dev\n```\n\n3. Open your browser to `http://localhost:3000`\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-ai-agent\",\n \"version\": \"0.9.1\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-ai-agent\",\n \"version\": \"0.9.1\",\n \"dependencies\": {\n \"@ai-sdk/openai\": \"^0.0.66\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"ai\": \"^4.0.38\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"zod\": \"^3.25.69\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ai-sdk/openai\": {\n \"version\": \"0.0.66\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/openai/-/openai-0.0.66.tgz\",\n \"integrity\": \"sha512-V4XeDnlNl5/AY3GB3ozJUjqnBLU5pK3DacKTbCNH3zH8/MggJoH6B8wRGdLUPVFMcsMz60mtvh4DC9JsIVFrKw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"0.0.24\",\n \"@ai-sdk/provider-utils\": \"1.0.20\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.0.0\"\n }\n },\n \"node_modules/@ai-sdk/provider\": {\n \"version\": \"0.0.24\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-0.0.24.tgz\",\n \"integrity\": \"sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"1.0.20\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-1.0.20.tgz\",\n \"integrity\": \"sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"0.0.24\",\n \"eventsource-parser\": \"1.1.2\",\n \"nanoid\": \"3.3.6\",\n \"secure-json-parse\": \"2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"zod\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@ai-sdk/react\": {\n \"version\": \"1.2.12\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz\",\n \"integrity\": \"sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"@ai-sdk/ui-utils\": \"1.2.11\",\n \"swr\": \"^2.2.5\",\n \"throttleit\": \"2.1.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19 || ^19.0.0-rc\",\n \"zod\": \"^3.23.8\"\n },\n \"peerDependenciesMeta\": {\n \"zod\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils\": {\n \"version\": \"1.2.11\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz\",\n \"integrity\": \"sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"zod-to-json-schema\": \"^3.24.1\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@opentelemetry/api\": {\n \"version\": \"1.9.0\",\n \"resolved\": \"https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz\",\n \"integrity\": \"sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==\",\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=8.0.0\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"dev\": true,\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/diff-match-patch\": {\n \"version\": \"1.0.36\",\n \"resolved\": \"https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz\",\n \"integrity\": \"sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.16.3\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz\",\n \"integrity\": \"sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ai\": {\n \"version\": \"4.3.18\",\n \"resolved\": \"https://registry.npmjs.org/ai/-/ai-4.3.18.tgz\",\n \"integrity\": \"sha512-Mn6JdNGB56GOyrfGJ746zzK6e0f6Ozr7lwfEYkQZjhf261wj1aAJgCvUsgML5/7pSiBJq3ytNEBVcR1oUKTCZw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"@ai-sdk/react\": \"1.2.12\",\n \"@ai-sdk/ui-utils\": \"1.2.11\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"jsondiffpatch\": \"0.6.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19 || ^19.0.0-rc\",\n \"zod\": \"^3.23.8\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/ai/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/ai/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/ai/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.2.1\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.1.tgz\",\n \"integrity\": \"sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/dequal\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz\",\n \"integrity\": \"sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-match-patch\": {\n \"version\": \"1.0.5\",\n \"resolved\": \"https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz\",\n \"integrity\": \"sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==\",\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/eventsource-parser\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-1.1.2.tgz\",\n \"integrity\": \"sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.18\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.4.6\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz\",\n \"integrity\": \"sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json-schema\": {\n \"version\": \"0.4.0\",\n \"resolved\": \"https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz\",\n \"integrity\": \"sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==\",\n \"license\": \"(AFL-2.1 OR BSD-3-Clause)\"\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/jsondiffpatch\": {\n \"version\": \"0.6.0\",\n \"resolved\": \"https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz\",\n \"integrity\": \"sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/diff-match-patch\": \"^1.0.36\",\n \"chalk\": \"^5.3.0\",\n \"diff-match-patch\": \"^1.0.5\"\n },\n \"bin\": {\n \"jsondiffpatch\": \"bin/jsondiffpatch.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/jsondiffpatch/node_modules/chalk\": {\n \"version\": \"5.4.1\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz\",\n \"integrity\": \"sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.1.4\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz\",\n \"integrity\": \"sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.6\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz\",\n \"integrity\": \"sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n \"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/postcss/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/secure-json-parse\": {\n \"version\": \"2.7.0\",\n \"resolved\": \"https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz\",\n \"integrity\": \"sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==\",\n \"license\": \"BSD-3-Clause\"\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz\",\n \"integrity\": \"sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/swr\": {\n \"version\": \"2.3.4\",\n \"resolved\": \"https://registry.npmjs.org/swr/-/swr-2.3.4.tgz\",\n \"integrity\": \"sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"dequal\": \"^2.0.3\",\n \"use-sync-external-store\": \"^1.4.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/throttleit\": {\n \"version\": \"2.1.0\",\n \"resolved\": \"https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz\",\n \"integrity\": \"sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.14\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz\",\n \"integrity\": \"sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.4.4\",\n \"picomatch\": \"^4.0.2\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz\",\n \"integrity\": \"sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n },\n \"node_modules/zod-to-json-schema\": {\n \"version\": \"3.24.6\",\n \"resolved\": \"https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz\",\n \"integrity\": \"sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==\",\n \"license\": \"ISC\",\n \"peerDependencies\": {\n \"zod\": \"^3.24.1\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-ai-agent\",\n \"version\": \"0.9.1\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@ai-sdk/openai\": \"^0.0.66\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"ai\": \"^4.0.38\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"zod\": \"^3.25.69\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "package-lock.json": "{\n \"name\": \"example-ai-agent\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-ai-agent\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@ai-sdk/openai\": \"^0.0.66\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"ai\": \"^4.0.38\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"zod\": \"^3.25.69\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ai-sdk/openai\": {\n \"version\": \"0.0.66\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/openai/-/openai-0.0.66.tgz\",\n \"integrity\": \"sha512-V4XeDnlNl5/AY3GB3ozJUjqnBLU5pK3DacKTbCNH3zH8/MggJoH6B8wRGdLUPVFMcsMz60mtvh4DC9JsIVFrKw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"0.0.24\",\n \"@ai-sdk/provider-utils\": \"1.0.20\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.0.0\"\n }\n },\n \"node_modules/@ai-sdk/provider\": {\n \"version\": \"0.0.24\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-0.0.24.tgz\",\n \"integrity\": \"sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"1.0.20\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-1.0.20.tgz\",\n \"integrity\": \"sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"0.0.24\",\n \"eventsource-parser\": \"1.1.2\",\n \"nanoid\": \"3.3.6\",\n \"secure-json-parse\": \"2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"zod\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@ai-sdk/react\": {\n \"version\": \"1.2.12\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz\",\n \"integrity\": \"sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"@ai-sdk/ui-utils\": \"1.2.11\",\n \"swr\": \"^2.2.5\",\n \"throttleit\": \"2.1.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19 || ^19.0.0-rc\",\n \"zod\": \"^3.23.8\"\n },\n \"peerDependenciesMeta\": {\n \"zod\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/react/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils\": {\n \"version\": \"1.2.11\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz\",\n \"integrity\": \"sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"zod-to-json-schema\": \"^3.24.1\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/@ai-sdk/ui-utils/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@opentelemetry/api\": {\n \"version\": \"1.9.0\",\n \"resolved\": \"https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz\",\n \"integrity\": \"sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==\",\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=8.0.0\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/diff-match-patch\": {\n \"version\": \"1.0.36\",\n \"resolved\": \"https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz\",\n \"integrity\": \"sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ai\": {\n \"version\": \"4.3.19\",\n \"resolved\": \"https://registry.npmjs.org/ai/-/ai-4.3.19.tgz\",\n \"integrity\": \"sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"@ai-sdk/provider-utils\": \"2.2.8\",\n \"@ai-sdk/react\": \"1.2.12\",\n \"@ai-sdk/ui-utils\": \"1.2.11\",\n \"@opentelemetry/api\": \"1.9.0\",\n \"jsondiffpatch\": \"0.6.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19 || ^19.0.0-rc\",\n \"zod\": \"^3.23.8\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/ai/node_modules/@ai-sdk/provider\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz\",\n \"integrity\": \"sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"json-schema\": \"^0.4.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/ai/node_modules/@ai-sdk/provider-utils\": {\n \"version\": \"2.2.8\",\n \"resolved\": \"https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz\",\n \"integrity\": \"sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@ai-sdk/provider\": \"1.1.3\",\n \"nanoid\": \"^3.3.8\",\n \"secure-json-parse\": \"^2.7.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.23.8\"\n }\n },\n \"node_modules/ai/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/dequal\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz\",\n \"integrity\": \"sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-match-patch\": {\n \"version\": \"1.0.5\",\n \"resolved\": \"https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz\",\n \"integrity\": \"sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==\",\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/eventsource-parser\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-1.1.2.tgz\",\n \"integrity\": \"sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.18\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json-schema\": {\n \"version\": \"0.4.0\",\n \"resolved\": \"https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz\",\n \"integrity\": \"sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==\",\n \"license\": \"(AFL-2.1 OR BSD-3-Clause)\"\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/jsondiffpatch\": {\n \"version\": \"0.6.0\",\n \"resolved\": \"https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz\",\n \"integrity\": \"sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/diff-match-patch\": \"^1.0.36\",\n \"chalk\": \"^5.3.0\",\n \"diff-match-patch\": \"^1.0.5\"\n },\n \"bin\": {\n \"jsondiffpatch\": \"bin/jsondiffpatch.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/jsondiffpatch/node_modules/chalk\": {\n \"version\": \"5.6.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz\",\n \"integrity\": \"sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.17.0 || ^14.13 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.6\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz\",\n \"integrity\": \"sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/postcss/node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/secure-json-parse\": {\n \"version\": \"2.7.0\",\n \"resolved\": \"https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz\",\n \"integrity\": \"sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==\",\n \"license\": \"BSD-3-Clause\"\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/swr\": {\n \"version\": \"2.3.6\",\n \"resolved\": \"https://registry.npmjs.org/swr/-/swr-2.3.6.tgz\",\n \"integrity\": \"sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"dequal\": \"^2.0.3\",\n \"use-sync-external-store\": \"^1.4.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/throttleit\": {\n \"version\": \"2.1.0\",\n \"resolved\": \"https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz\",\n \"integrity\": \"sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n },\n \"node_modules/zod-to-json-schema\": {\n \"version\": \"3.24.6\",\n \"resolved\": \"https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz\",\n \"integrity\": \"sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==\",\n \"license\": \"ISC\",\n \"peerDependencies\": {\n \"zod\": \"^3.24.1\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-ai-agent\",\n \"version\": \"2.0.15\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@ai-sdk/openai\": \"^0.0.66\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"ai\": \"^4.0.38\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"zod\": \"^3.25.69\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"lib\": [\"esnext\", \"dom\"],\n \"jsx\": \"react-jsx\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"types\": [\"node\", \"vite/client\"],\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"checkJs\": false,\n \"noEmit\": true,\n \"isolatedModules\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tinclude: [\"tests/**/*.test.ts\"],\n\t\ttestTimeout: 30000,\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { Message, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nexport function App() {\n\tconst aiAgent = useActor({\n\t\tname: \"aiAgent\",\n\t\tkey: [\"default\"],\n\t});\n\tconst [messages, setMessages] = useState([]);\n\tconst [input, setInput] = useState(\"\");\n\tconst [isLoading, setIsLoading] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (aiAgent.connection) {\n\t\t\taiAgent.connection.getMessages().then(setMessages);\n\t\t}\n\t}, [aiAgent.connection]);\n\n\taiAgent.useEvent(\"messageReceived\", (message: Message) => {\n\t\tsetMessages((prev) => [...prev, message]);\n\t\tsetIsLoading(false);\n\t});\n\n\tconst handleSendMessage = async () => {\n\t\tif (aiAgent.connection && input.trim()) {\n\t\t\tsetIsLoading(true);\n\n\t\t\tconst userMessage = { role: \"user\", content: input, timestamp: Date.now() } as Message;\n\t\t\tsetMessages((prev) => [...prev, userMessage]);\n\n\t\t\tawait aiAgent.connection.sendMessage(input);\n\t\t\tsetInput(\"\");\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{messages.length === 0 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\tAsk the AI assistant a question to get started\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\tmessages.map((msg, i) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{msg.role === \"user\" ? \"👤\" : \"🤖\"}
\n\t\t\t\t\t\t\t
{msg.content}
\n\t\t\t\t\t\t
\n\t\t\t\t\t))\n\t\t\t\t)}\n\t\t\t\t{isLoading && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
🤖
\n\t\t\t\t\t\t
Thinking...
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t setInput(e.target.value)}\n\t\t\t\t\tonKeyPress={(e) => e.key === \"Enter\" && handleSendMessage()}\n\t\t\t\t\tplaceholder=\"Ask the AI assistant...\"\n\t\t\t\t\tdisabled={isLoading}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\tSend\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport { registry } from \"../backend/registry\";\nimport type { Message } from \"../backend/types\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nexport function App() {\n\tconst aiAgent = useActor({\n\t\tname: \"aiAgent\",\n\t\tkey: [\"default\"],\n\t});\n\tconst [messages, setMessages] = useState([]);\n\tconst [input, setInput] = useState(\"\");\n\tconst [isLoading, setIsLoading] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (aiAgent.connection) {\n\t\t\taiAgent.connection.getMessages().then(setMessages);\n\t\t}\n\t}, [aiAgent.connection]);\n\n\taiAgent.useEvent(\"messageReceived\", (message: Message) => {\n\t\tsetMessages((prev) => [...prev, message]);\n\t\tsetIsLoading(false);\n\t});\n\n\tconst handleSendMessage = async () => {\n\t\tif (aiAgent.connection && input.trim()) {\n\t\t\tsetIsLoading(true);\n\n\t\t\tconst userMessage = { role: \"user\", content: input, timestamp: Date.now() } as Message;\n\t\t\tsetMessages((prev) => [...prev, userMessage]);\n\n\t\t\tawait aiAgent.connection.sendMessage(input);\n\t\t\tsetInput(\"\");\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{messages.length === 0 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\tAsk the AI assistant a question to get started\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\tmessages.map((msg, i) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{msg.role === \"user\" ? \"👤\" : \"🤖\"}
\n\t\t\t\t\t\t\t
{msg.content}
\n\t\t\t\t\t\t
\n\t\t\t\t\t))\n\t\t\t\t)}\n\t\t\t\t{isLoading && (\n\t\t\t\t\t
\n\t\t\t\t\t\t
🤖
\n\t\t\t\t\t\t
Thinking...
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t setInput(e.target.value)}\n\t\t\t\t\tonKeyPress={(e) => e.key === \"Enter\" && handleSendMessage()}\n\t\t\t\t\tplaceholder=\"Ask the AI assistant...\"\n\t\t\t\t\tdisabled={isLoading}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\tSend\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", "src/frontend/index.html": "\n\n\n \n \n AI Agent Example\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { openai } from \"@ai-sdk/openai\";\nimport { actor, setup } from \"rivetkit\";\nimport { generateText, tool } from \"ai\";\nimport { z } from \"zod\";\nimport { getWeather } from \"./my-utils\";\n\nexport type Message = {\n\trole: \"user\" | \"assistant\";\n\tcontent: string;\n\ttimestamp: number;\n};\n\nexport const aiAgent = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tmessages: [] as Message[],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetMessages: (c) => c.state.messages,\n\n\t\tsendMessage: async (c, userMessage: string) => {\n\t\t\tconst userMsg: Message = {\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: userMessage,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.messages.push(userMsg);\n\n\t\t\tconst { text } = await generateText({\n\t\t\t\tmodel: openai(\"gpt-4o-mini\"),\n\t\t\t\tprompt: userMessage,\n\t\t\t\tmessages: c.state.messages,\n\t\t\t\ttools: {\n\t\t\t\t\tweather: tool({\n\t\t\t\t\t\tdescription: \"Get the weather in a location\",\n\t\t\t\t\t\tparameters: z.object({\n\t\t\t\t\t\t\tlocation: z\n\t\t\t\t\t\t\t\t.string()\n\t\t\t\t\t\t\t\t.describe(\"The location to get the weather for\"),\n\t\t\t\t\t\t}),\n\t\t\t\t\t\texecute: async ({ location }) => {\n\t\t\t\t\t\t\treturn await getWeather(location);\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst assistantMsg: Message = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: text,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t\tc.state.messages.push(assistantMsg);\n\n\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\tc.broadcast(\"messageReceived\", assistantMsg);\n\n\t\t\treturn assistantMsg;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { aiAgent },\n});\n", - "src/backend/my-utils.ts": "export async function getWeather(location: string) {\n\t// Mock weather API response\n\treturn {\n\t\tlocation,\n\t\ttemperature: Math.floor(Math.random() * 30) + 10,\n\t\tcondition: [\"sunny\", \"cloudy\", \"rainy\", \"snowy\"][\n\t\t\tMath.floor(Math.random() * 4)\n\t\t],\n\t\thumidity: Math.floor(Math.random() * 50) + 30,\n\t};\n}\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" - } - }, - { - "id": "chat-room", - "icon": "faMessage", - "title": "Chat Room", - "filesToOpen": [ - "src/backend/registry.ts", - "src/frontend/App.tsx" - ], - "tab": "memory", - "files": { - "tests/chat-room.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\ntest(\"Chat room can handle message sending and history\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst room = client.chatRoom.getOrCreate([\"test-room\"]);\n\n\t// Test initial state\n\tconst initialHistory = await room.getHistory();\n\texpect(initialHistory).toEqual([]);\n\n\t// Send a message\n\tconst message1 = await room.sendMessage(\"Alice\", \"Hello everyone!\");\n\n\t// Verify message structure\n\texpect(message1).toMatchObject({\n\t\tsender: \"Alice\",\n\t\ttext: \"Hello everyone!\",\n\t\ttimestamp: expect.any(Number),\n\t});\n\n\t// Send another message\n\tconst message2 = await room.sendMessage(\"Bob\", \"Hi Alice!\");\n\n\t// Verify messages are stored in order\n\tconst history = await room.getHistory();\n\texpect(history).toHaveLength(2);\n\texpect(history[0]).toEqual(message1);\n\texpect(history[1]).toEqual(message2);\n});\n\ntest(\"Chat room message timestamps are sequential\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst room = client.chatRoom.getOrCreate([\"test-timestamps\"]);\n\n\tconst message1 = await room.sendMessage(\"User1\", \"First message\");\n\tconst message2 = await room.sendMessage(\"User2\", \"Second message\");\n\tconst message3 = await room.sendMessage(\"User1\", \"Third message\");\n\n\texpect(message2.timestamp).toBeGreaterThanOrEqual(message1.timestamp);\n\texpect(message3.timestamp).toBeGreaterThanOrEqual(message2.timestamp);\n\n\tconst history = await room.getHistory();\n\tfor (let i = 1; i < history.length; i++) {\n\t\texpect(history[i].timestamp).toBeGreaterThanOrEqual(\n\t\t\thistory[i - 1].timestamp,\n\t\t);\n\t}\n});\n\ntest(\"Chat room supports multiple users\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst room = client.chatRoom.getOrCreate([\"test-multiuser\"]);\n\n\t// Multiple users sending messages\n\tawait room.sendMessage(\"Alice\", \"Hello!\");\n\tawait room.sendMessage(\"Bob\", \"Hey there!\");\n\tawait room.sendMessage(\"Charlie\", \"Good morning!\");\n\tawait room.sendMessage(\"Alice\", \"How is everyone?\");\n\n\tconst history = await room.getHistory();\n\texpect(history).toHaveLength(4);\n\n\t// Verify senders\n\texpect(history[0].sender).toBe(\"Alice\");\n\texpect(history[1].sender).toBe(\"Bob\");\n\texpect(history[2].sender).toBe(\"Charlie\");\n\texpect(history[3].sender).toBe(\"Alice\");\n\n\t// Verify message content\n\texpect(history[0].text).toBe(\"Hello!\");\n\texpect(history[1].text).toBe(\"Hey there!\");\n\texpect(history[2].text).toBe(\"Good morning!\");\n\texpect(history[3].text).toBe(\"How is everyone?\");\n});\n\ntest(\"Chat room handles empty messages\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst room = client.chatRoom.getOrCreate([\"test-empty\"]);\n\n\t// Test empty message\n\tconst emptyMessage = await room.sendMessage(\"User\", \"\");\n\texpect(emptyMessage.text).toBe(\"\");\n\texpect(emptyMessage.sender).toBe(\"User\");\n\texpect(emptyMessage.timestamp).toBeGreaterThan(0);\n\n\tconst history = await room.getHistory();\n\texpect(history).toHaveLength(1);\n\texpect(history[0]).toEqual(emptyMessage);\n});\n", - "README.md": "# Chat Room for RivetKit\n\nExample project demonstrating real-time messaging and actor state management with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/chat-room\nnpm install\n```\n\n### Development\n\n#### Web UI\nStart the development server with both backend and React frontend:\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000` to use the web chat interface.\n\n#### CLI Interface\nAlternatively, use the CLI interface:\n\n```sh\nnpm run dev:cli\n```\n\nOr connect programmatically:\n\n```sh\ntsx src/scripts/connect.ts\n```\n\n## Features\n\n- Real-time messaging with automatic persistence\n- Multiple chat rooms support\n- Both web and CLI interfaces\n- Event-driven architecture with RivetKit actors\n- TypeScript support throughout\n\n## License\n\nApache 2.0", - ".gitignore": ".actorcore\nnode_modules", - "package-lock.json": "{\n \"name\": \"chat-room\",\n \"version\": \"0.9.1\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"chat-room\",\n \"version\": \"0.9.1\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"@types/prompts\": \"^2\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"prompts\": \"^2.4.2\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"dev\": true,\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.16.3\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz\",\n \"integrity\": \"sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prompts\": {\n \"version\": \"2.4.9\",\n \"resolved\": \"https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz\",\n \"integrity\": \"sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/node\": \"*\",\n \"kleur\": \"^3.0.3\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.2.1\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.1.tgz\",\n \"integrity\": \"sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.4.6\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz\",\n \"integrity\": \"sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/kleur\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz\",\n \"integrity\": \"sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.1.4\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz\",\n \"integrity\": \"sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n \"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/prompts\": {\n \"version\": \"2.4.2\",\n \"resolved\": \"https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz\",\n \"integrity\": \"sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"kleur\": \"^3.0.3\",\n \"sisteransi\": \"^1.0.5\"\n },\n \"engines\": {\n \"node\": \">= 6\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/sisteransi\": {\n \"version\": \"1.0.5\",\n \"resolved\": \"https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz\",\n \"integrity\": \"sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz\",\n \"integrity\": \"sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.14\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz\",\n \"integrity\": \"sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.4.4\",\n \"picomatch\": \"^4.0.2\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz\",\n \"integrity\": \"sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"chat-room\",\n \"version\": \"0.9.1\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"dev:cli\": \"tsx src/scripts/cli.ts\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/prompts\": \"^2\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"prompts\": \"^2.4.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", - "tsconfig.json": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */\n \"target\": \"esnext\",\n /* Specify a set of bundled library declaration files that describe the target runtime environment. */\n \"lib\": [\"esnext\", \"dom\"],\n /* Specify what JSX code is generated. */\n \"jsx\": \"react-jsx\",\n\n /* Specify what module code is generated. */\n \"module\": \"esnext\",\n /* Specify how TypeScript looks up a file from a given module specifier. */\n \"moduleResolution\": \"bundler\",\n /* Specify type package names to be included without being referenced in a source file. */\n \"types\": [\"node\", \"vite/client\"],\n /* Enable importing .json files */\n \"resolveJsonModule\": true,\n\n /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */\n \"allowJs\": true,\n /* Enable error reporting in type-checked JavaScript files. */\n \"checkJs\": false,\n\n /* Disable emitting files from a compilation. */\n \"noEmit\": true,\n\n /* Ensure that each file can be safely transpiled without relying on other imports. */\n \"isolatedModules\": true,\n /* Allow 'import x from y' when a module doesn't have a default export. */\n \"allowSyntheticDefaultImports\": true,\n /* Ensure that casing is correct in imports. */\n \"forceConsistentCasingInFileNames\": true,\n\n /* Enable all strict type-checking options. */\n \"strict\": true,\n\n /* Skip type checking all .d.ts files. */\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*\", \"actors/**/*\", \"tests/**/*\"]\n}\n", - "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n});\n", - "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tinclude: [\"tests/**/*.test.ts\"],\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { Message, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nexport function App() {\n\tconst [roomId, setRoomId] = useState(\"general\");\n\tconst [username, setUsername] = useState(\"User\");\n\tconst [input, setInput] = useState(\"\");\n\tconst [messages, setMessages] = useState([]);\n\n\tconst chatRoom = useActor({\n\t\tname: \"chatRoom\",\n\t\tkey: [roomId],\n\t});\n\n\tuseEffect(() => {\n\t\tif (chatRoom.connection) {\n\t\t\tchatRoom.connection.getHistory().then(setMessages);\n\t\t}\n\t}, [chatRoom.connection]);\n\n\tchatRoom.useEvent(\"newMessage\", (message: Message) => {\n\t\tsetMessages((prev) => [...prev, message]);\n\t});\n\n\tconst sendMessage = async () => {\n\t\tif (chatRoom.connection && input.trim()) {\n\t\t\tawait chatRoom.connection.sendMessage(username, input);\n\t\t\tsetInput(\"\");\n\t\t}\n\t};\n\n\tconst handleKeyPress = (e: React.KeyboardEvent) => {\n\t\tif (e.key === \"Enter\") {\n\t\t\tsendMessage();\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Chat Room: {roomId}

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setRoomId(e.target.value)}\n\t\t\t\t\tplaceholder=\"Enter room name\"\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t setUsername(e.target.value)}\n\t\t\t\t\tplaceholder=\"Enter your username\"\n\t\t\t\t/>\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t{messages.length === 0 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\tNo messages yet. Start the conversation!\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\tmessages.map((msg, i) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{msg.sender}
\n\t\t\t\t\t\t\t
{msg.text}
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{new Date(msg.timestamp).toLocaleTimeString()}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t))\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t setInput(e.target.value)}\n\t\t\t\t\tonKeyPress={handleKeyPress}\n\t\t\t\t\tplaceholder=\"Type a message...\"\n\t\t\t\t\tdisabled={!chatRoom.connection}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\tSend\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}", - "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Chat Room Example\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type Message = { sender: string; text: string; timestamp: number };\n\nexport const chatRoom = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tmessages: [] as Message[],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tsendMessage: (c, sender: string, text: string) => {\n\t\t\tconst message = { sender, text, timestamp: Date.now() };\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.messages.push(message);\n\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\tc.broadcast(\"newMessage\", message);\n\t\t\treturn message;\n\t\t},\n\n\t\tgetHistory: (c) => c.state.messages,\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { chatRoom },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n", - "src/scripts/cli.ts": "import { createClient } from \"rivetkit/client\";\nimport prompts from \"prompts\";\nimport type { registry } from \"../backend/registry\";\n\nasync function main() {\n\tconst { username, room } = await initPrompt();\n\n\t// Create type-aware client\n\tconst client = createClient(\"http://localhost:8080\");\n\n\t// connect to chat room\n\tconst chatRoom = client.chatRoom.getOrCreate([room]).connect();\n\n\t// fetch history\n\tconst history = await chatRoom.getHistory();\n\tconsole.log(\n\t\t`History:\\n${history.map((m) => `[${m.sender}] ${m.text}`).join(\"\\n\")}`,\n\t);\n\n\t// listen for new messages\n\tlet needsNewLine = false;\n\tchatRoom.on(\"newMessage\", (message: any) => {\n\t\tif (needsNewLine) {\n\t\t\tneedsNewLine = false;\n\t\t\tconsole.log();\n\t\t}\n\t\tconsole.log(`[${message.sender}] ${message.text}`);\n\t});\n\n\t// loop to send messages\n\twhile (true) {\n\t\tneedsNewLine = true;\n\t\tconst message = await textPrompt(\"Message\");\n\t\tif (!message) break;\n\t\tneedsNewLine = false;\n\t\tawait chatRoom.sendMessage(username, message);\n\t}\n\n\tawait chatRoom.dispose();\n}\n\nasync function initPrompt(): Promise<{\n\troom: string;\n\tusername: string;\n}> {\n\treturn await prompts([\n\t\t{\n\t\t\ttype: \"text\",\n\t\t\tname: \"username\",\n\t\t\tmessage: \"Username\",\n\t\t},\n\t\t{\n\t\t\ttype: \"text\",\n\t\t\tname: \"room\",\n\t\t\tmessage: \"Room\",\n\t\t},\n\t]);\n}\n\nasync function textPrompt(message: string): Promise {\n\tconst { x } = await prompts({\n\t\ttype: \"text\",\n\t\tname: \"x\",\n\t\tmessage,\n\t});\n\treturn x;\n}\n\nmain();\n", - "src/scripts/connect.ts": "/// \nimport { createClient } from \"rivetkit/client\";\nimport type { registry } from \"../backend/registry\";\n\nasync function main() {\n\t// Create type-aware client\n\tconst client = createClient(\n\t\tprocess.env.ENDPOINT ?? \"http://localhost:8080\",\n\t);\n\n\t// connect to chat room\n\tconst chatRoom = client.chatRoom.getOrCreate().connect();\n\n\t// call action to get existing messages\n\tconst messages = await chatRoom.getHistory();\n\tconsole.log(\"Messages:\", messages);\n\n\t// listen for new messages\n\tchatRoom.on(\"newMessage\", (message: any) =>\n\t\tconsole.log(`Message from ${message.sender}: ${message.text}`),\n\t);\n\n\t// send message to room\n\tawait chatRoom.sendMessage(\"william\", \"All the world's a stage.\");\n\n\t// disconnect from actor when finished\n\tawait chatRoom.dispose();\n}\n\nmain();\n" + "src/backend/my-tools.ts": "export async function getWeather(location: string) {\n\t// Mock weather API response\n\treturn {\n\t\tlocation,\n\t\ttemperature: Math.floor(Math.random() * 30) + 10,\n\t\tcondition: [\"sunny\", \"cloudy\", \"rainy\", \"snowy\"][\n\t\t\tMath.floor(Math.random() * 4)\n\t\t],\n\t\thumidity: Math.floor(Math.random() * 50) + 30,\n\t};\n}\n", + "src/backend/types.ts": "export type Message = {\n\trole: \"user\" | \"assistant\";\n\tcontent: string;\n\ttimestamp: number;\n};\n", + "src/backend/registry.ts": "import { openai } from \"@ai-sdk/openai\";\nimport { generateText, tool } from \"ai\";\nimport { actor, setup } from \"rivetkit\";\nimport { z } from \"zod\";\nimport { getWeather } from \"./my-tools\";\nimport type { Message } from \"./types\";\n\nexport const aiAgent = actor({\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tmessages: [] as Message[],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetMessages: (c) => c.state.messages,\n\n\t\tsendMessage: async (c, userMessage: string) => {\n\t\t\tconst userMsg: Message = {\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: userMessage,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.messages.push(userMsg);\n\n\t\t\tconst { text } = await generateText({\n\t\t\t\tmodel: openai(\"gpt-4o-mini\"),\n\t\t\t\tprompt: userMessage,\n\t\t\t\tmessages: c.state.messages,\n\t\t\t\ttools: {\n\t\t\t\t\tweather: tool({\n\t\t\t\t\t\tdescription: \"Get the weather in a location\",\n\t\t\t\t\t\tparameters: z.object({\n\t\t\t\t\t\t\tlocation: z\n\t\t\t\t\t\t\t\t.string()\n\t\t\t\t\t\t\t\t.describe(\"The location to get the weather for\"),\n\t\t\t\t\t\t}),\n\t\t\t\t\t\texecute: async ({ location }) => {\n\t\t\t\t\t\t\treturn await getWeather(location);\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst assistantMsg: Message = {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: text,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t\tc.state.messages.push(assistantMsg);\n\n\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\tc.broadcast(\"messageReceived\", assistantMsg);\n\n\t\t\treturn assistantMsg;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { aiAgent },\n});\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { "id": "crdt", "icon": "faFilePen", - "title": "Collab (Yjs)", + "title": "Realtime Docs", "filesToOpen": [ "src/backend/registry.ts", "src/frontend/App.tsx" ], "tab": "memory", "files": { - "tests/crdt.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock Yjs to avoid complex binary operations in tests\nvi.mock(\"yjs\", () => ({\n\tDoc: vi.fn().mockImplementation(() => ({\n\t\tgetText: vi.fn().mockReturnValue({\n\t\t\ttoString: vi.fn().mockReturnValue(\"\"),\n\t\t\tobserve: vi.fn(),\n\t\t\tdelete: vi.fn(),\n\t\t\tinsert: vi.fn(),\n\t\t}),\n\t\ttransact: vi.fn((fn) => fn()),\n\t\tdestroy: vi.fn(),\n\t})),\n\tapplyUpdate: vi.fn(),\n\tencodeStateAsUpdate: vi.fn().mockReturnValue(new Uint8Array([1, 2, 3, 4])),\n}));\n\ntest(\"CRDT document can handle initial state\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-doc\"]);\n\n\t// Test initial state\n\tconst state = await doc.getState();\n\texpect(state).toMatchObject({\n\t\tdocData: \"\",\n\t\tlastModified: 0,\n\t});\n});\n\ntest(\"CRDT document can apply updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-updates\"]);\n\n\t// Mock update data (Base64 encoded)\n\tconst updateBase64 = btoa(\"mock-update-data\");\n\n\t// Apply an update\n\tawait doc.applyUpdate(updateBase64);\n\n\t// Verify state was updated\n\tconst state = await doc.getState();\n\texpect(state.docData).not.toBe(\"\");\n\texpect(state.lastModified).toBeGreaterThan(0);\n});\n\ntest(\"CRDT document handles multiple updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-multiple\"]);\n\n\tconst update1 = btoa(\"update-1\");\n\tconst update2 = btoa(\"update-2\");\n\tconst update3 = btoa(\"update-3\");\n\n\t// Apply multiple updates\n\tawait doc.applyUpdate(update1);\n\tconst state1 = await doc.getState();\n\tconst firstModified = state1.lastModified;\n\n\tawait doc.applyUpdate(update2);\n\tconst state2 = await doc.getState();\n\tconst secondModified = state2.lastModified;\n\n\tawait doc.applyUpdate(update3);\n\tconst state3 = await doc.getState();\n\tconst thirdModified = state3.lastModified;\n\n\t// Verify timestamps are increasing\n\texpect(secondModified).toBeGreaterThanOrEqual(firstModified);\n\texpect(thirdModified).toBeGreaterThanOrEqual(secondModified);\n\n\t// Verify state is updated\n\texpect(state3.docData).not.toBe(\"\");\n\texpect(state3.lastModified).toBe(thirdModified);\n});\n\ntest(\"CRDT document handles Base64 encoding correctly\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-encoding\"]);\n\n\t// Test with specific Base64 data\n\tconst testData = \"Hello, collaborative world!\";\n\tconst updateBase64 = btoa(testData);\n\n\tawait doc.applyUpdate(updateBase64);\n\n\tconst state = await doc.getState();\n\texpect(state.docData).toBeTruthy();\n\texpect(state.lastModified).toBeGreaterThan(0);\n});\n", + "tests/crdt.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock Yjs to avoid complex binary operations in tests\nvi.mock(\"yjs\", () => ({\n\tDoc: vi.fn().mockImplementation(() => ({\n\t\tgetText: vi.fn().mockReturnValue({\n\t\t\ttoString: vi.fn().mockReturnValue(\"\"),\n\t\t\tobserve: vi.fn(),\n\t\t\tdelete: vi.fn(),\n\t\t\tinsert: vi.fn(),\n\t\t}),\n\t\ttransact: vi.fn((fn) => fn()),\n\t\tdestroy: vi.fn(),\n\t})),\n\tapplyUpdate: vi.fn(),\n\tencodeStateAsUpdate: vi.fn().mockReturnValue(new Uint8Array([1, 2, 3, 4])),\n}));\n\ntest(\"CRDT document can handle initial state\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-doc\"]);\n\n\t// Test initial state\n\tconst state = await doc.getState();\n\texpect(state.docData).toBeInstanceOf(Uint8Array);\n\texpect(state.docData.length).toBe(0);\n\texpect(state.lastModified).toBe(0);\n});\n\ntest(\"CRDT document can apply updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-updates\"]);\n\n\t// Mock update data as binary\n\tconst updateBytes = new Uint8Array([1, 2, 3, 4, 5]);\n\n\t// Apply an update\n\tawait doc.applyUpdate(updateBytes);\n\n\t// Verify state was updated\n\tconst state = await doc.getState();\n\texpect(state.docData.length).toBeGreaterThan(0);\n\texpect(state.lastModified).toBeGreaterThan(0);\n});\n\ntest(\"CRDT document handles multiple updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-multiple\"]);\n\n\tconst update1 = new Uint8Array([1, 2, 3]);\n\tconst update2 = new Uint8Array([4, 5, 6]);\n\tconst update3 = new Uint8Array([7, 8, 9]);\n\n\t// Apply multiple updates\n\tawait doc.applyUpdate(update1);\n\tconst state1 = await doc.getState();\n\tconst firstModified = state1.lastModified;\n\n\tawait doc.applyUpdate(update2);\n\tconst state2 = await doc.getState();\n\tconst secondModified = state2.lastModified;\n\n\tawait doc.applyUpdate(update3);\n\tconst state3 = await doc.getState();\n\tconst thirdModified = state3.lastModified;\n\n\t// Verify timestamps are increasing\n\texpect(secondModified).toBeGreaterThanOrEqual(firstModified);\n\texpect(thirdModified).toBeGreaterThanOrEqual(secondModified);\n\n\t// Verify state is updated\n\texpect(state3.docData.length).toBeGreaterThan(0);\n\texpect(state3.lastModified).toBe(thirdModified);\n});\n\ntest(\"CRDT document handles binary data correctly\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst doc = client.yjsDocument.getOrCreate([\"test-encoding\"]);\n\n\t// Test with specific binary data\n\tconst updateBytes = new TextEncoder().encode(\"Hello, collaborative world!\");\n\n\tawait doc.applyUpdate(updateBytes);\n\n\tconst state = await doc.getState();\n\texpect(state.docData.length).toBeGreaterThan(0);\n\texpect(state.lastModified).toBeGreaterThan(0);\n});\n", "README.md": "# CRDT Collaborative Editor for RivetKit\n\nExample project demonstrating real-time collaborative editing using Conflict-free Replicated Data Types (CRDTs) with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/crdt\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Real-time Collaborative Editing**: Multiple users can edit the same document simultaneously\n- **Conflict Resolution**: Uses Yjs CRDTs to automatically resolve editing conflicts\n- **Persistent State**: Document changes are automatically persisted\n- **Multiple Documents**: Switch between different collaborative documents\n- **Live Connection Status**: See when you're connected to the collaboration server\n\n## How it works\n\nThis example demonstrates how to build a collaborative editor using:\n\n1. **Yjs**: A high-performance CRDT implementation for building collaborative applications\n2. **RivetKit Actors**: Manage document state and synchronize changes between clients\n3. **Real-time Updates**: Use RivetKit's event system for instant synchronization\n4. **Conflict-free Merging**: Yjs automatically handles concurrent edits without conflicts\n\n## Usage\n\n1. Start the development server\n2. Open multiple browser tabs to `http://localhost:3000`\n3. Start typing in any tab - changes will appear in real-time across all tabs\n4. Try editing the same text simultaneously to see conflict resolution in action\n5. Switch between different documents using the document ID field\n\n## Architecture\n\n- **Backend**: RivetKit actor that manages Yjs document state and broadcasts updates\n- **Frontend**: React application with Yjs integration for local document management\n- **Synchronization**: Binary diffs are sent between clients for efficient updates\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-crdt\",\n \"version\": \"0.9.1\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-crdt\",\n \"version\": \"0.9.1\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"yjs\": \"^13.6.20\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"dev\": true,\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.16.3\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz\",\n \"integrity\": \"sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.2.1\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.1.tgz\",\n \"integrity\": \"sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.4.6\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz\",\n \"integrity\": \"sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isomorphic.js\": {\n \"version\": \"0.2.5\",\n \"resolved\": \"https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz\",\n \"integrity\": \"sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lib0\": {\n \"version\": \"0.2.109\",\n \"resolved\": \"https://registry.npmjs.org/lib0/-/lib0-0.2.109.tgz\",\n \"integrity\": \"sha512-jP0gbnyW0kwlx1Atc4dcHkBbrVAkdHjuyHxtClUPYla7qCmwIif1qZ6vQeJdR5FrOVdn26HvQT0ko01rgW7/Xw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"isomorphic.js\": \"^0.2.4\"\n },\n \"bin\": {\n \"0ecdsa-generate-keypair\": \"bin/0ecdsa-generate-keypair.js\",\n \"0gentesthtml\": \"bin/gentesthtml.js\",\n \"0serve\": \"bin/0serve.js\"\n },\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.1.4\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz\",\n \"integrity\": \"sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n \"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz\",\n \"integrity\": \"sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.14\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz\",\n \"integrity\": \"sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.4.4\",\n \"picomatch\": \"^4.0.2\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz\",\n \"integrity\": \"sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yjs\": {\n \"version\": \"13.6.27\",\n \"resolved\": \"https://registry.npmjs.org/yjs/-/yjs-13.6.27.tgz\",\n \"integrity\": \"sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"lib0\": \"^0.2.99\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-crdt\",\n \"version\": \"0.9.1\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"yjs\": \"^13.6.20\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "package-lock.json": "{\n \"name\": \"example-crdt\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-crdt\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"yjs\": \"^13.6.20\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isomorphic.js\": {\n \"version\": \"0.2.5\",\n \"resolved\": \"https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz\",\n \"integrity\": \"sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lib0\": {\n \"version\": \"0.2.114\",\n \"resolved\": \"https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz\",\n \"integrity\": \"sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"isomorphic.js\": \"^0.2.4\"\n },\n \"bin\": {\n \"0ecdsa-generate-keypair\": \"bin/0ecdsa-generate-keypair.js\",\n \"0gentesthtml\": \"bin/gentesthtml.js\",\n \"0serve\": \"bin/0serve.js\"\n },\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yjs\": {\n \"version\": \"13.6.27\",\n \"resolved\": \"https://registry.npmjs.org/yjs/-/yjs-13.6.27.tgz\",\n \"integrity\": \"sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"lib0\": \"^0.2.99\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"funding\": {\n \"type\": \"GitHub Sponsors ❤\",\n \"url\": \"https://github.com/sponsors/dmonad\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-crdt\",\n \"version\": \"2.0.15\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"yjs\": \"^13.6.20\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"lib\": [\"esnext\", \"dom\"],\n \"jsx\": \"react-jsx\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"types\": [\"node\", \"vite/client\"],\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"checkJs\": false,\n \"noEmit\": true,\n \"isolatedModules\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tinclude: [\"tests/**/*.test.ts\"],\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as Y from \"yjs\";\nimport { applyUpdate, encodeStateAsUpdate } from \"yjs\";\nimport type { registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nfunction YjsEditor({ documentId }: { documentId: string }) {\n\tconst yjsDocument = useActor({\n\t\tname: \"yjsDocument\",\n\t\tkey: [documentId],\n\t});\n\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [text, setText] = useState(\"\");\n\n\tconst yDocRef = useRef(null);\n\tconst updatingFromServer = useRef(false);\n\tconst updatingFromLocal = useRef(false);\n\tconst observationInitialized = useRef(false);\n\n\tuseEffect(() => {\n\t\tconst yDoc = new Y.Doc();\n\t\tyDocRef.current = yDoc;\n\t\tsetIsLoading(false);\n\n\t\treturn () => {\n\t\t\tyDoc.destroy();\n\t\t};\n\t}, [yjsDocument.connection]);\n\n\tuseEffect(() => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc || observationInitialized.current) return;\n\n\t\tconst yText = yDoc.getText(\"content\");\n\n\t\tyText.observe(() => {\n\t\t\tif (!updatingFromServer.current) {\n\t\t\t\tsetText(yText.toString());\n\n\t\t\t\tif (yjsDocument.connection && !updatingFromLocal.current) {\n\t\t\t\t\tupdatingFromLocal.current = true;\n\n\t\t\t\t\tconst update = encodeStateAsUpdate(yDoc);\n\t\t\t\t\tconst base64 = bufferToBase64(update);\n\t\t\t\t\tyjsDocument.connection.applyUpdate(base64).finally(() => {\n\t\t\t\t\t\tupdatingFromLocal.current = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tobservationInitialized.current = true;\n\t}, [yjsDocument.connection]);\n\n\tyjsDocument.useEvent(\"initialState\", ({ update }: { update: string }) => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc) return;\n\n\t\tupdatingFromServer.current = true;\n\n\t\ttry {\n\t\t\tconst binary = atob(update);\n\t\t\tconst bytes = new Uint8Array(binary.length);\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tbytes[i] = binary.charCodeAt(i);\n\t\t\t}\n\n\t\t\tapplyUpdate(yDoc, bytes);\n\n\t\t\tconst yText = yDoc.getText(\"content\");\n\t\t\tsetText(yText.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error applying initial update:\", error);\n\t\t} finally {\n\t\t\tupdatingFromServer.current = false;\n\t\t}\n\t});\n\n\tyjsDocument.useEvent(\"update\", ({ update }: { update: string }) => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc) return;\n\n\t\tupdatingFromServer.current = true;\n\n\t\ttry {\n\t\t\tconst binary = atob(update);\n\t\t\tconst bytes = new Uint8Array(binary.length);\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tbytes[i] = binary.charCodeAt(i);\n\t\t\t}\n\n\t\t\tapplyUpdate(yDoc, bytes);\n\n\t\t\tconst yText = yDoc.getText(\"content\");\n\t\t\tsetText(yText.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error applying update:\", error);\n\t\t} finally {\n\t\t\tupdatingFromServer.current = false;\n\t\t}\n\t});\n\n\tconst handleTextChange = (e: React.ChangeEvent) => {\n\t\tif (!yDocRef.current) return;\n\n\t\tconst newText = e.target.value;\n\t\tconst yText = yDocRef.current.getText(\"content\");\n\n\t\tif (newText !== yText.toString()) {\n\t\t\tupdatingFromLocal.current = true;\n\n\t\t\tyDocRef.current.transact(() => {\n\t\t\t\tyText.delete(0, yText.length);\n\t\t\t\tyText.insert(0, newText);\n\t\t\t});\n\n\t\t\tupdatingFromLocal.current = false;\n\t\t}\n\t};\n\n\tif (isLoading) {\n\t\treturn
Loading collaborative document...
;\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Document: {documentId}

\n\t\t\t\t
\n\t\t\t\t\t{yjsDocument.connection ? 'Connected' : 'Disconnected'}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [documentId, setDocumentId] = useState(\"shared-doc\");\n\tconst [inputDocId, setInputDocId] = useState(\"shared-doc\");\n\n\tconst switchDocument = () => {\n\t\tsetDocumentId(inputDocId);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

CRDT Collaborative Editor

\n\t\t\t\t

Real-time collaborative text editing powered by Yjs and RivetKit

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How it works

\n\t\t\t\t

\n\t\t\t\t\tThis editor uses Conflict-free Replicated Data Types (CRDTs) with Yjs to enable \n\t\t\t\t\treal-time collaborative editing. Open multiple browser tabs or share the URL \n\t\t\t\t\twith others to see live collaboration in action!\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setInputDocId(e.target.value)}\n\t\t\t\t\tplaceholder=\"Enter document ID\"\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t
\n\t);\n}\n\nfunction bufferToBase64(buffer: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (let i = 0; i < buffer.byteLength; i++) {\n\t\tbinary += String.fromCharCode(buffer[i]);\n\t}\n\treturn btoa(binary);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport * as Y from \"yjs\";\nimport { applyUpdate, encodeStateAsUpdate } from \"yjs\";\nimport type { registry } from \"../backend/registry\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nfunction YjsEditor({ documentId }: { documentId: string }) {\n\tconst yjsDocument = useActor({\n\t\tname: \"yjsDocument\",\n\t\tkey: [documentId],\n\t});\n\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [text, setText] = useState(\"\");\n\n\tconst yDocRef = useRef(null);\n\tconst updatingFromServer = useRef(false);\n\tconst updatingFromLocal = useRef(false);\n\tconst observationInitialized = useRef(false);\n\n\tuseEffect(() => {\n\t\tconst yDoc = new Y.Doc();\n\t\tyDocRef.current = yDoc;\n\t\tsetIsLoading(false);\n\n\t\treturn () => {\n\t\t\tyDoc.destroy();\n\t\t};\n\t}, [yjsDocument.connection]);\n\n\tuseEffect(() => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc || observationInitialized.current) return;\n\n\t\tconst yText = yDoc.getText(\"content\");\n\n\t\tyText.observe(() => {\n\t\t\tif (!updatingFromServer.current) {\n\t\t\t\tsetText(yText.toString());\n\n\t\t\t\tif (yjsDocument.connection && !updatingFromLocal.current) {\n\t\t\t\t\tupdatingFromLocal.current = true;\n\n\t\t\t\t\tconst update = encodeStateAsUpdate(yDoc);\n\t\t\t\t\tyjsDocument.connection.applyUpdate(update).finally(() => {\n\t\t\t\t\t\tupdatingFromLocal.current = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tobservationInitialized.current = true;\n\t}, [yjsDocument.connection]);\n\n\tyjsDocument.useEvent(\"initialState\", ({ update }: { update: Uint8Array }) => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc) return;\n\n\t\tupdatingFromServer.current = true;\n\n\t\ttry {\n\t\t\tapplyUpdate(yDoc, update);\n\n\t\t\tconst yText = yDoc.getText(\"content\");\n\t\t\tsetText(yText.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error applying initial update:\", error);\n\t\t} finally {\n\t\t\tupdatingFromServer.current = false;\n\t\t}\n\t});\n\n\tyjsDocument.useEvent(\"update\", ({ update }: { update: Uint8Array }) => {\n\t\tconst yDoc = yDocRef.current;\n\t\tif (!yDoc) return;\n\n\t\tupdatingFromServer.current = true;\n\n\t\ttry {\n\t\t\tapplyUpdate(yDoc, update);\n\n\t\t\tconst yText = yDoc.getText(\"content\");\n\t\t\tsetText(yText.toString());\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error applying update:\", error);\n\t\t} finally {\n\t\t\tupdatingFromServer.current = false;\n\t\t}\n\t});\n\n\tconst handleTextChange = (e: React.ChangeEvent) => {\n\t\tif (!yDocRef.current) return;\n\n\t\tconst newText = e.target.value;\n\t\tconst yText = yDocRef.current.getText(\"content\");\n\n\t\tif (newText !== yText.toString()) {\n\t\t\tupdatingFromLocal.current = true;\n\n\t\t\tyDocRef.current.transact(() => {\n\t\t\t\tyText.delete(0, yText.length);\n\t\t\t\tyText.insert(0, newText);\n\t\t\t});\n\n\t\t\tupdatingFromLocal.current = false;\n\t\t}\n\t};\n\n\tif (isLoading) {\n\t\treturn
Loading collaborative document...
;\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Document: {documentId}

\n\t\t\t\t
\n\t\t\t\t\t{yjsDocument.connection ? 'Connected' : 'Disconnected'}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [documentId, setDocumentId] = useState(\"shared-doc\");\n\tconst [inputDocId, setInputDocId] = useState(\"shared-doc\");\n\n\tconst switchDocument = () => {\n\t\tsetDocumentId(inputDocId);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

CRDT Collaborative Editor

\n\t\t\t\t

Real-time collaborative text editing powered by Yjs and RivetKit

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How it works

\n\t\t\t\t

\n\t\t\t\t\tThis editor uses Conflict-free Replicated Data Types (CRDTs) with Yjs to enable\n\t\t\t\t\treal-time collaborative editing. Open multiple browser tabs or share the URL\n\t\t\t\t\twith others to see live collaboration in action!\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setInputDocId(e.target.value)}\n\t\t\t\t\tplaceholder=\"Enter document ID\"\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", "src/frontend/index.html": "\n\n\n \n \n CRDT Collaborative Editor\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport * as Y from \"yjs\";\nimport { applyUpdate, encodeStateAsUpdate } from \"yjs\";\n\nexport const yjsDocument = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tdocData: \"\", // Base64 encoded Yjs document\n\t\tlastModified: 0,\n\t},\n\n\tcreateVars: () => ({\n\t\tdoc: new Y.Doc(),\n\t}),\n\n\tonStart: (c) => {\n\t\tif (c.state.docData) {\n\t\t\tconst binary = atob(c.state.docData);\n\t\t\tconst bytes = new Uint8Array(binary.length);\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tbytes[i] = binary.charCodeAt(i);\n\t\t\t}\n\t\t\tapplyUpdate(c.vars.doc, bytes);\n\t\t}\n\t},\n\n\t// Handle client connections: https://rivet.dev/docs/actors/connection-lifecycle\n\tonConnect: (c, conn) => {\n\t\tconst update = encodeStateAsUpdate(c.vars.doc);\n\t\tconst base64 = bufferToBase64(update);\n\t\tconn.send(\"initialState\", { update: base64 });\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tapplyUpdate: (c, updateBase64: string) => {\n\t\t\tconst binary = atob(updateBase64);\n\t\t\tconst update = new Uint8Array(binary.length);\n\t\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\t\tupdate[i] = binary.charCodeAt(i);\n\t\t\t}\n\n\t\t\tapplyUpdate(c.vars.doc, update);\n\n\t\t\tconst fullState = encodeStateAsUpdate(c.vars.doc);\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.docData = bufferToBase64(fullState);\n\t\t\tc.state.lastModified = Date.now();\n\n\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\tc.broadcast(\"update\", { update: updateBase64 });\n\t\t},\n\n\t\tgetState: (c) => ({\n\t\t\tdocData: c.state.docData,\n\t\t\tlastModified: c.state.lastModified,\n\t\t}),\n\t},\n});\n\nfunction bufferToBase64(buffer: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (let i = 0; i < buffer.byteLength; i++) {\n\t\tbinary += String.fromCharCode(buffer[i]);\n\t}\n\treturn btoa(binary);\n}\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { yjsDocument },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport * as Y from \"yjs\";\nimport { applyUpdate, encodeStateAsUpdate } from \"yjs\";\n\nexport const yjsDocument = actor({\n\t// Persistent state that survives restarts.\n\tstate: {\n\t\tdocData: new Uint8Array(), // Raw Yjs document snapshot\n\t\tlastModified: 0,\n\t},\n\n\tcreateVars: () => ({\n\t\tdoc: new Y.Doc(),\n\t}),\n\n\tonStart: (c) => {\n\t\tif (c.state.docData.length > 0) {\n\t\t\tapplyUpdate(c.vars.doc, c.state.docData);\n\t\t}\n\t},\n\n\t// Handle client connections.\n\tonConnect: (c, conn) => {\n\t\tconst update = encodeStateAsUpdate(c.vars.doc);\n\t\tconn.send(\"initialState\", { update });\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients.\n\t\tapplyUpdate: (c, update: Uint8Array) => {\n\t\t\tapplyUpdate(c.vars.doc, update);\n\n\t\t\tconst fullState = encodeStateAsUpdate(\n\t\t\t\tc.vars.doc,\n\t\t\t) as Uint8Array;\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.docData = fullState;\n\t\t\tc.state.lastModified = Date.now();\n\n\t\t\t// Send events to all connected clients.\n\t\t\tc.broadcast(\"update\", { update });\n\t\t},\n\n\t\tgetState: (c) => ({\n\t\t\tdocData: c.state.docData,\n\t\t\tlastModified: c.state.lastModified,\n\t\t}),\n\t},\n});\n\n// Register actors for use.\nexport const registry = setup({\n\tuse: { yjsDocument },\n});\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { - "id": "game", - "icon": "faGamepad", - "title": "Multiplayer Game", + "id": "workflows", + "icon": "faDiagramNext", + "title": "Workflows", "filesToOpen": [ - "src/backend/registry.ts", - "src/frontend/App.tsx" + "src/registry.ts", + "src/server.ts" ], "tab": "memory", "files": { - "tests/game.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock setInterval to avoid timing issues in tests\nconst mockIntervals: NodeJS.Timeout[] = [];\nconst originalSetInterval = global.setInterval;\nglobal.setInterval = vi.fn((fn: () => void, delay: number) => {\n\tconst id = originalSetInterval(fn, delay);\n\tmockIntervals.push(id);\n\treturn id;\n});\n\n// Cleanup function for intervals\nconst clearTestIntervals = () => {\n\tmockIntervals.forEach((id) => clearInterval(id));\n\tmockIntervals.length = 0;\n};\n\ntest(\"Game room can track player count\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-count-new\"]);\n\n\t// Initial state should have no players (but may have some from state persistence)\n\tconst initialCount = await game.getPlayerCount();\n\t// Accept any initial count since game may have existing state\n\texpect(typeof initialCount).toBe(\"number\");\n\texpect(initialCount).toBeGreaterThanOrEqual(0);\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room handles player input updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-input-new\"]);\n\n\t// Since setInput requires connection state, and we can't easily mock that,\n\t// let's test that the action exists and doesn't throw when called\n\ttry {\n\t\t// This will likely fail due to no connection, but shouldn't crash the test\n\t\tawait game.setInput({ x: 1, y: 0 }).catch(() => {\n\t\t\t// Expected to fail without connection context\n\t\t});\n\t} catch (error) {\n\t\t// Expected behavior - action exists but needs connection\n\t}\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room initializes with correct map size\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-map-new\"]);\n\n\t// Test that we can get player count (verifying actor is working)\n\tconst count = await game.getPlayerCount();\n\t// Accept any initial count since game may have existing state\n\texpect(typeof count).toBe(\"number\");\n\texpect(count).toBeGreaterThanOrEqual(0);\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room position boundaries are respected\", () => {\n\t// Test the boundary logic directly\n\tconst mapSize = 800;\n\n\t// Test position clamping logic\n\tlet x = -10; // Below minimum\n\tlet y = 850; // Above maximum\n\n\tx = Math.max(10, Math.min(x, mapSize - 10));\n\ty = Math.max(10, Math.min(y, mapSize - 10));\n\n\texpect(x).toBe(10); // Clamped to minimum\n\texpect(y).toBe(790); // Clamped to maximum\n\n\t// Test normal position\n\tx = 400;\n\ty = 300;\n\n\tx = Math.max(10, Math.min(x, mapSize - 10));\n\ty = Math.max(10, Math.min(y, mapSize - 10));\n\n\texpect(x).toBe(400); // Unchanged\n\texpect(y).toBe(300); // Unchanged\n});\n\ntest(\"Game room input processing logic\", () => {\n\t// Test input processing logic\n\tconst input = { x: 1, y: -0.5 };\n\tconst speed = 5;\n\n\tconst deltaX = input.x * speed;\n\tconst deltaY = input.y * speed;\n\n\texpect(deltaX).toBe(5);\n\texpect(deltaY).toBe(-2.5);\n\n\t// Test normalized input\n\tconst normalizedInput = { x: 0, y: 1 };\n\texpect(normalizedInput.x * speed).toBe(0);\n\texpect(normalizedInput.y * speed).toBe(5);\n});\n", - "README.md": "# Multiplayer Game for RivetKit\n\nExample project demonstrating real-time multiplayer game mechanics with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/game\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Real-time Movement**: Smooth character movement with WASD/Arrow keys\n- **Multiplayer Support**: Multiple players can join and move simultaneously\n- **Visual Feedback**: Grid-based canvas with player identification\n- **Collision Detection**: Players stay within game boundaries\n- **Connection Status**: Live connection status indicator\n- **Player Identification**: Current player highlighted in blue, others in gray\n\n## How it works\n\nThis multiplayer game demonstrates:\n\n1. **Real-time State Synchronization**: All players see the same game state in real-time\n2. **Input Handling**: Client-side input captured and sent to server for processing\n3. **Game Loop**: Server runs at 20 FPS (50ms intervals) to update game state\n4. **Broadcasting**: World updates sent to all connected players\n5. **Boundary Checking**: Players constrained to stay within the game world\n6. **Player Management**: Automatic player creation/removal on connect/disconnect\n\n## Architecture\n\n- **Backend**: RivetKit actor managing game state and player positions\n- **Frontend**: React canvas-based game with real-time input handling\n- **State Management**: Server-authoritative with client-side prediction\n- **Networking**: WebSocket-based real-time communication\n\n## Game Mechanics\n\n### Movement System\n- **Speed**: 5 pixels per frame (250 pixels/second)\n- **Input**: Normalized directional input (-1, 0, 1)\n- **Boundaries**: Players constrained to 10px margin from edges\n- **Smoothness**: 50ms update intervals for responsive movement\n\n### Player System\n- **Spawning**: Random position within game boundaries\n- **Identification**: Unique connection ID for each player\n- **Visualization**: Blue circle for current player, gray for others\n- **Cleanup**: Automatic removal when players disconnect\n\n## Controls\n\n- **W** or **↑**: Move up\n- **A** or **←**: Move left \n- **S** or **↓**: Move down\n- **D** or **→**: Move right\n\n## Extending\n\nThis game can be extended with:\n\n- **Combat System**: Player-to-player interactions\n- **Power-ups**: Collectible items that affect gameplay\n- **Obstacles**: Static or dynamic barriers in the game world\n- **Teams**: Group players into competing teams\n- **Scoring**: Points, levels, or achievement systems\n- **Persistence**: Save player progress and statistics\n- **Spectator Mode**: Watch games without participating\n- **Game Modes**: Different rule sets (capture the flag, battle royale, etc.)\n- **Enhanced Graphics**: Sprites, animations, and visual effects\n\n## Performance Notes\n\n- Game loop runs at 20 FPS for good balance of responsiveness and performance\n- Input sampling at 20 FPS to match server tick rate\n- Canvas rendering at 60 FPS for smooth visuals\n- Optimized for up to 50 concurrent players per room\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-game\",\n \"version\": \"1.0.0\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-game\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz\",\n \"integrity\": \"sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz\",\n \"integrity\": \"sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz\",\n \"integrity\": \"sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz\",\n \"integrity\": \"sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@jest/schemas\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz\",\n \"integrity\": \"sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@sinclair/typebox\": \"^0.27.8\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@sinclair/typebox\": {\n \"version\": \"0.27.8\",\n \"resolved\": \"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz\",\n \"integrity\": \"sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.7.tgz\",\n \"integrity\": \"sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz\",\n \"integrity\": \"sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"chai\": \"^4.3.10\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz\",\n \"integrity\": \"sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"1.6.1\",\n \"p-limit\": \"^5.0.0\",\n \"pathe\": \"^1.1.1\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz\",\n \"integrity\": \"sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz\",\n \"integrity\": \"sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^2.2.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz\",\n \"integrity\": \"sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"diff-sequences\": \"^29.6.3\",\n \"estree-walker\": \"^3.0.3\",\n \"loupe\": \"^2.3.7\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/acorn\": {\n \"version\": \"8.15.0\",\n \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz\",\n \"integrity\": \"sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"acorn\": \"bin/acorn\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/acorn-walk\": {\n \"version\": \"8.3.4\",\n \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz\",\n \"integrity\": \"sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.11.0\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz\",\n \"integrity\": \"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-4.5.0.tgz\",\n \"integrity\": \"sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^1.1.0\",\n \"check-error\": \"^1.0.3\",\n \"deep-eql\": \"^4.1.3\",\n \"get-func-name\": \"^2.0.2\",\n \"loupe\": \"^2.3.6\",\n \"pathval\": \"^1.1.1\",\n \"type-detect\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"1.0.3\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz\",\n \"integrity\": \"sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.2\"\n },\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/confbox\": {\n \"version\": \"0.1.8\",\n \"resolved\": \"https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz\",\n \"integrity\": \"sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cross-spawn\": {\n \"version\": \"7.0.6\",\n \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^3.1.0\",\n \"shebang-command\": \"^2.0.0\",\n \"which\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"4.1.4\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz\",\n \"integrity\": \"sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"type-detect\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-sequences\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz\",\n \"integrity\": \"sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz\",\n \"integrity\": \"sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.6\",\n \"@esbuild/android-arm\": \"0.25.6\",\n \"@esbuild/android-arm64\": \"0.25.6\",\n \"@esbuild/android-x64\": \"0.25.6\",\n \"@esbuild/darwin-arm64\": \"0.25.6\",\n \"@esbuild/darwin-x64\": \"0.25.6\",\n \"@esbuild/freebsd-arm64\": \"0.25.6\",\n \"@esbuild/freebsd-x64\": \"0.25.6\",\n \"@esbuild/linux-arm\": \"0.25.6\",\n \"@esbuild/linux-arm64\": \"0.25.6\",\n \"@esbuild/linux-ia32\": \"0.25.6\",\n \"@esbuild/linux-loong64\": \"0.25.6\",\n \"@esbuild/linux-mips64el\": \"0.25.6\",\n \"@esbuild/linux-ppc64\": \"0.25.6\",\n \"@esbuild/linux-riscv64\": \"0.25.6\",\n \"@esbuild/linux-s390x\": \"0.25.6\",\n \"@esbuild/linux-x64\": \"0.25.6\",\n \"@esbuild/netbsd-arm64\": \"0.25.6\",\n \"@esbuild/netbsd-x64\": \"0.25.6\",\n \"@esbuild/openbsd-arm64\": \"0.25.6\",\n \"@esbuild/openbsd-x64\": \"0.25.6\",\n \"@esbuild/openharmony-arm64\": \"0.25.6\",\n \"@esbuild/sunos-x64\": \"0.25.6\",\n \"@esbuild/win32-arm64\": \"0.25.6\",\n \"@esbuild/win32-ia32\": \"0.25.6\",\n \"@esbuild/win32-x64\": \"0.25.6\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/execa\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/execa/-/execa-8.0.1.tgz\",\n \"integrity\": \"sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cross-spawn\": \"^7.0.3\",\n \"get-stream\": \"^8.0.1\",\n \"human-signals\": \"^5.0.0\",\n \"is-stream\": \"^3.0.0\",\n \"merge-stream\": \"^2.0.0\",\n \"npm-run-path\": \"^5.1.0\",\n \"onetime\": \"^6.0.0\",\n \"signal-exit\": \"^4.1.0\",\n \"strip-final-newline\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/execa?sponsor=1\"\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-func-name\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz\",\n \"integrity\": \"sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/get-stream\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz\",\n \"integrity\": \"sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/human-signals\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz\",\n \"integrity\": \"sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=16.17.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/is-stream\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz\",\n \"integrity\": \"sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isexe\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz\",\n \"integrity\": \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/local-pkg\": {\n \"version\": \"0.5.1\",\n \"resolved\": \"https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz\",\n \"integrity\": \"sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mlly\": \"^1.7.3\",\n \"pkg-types\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"2.3.7\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz\",\n \"integrity\": \"sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.1\"\n }\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/merge-stream\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz\",\n \"integrity\": \"sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/mimic-fn\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz\",\n \"integrity\": \"sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/mlly\": {\n \"version\": \"1.7.4\",\n \"resolved\": \"https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz\",\n \"integrity\": \"sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.14.0\",\n \"pathe\": \"^2.0.1\",\n \"pkg-types\": \"^1.3.0\",\n \"ufo\": \"^1.5.4\"\n }\n },\n \"node_modules/mlly/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/npm-run-path\": {\n \"version\": \"5.3.0\",\n \"resolved\": \"https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz\",\n \"integrity\": \"sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/npm-run-path/node_modules/path-key\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz\",\n \"integrity\": \"sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/onetime\": {\n \"version\": \"6.0.0\",\n \"resolved\": \"https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz\",\n \"integrity\": \"sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mimic-fn\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-limit\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz\",\n \"integrity\": \"sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yocto-queue\": \"^1.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/path-key\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz\",\n \"integrity\": \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz\",\n \"integrity\": \"sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz\",\n \"integrity\": \"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/pkg-types\": {\n \"version\": \"1.3.1\",\n \"resolved\": \"https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz\",\n \"integrity\": \"sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"confbox\": \"^0.1.8\",\n \"mlly\": \"^1.7.4\",\n \"pathe\": \"^2.0.1\"\n }\n },\n \"node_modules/pkg-types/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/pretty-format\": {\n \"version\": \"29.7.0\",\n \"resolved\": \"https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz\",\n \"integrity\": \"sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jest/schemas\": \"^29.6.3\",\n \"ansi-styles\": \"^5.0.0\",\n \"react-is\": \"^18.0.0\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/pretty-format/node_modules/ansi-styles\": {\n \"version\": \"5.2.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz\",\n \"integrity\": \"sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-is\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz\",\n \"integrity\": \"sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shebang-command\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz\",\n \"integrity\": \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"shebang-regex\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shebang-regex\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz\",\n \"integrity\": \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/signal-exit\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz\",\n \"integrity\": \"sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/isaacs\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-final-newline\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz\",\n \"integrity\": \"sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz\",\n \"integrity\": \"sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinypool\": {\n \"version\": \"0.8.4\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz\",\n \"integrity\": \"sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"2.2.1\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz\",\n \"integrity\": \"sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.3\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz\",\n \"integrity\": \"sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/type-detect\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz\",\n \"integrity\": \"sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/ufo\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz\",\n \"integrity\": \"sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz\",\n \"integrity\": \"sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.3.4\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"vite\": \"^5.0.0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz\",\n \"integrity\": \"sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/expect\": \"1.6.1\",\n \"@vitest/runner\": \"1.6.1\",\n \"@vitest/snapshot\": \"1.6.1\",\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"acorn-walk\": \"^8.3.2\",\n \"chai\": \"^4.3.10\",\n \"debug\": \"^4.3.4\",\n \"execa\": \"^8.0.1\",\n \"local-pkg\": \"^0.5.0\",\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"std-env\": \"^3.5.0\",\n \"strip-literal\": \"^2.0.0\",\n \"tinybench\": \"^2.5.1\",\n \"tinypool\": \"^0.8.3\",\n \"vite\": \"^5.0.0\",\n \"vite-node\": \"1.6.1\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"@vitest/browser\": \"1.6.1\",\n \"@vitest/ui\": \"1.6.1\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/which\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/which/-/which-2.0.2.tgz\",\n \"integrity\": \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"isexe\": \"^2.0.0\"\n },\n \"bin\": {\n \"node-which\": \"bin/node-which\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yocto-queue\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz\",\n \"integrity\": \"sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.20\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-game\",\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n}\n", - "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"skipLibCheck\": true,\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n \"strict\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"include\": [\"src\", \"tests\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", - "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n\tbuild: {\n\t\toutDir: \"../../dist\",\n\t\temptyOutDir: true,\n\t},\n});\n", - "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tenvironment: \"node\",\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { Player, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nexport function App() {\n\tconst [players, setPlayers] = useState([]);\n\tconst [isConnected, setIsConnected] = useState(false);\n\tconst [currentPlayerId, setCurrentPlayerId] = useState(null);\n\tconst canvasRef = useRef(null);\n\tconst keysPressed = useRef>({});\n\tconst inputIntervalRef = useRef(null);\n\tconst animationRef = useRef(null);\n\n\tconst gameRoom = useActor({\n\t\tname: \"gameRoom\",\n\t\tkey: [\"global\"],\n\t});\n\n\t// Track connection status\n\tuseEffect(() => {\n\t\tsetIsConnected(!!gameRoom.connection);\n\t}, [gameRoom.connection]);\n\n\t// Set up game controls and rendering\n\tuseEffect(() => {\n\t\tif (!gameRoom.connection) return;\n\n\t\t// Set up keyboard handlers\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\tkeysPressed.current[e.key.toLowerCase()] = true;\n\t\t};\n\n\t\tconst handleKeyUp = (e: KeyboardEvent) => {\n\t\t\tkeysPressed.current[e.key.toLowerCase()] = false;\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\twindow.addEventListener(\"keyup\", handleKeyUp);\n\n\t\t// Input update loop\n\t\tinputIntervalRef.current = setInterval(() => {\n\t\t\tconst input = { x: 0, y: 0 };\n\n\t\t\tif (keysPressed.current[\"w\"] || keysPressed.current[\"arrowup\"])\n\t\t\t\tinput.y = -1;\n\t\t\tif (keysPressed.current[\"s\"] || keysPressed.current[\"arrowdown\"])\n\t\t\t\tinput.y = 1;\n\t\t\tif (keysPressed.current[\"a\"] || keysPressed.current[\"arrowleft\"])\n\t\t\t\tinput.x = -1;\n\t\t\tif (keysPressed.current[\"d\"] || keysPressed.current[\"arrowright\"])\n\t\t\t\tinput.x = 1;\n\n\t\t\tgameRoom.connection?.setInput(input);\n\t\t}, 50);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"keydown\", handleKeyDown);\n\t\t\twindow.removeEventListener(\"keyup\", handleKeyUp);\n\t\t\t\n\t\t\tif (inputIntervalRef.current) {\n\t\t\t\tclearInterval(inputIntervalRef.current);\n\t\t\t\tinputIntervalRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [gameRoom.connection]);\n\n\t// Rendering loop\n\tuseEffect(() => {\n\t\tconst renderLoop = () => {\n\t\t\tconst canvas = canvasRef.current;\n\t\t\tif (!canvas) return;\n\n\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\tif (!ctx) return;\n\n\t\t\t// Clear canvas\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t\t\t// Draw grid\n\t\t\tctx.strokeStyle = \"#e0e0e0\";\n\t\t\tctx.lineWidth = 1;\n\t\t\tfor (let i = 0; i <= canvas.width; i += 50) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(i, 0);\n\t\t\t\tctx.lineTo(i, canvas.height);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\tfor (let i = 0; i <= canvas.height; i += 50) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(0, i);\n\t\t\t\tctx.lineTo(canvas.width, i);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\n\t\t\t// Draw players\n\t\t\tfor (const player of players) {\n\t\t\t\tconst isCurrentPlayer = currentPlayerId && player.id === currentPlayerId;\n\t\t\t\t\n\t\t\t\t// Draw player shadow\n\t\t\t\tctx.fillStyle = \"rgba(0, 0, 0, 0.2)\";\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(player.position.x + 2, player.position.y + 2, 12, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw player\n\t\t\t\tctx.fillStyle = isCurrentPlayer ? \"#4287f5\" : \"#888\";\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(player.position.x, player.position.y, 10, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw player border\n\t\t\t\tctx.strokeStyle = \"#333\";\n\t\t\t\tctx.lineWidth = 2;\n\t\t\t\tctx.stroke();\n\n\t\t\t\t// Draw player ID\n\t\t\t\tctx.fillStyle = \"#333\";\n\t\t\t\tctx.font = \"12px Arial\";\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\tctx.fillText(\n\t\t\t\t\tisCurrentPlayer ? \"YOU\" : player.id.substring(0, 8),\n\t\t\t\t\tplayer.position.x,\n\t\t\t\t\tplayer.position.y - 15\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tanimationRef.current = requestAnimationFrame(renderLoop);\n\t\t};\n\n\t\tanimationRef.current = requestAnimationFrame(renderLoop);\n\n\t\treturn () => {\n\t\t\tif (animationRef.current) {\n\t\t\t\tcancelAnimationFrame(animationRef.current);\n\t\t\t\tanimationRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [players, gameRoom.connection]);\n\n\t// Listen for world updates\n\tgameRoom.useEvent(\"worldUpdate\", ({ playerList }: { playerList: Player[] }) => {\n\t\tsetPlayers(playerList);\n\t\t\n\t\t// Try to identify current player - this is a simple approach\n\t\t// In a real implementation, we'd get the connection ID from the server\n\t\tif (currentPlayerId === null && playerList.length > 0) {\n\t\t\tsetCurrentPlayerId(playerList[playerList.length - 1].id);\n\t\t}\n\t});\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{isConnected ? \"Connected\" : \"Disconnected\"}\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Multiplayer Game

\n\t\t\t\t

Real-time multiplayer movement with RivetKit

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How to Play

\n\t\t\t\t

\n\t\t\t\t\tUse WASD or arrow keys to move your character around the game world. \n\t\t\t\t\tYour character is shown in blue, while other players appear in gray. \n\t\t\t\t\tThe game updates in real-time, so you'll see other players moving as they play.\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\tYou\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\tOther Players\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Controls:

\n\t\t\t\t

Move: WASD or Arrow Keys

\n\t\t\t\t

Players online: {players.length}

\n\t\t\t
\n\t\t
\n\t);\n}", - "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Multiplayer Game - RivetKit\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type Position = { x: number; y: number };\nexport type Input = { x: number; y: number };\nexport type Player = { id: string; position: Position; input: Input };\n\nconst gameRoom = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tplayers: {} as Record,\n\t\tmapSize: 800,\n\t},\n\n\tonStart: (c) => {\n\t\t// Set up game update loop\n\t\tsetInterval(() => {\n\t\t\tconst playerList: Player[] = [];\n\t\t\tlet hasPlayers = false;\n\n\t\t\tfor (const id in c.state.players) {\n\t\t\t\tconst player = c.state.players[id];\n\t\t\t\tconst speed = 5;\n\n\t\t\t\t// Update position based on input\n\t\t\t\tplayer.position.x += player.input.x * speed;\n\t\t\t\tplayer.position.y += player.input.y * speed;\n\n\t\t\t\t// Keep player in bounds\n\t\t\t\tplayer.position.x = Math.max(\n\t\t\t\t\t10,\n\t\t\t\t\tMath.min(player.position.x, c.state.mapSize - 10),\n\t\t\t\t);\n\t\t\t\tplayer.position.y = Math.max(\n\t\t\t\t\t10,\n\t\t\t\t\tMath.min(player.position.y, c.state.mapSize - 10),\n\t\t\t\t);\n\n\t\t\t\t// Add to list for broadcast\n\t\t\t\tplayerList.push(player);\n\t\t\t\thasPlayers = true;\n\t\t\t}\n\n\t\t\t// Only broadcast if there are players\n\t\t\tif (hasPlayers) {\n\t\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\t\tc.broadcast(\"worldUpdate\", { playerList });\n\t\t\t}\n\t\t}, 50);\n\n\t\t// Store interval ID for cleanup (would need to be cleaned up manually if needed)\n\t\t// For now, we'll let the interval run since there's no cleanup method\n\t},\n\n\t// Handle client connections: https://rivet.dev/docs/actors/connection-lifecycle\n\tonConnect: (c, conn) => {\n\t\tconst id = conn.id;\n\t\t// State changes are automatically persisted\n\t\tc.state.players[id] = {\n\t\t\tid,\n\t\t\tposition: {\n\t\t\t\tx: Math.floor(Math.random() * (c.state.mapSize - 100)) + 50,\n\t\t\t\ty: Math.floor(Math.random() * (c.state.mapSize - 100)) + 50,\n\t\t\t},\n\t\t\tinput: { x: 0, y: 0 },\n\t\t};\n\n\t\t// Send initial world state to new player\n\t\tconst playerList = Object.values(c.state.players);\n\t\tconn.send(\"worldUpdate\", { playerList });\n\t},\n\n\tonDisconnect: (c, conn) => {\n\t\tdelete c.state.players[conn.id];\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tsetInput: (c, input: Input) => {\n\t\t\tconst player = c.state.players[c.conn.id];\n\t\t\tif (player) {\n\t\t\t\tplayer.input = input;\n\t\t\t}\n\t\t},\n\n\t\tgetPlayerCount: (c) => {\n\t\t\treturn Object.keys(c.state.players).length;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { gameRoom },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "README.md": "# Order Fulfillment State Machine for RivetKit\n\nExample project demonstrating a basic order state machine with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/workflows\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOnce the registry starts, the terminal prints the manager endpoint and inspector URL. Connect to `orderWorkflow` with any order ID (for example `order-123`), provide creation input like `{ \"customer\": \"Acme Corp\" }`, then use `advance` to step through the fulfillment stages and `getNextStatus` to see which state comes next.\n\n## License\n\nApache 2.0\n", + ".gitignore": ".actorcore\nnode_modules\n", + "package-lock.json": "{\n \"name\": \"example-workflows\",\n \"version\": \"2.0.14\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-workflows\",\n \"version\": \"2.0.14\",\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vite-node/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vite-node/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vitest/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vitest/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-workflows\",\n \"version\": \"2.0.14\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"tsx src/server.ts\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "tsconfig.json": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */\n \"target\": \"esnext\",\n /* Specify a set of bundled library declaration files that describe the target runtime environment. */\n \"lib\": [\"esnext\"],\n /* Specify what JSX code is generated. */\n \"jsx\": \"react-jsx\",\n\n /* Specify what module code is generated. */\n \"module\": \"esnext\",\n /* Specify how TypeScript looks up a file from a given module specifier. */\n \"moduleResolution\": \"bundler\",\n /* Specify type package names to be included without being referenced in a source file. */\n \"types\": [\"node\"],\n /* Enable importing .json files */\n \"resolveJsonModule\": true,\n\n /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */\n \"allowJs\": true,\n /* Enable error reporting in type-checked JavaScript files. */\n \"checkJs\": false,\n\n /* Disable emitting files from a compilation. */\n \"noEmit\": true,\n\n /* Ensure that each file can be safely transpiled without relying on other imports. */\n \"isolatedModules\": true,\n /* Allow 'import x from y' when a module doesn't have a default export. */\n \"allowSyntheticDefaultImports\": true,\n /* Ensure that casing is correct in imports. */\n \"forceConsistentCasingInFileNames\": true,\n\n /* Enable all strict type-checking options. */\n \"strict\": true,\n\n /* Skip type checking all .d.ts files. */\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*.ts\", \"scripts/**/*.ts\", \"tests/**/*.ts\"]\n}\n", + "src/types.ts": "export type OrderStatus = \"pending\" | \"packed\" | \"shipped\" | \"delivered\";\n\nexport type OrderInput = {\n\tcustomer: string;\n};\n\nexport type Order = {\n\tid: string;\n\tcustomer: string;\n\tstate: OrderStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n};\n\nexport const orderFlow: readonly OrderStatus[] = [\n\t\"pending\",\n\t\"packed\",\n\t\"shipped\",\n\t\"delivered\",\n];\n", + "src/registry.ts": "import { actor, setup, UserError } from \"rivetkit\";\nimport { assertUnreachable } from \"rivetkit/utils\";\nimport type { Order, OrderInput } from \"./types\";\n\nconst orderWorkflow = actor({\n\tcreateState: (c, input): Order => ({\n\t\tid: c.actorId,\n\t\tcustomer: (input as OrderInput).customer,\n\t\tstate: \"pending\",\n\t\tcreatedAt: Date.now(),\n\t\tupdatedAt: Date.now(),\n\t}),\n\tactions: {\n\t\tadvance: (c) => {\n\t\t\tswitch (c.state.state) {\n\t\t\t\tcase \"pending\":\n\t\t\t\t\t// Execute durable operation here\n\t\t\t\t\tc.state.state = \"packed\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"packed\":\n\t\t\t\t\t// Execute durable operation here\n\t\t\t\t\tc.state.state = \"shipped\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"shipped\":\n\t\t\t\t\t// Execute durable operation here\n\t\t\t\t\tc.state.state = \"delivered\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"delivered\":\n\t\t\t\t\t// Execute durable operation here\n\t\t\t\t\tthrow new UserError(\"order already delivered\", {\n\t\t\t\t\t\tcode: \"order_complete\",\n\t\t\t\t\t});\n\t\t\t\tdefault:\n\t\t\t\t\tassertUnreachable(c.state.state);\n\t\t\t}\n\n\t\t\tc.state.updatedAt = Date.now();\n\n\t\t\tc.broadcast(\"orderAdvanced\", c.state);\n\n\t\t\treturn c.state;\n\t\t},\n\n\t\tgetOrder: (c) => c.state,\n\t},\n});\n\nexport const registry = setup({\n\tuse: { orderWorkflow },\n});\n\nexport type Registry = typeof registry;\n", + "src/server.ts": "import { registry } from \"./registry\";\n\nregistry.start();\n" } }, { @@ -125,113 +95,132 @@ export const examples: ExampleData[] = [ "files": { "tests/sync.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\ntest(\"Sync system can handle contact synchronization\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst sync = client.contacts.getOrCreate([\"test-sync-new\"]);\n\n\t// Initial state should be empty (or may have existing data)\n\tconst initialContacts = await sync.getAllContacts();\n\tconst initialCount = initialContacts.length;\n\n\t// Push some contacts\n\tconst contacts = [\n\t\t{\n\t\t\tid: \"1\",\n\t\t\tname: \"Alice Johnson\",\n\t\t\temail: \"alice@example.com\",\n\t\t\tphone: \"555-0001\",\n\t\t\tupdatedAt: Date.now() - 1000,\n\t\t},\n\t\t{\n\t\t\tid: \"2\",\n\t\t\tname: \"Bob Smith\",\n\t\t\temail: \"bob@example.com\",\n\t\t\tphone: \"555-0002\",\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t];\n\n\tconst pushResult = await sync.pushChanges(contacts);\n\texpect(pushResult).toMatchObject({\n\t\ttimestamp: expect.any(Number),\n\t});\n\n\t// Verify contacts were stored\n\tconst allContacts = await sync.getAllContacts();\n\texpect(allContacts).toHaveLength(initialCount + 2);\n\texpect(allContacts).toEqual(expect.arrayContaining(contacts));\n});\n\ntest(\"Sync system handles conflict resolution with last-write-wins\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst sync = client.contacts.getOrCreate([\"test-conflicts\"]);\n\n\tconst oldTimestamp = Date.now() - 2000;\n\tconst newTimestamp = Date.now();\n\n\t// Push initial contact\n\tconst originalContact = {\n\t\tid: \"conflict-test\",\n\t\tname: \"Original Name\",\n\t\temail: \"original@example.com\",\n\t\tphone: \"555-0000\",\n\t\tupdatedAt: oldTimestamp,\n\t};\n\n\tawait sync.pushChanges([originalContact]);\n\n\t// Push conflicting update with newer timestamp\n\tconst updatedContact = {\n\t\tid: \"conflict-test\",\n\t\tname: \"Updated Name\",\n\t\temail: \"updated@example.com\",\n\t\tphone: \"555-1111\",\n\t\tupdatedAt: newTimestamp,\n\t};\n\n\tawait sync.pushChanges([updatedContact]);\n\n\t// Verify newer version won\n\tconst contacts = await sync.getAllContacts();\n\tconst conflictContact = contacts.find((c) => c.id === \"conflict-test\");\n\texpect(conflictContact).toEqual(updatedContact);\n\n\t// Try to push older version - should be ignored\n\tconst olderContact = {\n\t\tid: \"conflict-test\",\n\t\tname: \"Older Name\",\n\t\temail: \"older@example.com\",\n\t\tphone: \"555-9999\",\n\t\tupdatedAt: oldTimestamp - 1000,\n\t};\n\n\tawait sync.pushChanges([olderContact]);\n\n\t// Verify newer version is still there\n\tconst finalContacts = await sync.getAllContacts();\n\tconst finalContact = finalContacts.find((c) => c.id === \"conflict-test\");\n\texpect(finalContact).toEqual(updatedContact);\n});\n\ntest(\"Sync system tracks changes after timestamp\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst sync = client.contacts.getOrCreate([\"test-changes\"]);\n\n\tconst baseTime = Date.now();\n\n\t// Add some contacts at different times\n\tconst contact1 = {\n\t\tid: \"1\",\n\t\tname: \"First Contact\",\n\t\temail: \"first@example.com\",\n\t\tphone: \"555-0001\",\n\t\tupdatedAt: baseTime - 1000,\n\t};\n\n\tconst contact2 = {\n\t\tid: \"2\",\n\t\tname: \"Second Contact\",\n\t\temail: \"second@example.com\",\n\t\tphone: \"555-0002\",\n\t\tupdatedAt: baseTime + 1000,\n\t};\n\n\tawait sync.pushChanges([contact1]);\n\tawait sync.pushChanges([contact2]);\n\n\t// Get changes after base time - should only return contact2\n\tconst changes = await sync.getChanges(baseTime);\n\texpect(changes.changes).toHaveLength(1);\n\texpect(changes.changes[0]).toEqual(contact2);\n\texpect(changes.timestamp).toBeGreaterThanOrEqual(baseTime);\n\n\t// Get all changes - should return both\n\tconst allChanges = await sync.getChanges(0);\n\texpect(allChanges.changes).toHaveLength(2);\n});\n\ntest(\"Sync system provides statistics\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst sync = client.contacts.getOrCreate([\"test-stats-new\"]);\n\n\t// Initial stats\n\tconst initialStats = await sync.getSyncStats();\n\texpect(initialStats).toMatchObject({\n\t\ttotalContacts: expect.any(Number),\n\t\tlastSyncTime: expect.any(Number),\n\t\tdeletedContacts: expect.any(Number),\n\t});\n\n\tconst initialTotal = initialStats.totalContacts;\n\n\t// Add some contacts\n\tconst contacts = [\n\t\t{\n\t\t\tid: \"1\",\n\t\t\tname: \"Contact 1\",\n\t\t\temail: \"c1@example.com\",\n\t\t\tphone: \"555-0001\",\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t\t{\n\t\t\tid: \"2\",\n\t\t\tname: \"Contact 2\",\n\t\t\temail: \"c2@example.com\",\n\t\t\tphone: \"555-0002\",\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t\t{\n\t\t\tid: \"3\",\n\t\t\tname: \"\",\n\t\t\temail: \"deleted@example.com\",\n\t\t\tphone: \"555-0003\",\n\t\t\tupdatedAt: Date.now(),\n\t\t}, // Deleted contact\n\t];\n\n\tawait sync.pushChanges(contacts);\n\n\tconst stats = await sync.getSyncStats();\n\texpect(stats.totalContacts).toBe(initialTotal + 2); // Only non-deleted contacts\n\texpect(stats.deletedContacts).toBeGreaterThanOrEqual(1);\n\texpect(stats.lastSyncTime).toBeGreaterThan(initialStats.lastSyncTime);\n});\n\ntest(\"Sync system reset functionality\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst sync = client.contacts.getOrCreate([\"test-reset\"]);\n\n\t// Add some contacts\n\tconst contacts = [\n\t\t{\n\t\t\tid: \"1\",\n\t\t\tname: \"Contact 1\",\n\t\t\temail: \"c1@example.com\",\n\t\t\tphone: \"555-0001\",\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t\t{\n\t\t\tid: \"2\",\n\t\t\tname: \"Contact 2\",\n\t\t\temail: \"c2@example.com\",\n\t\t\tphone: \"555-0002\",\n\t\t\tupdatedAt: Date.now(),\n\t\t},\n\t];\n\n\tawait sync.pushChanges(contacts);\n\n\t// Verify contacts exist\n\tlet allContacts = await sync.getAllContacts();\n\texpect(allContacts).toHaveLength(2);\n\n\t// Reset the system\n\tconst resetResult = await sync.reset();\n\texpect(resetResult).toMatchObject({\n\t\ttimestamp: expect.any(Number),\n\t});\n\n\t// Verify contacts are gone\n\tallContacts = await sync.getAllContacts();\n\texpect(allContacts).toEqual([]);\n\n\tconst stats = await sync.getSyncStats();\n\texpect(stats.totalContacts).toBe(0);\n});\n", "README.md": "# Sync Contacts for RivetKit\n\nExample project demonstrating offline-first contact synchronization with conflict resolution using [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/sync\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Offline-First Sync**: Add contacts locally, sync when connection available\n- **Conflict Resolution**: \"Last write wins\" conflict resolution using timestamps\n- **Real-time Updates**: See changes from other clients immediately\n- **Soft Deletes**: Deleted contacts are marked as deleted, not removed\n- **Periodic Sync**: Automatic background synchronization every 5 seconds\n- **Manual Sync**: Force synchronization with \"Sync Now\" button\n- **Sync Statistics**: Track total contacts, deletions, and last sync time\n- **Connection Status**: Visual indicators for sync status (Synced/Syncing/Offline)\n\n## How it works\n\nThis contact sync system demonstrates:\n\n1. **Offline-First Architecture**: Changes are applied locally first for immediate UI feedback\n2. **Conflict Resolution**: Server uses timestamp-based \"last write wins\" strategy\n3. **Event Broadcasting**: Real-time updates sent to all connected clients\n4. **Soft Delete Pattern**: Deleted contacts marked with empty name instead of removal\n5. **Periodic Synchronization**: Background sync every 5 seconds to catch remote changes\n6. **Optimistic Updates**: UI updates immediately before server confirmation\n\n## Architecture\n\n- **Backend**: RivetKit actor managing contact state and synchronization logic\n- **Frontend**: React application with offline-first contact management\n- **Sync Strategy**: Timestamp-based conflict resolution with periodic reconciliation\n- **State Management**: Server-side persistence with client-side optimistic updates\n\n## Synchronization Flow\n\n### Adding Contacts\n```typescript\n// 1. Add locally for immediate UI feedback\nsetContacts(prev => [...prev, newContact]);\n\n// 2. Push to server for persistence and broadcast\nawait actor.pushChanges([newContact]);\n```\n\n### Conflict Resolution\n```typescript\n// Server-side: Last write wins based on timestamp\nif (!existing || existing.updatedAt < contact.updatedAt) {\n state.contacts[contact.id] = contact;\n}\n```\n\n### Periodic Sync\n```typescript\n// Every 5 seconds:\n// 1. Get remote changes since last sync\nconst changes = await actor.getChanges(lastSyncTime);\n\n// 2. Apply remote changes locally\n// 3. Push any local changes to server\n// 4. Update last sync timestamp\n```\n\n## Sync Strategies\n\nThis example implements **Last Write Wins** conflict resolution, but the pattern supports other strategies:\n\n### Last Write Wins (Current Implementation)\n- Simple timestamp comparison\n- Most recent change takes precedence\n- Easy to implement and understand\n- Risk of data loss in concurrent edits\n\n### Alternative Strategies\n- **Operational Transform**: Transform operations to maintain intent\n- **CRDTs**: Conflict-free replicated data types for automatic resolution\n- **Three-Way Merge**: Compare base, local, and remote versions\n- **User-Prompted Resolution**: Ask user to resolve conflicts manually\n\n## Use Cases\n\nThis sync pattern is perfect for:\n\n- **Contact Management**: Personal and business contact lists\n- **Note Taking**: Distributed note-taking applications\n- **Todo Lists**: Task management with offline support\n- **Settings Sync**: User preferences across devices\n- **Shopping Lists**: Collaborative shopping with family/friends\n- **Inventory Management**: Small business inventory tracking\n\n## Extending\n\nThis sync system can be enhanced with:\n\n- **User Authentication**: Per-user contact isolation\n- **Categories/Tags**: Organize contacts into groups\n- **Import/Export**: Bulk contact operations\n- **Search/Filtering**: Find contacts quickly\n- **Merge Conflicts**: UI for manual conflict resolution\n- **Backup/Restore**: Data protection features\n- **Sharing**: Share contacts between users\n- **Versioning**: Track contact change history\n- **Advanced Sync**: Delta sync for large datasets\n\n## Offline Behavior\n\n### When Offline\n- Contacts can still be added/deleted locally\n- Changes are queued for next sync\n- UI shows \"Offline\" status\n- All functionality remains available\n\n### When Reconnecting\n- Automatic sync of queued changes\n- Conflict resolution applied\n- Status updates to \"Syncing\" then \"Synced\"\n- Real-time updates resume\n\n## Testing Offline Sync\n\nTo test offline functionality:\n\n1. **Add contacts** while online\n2. **Disconnect network** (disable WiFi or ethernet)\n3. **Add more contacts** - they appear locally\n4. **Reconnect network** - contacts sync automatically\n5. **Open multiple tabs** - see real-time sync between clients\n\n## Performance Considerations\n\n### Optimization Strategies\n- **Delta Sync**: Only sync changes since last sync\n- **Batching**: Group multiple changes into single requests\n- **Compression**: Compress sync payloads for large datasets\n- **Indexing**: Index by timestamp for efficient change queries\n- **Pagination**: Handle large contact lists efficiently\n\n### Scalability Notes\n- Current implementation stores all contacts in memory\n- For production, consider database persistence\n- Implement pagination for large contact lists\n- Add rate limiting for sync operations\n- Consider WebSocket connections for real-time updates\n\n## Error Handling\n\nThe system handles various error scenarios:\n\n- **Network Failures**: Fall back to offline mode\n- **Server Errors**: Retry with exponential backoff\n- **Sync Conflicts**: Automatic resolution with timestamps\n- **Invalid Data**: Validation before persistence\n- **Connection Loss**: Queue changes for later sync\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-sync\",\n \"version\": \"1.0.0\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-sync\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz\",\n \"integrity\": \"sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz\",\n \"integrity\": \"sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz\",\n \"integrity\": \"sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz\",\n \"integrity\": \"sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@jest/schemas\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz\",\n \"integrity\": \"sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@sinclair/typebox\": \"^0.27.8\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@sinclair/typebox\": {\n \"version\": \"0.27.8\",\n \"resolved\": \"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz\",\n \"integrity\": \"sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.7.tgz\",\n \"integrity\": \"sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz\",\n \"integrity\": \"sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"chai\": \"^4.3.10\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz\",\n \"integrity\": \"sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"1.6.1\",\n \"p-limit\": \"^5.0.0\",\n \"pathe\": \"^1.1.1\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz\",\n \"integrity\": \"sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz\",\n \"integrity\": \"sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^2.2.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz\",\n \"integrity\": \"sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"diff-sequences\": \"^29.6.3\",\n \"estree-walker\": \"^3.0.3\",\n \"loupe\": \"^2.3.7\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/acorn\": {\n \"version\": \"8.15.0\",\n \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz\",\n \"integrity\": \"sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"acorn\": \"bin/acorn\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/acorn-walk\": {\n \"version\": \"8.3.4\",\n \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz\",\n \"integrity\": \"sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.11.0\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz\",\n \"integrity\": \"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-4.5.0.tgz\",\n \"integrity\": \"sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^1.1.0\",\n \"check-error\": \"^1.0.3\",\n \"deep-eql\": \"^4.1.3\",\n \"get-func-name\": \"^2.0.2\",\n \"loupe\": \"^2.3.6\",\n \"pathval\": \"^1.1.1\",\n \"type-detect\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"1.0.3\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz\",\n \"integrity\": \"sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.2\"\n },\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/confbox\": {\n \"version\": \"0.1.8\",\n \"resolved\": \"https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz\",\n \"integrity\": \"sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cross-spawn\": {\n \"version\": \"7.0.6\",\n \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^3.1.0\",\n \"shebang-command\": \"^2.0.0\",\n \"which\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"4.1.4\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz\",\n \"integrity\": \"sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"type-detect\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-sequences\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz\",\n \"integrity\": \"sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz\",\n \"integrity\": \"sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.6\",\n \"@esbuild/android-arm\": \"0.25.6\",\n \"@esbuild/android-arm64\": \"0.25.6\",\n \"@esbuild/android-x64\": \"0.25.6\",\n \"@esbuild/darwin-arm64\": \"0.25.6\",\n \"@esbuild/darwin-x64\": \"0.25.6\",\n \"@esbuild/freebsd-arm64\": \"0.25.6\",\n \"@esbuild/freebsd-x64\": \"0.25.6\",\n \"@esbuild/linux-arm\": \"0.25.6\",\n \"@esbuild/linux-arm64\": \"0.25.6\",\n \"@esbuild/linux-ia32\": \"0.25.6\",\n \"@esbuild/linux-loong64\": \"0.25.6\",\n \"@esbuild/linux-mips64el\": \"0.25.6\",\n \"@esbuild/linux-ppc64\": \"0.25.6\",\n \"@esbuild/linux-riscv64\": \"0.25.6\",\n \"@esbuild/linux-s390x\": \"0.25.6\",\n \"@esbuild/linux-x64\": \"0.25.6\",\n \"@esbuild/netbsd-arm64\": \"0.25.6\",\n \"@esbuild/netbsd-x64\": \"0.25.6\",\n \"@esbuild/openbsd-arm64\": \"0.25.6\",\n \"@esbuild/openbsd-x64\": \"0.25.6\",\n \"@esbuild/openharmony-arm64\": \"0.25.6\",\n \"@esbuild/sunos-x64\": \"0.25.6\",\n \"@esbuild/win32-arm64\": \"0.25.6\",\n \"@esbuild/win32-ia32\": \"0.25.6\",\n \"@esbuild/win32-x64\": \"0.25.6\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/execa\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/execa/-/execa-8.0.1.tgz\",\n \"integrity\": \"sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cross-spawn\": \"^7.0.3\",\n \"get-stream\": \"^8.0.1\",\n \"human-signals\": \"^5.0.0\",\n \"is-stream\": \"^3.0.0\",\n \"merge-stream\": \"^2.0.0\",\n \"npm-run-path\": \"^5.1.0\",\n \"onetime\": \"^6.0.0\",\n \"signal-exit\": \"^4.1.0\",\n \"strip-final-newline\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/execa?sponsor=1\"\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-func-name\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz\",\n \"integrity\": \"sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/get-stream\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz\",\n \"integrity\": \"sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/human-signals\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz\",\n \"integrity\": \"sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=16.17.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/is-stream\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz\",\n \"integrity\": \"sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isexe\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz\",\n \"integrity\": \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/local-pkg\": {\n \"version\": \"0.5.1\",\n \"resolved\": \"https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz\",\n \"integrity\": \"sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mlly\": \"^1.7.3\",\n \"pkg-types\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"2.3.7\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz\",\n \"integrity\": \"sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.1\"\n }\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/merge-stream\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz\",\n \"integrity\": \"sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/mimic-fn\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz\",\n \"integrity\": \"sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/mlly\": {\n \"version\": \"1.7.4\",\n \"resolved\": \"https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz\",\n \"integrity\": \"sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.14.0\",\n \"pathe\": \"^2.0.1\",\n \"pkg-types\": \"^1.3.0\",\n \"ufo\": \"^1.5.4\"\n }\n },\n \"node_modules/mlly/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/npm-run-path\": {\n \"version\": \"5.3.0\",\n \"resolved\": \"https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz\",\n \"integrity\": \"sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/npm-run-path/node_modules/path-key\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz\",\n \"integrity\": \"sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/onetime\": {\n \"version\": \"6.0.0\",\n \"resolved\": \"https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz\",\n \"integrity\": \"sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mimic-fn\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-limit\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz\",\n \"integrity\": \"sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yocto-queue\": \"^1.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/path-key\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz\",\n \"integrity\": \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz\",\n \"integrity\": \"sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz\",\n \"integrity\": \"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/pkg-types\": {\n \"version\": \"1.3.1\",\n \"resolved\": \"https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz\",\n \"integrity\": \"sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"confbox\": \"^0.1.8\",\n \"mlly\": \"^1.7.4\",\n \"pathe\": \"^2.0.1\"\n }\n },\n \"node_modules/pkg-types/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/pretty-format\": {\n \"version\": \"29.7.0\",\n \"resolved\": \"https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz\",\n \"integrity\": \"sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jest/schemas\": \"^29.6.3\",\n \"ansi-styles\": \"^5.0.0\",\n \"react-is\": \"^18.0.0\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/pretty-format/node_modules/ansi-styles\": {\n \"version\": \"5.2.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz\",\n \"integrity\": \"sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-is\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz\",\n \"integrity\": \"sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shebang-command\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz\",\n \"integrity\": \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"shebang-regex\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shebang-regex\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz\",\n \"integrity\": \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/signal-exit\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz\",\n \"integrity\": \"sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/isaacs\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-final-newline\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz\",\n \"integrity\": \"sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz\",\n \"integrity\": \"sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinypool\": {\n \"version\": \"0.8.4\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz\",\n \"integrity\": \"sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"2.2.1\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz\",\n \"integrity\": \"sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.3\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz\",\n \"integrity\": \"sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/type-detect\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz\",\n \"integrity\": \"sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/ufo\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz\",\n \"integrity\": \"sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz\",\n \"integrity\": \"sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.3.4\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"vite\": \"^5.0.0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz\",\n \"integrity\": \"sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/expect\": \"1.6.1\",\n \"@vitest/runner\": \"1.6.1\",\n \"@vitest/snapshot\": \"1.6.1\",\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"acorn-walk\": \"^8.3.2\",\n \"chai\": \"^4.3.10\",\n \"debug\": \"^4.3.4\",\n \"execa\": \"^8.0.1\",\n \"local-pkg\": \"^0.5.0\",\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"std-env\": \"^3.5.0\",\n \"strip-literal\": \"^2.0.0\",\n \"tinybench\": \"^2.5.1\",\n \"tinypool\": \"^0.8.3\",\n \"vite\": \"^5.0.0\",\n \"vite-node\": \"1.6.1\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"@vitest/browser\": \"1.6.1\",\n \"@vitest/ui\": \"1.6.1\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/which\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/which/-/which-2.0.2.tgz\",\n \"integrity\": \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"isexe\": \"^2.0.0\"\n },\n \"bin\": {\n \"node-which\": \"bin/node-which\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yocto-queue\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz\",\n \"integrity\": \"sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.20\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-sync\",\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n}\n", + "package-lock.json": "{\n \"name\": \"example-sync\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-sync\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"rivetkit\": \"^0.9.1\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.21\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.21.tgz\",\n \"integrity\": \"sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-sync\",\n \"version\": \"2.0.15\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"skipLibCheck\": true,\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n \"strict\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"include\": [\"src\", \"tests\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n\tbuild: {\n\t\toutDir: \"../../dist\",\n\t\temptyOutDir: true,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tenvironment: \"node\",\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { Contact, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nexport function App() {\n\tconst [contacts, setContacts] = useState([]);\n\tconst [name, setName] = useState(\"\");\n\tconst [email, setEmail] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [syncStatus, setSyncStatus] = useState<\"Idle\" | \"Syncing\" | \"Synced\" | \"Offline\">(\"Idle\");\n\tconst [stats, setStats] = useState({ totalContacts: 0, lastSyncTime: 0, deletedContacts: 0 });\n\n\tconst lastSyncTime = useRef(0);\n\tconst syncIntervalRef = useRef(null);\n\n\tconst contactsActor = useActor({\n\t\tname: \"contacts\",\n\t\tkey: [\"global\"],\n\t});\n\n\t// Load initial contacts and stats\n\tuseEffect(() => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tconst loadInitialData = async () => {\n\t\t\ttry {\n\t\t\t\tconst data = await contactsActor.connection!.getChanges(0);\n\t\t\t\tsetContacts(data.changes);\n\t\t\t\tlastSyncTime.current = data.timestamp;\n\t\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t\tconst statsData = await contactsActor.connection!.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t};\n\n\t\tloadInitialData();\n\t}, [contactsActor.connection]);\n\n\t// Handle contact events from other clients\n\tcontactsActor.useEvent(\"contactsChanged\", ({ contacts: updatedContacts }: { contacts: Contact[] }) => {\n\t\tsetContacts((prev) => {\n\t\t\tconst contactMap = new Map(prev.map((c) => [c.id, c]));\n\n\t\t\tupdatedContacts.forEach((contact) => {\n\t\t\t\tconst existing = contactMap.get(contact.id);\n\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\tcontactMap.set(contact.id, contact);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Array.from(contactMap.values()).filter(c => c.name !== \"\");\n\t\t});\n\n\t\t// Update stats when contacts change\n\t\tif (contactsActor.connection) {\n\t\t\tcontactsActor.connection.getSyncStats().then(setStats);\n\t\t}\n\t});\n\n\t// Periodic sync - every 5 seconds\n\tuseEffect(() => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tconst sync = async () => {\n\t\t\tsetSyncStatus(\"Syncing\");\n\n\t\t\ttry {\n\t\t\t\t// Get remote changes\n\t\t\t\tconst changes = await contactsActor.connection!.getChanges(lastSyncTime.current);\n\n\t\t\t\t// Apply remote changes\n\t\t\t\tif (changes.changes.length > 0) {\n\t\t\t\t\tsetContacts((prev) => {\n\t\t\t\t\t\tconst contactMap = new Map(prev.map((c) => [c.id, c]));\n\n\t\t\t\t\t\tchanges.changes.forEach((contact) => {\n\t\t\t\t\t\t\tconst existing = contactMap.get(contact.id);\n\t\t\t\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\t\t\t\tcontactMap.set(contact.id, contact);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn Array.from(contactMap.values()).filter(c => c.name !== \"\");\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Push local changes\n\t\t\t\tconst localChanges = contacts.filter(\n\t\t\t\t\t(c) => c.updatedAt > lastSyncTime.current,\n\t\t\t\t);\n\t\t\t\tif (localChanges.length > 0) {\n\t\t\t\t\tawait contactsActor.connection!.pushChanges(localChanges);\n\t\t\t\t}\n\n\t\t\t\tlastSyncTime.current = changes.timestamp;\n\t\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t\t// Update stats\n\t\t\t\tconst statsData = await contactsActor.connection!.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t};\n\n\t\tsyncIntervalRef.current = setInterval(sync, 5000);\n\n\t\treturn () => {\n\t\t\tif (syncIntervalRef.current) {\n\t\t\t\tclearInterval(syncIntervalRef.current);\n\t\t\t\tsyncIntervalRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [contactsActor.connection, contacts]);\n\n\t// Add new contact (local first)\n\tconst addContact = async () => {\n\t\tif (!name.trim()) return;\n\n\t\tconst newContact: Contact = {\n\t\t\tid: Date.now().toString(),\n\t\t\tname,\n\t\t\temail,\n\t\t\tphone,\n\t\t\tupdatedAt: Date.now(),\n\t\t};\n\n\t\t// Add locally first for immediate UI feedback\n\t\tsetContacts((prev) => [...prev, newContact]);\n\n\t\t// Then sync to server\n\t\tif (contactsActor.connection) {\n\t\t\ttry {\n\t\t\t\tawait contactsActor.connection.pushChanges([newContact]);\n\t\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t}\n\n\t\tsetName(\"\");\n\t\tsetEmail(\"\");\n\t\tsetPhone(\"\");\n\t};\n\n\t// Delete contact (implemented as update with empty name)\n\tconst deleteContact = async (id: string) => {\n\t\tconst deletedContact = contacts.find(c => c.id === id);\n\t\tif (!deletedContact) return;\n\n\t\tconst updatedContact: Contact = {\n\t\t\t...deletedContact,\n\t\t\tname: \"\", // Mark as deleted\n\t\t\tupdatedAt: Date.now()\n\t\t};\n\n\t\t// Remove locally first for immediate UI feedback\n\t\tsetContacts((prev) => prev.filter((c) => c.id !== id));\n\n\t\t// Then sync to server\n\t\tif (contactsActor.connection) {\n\t\t\ttry {\n\t\t\t\tawait contactsActor.connection.pushChanges([updatedContact]);\n\t\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t}\n\t};\n\n\t// Manual sync\n\tconst handleSync = async () => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tsetSyncStatus(\"Syncing\");\n\n\t\ttry {\n\t\t\t// Push all contacts\n\t\t\tawait contactsActor.connection.pushChanges(contacts);\n\n\t\t\t// Get all changes\n\t\t\tconst changes = await contactsActor.connection.getChanges(0);\n\n\t\t\tsetContacts(changes.changes.filter(c => c.name !== \"\"));\n\t\t\tlastSyncTime.current = changes.timestamp;\n\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t// Update stats\n\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\tsetStats(statsData);\n\t\t} catch (error) {\n\t\t\tsetSyncStatus(\"Offline\");\n\t\t}\n\t};\n\n\t// Reset all data\n\tconst handleReset = async () => {\n\t\tif (!contactsActor.connection) return;\n\n\t\ttry {\n\t\t\tawait contactsActor.connection.reset();\n\t\t\tsetContacts([]);\n\t\t\tlastSyncTime.current = Date.now();\n\t\t\tsetSyncStatus(\"Synced\");\n\t\t\tsetStats({ totalContacts: 0, lastSyncTime: Date.now(), deletedContacts: 0 });\n\t\t} catch (error) {\n\t\t\tsetSyncStatus(\"Offline\");\n\t\t}\n\t};\n\n\t// Handle form submission\n\tconst handleSubmit = (e: React.FormEvent) => {\n\t\te.preventDefault();\n\t\taddContact();\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Sync Contacts

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{syncStatus}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How it works

\n\t\t\t\t

\n\t\t\t\t\tThis contact sync system demonstrates offline-first synchronization with conflict resolution. \n\t\t\t\t\tAdd contacts and they'll sync across all connected clients. The system handles conflicts using \n\t\t\t\t\t\"last write wins\" based on timestamps, and supports offline operation with automatic sync when reconnected.\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Add New Contact

\n\t\t\t\t
\n\t\t\t\t\t setName(e.target.value)}\n\t\t\t\t\t\trequired\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t setEmail(e.target.value)}\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t setPhone(e.target.value)}\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Contacts ({contacts.length})

\n\t\t\t\t{contacts.length === 0 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\tNo contacts yet. Add some contacts to get started!\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\tcontacts.map((contact) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{contact.name}
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{contact.email && (\n\t\t\t\t\t\t\t\t\t\t
📧 {contact.email}
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{contact.phone && (\n\t\t\t\t\t\t\t\t\t\t
📞 {contact.phone}
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t deleteContact(contact.id)}\n\t\t\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t))\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{stats.totalContacts}
\n\t\t\t\t\t
Total Contacts
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{stats.deletedContacts}
\n\t\t\t\t\t
Deleted Items
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{stats.lastSyncTime ? new Date(stats.lastSyncTime).toLocaleTimeString() : \"—\"}\n\t\t\t\t\t
\n\t\t\t\t\t
Last Sync
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { Contact } from \"../backend/types\";\nimport type { registry } from \"../backend/registry\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nexport function App() {\n\tconst [contacts, setContacts] = useState([]);\n\tconst [name, setName] = useState(\"\");\n\tconst [email, setEmail] = useState(\"\");\n\tconst [phone, setPhone] = useState(\"\");\n\tconst [syncStatus, setSyncStatus] = useState<\"Idle\" | \"Syncing\" | \"Synced\" | \"Offline\">(\"Idle\");\n\tconst [stats, setStats] = useState({ totalContacts: 0, lastSyncTime: 0, deletedContacts: 0 });\n\n\tconst lastSyncTime = useRef(0);\n\tconst syncIntervalRef = useRef(null);\n\n\tconst contactsActor = useActor({\n\t\tname: \"contacts\",\n\t\tkey: [\"global\"],\n\t});\n\n\t// Load initial contacts and stats\n\tuseEffect(() => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tconst loadInitialData = async () => {\n\t\t\ttry {\n\t\t\t\tconst data = await contactsActor.connection!.getChanges(0);\n\t\t\t\tsetContacts(data.changes);\n\t\t\t\tlastSyncTime.current = data.timestamp;\n\t\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t\tconst statsData = await contactsActor.connection!.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t};\n\n\t\tloadInitialData();\n\t}, [contactsActor.connection]);\n\n\t// Handle contact events from other clients\n\tcontactsActor.useEvent(\"contactsChanged\", ({ contacts: updatedContacts }: { contacts: Contact[] }) => {\n\t\tsetContacts((prev) => {\n\t\t\tconst contactMap = new Map(prev.map((c) => [c.id, c]));\n\n\t\t\tupdatedContacts.forEach((contact) => {\n\t\t\t\tconst existing = contactMap.get(contact.id);\n\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\tcontactMap.set(contact.id, contact);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn Array.from(contactMap.values()).filter(c => c.name !== \"\");\n\t\t});\n\n\t\t// Update stats when contacts change\n\t\tif (contactsActor.connection) {\n\t\t\tcontactsActor.connection.getSyncStats().then(setStats);\n\t\t}\n\t});\n\n\t// Periodic sync - every 5 seconds\n\tuseEffect(() => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tconst sync = async () => {\n\t\t\tsetSyncStatus(\"Syncing\");\n\n\t\t\ttry {\n\t\t\t\t// Get remote changes\n\t\t\t\tconst changes = await contactsActor.connection!.getChanges(lastSyncTime.current);\n\n\t\t\t\t// Apply remote changes\n\t\t\t\tif (changes.changes.length > 0) {\n\t\t\t\t\tsetContacts((prev) => {\n\t\t\t\t\t\tconst contactMap = new Map(prev.map((c) => [c.id, c]));\n\n\t\t\t\t\t\tchanges.changes.forEach((contact) => {\n\t\t\t\t\t\t\tconst existing = contactMap.get(contact.id);\n\t\t\t\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\t\t\t\tcontactMap.set(contact.id, contact);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn Array.from(contactMap.values()).filter(c => c.name !== \"\");\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Push local changes\n\t\t\t\tconst localChanges = contacts.filter(\n\t\t\t\t\t(c) => c.updatedAt > lastSyncTime.current,\n\t\t\t\t);\n\t\t\t\tif (localChanges.length > 0) {\n\t\t\t\t\tawait contactsActor.connection!.pushChanges(localChanges);\n\t\t\t\t}\n\n\t\t\t\tlastSyncTime.current = changes.timestamp;\n\t\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t\t// Update stats\n\t\t\t\tconst statsData = await contactsActor.connection!.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t};\n\n\t\tsyncIntervalRef.current = setInterval(sync, 5000);\n\n\t\treturn () => {\n\t\t\tif (syncIntervalRef.current) {\n\t\t\t\tclearInterval(syncIntervalRef.current);\n\t\t\t\tsyncIntervalRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [contactsActor.connection, contacts]);\n\n\t// Add new contact (local first)\n\tconst addContact = async () => {\n\t\tif (!name.trim()) return;\n\n\t\tconst newContact: Contact = {\n\t\t\tid: Date.now().toString(),\n\t\t\tname,\n\t\t\temail,\n\t\t\tphone,\n\t\t\tupdatedAt: Date.now(),\n\t\t};\n\n\t\t// Add locally first for immediate UI feedback\n\t\tsetContacts((prev) => [...prev, newContact]);\n\n\t\t// Then sync to server\n\t\tif (contactsActor.connection) {\n\t\t\ttry {\n\t\t\t\tawait contactsActor.connection.pushChanges([newContact]);\n\t\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t}\n\n\t\tsetName(\"\");\n\t\tsetEmail(\"\");\n\t\tsetPhone(\"\");\n\t};\n\n\t// Delete contact (implemented as update with empty name)\n\tconst deleteContact = async (id: string) => {\n\t\tconst deletedContact = contacts.find(c => c.id === id);\n\t\tif (!deletedContact) return;\n\n\t\tconst updatedContact: Contact = {\n\t\t\t...deletedContact,\n\t\t\tname: \"\", // Mark as deleted\n\t\t\tupdatedAt: Date.now()\n\t\t};\n\n\t\t// Remove locally first for immediate UI feedback\n\t\tsetContacts((prev) => prev.filter((c) => c.id !== id));\n\n\t\t// Then sync to server\n\t\tif (contactsActor.connection) {\n\t\t\ttry {\n\t\t\t\tawait contactsActor.connection.pushChanges([updatedContact]);\n\t\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\t\tsetStats(statsData);\n\t\t\t} catch (error) {\n\t\t\t\tsetSyncStatus(\"Offline\");\n\t\t\t}\n\t\t}\n\t};\n\n\t// Manual sync\n\tconst handleSync = async () => {\n\t\tif (!contactsActor.connection) return;\n\n\t\tsetSyncStatus(\"Syncing\");\n\n\t\ttry {\n\t\t\t// Push all contacts\n\t\t\tawait contactsActor.connection.pushChanges(contacts);\n\n\t\t\t// Get all changes\n\t\t\tconst changes = await contactsActor.connection.getChanges(0);\n\n\t\t\tsetContacts(changes.changes.filter(c => c.name !== \"\"));\n\t\t\tlastSyncTime.current = changes.timestamp;\n\t\t\tsetSyncStatus(\"Synced\");\n\n\t\t\t// Update stats\n\t\t\tconst statsData = await contactsActor.connection.getSyncStats();\n\t\t\tsetStats(statsData);\n\t\t} catch (error) {\n\t\t\tsetSyncStatus(\"Offline\");\n\t\t}\n\t};\n\n\t// Reset all data\n\tconst handleReset = async () => {\n\t\tif (!contactsActor.connection) return;\n\n\t\ttry {\n\t\t\tawait contactsActor.connection.reset();\n\t\t\tsetContacts([]);\n\t\t\tlastSyncTime.current = Date.now();\n\t\t\tsetSyncStatus(\"Synced\");\n\t\t\tsetStats({ totalContacts: 0, lastSyncTime: Date.now(), deletedContacts: 0 });\n\t\t} catch (error) {\n\t\t\tsetSyncStatus(\"Offline\");\n\t\t}\n\t};\n\n\t// Handle form submission\n\tconst handleSubmit = (e: React.FormEvent) => {\n\t\te.preventDefault();\n\t\taddContact();\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Sync Contacts

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{syncStatus}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How it works

\n\t\t\t\t

\n\t\t\t\t\tThis contact sync system demonstrates offline-first synchronization with conflict resolution. \n\t\t\t\t\tAdd contacts and they'll sync across all connected clients. The system handles conflicts using \n\t\t\t\t\t\"last write wins\" based on timestamps, and supports offline operation with automatic sync when reconnected.\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Add New Contact

\n\t\t\t\t
\n\t\t\t\t\t setName(e.target.value)}\n\t\t\t\t\t\trequired\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t setEmail(e.target.value)}\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t setPhone(e.target.value)}\n\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Contacts ({contacts.length})

\n\t\t\t\t{contacts.length === 0 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\tNo contacts yet. Add some contacts to get started!\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\tcontacts.map((contact) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
{contact.name}
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t{contact.email && (\n\t\t\t\t\t\t\t\t\t\t
📧 {contact.email}
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{contact.phone && (\n\t\t\t\t\t\t\t\t\t\t
📞 {contact.phone}
\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t deleteContact(contact.id)}\n\t\t\t\t\t\t\t\tdisabled={!contactsActor.connection}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t))\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{stats.totalContacts}
\n\t\t\t\t\t
Total Contacts
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{stats.deletedContacts}
\n\t\t\t\t\t
Deleted Items
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{stats.lastSyncTime ? new Date(stats.lastSyncTime).toLocaleTimeString() : \"—\"}\n\t\t\t\t\t
\n\t\t\t\t\t
Last Sync
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", "src/frontend/index.html": "\n\n\n \n \n Sync Contacts - RivetKit\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type Contact = {\n\tid: string;\n\tname: string;\n\temail: string;\n\tphone: string;\n\tupdatedAt: number;\n};\n\nconst contacts = actor({\n\tonAuth: () => {},\n\t// State is automatically persisted\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tcontacts: {} as Record,\n\t\tlastSyncTime: Date.now(),\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetChanges: (c, after = 0) => {\n\t\t\tconst changes = Object.values(c.state.contacts).filter(\n\t\t\t\t(contact) => contact.updatedAt > after,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tchanges,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t},\n\n\t\tpushChanges: (c, contactList: Contact[]) => {\n\t\t\tlet changed = false;\n\n\t\t\tcontactList.forEach((contact) => {\n\t\t\t\tconst existing = c.state.contacts[contact.id];\n\n\t\t\t\t// Last write wins conflict resolution based on timestamp\n\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\t// State changes are automatically persisted\n\t\t\t\t\tc.state.contacts[contact.id] = contact;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Update last sync time\n\t\t\tc.state.lastSyncTime = Date.now();\n\n\t\t\tif (changed) {\n\t\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\t\tc.broadcast(\"contactsChanged\", {\n\t\t\t\t\tcontacts: Object.values(c.state.contacts).filter(\n\t\t\t\t\t\t(c) => c.name !== \"\",\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn { timestamp: c.state.lastSyncTime };\n\t\t},\n\n\t\tgetAllContacts: (c) => {\n\t\t\treturn Object.values(c.state.contacts).filter(\n\t\t\t\t(contact) => contact.name !== \"\",\n\t\t\t);\n\t\t},\n\n\t\tgetSyncStats: (c) => {\n\t\t\tconst allContacts = Object.values(c.state.contacts);\n\t\t\tconst activeContacts = allContacts.filter(\n\t\t\t\t(contact) => contact.name !== \"\",\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttotalContacts: activeContacts.length,\n\t\t\t\tlastSyncTime: c.state.lastSyncTime,\n\t\t\t\tdeletedContacts: allContacts.filter((contact) => contact.name === \"\")\n\t\t\t\t\t.length,\n\t\t\t};\n\t\t},\n\n\t\treset: (c) => {\n\t\t\tc.state.contacts = {};\n\t\t\tc.state.lastSyncTime = Date.now();\n\n\t\t\tc.broadcast(\"contactsChanged\", {\n\t\t\t\tcontacts: [],\n\t\t\t});\n\n\t\t\treturn { timestamp: c.state.lastSyncTime };\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { contacts },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "src/backend/types.ts": "export type Contact = {\n\tid: string;\n\tname: string;\n\temail: string;\n\tphone: string;\n\tupdatedAt: number;\n};\n", + "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport type { Contact } from \"./types\";\n\nconst contacts = actor({\n\t// State is automatically persisted\n\t// Persistent state that survives restarts\n\tstate: {\n\t\tcontacts: {} as Record,\n\t\tlastSyncTime: Date.now(),\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients\n\t\tgetChanges: (c, after = 0) => {\n\t\t\tconst changes = Object.values(c.state.contacts).filter(\n\t\t\t\t(contact) => contact.updatedAt > after,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tchanges,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t},\n\n\t\tpushChanges: (c, contactList: Contact[]) => {\n\t\t\tlet changed = false;\n\n\t\t\tcontactList.forEach((contact) => {\n\t\t\t\tconst existing = c.state.contacts[contact.id];\n\n\t\t\t\t// Last write wins conflict resolution based on timestamp\n\t\t\t\tif (!existing || existing.updatedAt < contact.updatedAt) {\n\t\t\t\t\t// State changes are automatically persisted\n\t\t\t\t\tc.state.contacts[contact.id] = contact;\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Update last sync time\n\t\t\tc.state.lastSyncTime = Date.now();\n\n\t\t\tif (changed) {\n\t\t\t\t// Send events to all connected clients\n\t\t\t\tc.broadcast(\"contactsChanged\", {\n\t\t\t\t\tcontacts: Object.values(c.state.contacts).filter(\n\t\t\t\t\t\t(c) => c.name !== \"\",\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn { timestamp: c.state.lastSyncTime };\n\t\t},\n\n\t\tgetAllContacts: (c) => {\n\t\t\treturn Object.values(c.state.contacts).filter(\n\t\t\t\t(contact) => contact.name !== \"\",\n\t\t\t);\n\t\t},\n\n\t\tgetSyncStats: (c) => {\n\t\t\tconst allContacts = Object.values(c.state.contacts);\n\t\t\tconst activeContacts = allContacts.filter(\n\t\t\t\t(contact) => contact.name !== \"\",\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttotalContacts: activeContacts.length,\n\t\t\t\tlastSyncTime: c.state.lastSyncTime,\n\t\t\t\tdeletedContacts: allContacts.filter((contact) => contact.name === \"\")\n\t\t\t\t\t.length,\n\t\t\t};\n\t\t},\n\n\t\treset: (c) => {\n\t\t\tc.state.contacts = {};\n\t\t\tc.state.lastSyncTime = Date.now();\n\n\t\t\tc.broadcast(\"contactsChanged\", {\n\t\t\t\tcontacts: [],\n\t\t\t});\n\n\t\t\treturn { timestamp: c.state.lastSyncTime };\n\t\t},\n\t},\n});\n\n// Register actors for use\nexport const registry = setup({\n\tuse: { contacts },\n});\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { - "id": "rate", - "icon": "faGaugeHigh", - "title": "Rate Limiter", + "id": "database", + "icon": "faDatabase", + "title": "Per-User Database", "filesToOpen": [ "src/backend/registry.ts", "src/frontend/App.tsx" ], - "tab": "memory", + "tab": "sqlite", "files": { - "tests/rate.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\ntest(\"Rate limiter allows requests under limit\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-limit\"]);\n\n\t// Test first request - should be allowed\n\tconst result1 = await limiter.checkLimit();\n\texpect(result1).toMatchObject({\n\t\tallowed: true,\n\t\tremaining: 4, // 5 total - 1 used = 4 remaining\n\t\tresetsIn: expect.any(Number),\n\t});\n\n\t// Test additional requests\n\tconst result2 = await limiter.checkLimit();\n\texpect(result2.allowed).toBe(true);\n\texpect(result2.remaining).toBe(3);\n\n\tconst result3 = await limiter.checkLimit();\n\texpect(result3.allowed).toBe(true);\n\texpect(result3.remaining).toBe(2);\n});\n\ntest(\"Rate limiter blocks requests over limit\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-block\"]);\n\n\t// Use up all 5 requests\n\tfor (let i = 0; i < 5; i++) {\n\t\tconst result = await limiter.checkLimit();\n\t\texpect(result.allowed).toBe(true);\n\t}\n\n\t// 6th request should be blocked\n\tconst blocked = await limiter.checkLimit();\n\texpect(blocked.allowed).toBe(false);\n\texpect(blocked.remaining).toBe(0);\n\texpect(blocked.resetsIn).toBeGreaterThan(0);\n\n\t// 7th request should also be blocked\n\tconst blocked2 = await limiter.checkLimit();\n\texpect(blocked2.allowed).toBe(false);\n\texpect(blocked2.remaining).toBe(0);\n});\n\ntest(\"Rate limiter status reflects current state\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-status\"]);\n\n\t// Initial status\n\tconst initial = await limiter.getStatus();\n\texpect(initial).toMatchObject({\n\t\tcount: 0,\n\t\tremaining: 5,\n\t\tresetsIn: 0, // No reset time set yet\n\t});\n\n\t// After some requests\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\n\tconst afterRequests = await limiter.getStatus();\n\texpect(afterRequests.count).toBe(2);\n\texpect(afterRequests.remaining).toBe(3);\n\texpect(afterRequests.resetsIn).toBeGreaterThan(0);\n});\n\ntest(\"Rate limiter reset functionality\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-reset\"]);\n\n\t// Use up some requests\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\n\tconst beforeReset = await limiter.getStatus();\n\texpect(beforeReset.count).toBe(3);\n\texpect(beforeReset.remaining).toBe(2);\n\n\t// Reset the limiter\n\tconst resetResult = await limiter.reset();\n\texpect(resetResult.success).toBe(true);\n\n\t// Check status after reset\n\tconst afterReset = await limiter.getStatus();\n\texpect(afterReset.count).toBe(0);\n\texpect(afterReset.remaining).toBe(5);\n\texpect(afterReset.resetsIn).toBe(0);\n\n\t// Should be able to make requests again\n\tconst newRequest = await limiter.checkLimit();\n\texpect(newRequest.allowed).toBe(true);\n\texpect(newRequest.remaining).toBe(4);\n});\n", - "README.md": "# Rate Limiter for RivetKit\n\nExample project demonstrating API rate limiting with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/rate\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Per-User Rate Limiting**: Each user/client gets independent rate limits\n- **Sliding Window**: 5 requests per 60-second window\n- **Real-time Status**: Live updates of remaining requests and reset time\n- **Visual Progress**: Progress bar showing rate limit usage\n- **Multiple Users**: Switch between users to test isolation\n- **Admin Reset**: Reset rate limits for testing purposes\n\n## How it works\n\nThis rate limiter demonstrates:\n\n1. **Per-Actor Rate Limiting**: Each user gets their own actor instance with independent counters\n2. **Time Window Management**: Automatic reset of counters when the time window expires\n3. **Request Counting**: Track and limit the number of requests within the window\n4. **Graceful Degradation**: Blocks requests when limits are exceeded\n5. **Status Reporting**: Provide detailed information about current limits and reset times\n\n## Architecture\n\n- **Backend**: RivetKit actor that maintains rate limit state per user\n- **Frontend**: React application with real-time rate limit status\n- **State Management**: Persistent rate limit counters with automatic window resets\n- **User Isolation**: Each user/API client gets independent rate limiting\n\n## Usage\n\n1. Start the development server\n2. Select a user from the dropdown\n3. Click \"Make API Request\" to test the rate limiter\n4. Watch the status update in real-time\n5. Try making more than 5 requests within a minute to see blocking\n6. Switch users to see independent rate limits\n7. Use \"Reset Rate Limiter\" to clear limits for testing\n\n## Rate Limiting Strategy\n\nThis example uses a **Fixed Window** approach:\n\n- **Window Size**: 60 seconds\n- **Request Limit**: 5 requests per window\n- **Reset Behavior**: Counter resets to 0 when window expires\n- **Granularity**: Per-user/client isolation\n\n## Extending\n\nThis rate limiter can be extended with:\n\n- Different rate limiting algorithms (sliding window, token bucket, etc.)\n- Multiple rate limit tiers (basic/premium users)\n- Geographic or IP-based limiting\n- Dynamic rate limits based on user behavior\n- Rate limit bypass for admin users\n- Metrics and monitoring integration\n- Redis backend for distributed rate limiting\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-rate\",\n \"version\": \"0.9.1\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-rate\",\n \"version\": \"0.9.1\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"dev\": true,\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.16.3\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz\",\n \"integrity\": \"sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.2.1\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.1.tgz\",\n \"integrity\": \"sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.4.6\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz\",\n \"integrity\": \"sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.1.4\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz\",\n \"integrity\": \"sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n \"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz\",\n \"integrity\": \"sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.14\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz\",\n \"integrity\": \"sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.4.4\",\n \"picomatch\": \"^4.0.2\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz\",\n \"integrity\": \"sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-rate\",\n \"version\": \"0.9.1\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "tests/database.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock authentication\nvi.mock(\"../src/backend/my-utils\", () => ({\n\tauthenticate: vi.fn().mockResolvedValue(\"user123\"),\n}));\n\ntest(\"Database notes can handle basic CRUD operations\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-notes\"]);\n\n\t// Test initial empty state\n\tconst initialNotes = await notes.getNotes();\n\texpect(initialNotes).toEqual([]);\n\n\t// Create a new note\n\tconst newNote = await notes.updateNote({ content: \"My first note\" });\n\texpect(newNote).toMatchObject({\n\t\tid: expect.stringMatching(/^note-\\d+$/),\n\t\tcontent: \"My first note\",\n\t\tupdatedAt: expect.any(Number),\n\t});\n\n\t// Verify note was added\n\tconst notesAfterAdd = await notes.getNotes();\n\texpect(notesAfterAdd).toHaveLength(1);\n\texpect(notesAfterAdd[0]).toEqual(newNote);\n});\n\ntest(\"Database notes can update existing notes\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-update\"]);\n\n\t// Create a note\n\tconst originalNote = await notes.updateNote({ content: \"Original content\" });\n\tconst originalTime = originalNote.updatedAt;\n\n\t// Update the note\n\tconst updatedNote = await notes.updateNote({\n\t\tid: originalNote.id,\n\t\tcontent: \"Updated content\",\n\t});\n\n\texpect(updatedNote).toMatchObject({\n\t\tid: originalNote.id,\n\t\tcontent: \"Updated content\",\n\t\tupdatedAt: expect.any(Number),\n\t});\n\texpect(updatedNote.updatedAt).toBeGreaterThanOrEqual(originalTime);\n\n\t// Verify only one note exists\n\tconst allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(1);\n\texpect(allNotes[0]).toEqual(updatedNote);\n});\n\ntest(\"Database notes can delete notes\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-delete\"]);\n\n\t// Create multiple notes\n\tconst note1 = await notes.updateNote({ content: \"Note 1\" });\n\tconst note2 = await notes.updateNote({ content: \"Note 2\" });\n\tconst note3 = await notes.updateNote({ content: \"Note 3\" });\n\n\t// Verify all notes exist\n\tlet allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(3);\n\n\t// Delete middle note\n\tconst deleteResult = await notes.deleteNote({ id: note2.id });\n\texpect(deleteResult).toBe(true);\n\n\t// Verify note was deleted\n\tallNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(2);\n\texpect(allNotes.map((n) => n.id)).toEqual([note1.id, note3.id]);\n\n\t// Try to delete non-existent note\n\tconst deleteNonExistent = await notes.deleteNote({ id: \"non-existent\" });\n\texpect(deleteNonExistent).toBe(false);\n});\n\ntest(\"Database notes maintains proper timestamps\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-timestamps\"]);\n\n\tconst note1 = await notes.updateNote({ content: \"First note\" });\n\tconst note2 = await notes.updateNote({ content: \"Second note\" });\n\tconst note3 = await notes.updateNote({ content: \"Third note\" });\n\n\texpect(note2.updatedAt).toBeGreaterThanOrEqual(note1.updatedAt);\n\texpect(note3.updatedAt).toBeGreaterThanOrEqual(note2.updatedAt);\n\n\tconst allNotes = await notes.getNotes();\n\tfor (let i = 1; i < allNotes.length; i++) {\n\t\texpect(allNotes[i].updatedAt).toBeGreaterThanOrEqual(\n\t\t\tallNotes[i - 1].updatedAt,\n\t\t);\n\t}\n});\n\ntest(\"Database notes handles empty content\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-empty\"]);\n\n\t// Create note with empty content\n\tconst emptyNote = await notes.updateNote({ content: \"\" });\n\texpect(emptyNote.content).toBe(\"\");\n\texpect(emptyNote.id).toBeTruthy();\n\texpect(emptyNote.updatedAt).toBeGreaterThan(0);\n\n\t// Verify it was stored\n\tconst allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(1);\n\texpect(allNotes[0]).toEqual(emptyNote);\n});\n", + "README.md": "# Database Notes for RivetKit\n\nExample project demonstrating persistent data storage and real-time updates with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/database\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Persistent Storage**: Notes are automatically saved and persist across sessions\n- **Real-time Updates**: Changes are instantly synchronized across all connected clients\n- **User Authentication**: Demonstrates basic authentication with token validation\n- **Multi-user Support**: Switch between different users to see isolated data\n- **CRUD Operations**: Create, read, update, and delete notes\n- **Edit in Place**: Click edit to modify notes inline\n- **Auto-sorting**: Notes are automatically sorted by last modified date\n\n## How it works\n\nThis example demonstrates:\n\n1. **Actor State Management**: Using RivetKit actors to manage persistent application state\n2. **Authentication**: Basic token-based authentication for user identification\n3. **Real-time Events**: Broadcasting changes to all connected clients using actor events\n4. **State Persistence**: Actor state is automatically persisted between sessions\n5. **Connection State**: Handle connection status and graceful degradation\n\n## Architecture\n\n- **Backend**: RivetKit actor that manages note storage and user authentication\n- **Frontend**: React application with real-time updates via RivetKit hooks\n- **State Management**: Each user gets their own actor instance for data isolation\n- **Authentication**: Mock token-based auth (replace with real auth in production)\n\n## Usage\n\n1. Start the development server\n2. Select a user from the dropdown to see their notes\n3. Add new notes using the input field\n4. Edit notes by clicking the \"Edit\" button\n5. Delete notes with the \"Delete\" button\n6. Open multiple tabs or users to see real-time synchronization\n\n## Extending\n\nThis example can be extended with:\n\n- Real database integration (PostgreSQL, MongoDB, etc.)\n- Proper JWT authentication\n- User registration and management\n- Note sharing and collaboration\n- Rich text editing\n- File attachments\n- Search and filtering\n\n## License\n\nApache 2.0", + "package-lock.json": "{\n \"name\": \"example-database\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-database\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-database\",\n \"version\": \"2.0.15\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"lib\": [\"esnext\", \"dom\"],\n \"jsx\": \"react-jsx\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"types\": [\"node\", \"vite/client\"],\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"checkJs\": false,\n \"noEmit\": true,\n \"isolatedModules\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tinclude: [\"tests/**/*.test.ts\"],\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { RateLimitResult, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nfunction RateLimiterDemo({ userId }: { userId: string }) {\n\tconst [result, setResult] = useState(null);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst rateLimiter = useActor({\n\t\tname: \"rateLimiter\",\n\t\tkey: [userId],\n\t});\n\n\tuseEffect(() => {\n\t\tif (rateLimiter.connection) {\n\t\t\t// Get initial status\n\t\t\trateLimiter.connection.getStatus().then((status) => {\n\t\t\t\tsetResult({\n\t\t\t\t\tallowed: status.remaining > 0,\n\t\t\t\t\tremaining: status.remaining,\n\t\t\t\t\tresetsIn: status.resetsIn,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, [rateLimiter.connection]);\n\n\tconst makeRequest = async () => {\n\t\tif (!rateLimiter.connection || loading) return;\n\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst response = await rateLimiter.connection.checkLimit();\n\t\t\tsetResult(response);\n\t\t} finally {\n\t\t\tsetLoading(false);\n\t\t}\n\t};\n\n\tconst resetLimiter = async () => {\n\t\tif (!rateLimiter.connection) return;\n\n\t\tawait rateLimiter.connection.reset();\n\t\t// Get updated status\n\t\tconst status = await rateLimiter.connection.getStatus();\n\t\tsetResult({\n\t\t\tallowed: status.remaining > 0,\n\t\t\tremaining: status.remaining,\n\t\t\tresetsIn: status.resetsIn,\n\t\t});\n\t};\n\n\tconst usagePercentage = result ? ((5 - result.remaining) / 5) * 100 : 0;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{loading ? \"Making Request...\" : \"Make API Request\"}\n\t\t\t\n\n\t\t\t{result && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tStatus:\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{result.allowed ? \"✓ Request Allowed\" : \"✖ Request Blocked\"}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tRemaining Requests:\n\t\t\t\t\t\t{result.remaining} / 5\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tRate Limit Usage:\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tResets In:\n\t\t\t\t\t\t{result.resetsIn} seconds\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [selectedUser, setSelectedUser] = useState(\"user-1\");\n\n\tconst users = [\n\t\t{ id: \"user-1\", name: \"User 1\" },\n\t\t{ id: \"user-2\", name: \"User 2\" },\n\t\t{ id: \"user-3\", name: \"User 3\" },\n\t\t{ id: \"api-client-1\", name: \"API Client 1\" },\n\t\t{ id: \"api-client-2\", name: \"API Client 2\" },\n\t];\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Rate Limiter Demo

\n\t\t\t\t

5 requests per minute per user/client

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

How it works

\n\t\t\t\t\t

\n\t\t\t\t\t\tThis rate limiter allows 5 requests per minute per user. Each user gets their own \n\t\t\t\t\t\tindependent rate limit counter. When the limit is exceeded, further requests are \n\t\t\t\t\t\tblocked until the window resets. Switch between users to see isolated rate limiting.\n\t\t\t\t\t

\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t setSelectedUser(e.target.value)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{users.map((user) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { Note, registry } from \"../backend/registry\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nfunction NotesApp({ userId }: { userId: string }) {\n\tconst [notes, setNotes] = useState([]);\n\tconst [newNote, setNewNote] = useState(\"\");\n\tconst [editingNote, setEditingNote] = useState(null);\n\tconst [editContent, setEditContent] = useState(\"\");\n\n\tconst notesActor = useActor({\n\t\tname: \"notes\",\n\t\tkey: [userId],\n\t\tparams: { userId, token: \"demo-token\" },\n\t});\n\n\tuseEffect(() => {\n\t\tif (notesActor.connection) {\n\t\t\tnotesActor.connection.getNotes().then(setNotes);\n\t\t}\n\t}, [notesActor.connection]);\n\n\tnotesActor.useEvent(\"noteAdded\", (note: Note) => {\n\t\tsetNotes((prev) => [...prev, note]);\n\t});\n\n\tnotesActor.useEvent(\"noteUpdated\", (updatedNote: Note) => {\n\t\tsetNotes((prev) =>\n\t\t\tprev.map((note) => (note.id === updatedNote.id ? updatedNote : note))\n\t\t);\n\t\tsetEditingNote(null);\n\t});\n\n\tnotesActor.useEvent(\"noteDeleted\", ({ id }: { id: string }) => {\n\t\tsetNotes((prev) => prev.filter((note) => note.id !== id));\n\t});\n\n\tconst addNote = async () => {\n\t\tif (notesActor.connection && newNote.trim()) {\n\t\t\tawait notesActor.connection.updateNote({ \n\t\t\t\tid: `note-${Date.now()}`, \n\t\t\t\tcontent: newNote \n\t\t\t});\n\t\t\tsetNewNote(\"\");\n\t\t}\n\t};\n\n\tconst startEdit = (note: Note) => {\n\t\tsetEditingNote(note.id);\n\t\tsetEditContent(note.content);\n\t};\n\n\tconst saveEdit = async () => {\n\t\tif (notesActor.connection && editingNote) {\n\t\t\tawait notesActor.connection.updateNote({ \n\t\t\t\tid: editingNote, \n\t\t\t\tcontent: editContent \n\t\t\t});\n\t\t}\n\t};\n\n\tconst cancelEdit = () => {\n\t\tsetEditingNote(null);\n\t\tsetEditContent(\"\");\n\t};\n\n\tconst deleteNote = async (id: string) => {\n\t\tif (notesActor.connection && confirm(\"Are you sure you want to delete this note?\")) {\n\t\t\tawait notesActor.connection.deleteNote({ id });\n\t\t}\n\t};\n\n\tconst handleKeyPress = (e: React.KeyboardEvent, action: () => void) => {\n\t\tif (e.key === \"Enter\") {\n\t\t\taction();\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{notesActor.connection ? '✓ Connected' : '⚠ Disconnected'}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t setNewNote(e.target.value)}\n\t\t\t\t\tonKeyPress={(e) => handleKeyPress(e, addNote)}\n\t\t\t\t\tplaceholder=\"Enter a new note...\"\n\t\t\t\t\tdisabled={!notesActor.connection}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\tAdd Note\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{notes.length === 0 ? (\n\t\t\t\t
\n\t\t\t\t\tNo notes yet. Add your first note above!\n\t\t\t\t
\n\t\t\t) : (\n\t\t\t\t
    \n\t\t\t\t\t{notes\n\t\t\t\t\t\t.sort((a, b) => b.updatedAt - a.updatedAt)\n\t\t\t\t\t\t.map((note) => (\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t{editingNote === note.id ? (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t setEditContent(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tonKeyPress={(e) => handleKeyPress(e, saveEdit)}\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-input\"\n\t\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    {note.content}
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\tLast updated: {new Date(note.updatedAt).toLocaleString()}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t startEdit(note)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"edit-btn\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tEdit\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t deleteNote(note.id)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"delete-btn\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
  • \n\t\t\t\t\t))}\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [selectedUser, setSelectedUser] = useState(\"user1\");\n\n\tconst users = [\n\t\t{ id: \"user1\", name: \"Alice\" },\n\t\t{ id: \"user2\", name: \"Bob\" },\n\t\t{ id: \"user3\", name: \"Charlie\" },\n\t];\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Database Notes

\n\t\t\t\t

Persistent note-taking with real-time updates

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setSelectedUser(e.target.value)}\n\t\t\t\t>\n\t\t\t\t\t{users.map((user) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Rate Limiter Example\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type RateLimitResult = {\n\tallowed: boolean;\n\tremaining: number;\n\tresetsIn: number;\n};\n\nexport const rateLimiter = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tcount: 0,\n\t\tresetAt: 0,\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tcheckLimit: (c): RateLimitResult => {\n\t\t\tconst now = Date.now();\n\n\t\t\t// Reset if expired\n\t\t\tif (now > c.state.resetAt) {\n\t\t\t\t// State changes are automatically persisted\n\t\t\t\tc.state.count = 0;\n\t\t\t\tc.state.resetAt = now + 60000; // 1 minute window\n\t\t\t}\n\n\t\t\tconst allowed = c.state.count < 5;\n\n\t\t\t// Increment if allowed\n\t\t\tif (allowed) {\n\t\t\t\tc.state.count++;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tallowed,\n\t\t\t\tremaining: Math.max(0, 5 - c.state.count),\n\t\t\t\tresetsIn: Math.max(0, Math.round((c.state.resetAt - now) / 1000)),\n\t\t\t};\n\t\t},\n\n\t\tgetStatus: (c) => ({\n\t\t\tcount: c.state.count,\n\t\t\tresetAt: c.state.resetAt,\n\t\t\tremaining: Math.max(0, 5 - c.state.count),\n\t\t\tresetsIn: Math.max(0, Math.round((c.state.resetAt - Date.now()) / 1000)),\n\t\t}),\n\n\t\treset: (c) => {\n\t\t\tc.state.count = 0;\n\t\t\tc.state.resetAt = 0;\n\t\t\treturn { success: true };\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { rateLimiter },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "src/frontend/index.html": "\n\n\n \n \n Database Notes Example\n \n\n\n
\n \n\n", + "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport { authenticate } from \"./my-utils\";\n\nexport type Note = { id: string; content: string; updatedAt: number };\n\nexport const notes = actor({\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tnotes: [] as Note[],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetNotes: (c) => c.state.notes,\n\n\t\tupdateNote: (c, { id, content }: { id?: string; content: string }) => {\n\t\t\tconst noteIndex = c.state.notes.findIndex((note) => note.id === id);\n\t\t\tlet note: Note;\n\n\t\t\tif (noteIndex >= 0) {\n\t\t\t\t// Update existing note\n\t\t\t\tnote = c.state.notes[noteIndex];\n\t\t\t\tnote.content = content;\n\t\t\t\tnote.updatedAt = Date.now();\n\t\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\t\tc.broadcast(\"noteUpdated\", note);\n\t\t\t} else {\n\t\t\t\t// Create new note\n\t\t\t\tnote = {\n\t\t\t\t\tid: id || `note-${Date.now()}`,\n\t\t\t\t\tcontent,\n\t\t\t\t\tupdatedAt: Date.now(),\n\t\t\t\t};\n\t\t\t\t// State changes are automatically persisted\n\t\t\t\tc.state.notes.push(note);\n\t\t\t\tc.broadcast(\"noteAdded\", note);\n\t\t\t}\n\n\t\t\treturn note;\n\t\t},\n\n\t\tdeleteNote: (c, { id }: { id: string }) => {\n\t\t\tconst noteIndex = c.state.notes.findIndex((note) => note.id === id);\n\t\t\tif (noteIndex >= 0) {\n\t\t\t\tc.state.notes.splice(noteIndex, 1);\n\t\t\t\tc.broadcast(\"noteDeleted\", { id });\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { notes },\n});\n", + "src/backend/my-utils.ts": "export async function authenticate(token: string): Promise {\n\t// Mock authentication - in real app, verify JWT or session token\n\tif (token === \"demo-token\") {\n\t\treturn \"user123\";\n\t}\n\tthrow new Error(\"Invalid token\");\n}\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { - "id": "database", - "icon": "faDatabase", - "title": "Per-User DB", + "id": "background-jobs", + "icon": "faClock", + "title": "Background Jobs", + "filesToOpen": [ + "src/registry.ts", + "src/server.ts" + ], + "tab": "memory", + "files": { + "README.md": "# Daily Email Campaign for RivetKit\n\nExample project demonstrating scheduled background emails with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 20+\n- [Resend](https://resend.com) API key and verified sender domain\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/background-jobs\nnpm install\n```\n\n### Development\n\n```sh\nRESEND_API_KEY=your-api-key \\\nRESEND_FROM_EMAIL=\"Example \" \\\nCAMPAIGN_USER_EMAIL=user@example.com \\\nnpm run dev\n```\n\nThe example creates a single `emailCampaignUser` actor, stores the recipient email, and schedules a daily task that sends mail through the live Resend API. The server logs the next scheduled send time, and the actor reschedules itself after each successful delivery. Set `CAMPAIGN_USER_ID` to control the actor key when you need to track multiple users.\n\n## License\n\nApache 2.0\n", + ".gitignore": ".actorcore\nnode_modules\n", + "package-lock.json": "{\n \"name\": \"example-background-jobs\",\n \"version\": \"2.0.14\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-background-jobs\",\n \"version\": \"2.0.14\",\n \"dependencies\": {\n \"resend\": \"^4.0.1\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@react-email/render\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@react-email/render/-/render-1.1.2.tgz\",\n \"integrity\": \"sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"html-to-text\": \"^9.0.5\",\n \"prettier\": \"^3.5.3\",\n \"react-promise-suspense\": \"^0.3.4\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.0 || ^19.0 || ^19.0.0-rc\",\n \"react-dom\": \"^18.0 || ^19.0 || ^19.0.0-rc\"\n }\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@selderee/plugin-htmlparser2\": {\n \"version\": \"0.11.0\",\n \"resolved\": \"https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz\",\n \"integrity\": \"sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"domhandler\": \"^5.0.3\",\n \"selderee\": \"^0.11.0\"\n },\n \"funding\": {\n \"url\": \"https://ko-fi.com/killymxi\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/deepmerge\": {\n \"version\": \"4.3.1\",\n \"resolved\": \"https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz\",\n \"integrity\": \"sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/dom-serializer\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz\",\n \"integrity\": \"sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"domelementtype\": \"^2.3.0\",\n \"domhandler\": \"^5.0.2\",\n \"entities\": \"^4.2.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/cheeriojs/dom-serializer?sponsor=1\"\n }\n },\n \"node_modules/domelementtype\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz\",\n \"integrity\": \"sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==\",\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/fb55\"\n }\n ],\n \"license\": \"BSD-2-Clause\"\n },\n \"node_modules/domhandler\": {\n \"version\": \"5.0.3\",\n \"resolved\": \"https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz\",\n \"integrity\": \"sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==\",\n \"license\": \"BSD-2-Clause\",\n \"dependencies\": {\n \"domelementtype\": \"^2.3.0\"\n },\n \"engines\": {\n \"node\": \">= 4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/fb55/domhandler?sponsor=1\"\n }\n },\n \"node_modules/domutils\": {\n \"version\": \"3.2.2\",\n \"resolved\": \"https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz\",\n \"integrity\": \"sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==\",\n \"license\": \"BSD-2-Clause\",\n \"dependencies\": {\n \"dom-serializer\": \"^2.0.0\",\n \"domelementtype\": \"^2.3.0\",\n \"domhandler\": \"^5.0.3\"\n },\n \"funding\": {\n \"url\": \"https://github.com/fb55/domutils?sponsor=1\"\n }\n },\n \"node_modules/entities\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/entities/-/entities-4.5.0.tgz\",\n \"integrity\": \"sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==\",\n \"license\": \"BSD-2-Clause\",\n \"engines\": {\n \"node\": \">=0.12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/fb55/entities?sponsor=1\"\n }\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fast-deep-equal\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz\",\n \"integrity\": \"sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==\",\n \"license\": \"MIT\"\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/html-to-text\": {\n \"version\": \"9.0.5\",\n \"resolved\": \"https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz\",\n \"integrity\": \"sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@selderee/plugin-htmlparser2\": \"^0.11.0\",\n \"deepmerge\": \"^4.3.1\",\n \"dom-serializer\": \"^2.0.0\",\n \"htmlparser2\": \"^8.0.2\",\n \"selderee\": \"^0.11.0\"\n },\n \"engines\": {\n \"node\": \">=14\"\n }\n },\n \"node_modules/htmlparser2\": {\n \"version\": \"8.0.2\",\n \"resolved\": \"https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz\",\n \"integrity\": \"sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==\",\n \"funding\": [\n \"https://github.com/fb55/htmlparser2?sponsor=1\",\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/fb55\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"domelementtype\": \"^2.3.0\",\n \"domhandler\": \"^5.0.3\",\n \"domutils\": \"^3.0.1\",\n \"entities\": \"^4.4.0\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/leac\": {\n \"version\": \"0.6.0\",\n \"resolved\": \"https://registry.npmjs.org/leac/-/leac-0.6.0.tgz\",\n \"integrity\": \"sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://ko-fi.com/killymxi\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/parseley\": {\n \"version\": \"0.12.1\",\n \"resolved\": \"https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz\",\n \"integrity\": \"sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"leac\": \"^0.6.0\",\n \"peberminta\": \"^0.9.0\"\n },\n \"funding\": {\n \"url\": \"https://ko-fi.com/killymxi\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/peberminta\": {\n \"version\": \"0.9.0\",\n \"resolved\": \"https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz\",\n \"integrity\": \"sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://ko-fi.com/killymxi\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/prettier\": {\n \"version\": \"3.6.2\",\n \"resolved\": \"https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz\",\n \"integrity\": \"sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==\",\n \"license\": \"MIT\",\n \"bin\": {\n \"prettier\": \"bin/prettier.cjs\"\n },\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/prettier/prettier?sponsor=1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"19.2.0\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-19.2.0.tgz\",\n \"integrity\": \"sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"19.2.0\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz\",\n \"integrity\": \"sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"scheduler\": \"^0.27.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^19.2.0\"\n }\n },\n \"node_modules/react-promise-suspense\": {\n \"version\": \"0.3.4\",\n \"resolved\": \"https://registry.npmjs.org/react-promise-suspense/-/react-promise-suspense-0.3.4.tgz\",\n \"integrity\": \"sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fast-deep-equal\": \"^2.0.1\"\n }\n },\n \"node_modules/resend\": {\n \"version\": \"4.8.0\",\n \"resolved\": \"https://registry.npmjs.org/resend/-/resend-4.8.0.tgz\",\n \"integrity\": \"sha512-R8eBOFQDO6dzRTDmaMEdpqrkmgSjPpVXt4nGfWsZdYOet0kqra0xgbvTES6HmCriZEXbmGk3e0DiGIaLFTFSHA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@react-email/render\": \"1.1.2\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.27.0\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz\",\n \"integrity\": \"sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/selderee\": {\n \"version\": \"0.11.0\",\n \"resolved\": \"https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz\",\n \"integrity\": \"sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"parseley\": \"^0.12.0\"\n },\n \"funding\": {\n \"url\": \"https://ko-fi.com/killymxi\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vite-node/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vite-node/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vitest/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vitest/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-background-jobs\",\n \"version\": \"2.0.14\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"tsx src/server.ts\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"resend\": \"^4.0.1\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "tsconfig.json": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */\n \"target\": \"esnext\",\n /* Specify a set of bundled library declaration files that describe the target runtime environment. */\n \"lib\": [\"esnext\"],\n /* Specify what JSX code is generated. */\n \"jsx\": \"react-jsx\",\n\n /* Specify what module code is generated. */\n \"module\": \"esnext\",\n /* Specify how TypeScript looks up a file from a given module specifier. */\n \"moduleResolution\": \"bundler\",\n /* Specify type package names to be included without being referenced in a source file. */\n \"types\": [\"node\"],\n /* Enable importing .json files */\n \"resolveJsonModule\": true,\n\n /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */\n \"allowJs\": true,\n /* Enable error reporting in type-checked JavaScript files. */\n \"checkJs\": false,\n\n /* Disable emitting files from a compilation. */\n \"noEmit\": true,\n\n /* Ensure that each file can be safely transpiled without relying on other imports. */\n \"isolatedModules\": true,\n /* Allow 'import x from y' when a module doesn't have a default export. */\n \"allowSyntheticDefaultImports\": true,\n /* Ensure that casing is correct in imports. */\n \"forceConsistentCasingInFileNames\": true,\n\n /* Enable all strict type-checking options. */\n \"strict\": true,\n\n /* Skip type checking all .d.ts files. */\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*.ts\", \"scripts/**/*.ts\", \"tests/**/*.ts\"]\n}\n", + "src/types.ts": "export type CampaignInput = {\n\temail: string;\n};\n\nexport type CampaignState = CampaignInput & {\n\tlastSentAt?: number;\n\tlastMessageId?: string;\n\tnextSendAt?: number;\n};\n", + "src/registry.ts": "import { Resend } from \"resend\";\nimport { actor, setup } from \"rivetkit\";\nimport type { CampaignInput, CampaignState } from \"./types\";\n\nconst DAY_IN_MS = 86_400_000;\n\nconst EMAIL_SUBJECT = \"Daily campaign update\";\nconst EMAIL_BODY = [\n\t\"

Hi there,

\",\n\t\"

This is your automated daily campaign email from RivetKit.

\",\n\t\"

Have a great day!

\",\n].join(\"\");\n\nconst emailCampaignUser = actor({\n\tcreateState: (_c, input: CampaignInput): CampaignState => ({\n\t\temail: input.email,\n\t}),\n\n\tonCreate: async (c) => {\n\t\tconst nextSendAt = Date.now() + DAY_IN_MS;\n\t\tc.state.nextSendAt = nextSendAt;\n\t\tawait c.schedule.at(nextSendAt, \"sendDailyEmail\");\n\t},\n\n\tactions: {\n\t\tsendDailyEmail: async (c) => {\n\t\t\tconst resend = new Resend(process.env.RESEND_API_KEY ?? \"\");\n\n\t\t\tconst { data, error } = await resend.emails.send({\n\t\t\t\tfrom: process.env.RESEND_FROM_EMAIL ?? \"\",\n\t\t\t\tto: c.state.email,\n\t\t\t\tsubject: EMAIL_SUBJECT,\n\t\t\t\thtml: EMAIL_BODY,\n\t\t\t});\n\n\t\t\tc.state.lastSentAt = Date.now();\n\t\t\tc.state.lastMessageId = data?.id ?? String(error ?? \"\");\n\n\t\t\tconst nextSendAt = Date.now() + DAY_IN_MS;\n\t\t\tc.state.nextSendAt = nextSendAt;\n\t\t\tawait c.schedule.at(nextSendAt, \"sendDailyEmail\");\n\t\t},\n\n\t\tgetStatus: (c) => c.state,\n\t},\n});\n\nexport const registry = setup({\n\tuse: { emailCampaignUser },\n});\n\nexport type Registry = typeof registry;\n", + "src/server.ts": "import { registry } from \"./registry\";\n\nconst { client } = registry.start();\n\nasync function main() {\n\tconst userEmail = process.env.CAMPAIGN_USER_EMAIL;\n\tconst userId = process.env.CAMPAIGN_USER_ID ?? \"demo-user\";\n\n\tif (!userEmail) {\n\t\tconsole.warn(\n\t\t\t\"Set CAMPAIGN_USER_EMAIL to schedule the daily email campaign (e.g. CAMPAIGN_USER_EMAIL=user@example.com).\",\n\t\t);\n\t\treturn;\n\t}\n\n\tconst campaign = client.emailCampaignUser.getOrCreate(userId, {\n\t\tcreateWithInput: { email: userEmail },\n\t});\n\tconst status = await campaign.getStatus();\n\n\tconst nextSend = status.nextSendAt\n\t\t? new Date(status.nextSendAt).toISOString()\n\t\t: \"not scheduled\";\n\n\tconsole.log(`Next daily email for ${status.email} scheduled at ${nextSend}`);\n}\n\nvoid main();\n" + } + }, + { + "id": "rate", + "icon": "faGaugeHigh", + "title": "Rate Limiting", "filesToOpen": [ "src/backend/registry.ts", "src/frontend/App.tsx" ], - "tab": "sqlite", + "tab": "memory", "files": { - "tests/database.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock authentication\nvi.mock(\"../src/backend/my-utils\", () => ({\n\tauthenticate: vi.fn().mockResolvedValue(\"user123\"),\n}));\n\ntest(\"Database notes can handle basic CRUD operations\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-notes\"]);\n\n\t// Test initial empty state\n\tconst initialNotes = await notes.getNotes();\n\texpect(initialNotes).toEqual([]);\n\n\t// Create a new note\n\tconst newNote = await notes.updateNote({ content: \"My first note\" });\n\texpect(newNote).toMatchObject({\n\t\tid: expect.stringMatching(/^note-\\d+$/),\n\t\tcontent: \"My first note\",\n\t\tupdatedAt: expect.any(Number),\n\t});\n\n\t// Verify note was added\n\tconst notesAfterAdd = await notes.getNotes();\n\texpect(notesAfterAdd).toHaveLength(1);\n\texpect(notesAfterAdd[0]).toEqual(newNote);\n});\n\ntest(\"Database notes can update existing notes\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-update\"]);\n\n\t// Create a note\n\tconst originalNote = await notes.updateNote({ content: \"Original content\" });\n\tconst originalTime = originalNote.updatedAt;\n\n\t// Update the note\n\tconst updatedNote = await notes.updateNote({\n\t\tid: originalNote.id,\n\t\tcontent: \"Updated content\",\n\t});\n\n\texpect(updatedNote).toMatchObject({\n\t\tid: originalNote.id,\n\t\tcontent: \"Updated content\",\n\t\tupdatedAt: expect.any(Number),\n\t});\n\texpect(updatedNote.updatedAt).toBeGreaterThanOrEqual(originalTime);\n\n\t// Verify only one note exists\n\tconst allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(1);\n\texpect(allNotes[0]).toEqual(updatedNote);\n});\n\ntest(\"Database notes can delete notes\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-delete\"]);\n\n\t// Create multiple notes\n\tconst note1 = await notes.updateNote({ content: \"Note 1\" });\n\tconst note2 = await notes.updateNote({ content: \"Note 2\" });\n\tconst note3 = await notes.updateNote({ content: \"Note 3\" });\n\n\t// Verify all notes exist\n\tlet allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(3);\n\n\t// Delete middle note\n\tconst deleteResult = await notes.deleteNote({ id: note2.id });\n\texpect(deleteResult).toBe(true);\n\n\t// Verify note was deleted\n\tallNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(2);\n\texpect(allNotes.map((n) => n.id)).toEqual([note1.id, note3.id]);\n\n\t// Try to delete non-existent note\n\tconst deleteNonExistent = await notes.deleteNote({ id: \"non-existent\" });\n\texpect(deleteNonExistent).toBe(false);\n});\n\ntest(\"Database notes maintains proper timestamps\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-timestamps\"]);\n\n\tconst note1 = await notes.updateNote({ content: \"First note\" });\n\tconst note2 = await notes.updateNote({ content: \"Second note\" });\n\tconst note3 = await notes.updateNote({ content: \"Third note\" });\n\n\texpect(note2.updatedAt).toBeGreaterThanOrEqual(note1.updatedAt);\n\texpect(note3.updatedAt).toBeGreaterThanOrEqual(note2.updatedAt);\n\n\tconst allNotes = await notes.getNotes();\n\tfor (let i = 1; i < allNotes.length; i++) {\n\t\texpect(allNotes[i].updatedAt).toBeGreaterThanOrEqual(\n\t\t\tallNotes[i - 1].updatedAt,\n\t\t);\n\t}\n});\n\ntest(\"Database notes handles empty content\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst notes = client.notes.getOrCreate([\"test-empty\"]);\n\n\t// Create note with empty content\n\tconst emptyNote = await notes.updateNote({ content: \"\" });\n\texpect(emptyNote.content).toBe(\"\");\n\texpect(emptyNote.id).toBeTruthy();\n\texpect(emptyNote.updatedAt).toBeGreaterThan(0);\n\n\t// Verify it was stored\n\tconst allNotes = await notes.getNotes();\n\texpect(allNotes).toHaveLength(1);\n\texpect(allNotes[0]).toEqual(emptyNote);\n});\n", - "README.md": "# Database Notes for RivetKit\n\nExample project demonstrating persistent data storage and real-time updates with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/database\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Persistent Storage**: Notes are automatically saved and persist across sessions\n- **Real-time Updates**: Changes are instantly synchronized across all connected clients\n- **User Authentication**: Demonstrates basic authentication with token validation\n- **Multi-user Support**: Switch between different users to see isolated data\n- **CRUD Operations**: Create, read, update, and delete notes\n- **Edit in Place**: Click edit to modify notes inline\n- **Auto-sorting**: Notes are automatically sorted by last modified date\n\n## How it works\n\nThis example demonstrates:\n\n1. **Actor State Management**: Using RivetKit actors to manage persistent application state\n2. **Authentication**: Basic token-based authentication for user identification\n3. **Real-time Events**: Broadcasting changes to all connected clients using actor events\n4. **State Persistence**: Actor state is automatically persisted between sessions\n5. **Connection State**: Handle connection status and graceful degradation\n\n## Architecture\n\n- **Backend**: RivetKit actor that manages note storage and user authentication\n- **Frontend**: React application with real-time updates via RivetKit hooks\n- **State Management**: Each user gets their own actor instance for data isolation\n- **Authentication**: Mock token-based auth (replace with real auth in production)\n\n## Usage\n\n1. Start the development server\n2. Select a user from the dropdown to see their notes\n3. Add new notes using the input field\n4. Edit notes by clicking the \"Edit\" button\n5. Delete notes with the \"Delete\" button\n6. Open multiple tabs or users to see real-time synchronization\n\n## Extending\n\nThis example can be extended with:\n\n- Real database integration (PostgreSQL, MongoDB, etc.)\n- Proper JWT authentication\n- User registration and management\n- Note sharing and collaboration\n- Rich text editing\n- File attachments\n- Search and filtering\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-database\",\n \"version\": \"0.9.1\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-database\",\n \"version\": \"0.9.1\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"dev\": true,\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.16.3\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz\",\n \"integrity\": \"sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.2.1\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.1.tgz\",\n \"integrity\": \"sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.4.6\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz\",\n \"integrity\": \"sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.1.4\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz\",\n \"integrity\": \"sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n \"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz\",\n \"integrity\": \"sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.14\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz\",\n \"integrity\": \"sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.4.4\",\n \"picomatch\": \"^4.0.2\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz\",\n \"integrity\": \"sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-database\",\n \"version\": \"0.9.1\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "tests/rate.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\ntest(\"Rate limiter allows requests under limit\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-limit\"]);\n\n\t// Test first request - should be allowed\n\tconst result1 = await limiter.checkLimit();\n\texpect(result1).toMatchObject({\n\t\tallowed: true,\n\t\tremaining: 4, // 5 total - 1 used = 4 remaining\n\t\tresetsIn: expect.any(Number),\n\t});\n\n\t// Test additional requests\n\tconst result2 = await limiter.checkLimit();\n\texpect(result2.allowed).toBe(true);\n\texpect(result2.remaining).toBe(3);\n\n\tconst result3 = await limiter.checkLimit();\n\texpect(result3.allowed).toBe(true);\n\texpect(result3.remaining).toBe(2);\n});\n\ntest(\"Rate limiter blocks requests over limit\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-block\"]);\n\n\t// Use up all 5 requests\n\tfor (let i = 0; i < 5; i++) {\n\t\tconst result = await limiter.checkLimit();\n\t\texpect(result.allowed).toBe(true);\n\t}\n\n\t// 6th request should be blocked\n\tconst blocked = await limiter.checkLimit();\n\texpect(blocked.allowed).toBe(false);\n\texpect(blocked.remaining).toBe(0);\n\texpect(blocked.resetsIn).toBeGreaterThan(0);\n\n\t// 7th request should also be blocked\n\tconst blocked2 = await limiter.checkLimit();\n\texpect(blocked2.allowed).toBe(false);\n\texpect(blocked2.remaining).toBe(0);\n});\n\ntest(\"Rate limiter status reflects current state\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-status\"]);\n\n\t// Initial status\n\tconst initial = await limiter.getStatus();\n\texpect(initial).toMatchObject({\n\t\tcount: 0,\n\t\tremaining: 5,\n\t\tresetsIn: 0, // No reset time set yet\n\t});\n\n\t// After some requests\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\n\tconst afterRequests = await limiter.getStatus();\n\texpect(afterRequests.count).toBe(2);\n\texpect(afterRequests.remaining).toBe(3);\n\texpect(afterRequests.resetsIn).toBeGreaterThan(0);\n});\n\ntest(\"Rate limiter reset functionality\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst limiter = client.rateLimiter.getOrCreate([\"test-reset\"]);\n\n\t// Use up some requests\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\tawait limiter.checkLimit();\n\n\tconst beforeReset = await limiter.getStatus();\n\texpect(beforeReset.count).toBe(3);\n\texpect(beforeReset.remaining).toBe(2);\n\n\t// Reset the limiter\n\tconst resetResult = await limiter.reset();\n\texpect(resetResult.success).toBe(true);\n\n\t// Check status after reset\n\tconst afterReset = await limiter.getStatus();\n\texpect(afterReset.count).toBe(0);\n\texpect(afterReset.remaining).toBe(5);\n\texpect(afterReset.resetsIn).toBe(0);\n\n\t// Should be able to make requests again\n\tconst newRequest = await limiter.checkLimit();\n\texpect(newRequest.allowed).toBe(true);\n\texpect(newRequest.remaining).toBe(4);\n});\n", + "README.md": "# Rate Limiter for RivetKit\n\nExample project demonstrating API rate limiting with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/rate\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Per-User Rate Limiting**: Each user/client gets independent rate limits\n- **Sliding Window**: 5 requests per 60-second window\n- **Real-time Status**: Live updates of remaining requests and reset time\n- **Visual Progress**: Progress bar showing rate limit usage\n- **Multiple Users**: Switch between users to test isolation\n- **Admin Reset**: Reset rate limits for testing purposes\n\n## How it works\n\nThis rate limiter demonstrates:\n\n1. **Per-Actor Rate Limiting**: Each user gets their own actor instance with independent counters\n2. **Time Window Management**: Automatic reset of counters when the time window expires\n3. **Request Counting**: Track and limit the number of requests within the window\n4. **Graceful Degradation**: Blocks requests when limits are exceeded\n5. **Status Reporting**: Provide detailed information about current limits and reset times\n\n## Architecture\n\n- **Backend**: RivetKit actor that maintains rate limit state per user\n- **Frontend**: React application with real-time rate limit status\n- **State Management**: Persistent rate limit counters with automatic window resets\n- **User Isolation**: Each user/API client gets independent rate limiting\n\n## Usage\n\n1. Start the development server\n2. Select a user from the dropdown\n3. Click \"Make API Request\" to test the rate limiter\n4. Watch the status update in real-time\n5. Try making more than 5 requests within a minute to see blocking\n6. Switch users to see independent rate limits\n7. Use \"Reset Rate Limiter\" to clear limits for testing\n\n## Rate Limiting Strategy\n\nThis example uses a **Fixed Window** approach:\n\n- **Window Size**: 60 seconds\n- **Request Limit**: 5 requests per window\n- **Reset Behavior**: Counter resets to 0 when window expires\n- **Granularity**: Per-user/client isolation\n\n## Extending\n\nThis rate limiter can be extended with:\n\n- Different rate limiting algorithms (sliding window, token bucket, etc.)\n- Multiple rate limit tiers (basic/premium users)\n- Geographic or IP-based limiting\n- Dynamic rate limits based on user behavior\n- Rate limit bypass for admin users\n- Metrics and monitoring integration\n\n## License\n\nApache 2.0\n", + "package-lock.json": "{\n \"name\": \"example-rate\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-rate\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-rate\",\n \"version\": \"2.0.15\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"npm run dev:backend\\\" \\\"npm run dev:frontend\\\"\",\n \"dev:backend\": \"tsx --watch src/backend/server.ts\",\n \"dev:frontend\": \"vite\",\n \"build\": \"vite build\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.2.0\",\n \"concurrently\": \"^8.2.2\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.5.2\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"esnext\",\n \"lib\": [\"esnext\", \"dom\"],\n \"jsx\": \"react-jsx\",\n \"module\": \"esnext\",\n \"moduleResolution\": \"bundler\",\n \"types\": [\"node\", \"vite/client\"],\n \"resolveJsonModule\": true,\n \"allowJs\": true,\n \"checkJs\": false,\n \"noEmit\": true,\n \"isolatedModules\": true,\n \"allowSyntheticDefaultImports\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tinclude: [\"tests/**/*.test.ts\"],\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { Note, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nfunction NotesApp({ userId }: { userId: string }) {\n\tconst [notes, setNotes] = useState([]);\n\tconst [newNote, setNewNote] = useState(\"\");\n\tconst [editingNote, setEditingNote] = useState(null);\n\tconst [editContent, setEditContent] = useState(\"\");\n\n\tconst notesActor = useActor({\n\t\tname: \"notes\",\n\t\tkey: [userId],\n\t\tparams: { userId, token: \"demo-token\" },\n\t});\n\n\tuseEffect(() => {\n\t\tif (notesActor.connection) {\n\t\t\tnotesActor.connection.getNotes().then(setNotes);\n\t\t}\n\t}, [notesActor.connection]);\n\n\tnotesActor.useEvent(\"noteAdded\", (note: Note) => {\n\t\tsetNotes((prev) => [...prev, note]);\n\t});\n\n\tnotesActor.useEvent(\"noteUpdated\", (updatedNote: Note) => {\n\t\tsetNotes((prev) =>\n\t\t\tprev.map((note) => (note.id === updatedNote.id ? updatedNote : note))\n\t\t);\n\t\tsetEditingNote(null);\n\t});\n\n\tnotesActor.useEvent(\"noteDeleted\", ({ id }: { id: string }) => {\n\t\tsetNotes((prev) => prev.filter((note) => note.id !== id));\n\t});\n\n\tconst addNote = async () => {\n\t\tif (notesActor.connection && newNote.trim()) {\n\t\t\tawait notesActor.connection.updateNote({ \n\t\t\t\tid: `note-${Date.now()}`, \n\t\t\t\tcontent: newNote \n\t\t\t});\n\t\t\tsetNewNote(\"\");\n\t\t}\n\t};\n\n\tconst startEdit = (note: Note) => {\n\t\tsetEditingNote(note.id);\n\t\tsetEditContent(note.content);\n\t};\n\n\tconst saveEdit = async () => {\n\t\tif (notesActor.connection && editingNote) {\n\t\t\tawait notesActor.connection.updateNote({ \n\t\t\t\tid: editingNote, \n\t\t\t\tcontent: editContent \n\t\t\t});\n\t\t}\n\t};\n\n\tconst cancelEdit = () => {\n\t\tsetEditingNote(null);\n\t\tsetEditContent(\"\");\n\t};\n\n\tconst deleteNote = async (id: string) => {\n\t\tif (notesActor.connection && confirm(\"Are you sure you want to delete this note?\")) {\n\t\t\tawait notesActor.connection.deleteNote({ id });\n\t\t}\n\t};\n\n\tconst handleKeyPress = (e: React.KeyboardEvent, action: () => void) => {\n\t\tif (e.key === \"Enter\") {\n\t\t\taction();\n\t\t}\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{notesActor.connection ? '✓ Connected' : '⚠ Disconnected'}\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t setNewNote(e.target.value)}\n\t\t\t\t\tonKeyPress={(e) => handleKeyPress(e, addNote)}\n\t\t\t\t\tplaceholder=\"Enter a new note...\"\n\t\t\t\t\tdisabled={!notesActor.connection}\n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t\tAdd Note\n\t\t\t\t\n\t\t\t
\n\n\t\t\t{notes.length === 0 ? (\n\t\t\t\t
\n\t\t\t\t\tNo notes yet. Add your first note above!\n\t\t\t\t
\n\t\t\t) : (\n\t\t\t\t
    \n\t\t\t\t\t{notes\n\t\t\t\t\t\t.sort((a, b) => b.updatedAt - a.updatedAt)\n\t\t\t\t\t\t.map((note) => (\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t{editingNote === note.id ? (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t setEditContent(e.target.value)}\n\t\t\t\t\t\t\t\t\t\tonKeyPress={(e) => handleKeyPress(e, saveEdit)}\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-input\"\n\t\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
    {note.content}
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\tLast updated: {new Date(note.updatedAt).toLocaleString()}\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t startEdit(note)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"edit-btn\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tEdit\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t deleteNote(note.id)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"delete-btn\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
  • \n\t\t\t\t\t))}\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [selectedUser, setSelectedUser] = useState(\"user1\");\n\n\tconst users = [\n\t\t{ id: \"user1\", name: \"Alice\" },\n\t\t{ id: \"user2\", name: \"Bob\" },\n\t\t{ id: \"user3\", name: \"Charlie\" },\n\t];\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Database Notes

\n\t\t\t\t

Persistent note-taking with real-time updates

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t setSelectedUser(e.target.value)}\n\t\t\t\t>\n\t\t\t\t\t{users.map((user) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t
\n\t);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { RateLimitResult, registry } from \"../backend/registry\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nfunction RateLimiterDemo({ userId }: { userId: string }) {\n\tconst [result, setResult] = useState(null);\n\tconst [loading, setLoading] = useState(false);\n\n\tconst rateLimiter = useActor({\n\t\tname: \"rateLimiter\",\n\t\tkey: [userId],\n\t});\n\n\tuseEffect(() => {\n\t\tif (rateLimiter.connection) {\n\t\t\t// Get initial status\n\t\t\trateLimiter.connection.getStatus().then((status) => {\n\t\t\t\tsetResult({\n\t\t\t\t\tallowed: status.remaining > 0,\n\t\t\t\t\tremaining: status.remaining,\n\t\t\t\t\tresetsIn: status.resetsIn,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}, [rateLimiter.connection]);\n\n\tconst makeRequest = async () => {\n\t\tif (!rateLimiter.connection || loading) return;\n\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst response = await rateLimiter.connection.checkLimit();\n\t\t\tsetResult(response);\n\t\t} finally {\n\t\t\tsetLoading(false);\n\t\t}\n\t};\n\n\tconst resetLimiter = async () => {\n\t\tif (!rateLimiter.connection) return;\n\n\t\tawait rateLimiter.connection.reset();\n\t\t// Get updated status\n\t\tconst status = await rateLimiter.connection.getStatus();\n\t\tsetResult({\n\t\t\tallowed: status.remaining > 0,\n\t\t\tremaining: status.remaining,\n\t\t\tresetsIn: status.resetsIn,\n\t\t});\n\t};\n\n\tconst usagePercentage = result ? ((5 - result.remaining) / 5) * 100 : 0;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{loading ? \"Making Request...\" : \"Make API Request\"}\n\t\t\t\n\n\t\t\t{result && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tStatus:\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{result.allowed ? \"✓ Request Allowed\" : \"✖ Request Blocked\"}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tRemaining Requests:\n\t\t\t\t\t\t{result.remaining} / 5\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tRate Limit Usage:\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tResets In:\n\t\t\t\t\t\t{result.resetsIn} seconds\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t\n\t\t
\n\t);\n}\n\nexport function App() {\n\tconst [selectedUser, setSelectedUser] = useState(\"user-1\");\n\n\tconst users = [\n\t\t{ id: \"user-1\", name: \"User 1\" },\n\t\t{ id: \"user-2\", name: \"User 2\" },\n\t\t{ id: \"user-3\", name: \"User 3\" },\n\t\t{ id: \"api-client-1\", name: \"API Client 1\" },\n\t\t{ id: \"api-client-2\", name: \"API Client 2\" },\n\t];\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Rate Limiter Demo

\n\t\t\t\t

5 requests per minute per user/client

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

How it works

\n\t\t\t\t\t

\n\t\t\t\t\t\tThis rate limiter allows 5 requests per minute per user. Each user gets their own \n\t\t\t\t\t\tindependent rate limit counter. When the limit is exceeded, further requests are \n\t\t\t\t\t\tblocked until the window resets. Switch between users to see isolated rate limiting.\n\t\t\t\t\t

\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t setSelectedUser(e.target.value)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{users.map((user) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Database Notes Example\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport { authenticate } from \"./my-utils\";\n\nexport type Note = { id: string; content: string; updatedAt: number };\n\nexport const notes = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tnotes: [] as Note[],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetNotes: (c) => c.state.notes,\n\n\t\tupdateNote: (c, { id, content }: { id?: string; content: string }) => {\n\t\t\tconst noteIndex = c.state.notes.findIndex((note) => note.id === id);\n\t\t\tlet note: Note;\n\n\t\t\tif (noteIndex >= 0) {\n\t\t\t\t// Update existing note\n\t\t\t\tnote = c.state.notes[noteIndex];\n\t\t\t\tnote.content = content;\n\t\t\t\tnote.updatedAt = Date.now();\n\t\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\t\tc.broadcast(\"noteUpdated\", note);\n\t\t\t} else {\n\t\t\t\t// Create new note\n\t\t\t\tnote = {\n\t\t\t\t\tid: id || `note-${Date.now()}`,\n\t\t\t\t\tcontent,\n\t\t\t\t\tupdatedAt: Date.now(),\n\t\t\t\t};\n\t\t\t\t// State changes are automatically persisted\n\t\t\t\tc.state.notes.push(note);\n\t\t\t\tc.broadcast(\"noteAdded\", note);\n\t\t\t}\n\n\t\t\treturn note;\n\t\t},\n\n\t\tdeleteNote: (c, { id }: { id: string }) => {\n\t\t\tconst noteIndex = c.state.notes.findIndex((note) => note.id === id);\n\t\t\tif (noteIndex >= 0) {\n\t\t\t\tc.state.notes.splice(noteIndex, 1);\n\t\t\t\tc.broadcast(\"noteDeleted\", { id });\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { notes },\n});\n", - "src/backend/my-utils.ts": "export async function authenticate(token: string): Promise {\n\t// Mock authentication - in real app, verify JWT or session token\n\tif (token === \"demo-token\") {\n\t\treturn \"user123\";\n\t}\n\tthrow new Error(\"Invalid token\");\n}\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "src/frontend/index.html": "\n\n\n \n \n Rate Limiter Example\n \n\n\n
\n \n\n", + "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type RateLimitResult = {\n\tallowed: boolean;\n\tremaining: number;\n\tresetsIn: number;\n};\n\nexport const rateLimiter = actor({\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\tcount: 0,\n\t\tresetAt: 0,\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tcheckLimit: (c): RateLimitResult => {\n\t\t\tconst now = Date.now();\n\n\t\t\t// Reset if expired\n\t\t\tif (now > c.state.resetAt) {\n\t\t\t\t// State changes are automatically persisted\n\t\t\t\tc.state.count = 0;\n\t\t\t\tc.state.resetAt = now + 60000; // 1 minute window\n\t\t\t}\n\n\t\t\tconst allowed = c.state.count < 5;\n\n\t\t\t// Increment if allowed\n\t\t\tif (allowed) {\n\t\t\t\tc.state.count++;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tallowed,\n\t\t\t\tremaining: Math.max(0, 5 - c.state.count),\n\t\t\t\tresetsIn: Math.max(0, Math.round((c.state.resetAt - now) / 1000)),\n\t\t\t};\n\t\t},\n\n\t\tgetStatus: (c) => ({\n\t\t\tcount: c.state.count,\n\t\t\tresetAt: c.state.resetAt,\n\t\t\tremaining: Math.max(0, 5 - c.state.count),\n\t\t\tresetsIn: Math.max(0, Math.round((c.state.resetAt - Date.now()) / 1000)),\n\t\t}),\n\n\t\treset: (c) => {\n\t\t\tc.state.count = 0;\n\t\t\tc.state.resetAt = 0;\n\t\t\treturn { success: true };\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { rateLimiter },\n});\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { - "id": "tenant", - "icon": "faBuilding", - "title": "Multi-Tenant SaaS", + "id": "game", + "icon": "faGamepad", + "title": "Multiplayer Game", "filesToOpen": [ "src/backend/registry.ts", "src/frontend/App.tsx" ], "tab": "memory", "files": { - "tests/tenant.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock authentication function\nvi.mock(\"../src/backend/registry\", async (importOriginal) => {\n\tconst mod = await importOriginal();\n\treturn {\n\t\t...mod,\n\t\t// We'll need to test without connection state since it requires auth\n\t};\n});\n\ntest(\"Tenant organization can provide basic info\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-org\"]);\n\n\t// Get organization info\n\tconst orgInfo = await tenant.getOrganization();\n\texpect(orgInfo).toMatchObject({\n\t\tid: expect.any(String),\n\t\tname: expect.any(String),\n\t\tmemberCount: expect.any(Number),\n\t});\n\texpect(orgInfo.memberCount).toBeGreaterThan(0);\n});\n\ntest(\"Tenant organization tracks members\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-members\"]);\n\n\t// Get all members\n\tconst members = await tenant.getMembers();\n\texpect(Array.isArray(members)).toBe(true);\n\texpect(members.length).toBeGreaterThan(0);\n\n\t// Verify member structure\n\tmembers.forEach((member) => {\n\t\texpect(member).toMatchObject({\n\t\t\tid: expect.any(String),\n\t\t\tname: expect.any(String),\n\t\t\temail: expect.any(String),\n\t\t\trole: expect.stringMatching(/^(admin|member)$/),\n\t\t});\n\t});\n});\n\ntest(\"Tenant organization provides dashboard stats\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-stats\"]);\n\n\t// Get dashboard stats (without admin privileges)\n\tconst stats = await tenant.getDashboardStats();\n\texpect(stats).toMatchObject({\n\t\ttotalMembers: expect.any(Number),\n\t\tadminCount: expect.any(Number),\n\t\tmemberCount: expect.any(Number),\n\t});\n\n\t// Verify member counts add up\n\texpect(stats.adminCount + stats.memberCount).toBe(stats.totalMembers);\n\texpect(stats.totalMembers).toBeGreaterThan(0);\n\texpect(stats.adminCount).toBeGreaterThan(0);\n});\n\ntest(\"Tenant organization validates member roles\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-roles\"]);\n\n\tconst members = await tenant.getMembers();\n\tconst orgInfo = await tenant.getOrganization();\n\n\t// Verify at least one admin exists\n\tconst admins = members.filter((m) => m.role === \"admin\");\n\tconst regularMembers = members.filter((m) => m.role === \"member\");\n\n\texpect(admins.length).toBeGreaterThan(0);\n\texpect(members.length).toBe(orgInfo.memberCount);\n\texpect(admins.length + regularMembers.length).toBe(members.length);\n});\n\ntest(\"Tenant organization handles initial data correctly\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-initial-data\"]);\n\n\t// Verify initial state has expected structure\n\tconst members = await tenant.getMembers();\n\tconst orgInfo = await tenant.getOrganization();\n\n\texpect(orgInfo.name).toBeTruthy();\n\texpect(orgInfo.id).toBeTruthy();\n\texpect(members.length).toBe(orgInfo.memberCount);\n\n\t// Verify we have the expected sample data\n\texpect(members.some((m) => m.role === \"admin\")).toBe(true);\n\texpect(members.some((m) => m.role === \"member\")).toBe(true);\n\n\t// Verify email formats\n\tmembers.forEach((member) => {\n\t\texpect(member.email).toMatch(/@/);\n\t\texpect(member.name).toBeTruthy();\n\t\texpect(member.id).toBeTruthy();\n\t});\n});\n\ntest(\"Tenant organization member data consistency\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst tenant = client.tenant.getOrCreate([\"test-consistency\"]);\n\n\t// Get data multiple times to verify consistency\n\tconst members1 = await tenant.getMembers();\n\tconst members2 = await tenant.getMembers();\n\tconst orgInfo1 = await tenant.getOrganization();\n\tconst orgInfo2 = await tenant.getOrganization();\n\n\texpect(members1).toEqual(members2);\n\texpect(orgInfo1).toEqual(orgInfo2);\n\texpect(members1.length).toBe(orgInfo1.memberCount);\n});\n", - "README.md": "# Tenant Dashboard for RivetKit\n\nExample project demonstrating multi-tenant organization management with role-based access control using [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/tenant\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Role-Based Access Control**: Different permissions for admin and member roles\n- **Multi-Tenant Architecture**: Organization-scoped data and permissions\n- **Authentication**: Token-based authentication with connection state\n- **Real-time Updates**: Live updates when data changes across clients\n- **Permission Enforcement**: Server-side permission checks for all operations\n- **User Management**: Admin can add members and update roles\n- **Invoice Management**: Admin-only access to billing information\n- **Dashboard Analytics**: Role-specific statistics and insights\n\n## How it works\n\nThis tenant system demonstrates:\n\n1. **Authentication**: Token-based authentication with `createConnState`\n2. **Authorization**: Role-based access control with server-side permission checks\n3. **Multi-Tenancy**: Organization-scoped data isolation\n4. **Real-time Collaboration**: Live updates across connected clients\n5. **Permission Enforcement**: Different UI and API access based on user roles\n\n## Architecture\n\n- **Backend**: RivetKit actor with authentication and role-based permissions\n- **Frontend**: React application with conditional rendering based on user roles\n- **Authentication**: Token-based with connection state for user context\n- **Authorization**: Server-side permission checks for all sensitive operations\n\n## User Roles\n\n### Admin Users\n- **Full Access**: Can view all data and perform all operations\n- **Member Management**: Add new members and update member roles\n- **Invoice Access**: View and manage organization invoices\n- **Dashboard Stats**: Access to comprehensive analytics including revenue\n\n### Member Users\n- **Limited Access**: Can only view basic organization information\n- **Member List**: View team members and their roles\n- **Dashboard Stats**: Access to basic member statistics only\n- **No Invoice Access**: Cannot view or manage billing information\n\n## Security Features\n\n### Authentication\n```typescript\n// Token-based authentication\ncreateConnState: async (c, { params }) => {\n const token = params.token;\n const { userId, role } = await authenticate(token);\n return { userId, role };\n}\n```\n\n### Authorization\n```typescript\n// Server-side permission checks\ngetInvoices: (c) => {\n if (c.conn.role !== \"admin\") {\n throw new UserError(\"Permission denied: Admin role required\");\n }\n return c.state.invoices;\n}\n```\n\n### Data Isolation\n- Organization-scoped data using actor keys\n- User context stored in connection state\n- Role-based data filtering and access control\n\n## API Endpoints\n\n### Public (All Authenticated Users)\n- `getOrganization()` - Get organization information\n- `getMembers()` - Get list of all members\n- `getCurrentUser()` - Get current user information\n- `getDashboardStats()` - Get basic statistics\n\n### Admin Only\n- `getInvoices()` - Get all invoices\n- `addMember(member)` - Add new member\n- `updateMemberRole(memberId, role)` - Update member role\n- `markInvoicePaid(invoiceId)` - Mark invoice as paid\n\n## Real-time Updates\n\nThe system broadcasts updates to all connected clients:\n\n```typescript\n// When member is added\nc.broadcast(\"memberAdded\", { member: newMember });\n\n// When member role is updated\nc.broadcast(\"memberUpdated\", { member });\n\n// When invoice is updated\nc.broadcast(\"invoiceUpdated\", { invoice });\n```\n\n## Use Cases\n\nThis tenant pattern is perfect for:\n\n- **SaaS Applications**: Multi-tenant software with organization accounts\n- **Team Management**: Internal tools with role-based access\n- **Project Management**: Collaborative tools with permission levels\n- **CRM Systems**: Customer relationship management with user roles\n- **Enterprise Software**: Business applications with admin/user hierarchies\n- **Learning Management**: Educational platforms with teacher/student roles\n\n## Extending\n\nThis tenant system can be enhanced with:\n\n### Advanced Authentication\n- **OAuth Integration**: Google, GitHub, Microsoft authentication\n- **JWT Tokens**: Stateless authentication with signed tokens\n- **Multi-Factor Auth**: SMS, email, or authenticator app verification\n- **Session Management**: Secure session handling and expiration\n\n### Enhanced Authorization\n- **Custom Roles**: Define custom roles beyond admin/member\n- **Permissions**: Granular permissions for specific operations\n- **Role Hierarchy**: Nested roles with inheritance\n- **Resource-Level Access**: Per-resource permissions\n\n### Multi-Tenancy Features\n- **Organization Settings**: Configurable organization preferences\n- **Billing Integration**: Stripe, PayPal, or other payment processors\n- **Usage Tracking**: Monitor and limit resource usage per tenant\n- **Data Export**: Allow tenants to export their data\n\n### Advanced Features\n- **Audit Logging**: Track all user actions and changes\n- **Activity Feeds**: Real-time activity notifications\n- **Team Invitations**: Invite users via email with signup flow\n- **API Keys**: Generate API keys for external integrations\n- **Webhooks**: Notify external systems of events\n\n## Testing Different Roles\n\nTo test the role-based access control:\n\n1. **Login as Alice (Admin)**:\n - Can view members and invoices\n - Can add new members\n - Can update member roles\n - Can mark invoices as paid\n - Sees full dashboard statistics\n\n2. **Login as Bob/Charlie (Member)**:\n - Can view members only\n - Cannot access invoices\n - Cannot manage members\n - Sees limited dashboard statistics\n - Gets permission denied errors for admin operations\n\n## Security Considerations\n\n### Server-Side Validation\n- All permission checks happen on the server\n- Client-side UI is for user experience only\n- Never trust client-side role information\n\n### Token Management\n- Use secure token storage (httpOnly cookies in production)\n- Implement token refresh mechanisms\n- Add token expiration and revocation\n\n### Data Protection\n- Sanitize all user inputs\n- Use parameterized queries for database operations\n- Implement rate limiting for API endpoints\n- Log security events and failed authentication attempts\n\n## Performance Considerations\n\n### Caching\n- Cache user roles and permissions\n- Use Redis for session storage in production\n- Implement query result caching\n\n### Scalability\n- Separate read and write operations\n- Use database read replicas for heavy read workloads\n- Implement proper indexing for user and organization queries\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-tenant\",\n \"version\": \"1.0.0\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-tenant\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz\",\n \"integrity\": \"sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz\",\n \"integrity\": \"sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz\",\n \"integrity\": \"sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz\",\n \"integrity\": \"sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@jest/schemas\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz\",\n \"integrity\": \"sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@sinclair/typebox\": \"^0.27.8\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@sinclair/typebox\": {\n \"version\": \"0.27.8\",\n \"resolved\": \"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz\",\n \"integrity\": \"sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.7.tgz\",\n \"integrity\": \"sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz\",\n \"integrity\": \"sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"chai\": \"^4.3.10\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz\",\n \"integrity\": \"sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"1.6.1\",\n \"p-limit\": \"^5.0.0\",\n \"pathe\": \"^1.1.1\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz\",\n \"integrity\": \"sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz\",\n \"integrity\": \"sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^2.2.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz\",\n \"integrity\": \"sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"diff-sequences\": \"^29.6.3\",\n \"estree-walker\": \"^3.0.3\",\n \"loupe\": \"^2.3.7\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/acorn\": {\n \"version\": \"8.15.0\",\n \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz\",\n \"integrity\": \"sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"acorn\": \"bin/acorn\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/acorn-walk\": {\n \"version\": \"8.3.4\",\n \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz\",\n \"integrity\": \"sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.11.0\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz\",\n \"integrity\": \"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-4.5.0.tgz\",\n \"integrity\": \"sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^1.1.0\",\n \"check-error\": \"^1.0.3\",\n \"deep-eql\": \"^4.1.3\",\n \"get-func-name\": \"^2.0.2\",\n \"loupe\": \"^2.3.6\",\n \"pathval\": \"^1.1.1\",\n \"type-detect\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"1.0.3\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz\",\n \"integrity\": \"sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.2\"\n },\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/confbox\": {\n \"version\": \"0.1.8\",\n \"resolved\": \"https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz\",\n \"integrity\": \"sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cross-spawn\": {\n \"version\": \"7.0.6\",\n \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^3.1.0\",\n \"shebang-command\": \"^2.0.0\",\n \"which\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"4.1.4\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz\",\n \"integrity\": \"sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"type-detect\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-sequences\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz\",\n \"integrity\": \"sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz\",\n \"integrity\": \"sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.6\",\n \"@esbuild/android-arm\": \"0.25.6\",\n \"@esbuild/android-arm64\": \"0.25.6\",\n \"@esbuild/android-x64\": \"0.25.6\",\n \"@esbuild/darwin-arm64\": \"0.25.6\",\n \"@esbuild/darwin-x64\": \"0.25.6\",\n \"@esbuild/freebsd-arm64\": \"0.25.6\",\n \"@esbuild/freebsd-x64\": \"0.25.6\",\n \"@esbuild/linux-arm\": \"0.25.6\",\n \"@esbuild/linux-arm64\": \"0.25.6\",\n \"@esbuild/linux-ia32\": \"0.25.6\",\n \"@esbuild/linux-loong64\": \"0.25.6\",\n \"@esbuild/linux-mips64el\": \"0.25.6\",\n \"@esbuild/linux-ppc64\": \"0.25.6\",\n \"@esbuild/linux-riscv64\": \"0.25.6\",\n \"@esbuild/linux-s390x\": \"0.25.6\",\n \"@esbuild/linux-x64\": \"0.25.6\",\n \"@esbuild/netbsd-arm64\": \"0.25.6\",\n \"@esbuild/netbsd-x64\": \"0.25.6\",\n \"@esbuild/openbsd-arm64\": \"0.25.6\",\n \"@esbuild/openbsd-x64\": \"0.25.6\",\n \"@esbuild/openharmony-arm64\": \"0.25.6\",\n \"@esbuild/sunos-x64\": \"0.25.6\",\n \"@esbuild/win32-arm64\": \"0.25.6\",\n \"@esbuild/win32-ia32\": \"0.25.6\",\n \"@esbuild/win32-x64\": \"0.25.6\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/execa\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/execa/-/execa-8.0.1.tgz\",\n \"integrity\": \"sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cross-spawn\": \"^7.0.3\",\n \"get-stream\": \"^8.0.1\",\n \"human-signals\": \"^5.0.0\",\n \"is-stream\": \"^3.0.0\",\n \"merge-stream\": \"^2.0.0\",\n \"npm-run-path\": \"^5.1.0\",\n \"onetime\": \"^6.0.0\",\n \"signal-exit\": \"^4.1.0\",\n \"strip-final-newline\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/execa?sponsor=1\"\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-func-name\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz\",\n \"integrity\": \"sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/get-stream\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz\",\n \"integrity\": \"sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/human-signals\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz\",\n \"integrity\": \"sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=16.17.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/is-stream\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz\",\n \"integrity\": \"sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isexe\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz\",\n \"integrity\": \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/local-pkg\": {\n \"version\": \"0.5.1\",\n \"resolved\": \"https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz\",\n \"integrity\": \"sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mlly\": \"^1.7.3\",\n \"pkg-types\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"2.3.7\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz\",\n \"integrity\": \"sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.1\"\n }\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/merge-stream\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz\",\n \"integrity\": \"sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/mimic-fn\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz\",\n \"integrity\": \"sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/mlly\": {\n \"version\": \"1.7.4\",\n \"resolved\": \"https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz\",\n \"integrity\": \"sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.14.0\",\n \"pathe\": \"^2.0.1\",\n \"pkg-types\": \"^1.3.0\",\n \"ufo\": \"^1.5.4\"\n }\n },\n \"node_modules/mlly/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/npm-run-path\": {\n \"version\": \"5.3.0\",\n \"resolved\": \"https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz\",\n \"integrity\": \"sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/npm-run-path/node_modules/path-key\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz\",\n \"integrity\": \"sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/onetime\": {\n \"version\": \"6.0.0\",\n \"resolved\": \"https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz\",\n \"integrity\": \"sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mimic-fn\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-limit\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz\",\n \"integrity\": \"sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yocto-queue\": \"^1.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/path-key\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz\",\n \"integrity\": \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz\",\n \"integrity\": \"sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz\",\n \"integrity\": \"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/pkg-types\": {\n \"version\": \"1.3.1\",\n \"resolved\": \"https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz\",\n \"integrity\": \"sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"confbox\": \"^0.1.8\",\n \"mlly\": \"^1.7.4\",\n \"pathe\": \"^2.0.1\"\n }\n },\n \"node_modules/pkg-types/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/pretty-format\": {\n \"version\": \"29.7.0\",\n \"resolved\": \"https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz\",\n \"integrity\": \"sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jest/schemas\": \"^29.6.3\",\n \"ansi-styles\": \"^5.0.0\",\n \"react-is\": \"^18.0.0\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/pretty-format/node_modules/ansi-styles\": {\n \"version\": \"5.2.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz\",\n \"integrity\": \"sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-is\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz\",\n \"integrity\": \"sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shebang-command\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz\",\n \"integrity\": \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"shebang-regex\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shebang-regex\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz\",\n \"integrity\": \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/signal-exit\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz\",\n \"integrity\": \"sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/isaacs\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-final-newline\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz\",\n \"integrity\": \"sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz\",\n \"integrity\": \"sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinypool\": {\n \"version\": \"0.8.4\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz\",\n \"integrity\": \"sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"2.2.1\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz\",\n \"integrity\": \"sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.3\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz\",\n \"integrity\": \"sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/type-detect\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz\",\n \"integrity\": \"sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/ufo\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz\",\n \"integrity\": \"sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz\",\n \"integrity\": \"sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.3.4\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"vite\": \"^5.0.0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz\",\n \"integrity\": \"sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/expect\": \"1.6.1\",\n \"@vitest/runner\": \"1.6.1\",\n \"@vitest/snapshot\": \"1.6.1\",\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"acorn-walk\": \"^8.3.2\",\n \"chai\": \"^4.3.10\",\n \"debug\": \"^4.3.4\",\n \"execa\": \"^8.0.1\",\n \"local-pkg\": \"^0.5.0\",\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"std-env\": \"^3.5.0\",\n \"strip-literal\": \"^2.0.0\",\n \"tinybench\": \"^2.5.1\",\n \"tinypool\": \"^0.8.3\",\n \"vite\": \"^5.0.0\",\n \"vite-node\": \"1.6.1\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"@vitest/browser\": \"1.6.1\",\n \"@vitest/ui\": \"1.6.1\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/which\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/which/-/which-2.0.2.tgz\",\n \"integrity\": \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"isexe\": \"^2.0.0\"\n },\n \"bin\": {\n \"node-which\": \"bin/node-which\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yocto-queue\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz\",\n \"integrity\": \"sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.20\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-tenant\",\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n}\n", + "tests/game.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test, vi } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\n// Mock setInterval to avoid timing issues in tests\nconst mockIntervals: NodeJS.Timeout[] = [];\nconst originalSetInterval = global.setInterval;\nglobal.setInterval = vi.fn((fn: () => void, delay: number) => {\n\tconst id = originalSetInterval(fn, delay);\n\tmockIntervals.push(id);\n\treturn id;\n}) as any;\n\n// Cleanup function for intervals\nconst clearTestIntervals = () => {\n\tmockIntervals.forEach((id) => clearInterval(id));\n\tmockIntervals.length = 0;\n};\n\ntest(\"Game room can track player count\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-count-new\"]);\n\n\t// Initial state should have no players (but may have some from state persistence)\n\tconst initialCount = await game.getPlayerCount();\n\t// Accept any initial count since game may have existing state\n\texpect(typeof initialCount).toBe(\"number\");\n\texpect(initialCount).toBeGreaterThanOrEqual(0);\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room handles player input updates\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-input-new\"]);\n\n\t// Since setInput requires connection state, and we can't easily mock that,\n\t// let's test that the action exists and doesn't throw when called\n\ttry {\n\t\t// This will likely fail due to no connection, but shouldn't crash the test\n\t\tawait game.setInput({ x: 1, y: 0 }).catch(() => {\n\t\t\t// Expected to fail without connection context\n\t\t});\n\t} catch (error) {\n\t\t// Expected behavior - action exists but needs connection\n\t}\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room initializes with correct map size\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst game = client.gameRoom.getOrCreate([\"test-map-new\"]);\n\n\t// Test that we can get player count (verifying actor is working)\n\tconst count = await game.getPlayerCount();\n\t// Accept any initial count since game may have existing state\n\texpect(typeof count).toBe(\"number\");\n\texpect(count).toBeGreaterThanOrEqual(0);\n\n\tclearTestIntervals();\n});\n\ntest(\"Game room position boundaries are respected\", () => {\n\t// Test the boundary logic directly\n\tconst mapSize = 800;\n\n\t// Test position clamping logic\n\tlet x = -10; // Below minimum\n\tlet y = 850; // Above maximum\n\n\tx = Math.max(10, Math.min(x, mapSize - 10));\n\ty = Math.max(10, Math.min(y, mapSize - 10));\n\n\texpect(x).toBe(10); // Clamped to minimum\n\texpect(y).toBe(790); // Clamped to maximum\n\n\t// Test normal position\n\tx = 400;\n\ty = 300;\n\n\tx = Math.max(10, Math.min(x, mapSize - 10));\n\ty = Math.max(10, Math.min(y, mapSize - 10));\n\n\texpect(x).toBe(400); // Unchanged\n\texpect(y).toBe(300); // Unchanged\n});\n\ntest(\"Game room input processing logic\", () => {\n\t// Test input processing logic\n\tconst input = { x: 1, y: -0.5 };\n\tconst speed = 5;\n\n\tconst deltaX = input.x * speed;\n\tconst deltaY = input.y * speed;\n\n\texpect(deltaX).toBe(5);\n\texpect(deltaY).toBe(-2.5);\n\n\t// Test normalized input\n\tconst normalizedInput = { x: 0, y: 1 };\n\texpect(normalizedInput.x * speed).toBe(0);\n\texpect(normalizedInput.y * speed).toBe(5);\n});\n", + "README.md": "# Multiplayer Game for RivetKit\n\nExample project demonstrating real-time multiplayer game mechanics with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/game\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Real-time Movement**: Smooth character movement with WASD/Arrow keys\n- **Multiplayer Support**: Multiple players can join and move simultaneously\n- **Visual Feedback**: Grid-based canvas with player identification\n- **Collision Detection**: Players stay within game boundaries\n- **Connection Status**: Live connection status indicator\n- **Player Identification**: Current player highlighted in blue, others in gray\n\n## How it works\n\nThis multiplayer game demonstrates:\n\n1. **Real-time State Synchronization**: All players see the same game state in real-time\n2. **Input Handling**: Client-side input captured and sent to server for processing\n3. **Game Loop**: Server runs at 20 FPS (50ms intervals) to update game state\n4. **Broadcasting**: World updates sent to all connected players\n5. **Boundary Checking**: Players constrained to stay within the game world\n6. **Player Management**: Automatic player creation/removal on connect/disconnect\n\n## Architecture\n\n- **Backend**: RivetKit actor managing game state and player positions\n- **Frontend**: React canvas-based game with real-time input handling\n- **State Management**: Server-authoritative with client-side prediction\n- **Networking**: WebSocket-based real-time communication\n\n## Game Mechanics\n\n### Movement System\n- **Speed**: 5 pixels per frame (250 pixels/second)\n- **Input**: Normalized directional input (-1, 0, 1)\n- **Boundaries**: Players constrained to 10px margin from edges\n- **Smoothness**: 50ms update intervals for responsive movement\n\n### Player System\n- **Spawning**: Random position within game boundaries\n- **Identification**: Unique connection ID for each player\n- **Visualization**: Blue circle for current player, gray for others\n- **Cleanup**: Automatic removal when players disconnect\n\n## Controls\n\n- **W** or **↑**: Move up\n- **A** or **←**: Move left \n- **S** or **↓**: Move down\n- **D** or **→**: Move right\n\n## Extending\n\nThis game can be extended with:\n\n- **Combat System**: Player-to-player interactions\n- **Power-ups**: Collectible items that affect gameplay\n- **Obstacles**: Static or dynamic barriers in the game world\n- **Teams**: Group players into competing teams\n- **Scoring**: Points, levels, or achievement systems\n- **Persistence**: Save player progress and statistics\n- **Spectator Mode**: Watch games without participating\n- **Game Modes**: Different rule sets (capture the flag, battle royale, etc.)\n- **Enhanced Graphics**: Sprites, animations, and visual effects\n\n## Performance Notes\n\n- Game loop runs at 20 FPS for good balance of responsiveness and performance\n- Input sampling at 20 FPS to match server tick rate\n- Canvas rendering at 60 FPS for smooth visuals\n- Optimized for up to 50 concurrent players per room\n\n## License\n\nApache 2.0", + "package-lock.json": "{\n \"name\": \"example-game\",\n \"version\": \"2.0.15\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-game\",\n \"version\": \"2.0.15\",\n \"dependencies\": {\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\",\n \"rivetkit\": \"^0.9.1\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@asteasolutions/zod-to-openapi\": {\n \"version\": \"7.3.4\",\n \"resolved\": \"https://registry.npmjs.org/@asteasolutions/zod-to-openapi/-/zod-to-openapi-7.3.4.tgz\",\n \"integrity\": \"sha512-/2rThQ5zPi9OzVwes6U7lK1+Yvug0iXu25olp7S0XsYmOqnyMfxH7gdSQjn/+DSOHRg7wnotwGJSyL+fBKdnEA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"openapi3-ts\": \"^4.1.2\"\n },\n \"peerDependencies\": {\n \"zod\": \"^3.20.2\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz\",\n \"integrity\": \"sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz\",\n \"integrity\": \"sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.28.3\",\n \"@babel/helpers\": \"^7.28.4\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.4\",\n \"@babel/types\": \"^7.28.4\",\n \"@jridgewell/remapping\": \"^2.3.5\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz\",\n \"integrity\": \"sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.3\",\n \"@babel/types\": \"^7.28.2\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.28.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz\",\n \"integrity\": \"sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.28.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz\",\n \"integrity\": \"sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz\",\n \"integrity\": \"sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.4\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz\",\n \"integrity\": \"sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz\",\n \"integrity\": \"sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.3\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.4\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.4\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.4\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz\",\n \"integrity\": \"sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@hono/standard-validator\": {\n \"version\": \"0.1.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/standard-validator/-/standard-validator-0.1.5.tgz\",\n \"integrity\": \"sha512-EIyZPPwkyLn6XKwFj5NBEWHXhXbgmnVh2ceIFo5GO7gKI9WmzTjPDKnppQB0KrqKeAkq3kpoW4SIbu5X1dgx3w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@standard-schema/spec\": \"1.0.0\",\n \"hono\": \">=3.9.0\"\n }\n },\n \"node_modules/@hono/zod-openapi\": {\n \"version\": \"0.19.10\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-openapi/-/zod-openapi-0.19.10.tgz\",\n \"integrity\": \"sha512-dpoS6DenvoJyvxtQ7Kd633FRZ/Qf74+4+o9s+zZI8pEqnbjdF/DtxIib08WDpCaWabMEJOL5TXpMgNEZvb7hpA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@asteasolutions/zod-to-openapi\": \"^7.3.0\",\n \"@hono/zod-validator\": \"^0.7.1\",\n \"openapi3-ts\": \"^4.5.0\"\n },\n \"engines\": {\n \"node\": \">=16.0.0\"\n },\n \"peerDependencies\": {\n \"hono\": \">=4.3.6\",\n \"zod\": \">=3.0.0\"\n }\n },\n \"node_modules/@hono/zod-validator\": {\n \"version\": \"0.7.4\",\n \"resolved\": \"https://registry.npmjs.org/@hono/zod-validator/-/zod-validator-0.7.4.tgz\",\n \"integrity\": \"sha512-biKGn3BRJVaftZlIPMyK+HCe/UHAjJ6sH0UyXe3+v0OcgVr9xfImDROTJFLtn9e3XEEAHGZIM9U6evu85abm8Q==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"hono\": \">=3.9.0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.13\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz\",\n \"integrity\": \"sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/remapping\": {\n \"version\": \"2.3.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz\",\n \"integrity\": \"sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.31\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz\",\n \"integrity\": \"sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.9.tgz\",\n \"integrity\": \"sha512-RZlgZVclT2Po1uILBtGJ8IVw78KuO/52hEPYpZh+wpEp5wpKjI3Z3AtXz6tyEBiwa3YuaxG1NrWNBHZm5eHWhw==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@hono/standard-validator\": \"^0.1.3\",\n \"@hono/zod-openapi\": \"^0.19.10\",\n \"@rivetkit/fast-json-patch\": \"^3.1.2\",\n \"cbor-x\": \"^1.6.0\",\n \"hono\": \"^4.7.0\",\n \"invariant\": \"^2.2.4\",\n \"nanoevents\": \"^9.1.0\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.76\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"eventsource\": \"^3.0.5\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/fast-json-patch\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/fast-json-patch/-/fast-json-patch-3.1.2.tgz\",\n \"integrity\": \"sha512-CtA50xgsSSzICQduF/NDShPRzvucnNvsW/lQO0WgMTT1XAj9Lfae4pm7r3llFwilgG+9iq76Hv1LUqNy72v6yw==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.9.tgz\",\n \"integrity\": \"sha512-2E/OjUp6b7jGsiSFvJ81lSQX7DHag8DOZCLeS7Mqdqozb/lvzIwtLzW7CPL1DEWS6/VJa6RPn0oOe9V/tMR9cg==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"0.9.9\",\n \"@tanstack/store\": \"^0.7.1\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.9.tgz\",\n \"integrity\": \"sha512-c00Dw0wsrLeu1G79vHKzxuERBIUNt/BQ4oLrt5qPSqkCo0kB8izIKwwO6vVoIQ7Pf8KTe9JXl3UxYLfH6QCmCA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/core\": \"^0.9.9\",\n \"@rivetkit/framework-base\": \"0.9.9\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.27\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz\",\n \"integrity\": \"sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@standard-schema/spec\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n \"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.7.tgz\",\n \"integrity\": \"sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.7\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.7\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.7.tgz\",\n \"integrity\": \"sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.2\"\n }\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.21\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.21.tgz\",\n \"integrity\": \"sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.26\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz\",\n \"integrity\": \"sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\"\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.7.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz\",\n \"integrity\": \"sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.28.0\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.27\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/baseline-browser-mapping\": {\n \"version\": \"2.8.16\",\n \"resolved\": \"https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz\",\n \"integrity\": \"sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"baseline-browser-mapping\": \"dist/cli.js\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.26.3\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz\",\n \"integrity\": \"sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"baseline-browser-mapping\": \"^2.8.9\",\n \"caniuse-lite\": \"^1.0.30001746\",\n \"electron-to-chromium\": \"^1.5.227\",\n \"node-releases\": \"^2.0.21\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001750\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz\",\n \"integrity\": \"sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.1.2\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz\",\n \"integrity\": \"sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.237\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz\",\n \"integrity\": \"sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.3.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz\",\n \"integrity\": \"sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoevents\": {\n \"version\": \"9.1.0\",\n \"resolved\": \"https://registry.npmjs.org/nanoevents/-/nanoevents-9.1.0.tgz\",\n \"integrity\": \"sha512-Jd0fILWG44a9luj8v5kED4WI+zfkkgwKyRQKItTtlPfEsh7Lznfi1kr8/iZ+XAIss4Qq5GqRB0qtWbaz9ceO/A==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.23\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz\",\n \"integrity\": \"sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/openapi3-ts\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz\",\n \"integrity\": \"sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yaml\": \"^2.8.0\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz\",\n \"integrity\": \"sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.20\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.20.tgz\",\n \"integrity\": \"sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yaml\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz\",\n \"integrity\": \"sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==\",\n \"license\": \"ISC\",\n \"bin\": {\n \"yaml\": \"bin.mjs\"\n },\n \"engines\": {\n \"node\": \">= 14.6\"\n }\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-game\",\n \"version\": \"2.0.15\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^3.1.1\"\n }\n}\n", "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"skipLibCheck\": true,\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n \"strict\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"include\": [\"src\", \"tests\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n\tbuild: {\n\t\toutDir: \"../../dist\",\n\t\temptyOutDir: true,\n\t},\n});\n", "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tenvironment: \"node\",\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { Member, Invoice, registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nconst ORG_ID = \"org-1\";\n\nexport function App() {\n\t// Authentication state\n\tconst [token, setToken] = useState(\"\");\n\tconst [currentUser, setCurrentUser] = useState(null);\n\t\n\t// Data state\n\tconst [organization, setOrganization] = useState(null);\n\tconst [members, setMembers] = useState([]);\n\tconst [invoices, setInvoices] = useState([]);\n\tconst [dashboardStats, setDashboardStats] = useState(null);\n\tconst [error, setError] = useState(\"\");\n\tconst [loading, setLoading] = useState(false);\n\n\t// Connect to tenant actor with authentication token\n\tconst tenant = useActor({\n\t\tname: \"tenant\",\n\t\tkey: [ORG_ID],\n\t\tparams: { token },\n\t});\n\n\t// Login functions\n\tconst loginAsAdmin = () => {\n\t\tsetToken(\"auth:user-1\"); // Alice is admin\n\t\tsetError(\"\");\n\t};\n\n\tconst loginAsMember = () => {\n\t\tsetToken(\"auth:user-2\"); // Bob is member\n\t\tsetError(\"\");\n\t};\n\n\tconst loginAsCharlie = () => {\n\t\tsetToken(\"auth:user-3\"); // Charlie is member\n\t\tsetError(\"\");\n\t};\n\n\tconst logout = () => {\n\t\tsetToken(\"\");\n\t\tsetCurrentUser(null);\n\t\tsetOrganization(null);\n\t\tsetMembers([]);\n\t\tsetInvoices([]);\n\t\tsetDashboardStats(null);\n\t\tsetError(\"\");\n\t};\n\n\t// Load data when actor is available\n\tuseEffect(() => {\n\t\tif (!tenant.connection || !token) return;\n\n\t\tconst loadData = async () => {\n\t\t\tsetLoading(true);\n\t\t\ttry {\n\t\t\t\t// Get current user info\n\t\t\t\tconst user = await tenant.connection!.getCurrentUser();\n\t\t\t\tsetCurrentUser(user);\n\n\t\t\t\t// Get organization info\n\t\t\t\tconst org = await tenant.connection!.getOrganization();\n\t\t\t\tsetOrganization(org);\n\n\t\t\t\t// Get members (available to all users)\n\t\t\t\tconst membersList = await tenant.connection!.getMembers();\n\t\t\t\tsetMembers(membersList);\n\n\t\t\t\t// Get dashboard stats\n\t\t\t\tconst stats = await tenant.connection!.getDashboardStats();\n\t\t\t\tsetDashboardStats(stats);\n\n\t\t\t\t// Try to get invoices (only available to admins)\n\t\t\t\ttry {\n\t\t\t\t\tconst invoicesList = await tenant.connection!.getInvoices();\n\t\t\t\t\tsetInvoices(invoicesList);\n\t\t\t\t\tsetError(\"\");\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tsetError(err.message || \"Failed to load invoices\");\n\t\t\t\t\tsetInvoices([]);\n\t\t\t\t}\n\t\t\t} catch (err: any) {\n\t\t\t\tsetError(err.message || \"Failed to load data\");\n\t\t\t} finally {\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t};\n\n\t\tloadData();\n\t}, [tenant.connection, token]);\n\n\t// Listen for real-time updates\n\ttenant.useEvent(\"memberAdded\", ({ member }: { member: Member }) => {\n\t\tsetMembers(prev => [...prev, member]);\n\t});\n\n\ttenant.useEvent(\"memberUpdated\", ({ member }: { member: Member }) => {\n\t\tsetMembers(prev => prev.map(m => m.id === member.id ? member : m));\n\t});\n\n\ttenant.useEvent(\"invoiceUpdated\", ({ invoice }: { invoice: Invoice }) => {\n\t\tsetInvoices(prev => prev.map(inv => inv.id === invoice.id ? invoice : inv));\n\t});\n\n\t// Admin functions\n\tconst markInvoicePaid = async (invoiceId: string) => {\n\t\tif (!tenant.connection) return;\n\t\t\n\t\ttry {\n\t\t\tawait tenant.connection.markInvoicePaid(invoiceId);\n\t\t\tsetError(\"\");\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || \"Failed to mark invoice as paid\");\n\t\t}\n\t};\n\n\tconst addMember = async () => {\n\t\tif (!tenant.connection) return;\n\t\t\n\t\tconst name = prompt(\"Enter member name:\");\n\t\tconst email = prompt(\"Enter member email:\");\n\t\t\n\t\tif (!name || !email) return;\n\t\t\n\t\ttry {\n\t\t\tawait tenant.connection.addMember({\n\t\t\t\tname,\n\t\t\t\temail,\n\t\t\t\trole: \"member\",\n\t\t\t});\n\t\t\tsetError(\"\");\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || \"Failed to add member\");\n\t\t}\n\t};\n\n\tconst updateMemberRole = async (memberId: string, currentRole: string) => {\n\t\tif (!tenant.connection) return;\n\t\t\n\t\tconst newRole = currentRole === \"admin\" ? \"member\" : \"admin\";\n\t\t\n\t\ttry {\n\t\t\tawait tenant.connection.updateMemberRole(memberId, newRole);\n\t\t\tsetError(\"\");\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || \"Failed to update member role\");\n\t\t}\n\t};\n\n\t// Login screen when not authenticated\n\tif (!token) {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

Organization Dashboard

\n\t\t\t\t\t

Multi-tenant role-based access control with RivetKit

\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

How it works

\n\t\t\t\t\t

\n\t\t\t\t\t\tThis tenant system demonstrates role-based access control in a multi-tenant environment. \n\t\t\t\t\t\tDifferent user roles have different permissions - admins can access invoices and manage members, \n\t\t\t\t\t\twhile regular members can only view member information.\n\t\t\t\t\t

\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t

Choose a User to Login

\n\t\t\t\t\t

Select a user to see different permission levels:

\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Organization Dashboard

\n\t\t\t\t

Multi-tenant role-based access control with RivetKit

\n\t\t\t
\n\n\t\t\t{/* User Info */}\n\t\t\t{currentUser && (\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\tLogged in as: {currentUser.name}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{currentUser.role}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{/* Organization Header */}\n\t\t\t{organization && (\n\t\t\t\t
\n\t\t\t\t\t

{organization.name}

\n\t\t\t\t\t

Organization ID: {organization.id} • {organization.memberCount} members

\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{/* Loading State */}\n\t\t\t{loading &&
Loading...
}\n\n\t\t\t{/* Error Display */}\n\t\t\t{error && (\n\t\t\t\t
\n\t\t\t\t\t

Access Denied

\n\t\t\t\t\t

{error}

\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{/* Dashboard Stats */}\n\t\t\t{dashboardStats && (\n\t\t\t\t
\n\t\t\t\t\t

Dashboard Statistics

\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{dashboardStats.totalMembers}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Total Members
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{dashboardStats.adminCount}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Admins
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{dashboardStats.memberCount}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
Members
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{dashboardStats.totalRevenue !== undefined && (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t${dashboardStats.totalRevenue.toFixed(2)}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
Total Revenue
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t{/* Members Section - available to all users */}\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t

Team Members

\n\t\t\t\t\t{currentUser?.role === \"admin\" && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\n\t\t\t\t{members.length === 0 ? (\n\t\t\t\t\t
No members found
\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{currentUser?.role === \"admin\" && }\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{members.map((member) => (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{currentUser?.role === \"admin\" && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\n\t\t\t\t\t
NameEmailRoleActions
{member.name}{member.email}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{member.role}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t updateMemberRole(member.id, member.role)}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"4px 8px\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#6c757d\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"4px\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\"\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tToggle Role\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\n\t\t\t{/* Invoices Section - only displayed to admins */}\n\t\t\t{currentUser?.role === \"admin\" && (\n\t\t\t\t
\n\t\t\t\t\t

Invoices (Admin Only)

\n\t\t\t\t\t{invoices.length === 0 ? (\n\t\t\t\t\t\t
No invoices found
\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{invoices.map((invoice) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
Invoice #DescriptionDateAmountStatusActions
{invoice.id}{invoice.description}{new Date(invoice.date).toLocaleDateString()}${invoice.amount.toFixed(2)}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{invoice.paid ? \"Paid\" : \"Unpaid\"}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{!invoice.paid && (\n\t\t\t\t\t\t\t\t\t\t\t\t markInvoicePaid(invoice.id)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"4px 8px\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#28a745\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"white\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"4px\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"12px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\tMark Paid\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n}", + "src/frontend/App.tsx": "import { createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { Player, registry } from \"../backend/registry\";\n\nconst { useActor } = createRivetKit(\"http://localhost:8080\");\n\nexport function App() {\n\tconst [players, setPlayers] = useState([]);\n\tconst [isConnected, setIsConnected] = useState(false);\n\tconst [currentPlayerId, setCurrentPlayerId] = useState(null);\n\tconst canvasRef = useRef(null);\n\tconst keysPressed = useRef>({});\n\tconst inputIntervalRef = useRef(null);\n\tconst animationRef = useRef(null);\n\n\tconst gameRoom = useActor({\n\t\tname: \"gameRoom\",\n\t\tkey: [\"global\"],\n\t});\n\n\t// Track connection status\n\tuseEffect(() => {\n\t\tsetIsConnected(!!gameRoom.connection);\n\t}, [gameRoom.connection]);\n\n\t// Set up game controls and rendering\n\tuseEffect(() => {\n\t\tif (!gameRoom.connection) return;\n\n\t\t// Set up keyboard handlers\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\tkeysPressed.current[e.key.toLowerCase()] = true;\n\t\t};\n\n\t\tconst handleKeyUp = (e: KeyboardEvent) => {\n\t\t\tkeysPressed.current[e.key.toLowerCase()] = false;\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\twindow.addEventListener(\"keyup\", handleKeyUp);\n\n\t\t// Input update loop\n\t\tinputIntervalRef.current = setInterval(() => {\n\t\t\tconst input = { x: 0, y: 0 };\n\n\t\t\tif (keysPressed.current[\"w\"] || keysPressed.current[\"arrowup\"])\n\t\t\t\tinput.y = -1;\n\t\t\tif (keysPressed.current[\"s\"] || keysPressed.current[\"arrowdown\"])\n\t\t\t\tinput.y = 1;\n\t\t\tif (keysPressed.current[\"a\"] || keysPressed.current[\"arrowleft\"])\n\t\t\t\tinput.x = -1;\n\t\t\tif (keysPressed.current[\"d\"] || keysPressed.current[\"arrowright\"])\n\t\t\t\tinput.x = 1;\n\n\t\t\tgameRoom.connection?.setInput(input);\n\t\t}, 50);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"keydown\", handleKeyDown);\n\t\t\twindow.removeEventListener(\"keyup\", handleKeyUp);\n\t\t\t\n\t\t\tif (inputIntervalRef.current) {\n\t\t\t\tclearInterval(inputIntervalRef.current);\n\t\t\t\tinputIntervalRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [gameRoom.connection]);\n\n\t// Rendering loop\n\tuseEffect(() => {\n\t\tconst renderLoop = () => {\n\t\t\tconst canvas = canvasRef.current;\n\t\t\tif (!canvas) return;\n\n\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\tif (!ctx) return;\n\n\t\t\t// Clear canvas\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\t\t\t// Draw grid\n\t\t\tctx.strokeStyle = \"#e0e0e0\";\n\t\t\tctx.lineWidth = 1;\n\t\t\tfor (let i = 0; i <= canvas.width; i += 50) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(i, 0);\n\t\t\t\tctx.lineTo(i, canvas.height);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t\tfor (let i = 0; i <= canvas.height; i += 50) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(0, i);\n\t\t\t\tctx.lineTo(canvas.width, i);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\n\t\t\t// Draw players\n\t\t\tfor (const player of players) {\n\t\t\t\tconst isCurrentPlayer = currentPlayerId && player.id === currentPlayerId;\n\t\t\t\t\n\t\t\t\t// Draw player shadow\n\t\t\t\tctx.fillStyle = \"rgba(0, 0, 0, 0.2)\";\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(player.position.x + 2, player.position.y + 2, 12, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw player\n\t\t\t\tctx.fillStyle = isCurrentPlayer ? \"#4287f5\" : \"#888\";\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(player.position.x, player.position.y, 10, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw player border\n\t\t\t\tctx.strokeStyle = \"#333\";\n\t\t\t\tctx.lineWidth = 2;\n\t\t\t\tctx.stroke();\n\n\t\t\t\t// Draw player ID\n\t\t\t\tctx.fillStyle = \"#333\";\n\t\t\t\tctx.font = \"12px Arial\";\n\t\t\t\tctx.textAlign = \"center\";\n\t\t\t\tctx.fillText(\n\t\t\t\t\tisCurrentPlayer ? \"YOU\" : player.id.substring(0, 8),\n\t\t\t\t\tplayer.position.x,\n\t\t\t\t\tplayer.position.y - 15\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tanimationRef.current = requestAnimationFrame(renderLoop);\n\t\t};\n\n\t\tanimationRef.current = requestAnimationFrame(renderLoop);\n\n\t\treturn () => {\n\t\t\tif (animationRef.current) {\n\t\t\t\tcancelAnimationFrame(animationRef.current);\n\t\t\t\tanimationRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [players, gameRoom.connection]);\n\n\t// Listen for world updates\n\tgameRoom.useEvent(\"worldUpdate\", ({ playerList }: { playerList: Player[] }) => {\n\t\tsetPlayers(playerList);\n\t\t\n\t\t// Try to identify current player - this is a simple approach\n\t\t// In a real implementation, we'd get the connection ID from the server\n\t\tif (currentPlayerId === null && playerList.length > 0) {\n\t\t\tsetCurrentPlayerId(playerList[playerList.length - 1].id);\n\t\t}\n\t});\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{isConnected ? \"Connected\" : \"Disconnected\"}\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Multiplayer Game

\n\t\t\t\t

Real-time multiplayer movement with RivetKit

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How to Play

\n\t\t\t\t

\n\t\t\t\t\tUse WASD or arrow keys to move your character around the game world. \n\t\t\t\t\tYour character is shown in blue, while other players appear in gray. \n\t\t\t\t\tThe game updates in real-time, so you'll see other players moving as they play.\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\tYou\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\tOther Players\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Controls:

\n\t\t\t\t

Move: WASD or Arrow Keys

\n\t\t\t\t

Players online: {players.length}

\n\t\t\t
\n\t\t
\n\t);\n}\n", "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Tenant Dashboard - RivetKit\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport { UserError } from \"rivetkit/errors\";\n\nexport type Member = {\n\tid: string;\n\tname: string;\n\temail: string;\n\trole: \"admin\" | \"member\";\n};\n\nexport type Invoice = {\n\tid: string;\n\tamount: number;\n\tdate: number;\n\tpaid: boolean;\n\tdescription: string;\n};\n\nexport type ConnState = {\n\tuserId: string;\n\trole: \"admin\" | \"member\";\n};\n\n// Simple authentication function\nasync function authenticate(\n\ttoken: string,\n): Promise<{ userId: string; role: \"admin\" | \"member\" }> {\n\t// Simple token parsing - in production, verify JWT or session\n\tif (token.startsWith(\"auth:\")) {\n\t\tconst userId = token.split(\":\")[1];\n\n\t\t// Hardcoded user roles for demo\n\t\tconst userRoles: Record = {\n\t\t\t\"user-1\": \"admin\", // Alice\n\t\t\t\"user-2\": \"member\", // Bob\n\t\t\t\"user-3\": \"member\", // Charlie\n\t\t};\n\n\t\tconst role = userRoles[userId];\n\t\tif (!role) {\n\t\t\tthrow new UserError(\"Invalid authentication token\");\n\t\t}\n\n\t\treturn { userId, role };\n\t}\n\n\tthrow new UserError(\"Invalid authentication token format\");\n}\n\nconst tenant = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\torgId: \"org-1\",\n\t\torgName: \"Acme Corporation\",\n\t\tmembers: [\n\t\t\t{\n\t\t\t\tid: \"user-1\",\n\t\t\t\tname: \"Alice Johnson\",\n\t\t\t\temail: \"alice@acme.com\",\n\t\t\t\trole: \"admin\" as const,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"user-2\",\n\t\t\t\tname: \"Bob Smith\",\n\t\t\t\temail: \"bob@acme.com\",\n\t\t\t\trole: \"member\" as const,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"user-3\",\n\t\t\t\tname: \"Charlie Brown\",\n\t\t\t\temail: \"charlie@acme.com\",\n\t\t\t\trole: \"member\" as const,\n\t\t\t},\n\t\t],\n\t\tinvoices: [\n\t\t\t{\n\t\t\t\tid: \"inv-001\",\n\t\t\t\tamount: 1200.0,\n\t\t\t\tdate: Date.now() - 86400000 * 30, // 30 days ago\n\t\t\t\tpaid: true,\n\t\t\t\tdescription: \"Monthly subscription - Enterprise plan\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"inv-002\",\n\t\t\t\tamount: 1200.0,\n\t\t\t\tdate: Date.now() - 86400000 * 7, // 7 days ago\n\t\t\t\tpaid: false,\n\t\t\t\tdescription: \"Monthly subscription - Enterprise plan\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"inv-003\",\n\t\t\t\tamount: 250.0,\n\t\t\t\tdate: Date.now() - 86400000 * 3, // 3 days ago\n\t\t\t\tpaid: true,\n\t\t\t\tdescription: \"Additional storage - 500GB\",\n\t\t\t},\n\t\t],\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetOrganization: (c) => {\n\t\t\treturn {\n\t\t\t\tid: c.state.orgId,\n\t\t\t\tname: c.state.orgName,\n\t\t\t\tmemberCount: c.state.members.length,\n\t\t\t};\n\t\t},\n\n\t\tgetMembers: (c) => {\n\t\t\treturn c.state.members;\n\t\t},\n\n\t\tgetDashboardStats: (c) => {\n\t\t\tconst stats = {\n\t\t\t\ttotalMembers: c.state.members.length,\n\t\t\t\tadminCount: c.state.members.filter((m) => m.role === \"admin\").length,\n\t\t\t\tmemberCount: c.state.members.filter((m) => m.role === \"member\").length,\n\t\t\t};\n\n\t\t\t// For testing, always return basic stats\n\t\t\treturn stats;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { tenant },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "src/frontend/index.html": "\n\n\n \n \n Multiplayer Game - RivetKit\n \n\n\n
\n \n\n", + "src/backend/types.ts": "export type Position = { x: number; y: number };\nexport type Input = { x: number; y: number };\nexport type Player = { id: string; position: Position; input: Input };\n\nexport type GameVars = {\n\tgameLoopInterval?: ReturnType;\n};\n", + "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport type { GameVars, Input, Player } from \"./types\";\n\nexport type { Player };\n\nconst gameRoom = actor({\n\t// Persistent state that survives restarts\n\tstate: {\n\t\tplayers: {} as Record,\n\t\tmapSize: 800,\n\t},\n\n\tcreateVars: (): GameVars => ({}),\n\n\tonStart: (c) => {\n\t\t// Set up game update loop\n\t\tc.vars.gameLoopInterval = setInterval(() => {\n\t\t\tconst playerList: Player[] = [];\n\t\t\tlet hasPlayers = false;\n\n\t\t\tfor (const id in c.state.players) {\n\t\t\t\tconst player = c.state.players[id];\n\t\t\t\tconst speed = 5;\n\n\t\t\t\t// Update position based on input\n\t\t\t\tplayer.position.x += player.input.x * speed;\n\t\t\t\tplayer.position.y += player.input.y * speed;\n\n\t\t\t\t// Keep player in bounds\n\t\t\t\tplayer.position.x = Math.max(\n\t\t\t\t\t10,\n\t\t\t\t\tMath.min(player.position.x, c.state.mapSize - 10),\n\t\t\t\t);\n\t\t\t\tplayer.position.y = Math.max(\n\t\t\t\t\t10,\n\t\t\t\t\tMath.min(player.position.y, c.state.mapSize - 10),\n\t\t\t\t);\n\n\t\t\t\t// Add to list for broadcast\n\t\t\t\tplayerList.push(player);\n\t\t\t\thasPlayers = true;\n\t\t\t}\n\n\t\t\t// Only broadcast if there are players\n\t\t\tif (hasPlayers) {\n\t\t\t\t// Send events to all connected clients\n\t\t\t\tc.broadcast(\"worldUpdate\", { playerList });\n\t\t\t}\n\t\t}, 50);\n\t},\n\n\tonStop: (c) => {\n\t\tif (c.vars.gameLoopInterval) {\n\t\t\tclearInterval(c.vars.gameLoopInterval);\n\t\t}\n\t},\n\n\t// Handle client connections\n\tonConnect: (c, conn) => {\n\t\tconst id = conn.id;\n\t\t// State changes are automatically persisted\n\t\tc.state.players[id] = {\n\t\t\tid,\n\t\t\tposition: {\n\t\t\t\tx: Math.floor(Math.random() * (c.state.mapSize - 100)) + 50,\n\t\t\t\ty: Math.floor(Math.random() * (c.state.mapSize - 100)) + 50,\n\t\t\t},\n\t\t\tinput: { x: 0, y: 0 },\n\t\t};\n\n\t\t// Send initial world state to new player\n\t\tconst playerList = Object.values(c.state.players);\n\t\tconn.send(\"worldUpdate\", { playerList });\n\t},\n\n\tonDisconnect: (c, conn) => {\n\t\tdelete c.state.players[conn.id];\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients\n\t\tsetInput: (c, input: Input) => {\n\t\t\tconst player = c.state.players[c.conn.id];\n\t\t\tif (player) {\n\t\t\t\tplayer.input = input;\n\t\t\t}\n\t\t},\n\n\t\tgetPlayerCount: (c) => {\n\t\t\treturn Object.keys(c.state.players).length;\n\t\t},\n\t},\n});\n\n// Register actors for use\nexport const registry = setup({\n\tuse: { gameRoom },\n});\n", + "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.start({\n\tcors: {\n\t\torigin: \"http://localhost:3000\",\n\t\tcredentials: true,\n\t},\n});\n" } }, { - "id": "stream", - "icon": "faWaveSine", - "title": "Stream Processing", + "id": "bots", + "icon": "faUserRobot", + "title": "Bots", "filesToOpen": [ - "src/backend/registry.ts", - "src/frontend/App.tsx" + "src/registry.ts", + "src/server.ts" ], "tab": "memory", "files": { - "tests/stream.test.ts": "import { setupTest } from \"rivetkit/test\";\nimport { expect, test } from \"vitest\";\nimport { registry } from \"../src/backend/registry\";\n\ntest(\"Stream processor maintains top 3 values\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst stream = client.streamProcessor.getOrCreate([\"test-top3\"]);\n\n\t// Initial state should be empty\n\tconst initial = await stream.getTopValues();\n\texpect(initial).toEqual([]);\n\n\t// Add first value\n\tconst result1 = await stream.addValue(10);\n\texpect(result1).toEqual([10]);\n\n\t// Add second value (lower)\n\tconst result2 = await stream.addValue(5);\n\texpect(result2).toEqual([10, 5]);\n\n\t// Add third value (higher)\n\tconst result3 = await stream.addValue(15);\n\texpect(result3).toEqual([15, 10, 5]);\n\n\t// Add fourth value (should replace lowest)\n\tconst result4 = await stream.addValue(8);\n\texpect(result4).toEqual([15, 10, 8]);\n\n\t// Add fifth value (should replace middle)\n\tconst result5 = await stream.addValue(12);\n\texpect(result5).toEqual([15, 12, 10]);\n});\n\ntest(\"Stream processor tracks statistics correctly\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst stream = client.streamProcessor.getOrCreate([\"test-stats\"]);\n\n\t// Initial stats\n\tconst initialStats = await stream.getStats();\n\texpect(initialStats).toEqual({\n\t\ttopValues: [],\n\t\ttotalCount: 0,\n\t\thighestValue: null,\n\t});\n\n\t// Add some values\n\tawait stream.addValue(20);\n\tawait stream.addValue(30);\n\tawait stream.addValue(10);\n\n\tconst stats = await stream.getStats();\n\texpect(stats).toEqual({\n\t\ttopValues: [30, 20, 10],\n\t\ttotalCount: 3,\n\t\thighestValue: 30,\n\t});\n\n\t// Add more values to test count tracking\n\tawait stream.addValue(5);\n\tawait stream.addValue(25);\n\n\tconst finalStats = await stream.getStats();\n\texpect(finalStats.totalCount).toBe(5);\n\texpect(finalStats.topValues).toEqual([30, 25, 20]);\n\texpect(finalStats.highestValue).toBe(30);\n});\n\ntest(\"Stream processor handles duplicate values\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst stream = client.streamProcessor.getOrCreate([\"test-duplicates\"]);\n\n\t// Add duplicate values\n\tawait stream.addValue(10);\n\tawait stream.addValue(10);\n\tawait stream.addValue(10);\n\n\tconst result = await stream.getTopValues();\n\texpect(result).toEqual([10, 10, 10]);\n\n\tconst stats = await stream.getStats();\n\texpect(stats.totalCount).toBe(3);\n\texpect(stats.highestValue).toBe(10);\n});\n\ntest(\"Stream processor reset functionality\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst stream = client.streamProcessor.getOrCreate([\"test-reset\"]);\n\n\t// Add some values\n\tawait stream.addValue(100);\n\tawait stream.addValue(200);\n\tawait stream.addValue(50);\n\n\t// Verify state before reset\n\tconst beforeReset = await stream.getStats();\n\texpect(beforeReset.totalCount).toBe(3);\n\texpect(beforeReset.topValues).toEqual([200, 100, 50]);\n\n\t// Reset the stream\n\tconst resetResult = await stream.reset();\n\texpect(resetResult).toEqual({\n\t\ttopValues: [],\n\t\ttotalCount: 0,\n\t\thighestValue: null,\n\t});\n\n\t// Verify state after reset\n\tconst afterReset = await stream.getStats();\n\texpect(afterReset).toEqual({\n\t\ttopValues: [],\n\t\ttotalCount: 0,\n\t\thighestValue: null,\n\t});\n});\n\ntest(\"Stream processor handles edge case values\", async (ctx) => {\n\tconst { client } = await setupTest(ctx, registry);\n\tconst stream = client.streamProcessor.getOrCreate([\"test-edge-cases\"]);\n\n\t// Test with zero\n\tawait stream.addValue(0);\n\texpect(await stream.getTopValues()).toEqual([0]);\n\n\t// Test with negative numbers\n\tawait stream.addValue(-5);\n\tawait stream.addValue(-1);\n\texpect(await stream.getTopValues()).toEqual([0, -1, -5]);\n\n\t// Test with very large numbers\n\tawait stream.addValue(1000000);\n\texpect(await stream.getTopValues()).toEqual([1000000, 0, -1]);\n\n\tconst stats = await stream.getStats();\n\texpect(stats.totalCount).toBe(4);\n\texpect(stats.highestValue).toBe(1000000);\n});\n", - "README.md": "# Stream Processor for RivetKit\n\nExample project demonstrating real-time top-K stream processing with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18+\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/stream\nnpm install\n```\n\n### Development\n\n```sh\nnpm run dev\n```\n\nOpen your browser to `http://localhost:3000`\n\n## Features\n\n- **Top-K Processing**: Maintains the top 3 highest values in real-time\n- **Real-time Updates**: All connected clients see changes immediately\n- **Stream Statistics**: Total count, highest value, and live metrics\n- **Interactive Input**: Add custom values or generate random numbers\n- **Reset Functionality**: Clear the stream and start fresh\n- **Responsive Design**: Clean, modern interface with live statistics\n\n## How it works\n\nThis stream processor demonstrates:\n\n1. **Top-K Algorithm**: Efficiently maintains the top 3 values using insertion sort\n2. **Real-time Broadcasting**: Updates are instantly sent to all connected clients\n3. **State Management**: Persistent tracking of values and statistics\n4. **Event-driven Updates**: Live UI updates when new values are processed\n5. **Collaborative Experience**: Multiple users can add values simultaneously\n\n## Architecture\n\n- **Backend**: RivetKit actor managing stream state and top-K algorithm\n- **Frontend**: React application with real-time stream visualization\n- **State Management**: Server-side state with client-side event subscriptions\n- **Algorithm**: Insertion-based top-K maintenance with O(k) complexity\n\n## Stream Processing Algorithm\n\n### Value Insertion\n```typescript\n// Insert new value maintaining sorted order\nconst insertAt = topValues.findIndex(v => value > v);\nif (insertAt !== -1) {\n topValues.splice(insertAt, 0, value);\n}\n\n// Keep only top 3 values\nif (topValues.length > 3) {\n topValues.length = 3;\n}\n```\n\n### Performance Characteristics\n- **Time Complexity**: O(k) per insertion where k=3\n- **Space Complexity**: O(k) for storing top values\n- **Memory Efficient**: Only stores top values, not entire stream\n- **Real-time**: Sub-millisecond processing for new values\n\n## Use Cases\n\nThis pattern is perfect for:\n\n- **Leaderboards**: Gaming high scores, competition rankings\n- **Metrics Monitoring**: Top error rates, highest traffic spikes\n- **Social Features**: Most popular posts, trending content\n- **Analytics Dashboards**: Key performance indicators\n- **Real-time Alerts**: Threshold monitoring and notifications\n\n## Extending\n\nThis stream processor can be enhanced with:\n\n- **Configurable K**: Allow different top-K sizes (top 5, top 10, etc.)\n- **Time Windows**: Top values within specific time periods\n- **Multiple Streams**: Separate processors for different categories\n- **Persistence**: Database storage for stream history\n- **Complex Events**: Pattern detection and complex event processing\n- **Aggregations**: Sum, average, and other statistical operations\n- **Filters**: Value range filtering and validation\n- **Rate Limiting**: Throttle input to prevent spam\n\n## Stream Processing Concepts\n\n### Top-K Algorithms\n- **Heap-based**: Efficient for large K values\n- **Sort-based**: Simple implementation for small K\n- **Probabilistic**: Approximate results for massive streams\n\n### Real-time Considerations\n- **Latency**: Sub-millisecond processing requirements\n- **Throughput**: Handling high-volume input streams\n- **Memory**: Bounded memory usage regardless of stream size\n- **Accuracy**: Exact vs. approximate results trade-offs\n\n## Testing\n\nThe example includes basic structural tests. For production use, consider adding:\n\n- **Algorithm correctness**: Verify top-K accuracy\n- **Concurrency testing**: Multiple simultaneous inputs\n- **Performance testing**: High-volume stream simulation\n- **Edge cases**: Duplicate values, negative numbers, overflow handling\n\n## License\n\nApache 2.0", - "package-lock.json": "{\n \"name\": \"example-stream\",\n \"version\": \"1.0.0\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-stream\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n },\n \"node_modules/@ampproject/remapping\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz\",\n \"integrity\": \"sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@jridgewell/gen-mapping\": \"^0.3.5\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/code-frame\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz\",\n \"integrity\": \"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"js-tokens\": \"^4.0.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/compat-data\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz\",\n \"integrity\": \"sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/core\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz\",\n \"integrity\": \"sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@ampproject/remapping\": \"^2.2.0\",\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-compilation-targets\": \"^7.27.2\",\n \"@babel/helper-module-transforms\": \"^7.27.3\",\n \"@babel/helpers\": \"^7.27.6\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/traverse\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"convert-source-map\": \"^2.0.0\",\n \"debug\": \"^4.1.0\",\n \"gensync\": \"^1.0.0-beta.2\",\n \"json5\": \"^2.2.3\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/babel\"\n }\n },\n \"node_modules/@babel/generator\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz\",\n \"integrity\": \"sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/types\": \"^7.28.0\",\n \"@jridgewell/gen-mapping\": \"^0.3.12\",\n \"@jridgewell/trace-mapping\": \"^0.3.28\",\n \"jsesc\": \"^3.0.2\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-compilation-targets\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz\",\n \"integrity\": \"sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/compat-data\": \"^7.27.2\",\n \"@babel/helper-validator-option\": \"^7.27.1\",\n \"browserslist\": \"^4.24.0\",\n \"lru-cache\": \"^5.1.1\",\n \"semver\": \"^6.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-globals\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz\",\n \"integrity\": \"sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-imports\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz\",\n \"integrity\": \"sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/traverse\": \"^7.27.1\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-module-transforms\": {\n \"version\": \"7.27.3\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz\",\n \"integrity\": \"sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-module-imports\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\",\n \"@babel/traverse\": \"^7.27.3\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0\"\n }\n },\n \"node_modules/@babel/helper-plugin-utils\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz\",\n \"integrity\": \"sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-string-parser\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz\",\n \"integrity\": \"sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-identifier\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz\",\n \"integrity\": \"sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helper-validator-option\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz\",\n \"integrity\": \"sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/helpers\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz\",\n \"integrity\": \"sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.6\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/parser\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz\",\n \"integrity\": \"sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.28.0\"\n },\n \"bin\": {\n \"parser\": \"bin/babel-parser.js\"\n },\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-self\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz\",\n \"integrity\": \"sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/plugin-transform-react-jsx-source\": {\n \"version\": \"7.27.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz\",\n \"integrity\": \"sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-plugin-utils\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n },\n \"peerDependencies\": {\n \"@babel/core\": \"^7.0.0-0\"\n }\n },\n \"node_modules/@babel/runtime\": {\n \"version\": \"7.27.6\",\n \"resolved\": \"https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz\",\n \"integrity\": \"sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/template\": {\n \"version\": \"7.27.2\",\n \"resolved\": \"https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz\",\n \"integrity\": \"sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/parser\": \"^7.27.2\",\n \"@babel/types\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/traverse\": {\n \"version\": \"7.28.0\",\n \"resolved\": \"https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz\",\n \"integrity\": \"sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/code-frame\": \"^7.27.1\",\n \"@babel/generator\": \"^7.28.0\",\n \"@babel/helper-globals\": \"^7.28.0\",\n \"@babel/parser\": \"^7.28.0\",\n \"@babel/template\": \"^7.27.2\",\n \"@babel/types\": \"^7.28.0\",\n \"debug\": \"^4.3.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@babel/types\": {\n \"version\": \"7.28.1\",\n \"resolved\": \"https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz\",\n \"integrity\": \"sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/helper-string-parser\": \"^7.27.1\",\n \"@babel/helper-validator-identifier\": \"^7.27.1\"\n },\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-darwin-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz\",\n \"integrity\": \"sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-arm64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz\",\n \"integrity\": \"sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-linux-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"peer\": true\n },\n \"node_modules/@cbor-extract/cbor-extract-win32-x64\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz\",\n \"integrity\": \"sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"peer\": true\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz\",\n \"integrity\": \"sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz\",\n \"integrity\": \"sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz\",\n \"integrity\": \"sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz\",\n \"integrity\": \"sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz\",\n \"integrity\": \"sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz\",\n \"integrity\": \"sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz\",\n \"integrity\": \"sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz\",\n \"integrity\": \"sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz\",\n \"integrity\": \"sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@jest/schemas\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz\",\n \"integrity\": \"sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@sinclair/typebox\": \"^0.27.8\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/@jridgewell/gen-mapping\": {\n \"version\": \"0.3.12\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz\",\n \"integrity\": \"sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\",\n \"@jridgewell/trace-mapping\": \"^0.3.24\"\n }\n },\n \"node_modules/@jridgewell/resolve-uri\": {\n \"version\": \"3.1.2\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.0.0\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.4\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz\",\n \"integrity\": \"sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@jridgewell/trace-mapping\": {\n \"version\": \"0.3.29\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz\",\n \"integrity\": \"sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/resolve-uri\": \"^3.1.0\",\n \"@jridgewell/sourcemap-codec\": \"^1.4.14\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/actor-0.9.1.tgz\",\n \"integrity\": \"sha512-aVoWO81JrYql6hhXX+vRor0B+aeWrnh+9zkcrxbh0EXFBbS5XM8YE4sSFxNKmZThLbGNqfZ5enm1zuA92c7I1w==\",\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/core\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/core/-/core-0.9.1.tgz\",\n \"integrity\": \"sha512-0zYFKo08CQ72Rm6MaVKxcJSEEfn/ypGkkxTX06Q4meCGHuDJFbPA5wopa3NdxrKBPttcGg1QAmDd+1FZnlpubA==\",\n \"license\": \"Apache-2.0\",\n \"peer\": true,\n \"dependencies\": {\n \"cbor-x\": \"^1.6.0\",\n \"invariant\": \"^2.2.4\",\n \"on-change\": \"^5.0.1\",\n \"p-retry\": \"^6.2.1\",\n \"zod\": \"^3.25.67\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"peerDependencies\": {\n \"@hono/node-server\": \"^1.14.0\",\n \"@hono/node-ws\": \"^1.1.1\",\n \"@hono/zod-openapi\": \"^0.19.6\",\n \"eventsource\": \"^3.0.5\",\n \"hono\": \"^4.7.0\",\n \"ws\": \"^8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@hono/node-server\": {\n \"optional\": true\n },\n \"@hono/node-ws\": {\n \"optional\": true\n },\n \"@hono/zod-openapi\": {\n \"optional\": true\n },\n \"eventsource\": {\n \"optional\": true\n },\n \"hono\": {\n \"optional\": true\n },\n \"ws\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/@rivetkit/framework-base\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/framework-base/-/framework-base-0.9.1.tgz\",\n \"integrity\": \"sha512-FxhSqGAtDsD4k7gKS2EhJ5hHsEwI1+QR0vYThUBOLcmXM7zjMZndqIjVperQO4ck/zfjRqjm3lw7znkc+k0wNQ==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@tanstack/store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\"\n }\n },\n \"node_modules/@rivetkit/react\": {\n \"version\": \"0.9.1\",\n \"resolved\": \"https://registry.npmjs.org/@rivetkit/react/-/react-0.9.1.tgz\",\n \"integrity\": \"sha512-0e0gNNj3qCrXHNIxE6ggEEX+E6HjdsSt9pJbWbaQQg+1bsywupRTSdgSDguDHjBvi9qhR9mh7UbNN3A9wYqXuA==\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"@rivetkit/framework-base\": \"0.9.1\",\n \"@tanstack/react-store\": \"^0.7.1\"\n },\n \"peerDependencies\": {\n \"@rivetkit/core\": \"*\",\n \"react\": \"^18 || ^19\",\n \"react-dom\": \"^18 || ^19\"\n }\n },\n \"node_modules/@rolldown/pluginutils\": {\n \"version\": \"1.0.0-beta.19\",\n \"resolved\": \"https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz\",\n \"integrity\": \"sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz\",\n \"integrity\": \"sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz\",\n \"integrity\": \"sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz\",\n \"integrity\": \"sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz\",\n \"integrity\": \"sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz\",\n \"integrity\": \"sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz\",\n \"integrity\": \"sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz\",\n \"integrity\": \"sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@sinclair/typebox\": {\n \"version\": \"0.27.8\",\n \"resolved\": \"https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz\",\n \"integrity\": \"sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@tanstack/react-store\": {\n \"version\": \"0.7.3\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.7.3.tgz\",\n \"integrity\": \"sha512-3Dnqtbw9P2P0gw8uUM8WP2fFfg8XMDSZCTsywRPZe/XqqYW8PGkXKZTvP0AHkE4mpqP9Y43GpOg9vwO44azu6Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@tanstack/store\": \"0.7.2\",\n \"use-sync-external-store\": \"^1.5.0\"\n },\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n },\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\",\n \"react-dom\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/@tanstack/store\": {\n \"version\": \"0.7.2\",\n \"resolved\": \"https://registry.npmjs.org/@tanstack/store/-/store-0.7.2.tgz\",\n \"integrity\": \"sha512-RP80Z30BYiPX2Pyo0Nyw4s1SJFH2jyM6f9i3HfX4pA+gm5jsnYryscdq2aIQLnL4TaGuQMO+zXmN9nh1Qck+Pg==\",\n \"license\": \"MIT\",\n \"funding\": {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/tannerlinsley\"\n }\n },\n \"node_modules/@types/babel__core\": {\n \"version\": \"7.20.5\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz\",\n \"integrity\": \"sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.20.7\",\n \"@babel/types\": \"^7.20.7\",\n \"@types/babel__generator\": \"*\",\n \"@types/babel__template\": \"*\",\n \"@types/babel__traverse\": \"*\"\n }\n },\n \"node_modules/@types/babel__generator\": {\n \"version\": \"7.27.0\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz\",\n \"integrity\": \"sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__template\": {\n \"version\": \"7.4.4\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz\",\n \"integrity\": \"sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/parser\": \"^7.1.0\",\n \"@babel/types\": \"^7.0.0\"\n }\n },\n \"node_modules/@types/babel__traverse\": {\n \"version\": \"7.20.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz\",\n \"integrity\": \"sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/types\": \"^7.20.7\"\n }\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"20.19.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-20.19.7.tgz\",\n \"integrity\": \"sha512-1GM9z6BJOv86qkPvzh2i6VW5+VVrXxCLknfmTkWEqz+6DqosiY28XUWCTmBcJ0ACzKqx/iwdIREfo1fwExIlkA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@types/prop-types\": {\n \"version\": \"15.7.15\",\n \"resolved\": \"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz\",\n \"integrity\": \"sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/react\": {\n \"version\": \"18.3.23\",\n \"resolved\": \"https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz\",\n \"integrity\": \"sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/prop-types\": \"*\",\n \"csstype\": \"^3.0.2\"\n }\n },\n \"node_modules/@types/react-dom\": {\n \"version\": \"18.3.7\",\n \"resolved\": \"https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz\",\n \"integrity\": \"sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"@types/react\": \"^18.0.0\"\n }\n },\n \"node_modules/@types/retry\": {\n \"version\": \"0.12.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz\",\n \"integrity\": \"sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==\",\n \"license\": \"MIT\",\n \"peer\": true\n },\n \"node_modules/@vitejs/plugin-react\": {\n \"version\": \"4.6.0\",\n \"resolved\": \"https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz\",\n \"integrity\": \"sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/core\": \"^7.27.4\",\n \"@babel/plugin-transform-react-jsx-self\": \"^7.27.1\",\n \"@babel/plugin-transform-react-jsx-source\": \"^7.27.1\",\n \"@rolldown/pluginutils\": \"1.0.0-beta.19\",\n \"@types/babel__core\": \"^7.20.5\",\n \"react-refresh\": \"^0.17.0\"\n },\n \"engines\": {\n \"node\": \"^14.18.0 || >=16.0.0\"\n },\n \"peerDependencies\": {\n \"vite\": \"^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz\",\n \"integrity\": \"sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"chai\": \"^4.3.10\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz\",\n \"integrity\": \"sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"1.6.1\",\n \"p-limit\": \"^5.0.0\",\n \"pathe\": \"^1.1.1\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz\",\n \"integrity\": \"sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz\",\n \"integrity\": \"sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^2.2.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz\",\n \"integrity\": \"sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"diff-sequences\": \"^29.6.3\",\n \"estree-walker\": \"^3.0.3\",\n \"loupe\": \"^2.3.7\",\n \"pretty-format\": \"^29.7.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/acorn\": {\n \"version\": \"8.15.0\",\n \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz\",\n \"integrity\": \"sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"acorn\": \"bin/acorn\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/acorn-walk\": {\n \"version\": \"8.3.4\",\n \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz\",\n \"integrity\": \"sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.11.0\"\n },\n \"engines\": {\n \"node\": \">=0.4.0\"\n }\n },\n \"node_modules/ansi-regex\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/ansi-styles\": {\n \"version\": \"4.3.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-convert\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz\",\n \"integrity\": \"sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/browserslist\": {\n \"version\": \"4.25.1\",\n \"resolved\": \"https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz\",\n \"integrity\": \"sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"caniuse-lite\": \"^1.0.30001726\",\n \"electron-to-chromium\": \"^1.5.173\",\n \"node-releases\": \"^2.0.19\",\n \"update-browserslist-db\": \"^1.1.3\"\n },\n \"bin\": {\n \"browserslist\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \"^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7\"\n }\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/caniuse-lite\": {\n \"version\": \"1.0.30001727\",\n \"resolved\": \"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz\",\n \"integrity\": \"sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/caniuse-lite\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"CC-BY-4.0\"\n },\n \"node_modules/cbor-extract\": {\n \"version\": \"2.2.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.0.tgz\",\n \"integrity\": \"sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==\",\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"node-gyp-build-optional-packages\": \"5.1.1\"\n },\n \"bin\": {\n \"download-cbor-prebuilds\": \"bin/download-prebuilds.js\"\n },\n \"optionalDependencies\": {\n \"@cbor-extract/cbor-extract-darwin-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-darwin-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-arm64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-linux-x64\": \"2.2.0\",\n \"@cbor-extract/cbor-extract-win32-x64\": \"2.2.0\"\n }\n },\n \"node_modules/cbor-x\": {\n \"version\": \"1.6.0\",\n \"resolved\": \"https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.0.tgz\",\n \"integrity\": \"sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"optionalDependencies\": {\n \"cbor-extract\": \"^2.2.0\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"4.5.0\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-4.5.0.tgz\",\n \"integrity\": \"sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^1.1.0\",\n \"check-error\": \"^1.0.3\",\n \"deep-eql\": \"^4.1.3\",\n \"get-func-name\": \"^2.0.2\",\n \"loupe\": \"^2.3.6\",\n \"pathval\": \"^1.1.1\",\n \"type-detect\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/chalk\": {\n \"version\": \"4.1.2\",\n \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz\",\n \"integrity\": \"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.1.0\",\n \"supports-color\": \"^7.1.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/chalk?sponsor=1\"\n }\n },\n \"node_modules/chalk/node_modules/supports-color\": {\n \"version\": \"7.2.0\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz\",\n \"integrity\": \"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"1.0.3\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz\",\n \"integrity\": \"sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.2\"\n },\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/cliui\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"string-width\": \"^4.2.0\",\n \"strip-ansi\": \"^6.0.1\",\n \"wrap-ansi\": \"^7.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/color-convert\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"color-name\": \"~1.1.4\"\n },\n \"engines\": {\n \"node\": \">=7.0.0\"\n }\n },\n \"node_modules/color-name\": {\n \"version\": \"1.1.4\",\n \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/concurrently\": {\n \"version\": \"8.2.2\",\n \"resolved\": \"https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz\",\n \"integrity\": \"sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"chalk\": \"^4.1.2\",\n \"date-fns\": \"^2.30.0\",\n \"lodash\": \"^4.17.21\",\n \"rxjs\": \"^7.8.1\",\n \"shell-quote\": \"^1.8.1\",\n \"spawn-command\": \"0.0.2\",\n \"supports-color\": \"^8.1.1\",\n \"tree-kill\": \"^1.2.2\",\n \"yargs\": \"^17.7.2\"\n },\n \"bin\": {\n \"conc\": \"dist/bin/concurrently.js\",\n \"concurrently\": \"dist/bin/concurrently.js\"\n },\n \"engines\": {\n \"node\": \"^14.13.0 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/open-cli-tools/concurrently?sponsor=1\"\n }\n },\n \"node_modules/confbox\": {\n \"version\": \"0.1.8\",\n \"resolved\": \"https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz\",\n \"integrity\": \"sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/convert-source-map\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz\",\n \"integrity\": \"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cross-spawn\": {\n \"version\": \"7.0.6\",\n \"resolved\": \"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz\",\n \"integrity\": \"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^3.1.0\",\n \"shebang-command\": \"^2.0.0\",\n \"which\": \"^2.0.1\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/csstype\": {\n \"version\": \"3.1.3\",\n \"resolved\": \"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz\",\n \"integrity\": \"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/date-fns\": {\n \"version\": \"2.30.0\",\n \"resolved\": \"https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz\",\n \"integrity\": \"sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@babel/runtime\": \"^7.21.0\"\n },\n \"engines\": {\n \"node\": \">=0.11\"\n },\n \"funding\": {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/date-fns\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.1\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.1.tgz\",\n \"integrity\": \"sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"4.1.4\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz\",\n \"integrity\": \"sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"type-detect\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/detect-libc\": {\n \"version\": \"2.0.4\",\n \"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n \"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n \"license\": \"Apache-2.0\",\n \"optional\": true,\n \"peer\": true,\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/diff-sequences\": {\n \"version\": \"29.6.3\",\n \"resolved\": \"https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz\",\n \"integrity\": \"sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/electron-to-chromium\": {\n \"version\": \"1.5.183\",\n \"resolved\": \"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz\",\n \"integrity\": \"sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/emoji-regex\": {\n \"version\": \"8.0.0\",\n \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.25.6\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz\",\n \"integrity\": \"sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.6\",\n \"@esbuild/android-arm\": \"0.25.6\",\n \"@esbuild/android-arm64\": \"0.25.6\",\n \"@esbuild/android-x64\": \"0.25.6\",\n \"@esbuild/darwin-arm64\": \"0.25.6\",\n \"@esbuild/darwin-x64\": \"0.25.6\",\n \"@esbuild/freebsd-arm64\": \"0.25.6\",\n \"@esbuild/freebsd-x64\": \"0.25.6\",\n \"@esbuild/linux-arm\": \"0.25.6\",\n \"@esbuild/linux-arm64\": \"0.25.6\",\n \"@esbuild/linux-ia32\": \"0.25.6\",\n \"@esbuild/linux-loong64\": \"0.25.6\",\n \"@esbuild/linux-mips64el\": \"0.25.6\",\n \"@esbuild/linux-ppc64\": \"0.25.6\",\n \"@esbuild/linux-riscv64\": \"0.25.6\",\n \"@esbuild/linux-s390x\": \"0.25.6\",\n \"@esbuild/linux-x64\": \"0.25.6\",\n \"@esbuild/netbsd-arm64\": \"0.25.6\",\n \"@esbuild/netbsd-x64\": \"0.25.6\",\n \"@esbuild/openbsd-arm64\": \"0.25.6\",\n \"@esbuild/openbsd-x64\": \"0.25.6\",\n \"@esbuild/openharmony-arm64\": \"0.25.6\",\n \"@esbuild/sunos-x64\": \"0.25.6\",\n \"@esbuild/win32-arm64\": \"0.25.6\",\n \"@esbuild/win32-ia32\": \"0.25.6\",\n \"@esbuild/win32-x64\": \"0.25.6\"\n }\n },\n \"node_modules/escalade\": {\n \"version\": \"3.2.0\",\n \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/execa\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/execa/-/execa-8.0.1.tgz\",\n \"integrity\": \"sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cross-spawn\": \"^7.0.3\",\n \"get-stream\": \"^8.0.1\",\n \"human-signals\": \"^5.0.0\",\n \"is-stream\": \"^3.0.0\",\n \"merge-stream\": \"^2.0.0\",\n \"npm-run-path\": \"^5.1.0\",\n \"onetime\": \"^6.0.0\",\n \"signal-exit\": \"^4.1.0\",\n \"strip-final-newline\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/execa?sponsor=1\"\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/gensync\": {\n \"version\": \"1.0.0-beta.2\",\n \"resolved\": \"https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz\",\n \"integrity\": \"sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6.9.0\"\n }\n },\n \"node_modules/get-caller-file\": {\n \"version\": \"2.0.5\",\n \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \"6.* || 8.* || >= 10.*\"\n }\n },\n \"node_modules/get-func-name\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz\",\n \"integrity\": \"sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/get-stream\": {\n \"version\": \"8.0.1\",\n \"resolved\": \"https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz\",\n \"integrity\": \"sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.10.1\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz\",\n \"integrity\": \"sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/has-flag\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz\",\n \"integrity\": \"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/human-signals\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz\",\n \"integrity\": \"sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=16.17.0\"\n }\n },\n \"node_modules/invariant\": {\n \"version\": \"2.2.4\",\n \"resolved\": \"https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz\",\n \"integrity\": \"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"loose-envify\": \"^1.0.0\"\n }\n },\n \"node_modules/is-fullwidth-code-point\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/is-network-error\": {\n \"version\": \"1.1.0\",\n \"resolved\": \"https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz\",\n \"integrity\": \"sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=16\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/is-stream\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz\",\n \"integrity\": \"sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/isexe\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz\",\n \"integrity\": \"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/js-tokens\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz\",\n \"integrity\": \"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==\",\n \"license\": \"MIT\"\n },\n \"node_modules/jsesc\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz\",\n \"integrity\": \"sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"jsesc\": \"bin/jsesc\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/json5\": {\n \"version\": \"2.2.3\",\n \"resolved\": \"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz\",\n \"integrity\": \"sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"json5\": \"lib/cli.js\"\n },\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/local-pkg\": {\n \"version\": \"0.5.1\",\n \"resolved\": \"https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz\",\n \"integrity\": \"sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mlly\": \"^1.7.3\",\n \"pkg-types\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/lodash\": {\n \"version\": \"4.17.21\",\n \"resolved\": \"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\n \"integrity\": \"sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loose-envify\": {\n \"version\": \"1.4.0\",\n \"resolved\": \"https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz\",\n \"integrity\": \"sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^3.0.0 || ^4.0.0\"\n },\n \"bin\": {\n \"loose-envify\": \"cli.js\"\n }\n },\n \"node_modules/loupe\": {\n \"version\": \"2.3.7\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz\",\n \"integrity\": \"sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"get-func-name\": \"^2.0.1\"\n }\n },\n \"node_modules/lru-cache\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz\",\n \"integrity\": \"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"yallist\": \"^3.0.2\"\n }\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.17\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n \"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n }\n },\n \"node_modules/merge-stream\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz\",\n \"integrity\": \"sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/mimic-fn\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz\",\n \"integrity\": \"sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/mlly\": {\n \"version\": \"1.7.4\",\n \"resolved\": \"https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz\",\n \"integrity\": \"sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"acorn\": \"^8.14.0\",\n \"pathe\": \"^2.0.1\",\n \"pkg-types\": \"^1.3.0\",\n \"ufo\": \"^1.5.4\"\n }\n },\n \"node_modules/mlly/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/node-gyp-build-optional-packages\": {\n \"version\": \"5.1.1\",\n \"resolved\": \"https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz\",\n \"integrity\": \"sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==\",\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"detect-libc\": \"^2.0.1\"\n },\n \"bin\": {\n \"node-gyp-build-optional-packages\": \"bin.js\",\n \"node-gyp-build-optional-packages-optional\": \"optional.js\",\n \"node-gyp-build-optional-packages-test\": \"build-test.js\"\n }\n },\n \"node_modules/node-releases\": {\n \"version\": \"2.0.19\",\n \"resolved\": \"https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz\",\n \"integrity\": \"sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/npm-run-path\": {\n \"version\": \"5.3.0\",\n \"resolved\": \"https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz\",\n \"integrity\": \"sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"path-key\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \"^12.20.0 || ^14.13.1 || >=16.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/npm-run-path/node_modules/path-key\": {\n \"version\": \"4.0.0\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz\",\n \"integrity\": \"sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/on-change\": {\n \"version\": \"5.0.1\",\n \"resolved\": \"https://registry.npmjs.org/on-change/-/on-change-5.0.1.tgz\",\n \"integrity\": \"sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sindresorhus/on-change?sponsor=1\"\n }\n },\n \"node_modules/onetime\": {\n \"version\": \"6.0.0\",\n \"resolved\": \"https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz\",\n \"integrity\": \"sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"mimic-fn\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-limit\": {\n \"version\": \"5.0.0\",\n \"resolved\": \"https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz\",\n \"integrity\": \"sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"yocto-queue\": \"^1.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/p-retry\": {\n \"version\": \"6.2.1\",\n \"resolved\": \"https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz\",\n \"integrity\": \"sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"dependencies\": {\n \"@types/retry\": \"0.12.2\",\n \"is-network-error\": \"^1.0.0\",\n \"retry\": \"^0.13.1\"\n },\n \"engines\": {\n \"node\": \">=16.17\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/path-key\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz\",\n \"integrity\": \"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz\",\n \"integrity\": \"sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz\",\n \"integrity\": \"sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"*\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/pkg-types\": {\n \"version\": \"1.3.1\",\n \"resolved\": \"https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz\",\n \"integrity\": \"sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"confbox\": \"^0.1.8\",\n \"mlly\": \"^1.7.4\",\n \"pathe\": \"^2.0.1\"\n }\n },\n \"node_modules/pkg-types/node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/pretty-format\": {\n \"version\": \"29.7.0\",\n \"resolved\": \"https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz\",\n \"integrity\": \"sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jest/schemas\": \"^29.6.3\",\n \"ansi-styles\": \"^5.0.0\",\n \"react-is\": \"^18.0.0\"\n },\n \"engines\": {\n \"node\": \"^14.15.0 || ^16.10.0 || >=18.0.0\"\n }\n },\n \"node_modules/pretty-format/node_modules/ansi-styles\": {\n \"version\": \"5.2.0\",\n \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz\",\n \"integrity\": \"sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n }\n },\n \"node_modules/react\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react/-/react-18.3.1.tgz\",\n \"integrity\": \"sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/react-dom\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz\",\n \"integrity\": \"sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\",\n \"scheduler\": \"^0.23.2\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.3.1\"\n }\n },\n \"node_modules/react-is\": {\n \"version\": \"18.3.1\",\n \"resolved\": \"https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz\",\n \"integrity\": \"sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/react-refresh\": {\n \"version\": \"0.17.0\",\n \"resolved\": \"https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz\",\n \"integrity\": \"sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/require-directory\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/retry\": {\n \"version\": \"0.13.1\",\n \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.13.1.tgz\",\n \"integrity\": \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"engines\": {\n \"node\": \">= 4\"\n }\n },\n \"node_modules/rollup\": {\n \"version\": \"4.45.0\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.45.0.tgz\",\n \"integrity\": \"sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.45.0\",\n \"@rollup/rollup-android-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-arm64\": \"4.45.0\",\n \"@rollup/rollup-darwin-x64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-arm64\": \"4.45.0\",\n \"@rollup/rollup-freebsd-x64\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-loongarch64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-powerpc64le-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.45.0\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.45.0\",\n \"@rollup/rollup-linux-x64-musl\": \"4.45.0\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.45.0\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.45.0\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/rxjs\": {\n \"version\": \"7.8.2\",\n \"resolved\": \"https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz\",\n \"integrity\": \"sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n \"tslib\": \"^2.1.0\"\n }\n },\n \"node_modules/scheduler\": {\n \"version\": \"0.23.2\",\n \"resolved\": \"https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz\",\n \"integrity\": \"sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"loose-envify\": \"^1.1.0\"\n }\n },\n \"node_modules/semver\": {\n \"version\": \"6.3.1\",\n \"resolved\": \"https://registry.npmjs.org/semver/-/semver-6.3.1.tgz\",\n \"integrity\": \"sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"bin\": {\n \"semver\": \"bin/semver.js\"\n }\n },\n \"node_modules/shebang-command\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz\",\n \"integrity\": \"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"shebang-regex\": \"^3.0.0\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shebang-regex\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz\",\n \"integrity\": \"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/shell-quote\": {\n \"version\": \"1.8.3\",\n \"resolved\": \"https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz\",\n \"integrity\": \"sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 0.4\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/ljharb\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/signal-exit\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz\",\n \"integrity\": \"sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=14\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/isaacs\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/spawn-command\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz\",\n \"integrity\": \"sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==\",\n \"dev\": true\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.9.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n \"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/string-width\": {\n \"version\": \"4.2.3\",\n \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"emoji-regex\": \"^8.0.0\",\n \"is-fullwidth-code-point\": \"^3.0.0\",\n \"strip-ansi\": \"^6.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-ansi\": {\n \"version\": \"6.0.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-regex\": \"^5.0.1\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/strip-final-newline\": {\n \"version\": \"3.0.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz\",\n \"integrity\": \"sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/strip-literal\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz\",\n \"integrity\": \"sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/strip-literal/node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/supports-color\": {\n \"version\": \"8.1.1\",\n \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz\",\n \"integrity\": \"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"has-flag\": \"^4.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/supports-color?sponsor=1\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinypool\": {\n \"version\": \"0.8.4\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz\",\n \"integrity\": \"sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"2.2.1\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz\",\n \"integrity\": \"sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tree-kill\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz\",\n \"integrity\": \"sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"tree-kill\": \"cli.js\"\n }\n },\n \"node_modules/tslib\": {\n \"version\": \"2.8.1\",\n \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n \"dev\": true,\n \"license\": \"0BSD\"\n },\n \"node_modules/tsx\": {\n \"version\": \"4.20.3\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz\",\n \"integrity\": \"sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/type-detect\": {\n \"version\": \"4.1.0\",\n \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz\",\n \"integrity\": \"sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=4\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.8.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz\",\n \"integrity\": \"sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/ufo\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz\",\n \"integrity\": \"sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/update-browserslist-db\": {\n \"version\": \"1.1.3\",\n \"resolved\": \"https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz\",\n \"integrity\": \"sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/browserslist\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/browserslist\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"escalade\": \"^3.2.0\",\n \"picocolors\": \"^1.1.1\"\n },\n \"bin\": {\n \"update-browserslist-db\": \"cli.js\"\n },\n \"peerDependencies\": {\n \"browserslist\": \">= 4.21.0\"\n }\n },\n \"node_modules/use-sync-external-store\": {\n \"version\": \"1.5.0\",\n \"resolved\": \"https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz\",\n \"integrity\": \"sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==\",\n \"license\": \"MIT\",\n \"peerDependencies\": {\n \"react\": \"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0\"\n }\n },\n \"node_modules/vite\": {\n \"version\": \"5.4.19\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-5.4.19.tgz\",\n \"integrity\": \"sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.21.3\",\n \"postcss\": \"^8.4.43\",\n \"rollup\": \"^4.20.0\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"less\": \"*\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"*\",\n \"sass-embedded\": \"*\",\n \"stylus\": \"*\",\n \"sugarss\": \"*\",\n \"terser\": \"^5.4.0\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vite-node\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz\",\n \"integrity\": \"sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.3.4\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"vite\": \"^5.0.0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz\",\n \"integrity\": \"sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz\",\n \"integrity\": \"sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz\",\n \"integrity\": \"sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz\",\n \"integrity\": \"sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz\",\n \"integrity\": \"sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz\",\n \"integrity\": \"sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz\",\n \"integrity\": \"sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz\",\n \"integrity\": \"sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz\",\n \"integrity\": \"sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/vite/node_modules/esbuild\": {\n \"version\": \"0.21.5\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz\",\n \"integrity\": \"sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.21.5\",\n \"@esbuild/android-arm\": \"0.21.5\",\n \"@esbuild/android-arm64\": \"0.21.5\",\n \"@esbuild/android-x64\": \"0.21.5\",\n \"@esbuild/darwin-arm64\": \"0.21.5\",\n \"@esbuild/darwin-x64\": \"0.21.5\",\n \"@esbuild/freebsd-arm64\": \"0.21.5\",\n \"@esbuild/freebsd-x64\": \"0.21.5\",\n \"@esbuild/linux-arm\": \"0.21.5\",\n \"@esbuild/linux-arm64\": \"0.21.5\",\n \"@esbuild/linux-ia32\": \"0.21.5\",\n \"@esbuild/linux-loong64\": \"0.21.5\",\n \"@esbuild/linux-mips64el\": \"0.21.5\",\n \"@esbuild/linux-ppc64\": \"0.21.5\",\n \"@esbuild/linux-riscv64\": \"0.21.5\",\n \"@esbuild/linux-s390x\": \"0.21.5\",\n \"@esbuild/linux-x64\": \"0.21.5\",\n \"@esbuild/netbsd-x64\": \"0.21.5\",\n \"@esbuild/openbsd-x64\": \"0.21.5\",\n \"@esbuild/sunos-x64\": \"0.21.5\",\n \"@esbuild/win32-arm64\": \"0.21.5\",\n \"@esbuild/win32-ia32\": \"0.21.5\",\n \"@esbuild/win32-x64\": \"0.21.5\"\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"1.6.1\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz\",\n \"integrity\": \"sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/expect\": \"1.6.1\",\n \"@vitest/runner\": \"1.6.1\",\n \"@vitest/snapshot\": \"1.6.1\",\n \"@vitest/spy\": \"1.6.1\",\n \"@vitest/utils\": \"1.6.1\",\n \"acorn-walk\": \"^8.3.2\",\n \"chai\": \"^4.3.10\",\n \"debug\": \"^4.3.4\",\n \"execa\": \"^8.0.1\",\n \"local-pkg\": \"^0.5.0\",\n \"magic-string\": \"^0.30.5\",\n \"pathe\": \"^1.1.1\",\n \"picocolors\": \"^1.0.0\",\n \"std-env\": \"^3.5.0\",\n \"strip-literal\": \"^2.0.0\",\n \"tinybench\": \"^2.5.1\",\n \"tinypool\": \"^0.8.3\",\n \"vite\": \"^5.0.0\",\n \"vite-node\": \"1.6.1\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/node\": \"^18.0.0 || >=20.0.0\",\n \"@vitest/browser\": \"1.6.1\",\n \"@vitest/ui\": \"1.6.1\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/which\": {\n \"version\": \"2.0.2\",\n \"resolved\": \"https://registry.npmjs.org/which/-/which-2.0.2.tgz\",\n \"integrity\": \"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"dependencies\": {\n \"isexe\": \"^2.0.0\"\n },\n \"bin\": {\n \"node-which\": \"bin/node-which\"\n },\n \"engines\": {\n \"node\": \">= 8\"\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/wrap-ansi\": {\n \"version\": \"7.0.0\",\n \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ansi-styles\": \"^4.0.0\",\n \"string-width\": \"^4.1.0\",\n \"strip-ansi\": \"^6.0.0\"\n },\n \"engines\": {\n \"node\": \">=10\"\n },\n \"funding\": {\n \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n }\n },\n \"node_modules/y18n\": {\n \"version\": \"5.0.8\",\n \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=10\"\n }\n },\n \"node_modules/yallist\": {\n \"version\": \"3.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz\",\n \"integrity\": \"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/yargs\": {\n \"version\": \"17.7.2\",\n \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cliui\": \"^8.0.1\",\n \"escalade\": \"^3.1.1\",\n \"get-caller-file\": \"^2.0.5\",\n \"require-directory\": \"^2.1.1\",\n \"string-width\": \"^4.2.3\",\n \"y18n\": \"^5.0.5\",\n \"yargs-parser\": \"^21.1.1\"\n },\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yargs-parser\": {\n \"version\": \"21.1.1\",\n \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n \"dev\": true,\n \"license\": \"ISC\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/yocto-queue\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz\",\n \"integrity\": \"sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.20\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/sindresorhus\"\n }\n },\n \"node_modules/zod\": {\n \"version\": \"3.25.76\",\n \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n \"license\": \"MIT\",\n \"peer\": true,\n \"funding\": {\n \"url\": \"https://github.com/sponsors/colinhacks\"\n }\n }\n }\n}\n", - "package.json": "{\n \"name\": \"example-stream\",\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"concurrently \\\"tsx --watch src/backend/server.ts\\\" \\\"vite\\\"\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@rivetkit/react\": \"^0.9.1\",\n \"react\": \"^18.2.0\",\n \"react-dom\": \"^18.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"@types/react\": \"^18.2.0\",\n \"@types/react-dom\": \"^18.2.0\",\n \"@vitejs/plugin-react\": \"^4.0.0\",\n \"concurrently\": \"^8.2.0\",\n \"tsx\": \"^4.0.0\",\n \"typescript\": \"^5.0.0\",\n \"vite\": \"^5.0.0\",\n \"vitest\": \"^1.0.0\"\n }\n}\n", - "tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2020\",\n \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n \"module\": \"ESNext\",\n \"skipLibCheck\": true,\n \"moduleResolution\": \"bundler\",\n \"allowImportingTsExtensions\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"noEmit\": true,\n \"jsx\": \"react-jsx\",\n \"strict\": true,\n \"noUnusedLocals\": true,\n \"noUnusedParameters\": true,\n \"noFallthroughCasesInSwitch\": true\n },\n \"include\": [\"src\", \"tests\"],\n \"exclude\": [\"node_modules\", \"dist\"]\n}\n", - "vite.config.ts": "import react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n\tplugins: [react()],\n\troot: \"src/frontend\",\n\tserver: {\n\t\tport: 3000,\n\t},\n\tbuild: {\n\t\toutDir: \"../../dist\",\n\t\temptyOutDir: true,\n\t},\n});\n", - "vitest.config.ts": "import { defineConfig } from \"vitest/config\";\n\nexport default defineConfig({\n\ttest: {\n\t\tenvironment: \"node\",\n\t},\n});\n", - "src/frontend/App.tsx": "import { createClient, createRivetKit } from \"@rivetkit/react\";\nimport { useEffect, useState } from \"react\";\nimport type { registry } from \"../backend/registry\";\n\nconst client = createClient(\"http://localhost:8080\");\nconst { useActor } = createRivetKit(client);\n\nexport function App() {\n\tconst [topValues, setTopValues] = useState([]);\n\tconst [newValue, setNewValue] = useState(0);\n\tconst [totalCount, setTotalCount] = useState(0);\n\tconst [highestValue, setHighestValue] = useState(null);\n\n\tconst streamProcessor = useActor({\n\t\tname: \"streamProcessor\",\n\t\tkey: [\"global\"],\n\t});\n\n\t// Load initial stats\n\tuseEffect(() => {\n\t\tif (streamProcessor.connection) {\n\t\t\tstreamProcessor.connection.getStats().then((stats) => {\n\t\t\t\tsetTopValues(stats.topValues);\n\t\t\t\tsetTotalCount(stats.totalCount);\n\t\t\t\tsetHighestValue(stats.highestValue);\n\t\t\t});\n\t\t}\n\t}, [streamProcessor.connection]);\n\n\t// Listen for updates from other clients\n\tstreamProcessor.useEvent(\"updated\", ({ topValues, totalCount, highestValue }: {\n\t\ttopValues: number[];\n\t\ttotalCount: number;\n\t\thighestValue: number | null;\n\t}) => {\n\t\tsetTopValues(topValues);\n\t\tsetTotalCount(totalCount);\n\t\tsetHighestValue(highestValue);\n\t});\n\n\t// Add a new value to the stream\n\tconst handleAddValue = async () => {\n\t\tif (streamProcessor.connection && !isNaN(newValue)) {\n\t\t\tawait streamProcessor.connection.addValue(newValue);\n\t\t\tsetNewValue(0);\n\t\t}\n\t};\n\n\t// Reset the stream\n\tconst handleReset = async () => {\n\t\tif (streamProcessor.connection) {\n\t\t\tconst result = await streamProcessor.connection.reset();\n\t\t\tsetTopValues(result.topValues);\n\t\t\tsetTotalCount(result.totalCount);\n\t\t\tsetHighestValue(result.highestValue);\n\t\t}\n\t};\n\n\t// Handle form submission\n\tconst handleSubmit = (e: React.FormEvent) => {\n\t\te.preventDefault();\n\t\thandleAddValue();\n\t};\n\n\t// Handle random value generation\n\tconst handleRandomValue = () => {\n\t\tconst randomValue = Math.floor(Math.random() * 1000) + 1;\n\t\tsetNewValue(randomValue);\n\t};\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

Stream Processor

\n\t\t\t\t

Real-time top-3 value tracking with RivetKit

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

How it works

\n\t\t\t\t

\n\t\t\t\t\tThis stream processor maintains the top 3 highest values in real-time. \n\t\t\t\t\tAdd numbers and watch as the system automatically keeps track of the highest values. \n\t\t\t\t\tAll connected clients see updates immediately when new values are added.\n\t\t\t\t

\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

🏆 Top 3 Values

\n\t\t\t\t\t\t{topValues.length === 0 ? (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tNo values added yet.
\n\t\t\t\t\t\t\t\tAdd some numbers to get started!\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\ttopValues.map((value, index) => (\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t#{index + 1}\n\t\t\t\t\t\t\t\t\t{value.toLocaleString()}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

Add New Value

\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t setNewValue(Number(e.target.value))}\n\t\t\t\t\t\t\t\tplaceholder=\"Enter any number...\"\n\t\t\t\t\t\t\t\tdisabled={!streamProcessor.connection}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{totalCount}
\n\t\t\t\t\t
Total Values
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{highestValue?.toLocaleString() || \"—\"}
\n\t\t\t\t\t
Highest Value
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
{topValues.length}
\n\t\t\t\t\t
Top Values Count
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n}", - "src/frontend/main.tsx": "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App\";\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Root element not found\");\n\ncreateRoot(root).render(\n\t\n\t\t\n\t\n);", - "src/frontend/index.html": "\n\n\n \n \n Stream Processor - RivetKit\n \n\n\n
\n \n\n", - "src/backend/registry.ts": "import { actor, setup } from \"rivetkit\";\n\nexport type StreamState = {\n\ttopValues: number[];\n};\n\nconst streamProcessor = actor({\n\tonAuth: () => {},\n\t// Persistent state that survives restarts: https://rivet.dev/docs/actors/state\n\tstate: {\n\t\ttopValues: [] as number[],\n\t\ttotalValues: 0,\n\t},\n\n\tactions: {\n\t\t// Callable functions from clients: https://rivet.dev/docs/actors/actions\n\t\tgetTopValues: (c) => c.state.topValues,\n\n\t\tgetStats: (c) => ({\n\t\t\ttopValues: c.state.topValues,\n\t\t\ttotalCount: c.state.totalValues,\n\t\t\thighestValue: c.state.topValues.length > 0 ? c.state.topValues[0] : null,\n\t\t}),\n\n\t\taddValue: (c, value: number) => {\n\t\t\t// State changes are automatically persisted\n\t\t\tc.state.totalValues++;\n\n\t\t\t// Insert new value if needed\n\t\t\tconst insertAt = c.state.topValues.findIndex((v) => value > v);\n\t\t\tif (insertAt === -1 && c.state.topValues.length < 3) {\n\t\t\t\t// Add to end if not better than existing values but we have space\n\t\t\t\tc.state.topValues.push(value);\n\t\t\t} else if (insertAt !== -1) {\n\t\t\t\t// Insert at the correct position\n\t\t\t\tc.state.topValues.splice(insertAt, 0, value);\n\t\t\t}\n\n\t\t\t// Keep only top 3\n\t\t\tif (c.state.topValues.length > 3) {\n\t\t\t\tc.state.topValues.length = 3;\n\t\t\t}\n\n\t\t\t// Sort descending to ensure correct order\n\t\t\tc.state.topValues.sort((a, b) => b - a);\n\n\t\t\tconst result = {\n\t\t\t\ttopValues: c.state.topValues,\n\t\t\t\ttotalCount: c.state.totalValues,\n\t\t\t\thighestValue:\n\t\t\t\t\tc.state.topValues.length > 0 ? c.state.topValues[0] : null,\n\t\t\t};\n\n\t\t\t// Send events to all connected clients: https://rivet.dev/docs/actors/events\n\t\t\tc.broadcast(\"updated\", result);\n\n\t\t\treturn c.state.topValues;\n\t\t},\n\n\t\treset: (c) => {\n\t\t\tc.state.topValues = [];\n\t\t\tc.state.totalValues = 0;\n\n\t\t\tconst result = {\n\t\t\t\ttopValues: c.state.topValues,\n\t\t\t\ttotalCount: c.state.totalValues,\n\t\t\t\thighestValue: null,\n\t\t\t};\n\n\t\t\tc.broadcast(\"updated\", result);\n\n\t\t\treturn result;\n\t\t},\n\t},\n});\n\n// Register actors for use: https://rivet.dev/docs/setup\nexport const registry = setup({\n\tuse: { streamProcessor },\n});\n", - "src/backend/server.ts": "import { registry } from \"./registry\";\n\nregistry.runServer({\n\tcors: {\n\t\torigin: \"*\",\n\t},\n});\n" + "README.md": "# Discord Bot Gateway for RivetKit\n\nExample project demonstrating Discord Gateway lifecycle management with [RivetKit](https://rivetkit.org).\n\n[Learn More →](https://github.com/rivet-dev/rivetkit)\n\n[Discord](https://rivet.dev/discord) — [Documentation](https://rivetkit.org) — [Issues](https://github.com/rivet-dev/rivetkit/issues)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 22+\n- Discord application with a bot token and the **Message Content Intent** enabled\n\n### Installation\n\n```sh\ngit clone https://github.com/rivet-dev/rivetkit\ncd rivetkit/examples/bots\nnpm install\n```\n\n### Development\n\n```sh\nDISCORD_BOT_TOKEN=your-token npm run dev\n```\n\nInvite the bot to a server, then send messages such as \"hello\" or \"ping\" in a text channel to see automatic replies and state updates.\n\n## License\n\nApache 2.0\n", + ".gitignore": ".actorcore\nnode_modules\n", + "package-lock.json": "{\n \"name\": \"example-bots\",\n \"version\": \"2.0.14\",\n \"lockfileVersion\": 3,\n \"requires\": true,\n \"packages\": {\n \"\": {\n \"name\": \"example-bots\",\n \"version\": \"2.0.14\",\n \"dependencies\": {\n \"@hono/node-server\": \"^1.14.3\",\n \"hono\": \"^4.7.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.13.9\",\n \"rivetkit\": \"^0.9.1\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n }\n },\n \"node_modules/@esbuild/aix-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"aix\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/android-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/android-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz\",\n \"integrity\": \"sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz\",\n \"integrity\": \"sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz\",\n \"integrity\": \"sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz\",\n \"integrity\": \"sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz\",\n \"integrity\": \"sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz\",\n \"integrity\": \"sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/netbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openbsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/openharmony-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz\",\n \"integrity\": \"sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz\",\n \"integrity\": \"sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz\",\n \"integrity\": \"sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/@hono/node-server\": {\n \"version\": \"1.19.5\",\n \"resolved\": \"https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.5.tgz\",\n \"integrity\": \"sha512-iBuhh+uaaggeAuf+TftcjZyWh2GEgZcVGXkNtskLVoWaXhnJtC5HLHrU8W1KHDoucqO1MswwglmkWLFyiDn4WQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=18.14.1\"\n },\n \"peerDependencies\": {\n \"hono\": \"^4\"\n }\n },\n \"node_modules/@jridgewell/sourcemap-codec\": {\n \"version\": \"1.5.5\",\n \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@rollup/rollup-android-arm-eabi\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz\",\n \"integrity\": \"sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-android-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-darwin-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-freebsd-x64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz\",\n \"integrity\": \"sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz\",\n \"integrity\": \"sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-arm64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-loong64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-ppc64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-linux-x64-musl\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz\",\n \"integrity\": \"sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ]\n },\n \"node_modules/@rollup/rollup-openharmony-arm64\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz\",\n \"integrity\": \"sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openharmony\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-gnu\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz\",\n \"integrity\": \"sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@rollup/rollup-win32-x64-msvc\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz\",\n \"integrity\": \"sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ]\n },\n \"node_modules/@types/chai\": {\n \"version\": \"5.2.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz\",\n \"integrity\": \"sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/deep-eql\": \"*\"\n }\n },\n \"node_modules/@types/deep-eql\": {\n \"version\": \"4.0.2\",\n \"resolved\": \"https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz\",\n \"integrity\": \"sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/estree\": {\n \"version\": \"1.0.8\",\n \"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz\",\n \"integrity\": \"sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/@types/node\": {\n \"version\": \"22.18.10\",\n \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz\",\n \"integrity\": \"sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"undici-types\": \"~6.21.0\"\n }\n },\n \"node_modules/@vitest/expect\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz\",\n \"integrity\": \"sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/pretty-format\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz\",\n \"integrity\": \"sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/runner\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz\",\n \"integrity\": \"sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/utils\": \"3.2.4\",\n \"pathe\": \"^2.0.3\",\n \"strip-literal\": \"^3.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/snapshot\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz\",\n \"integrity\": \"sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/spy\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz\",\n \"integrity\": \"sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"tinyspy\": \"^4.0.3\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/@vitest/utils\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz\",\n \"integrity\": \"sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/pretty-format\": \"3.2.4\",\n \"loupe\": \"^3.1.4\",\n \"tinyrainbow\": \"^2.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/assertion-error\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n \"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n }\n },\n \"node_modules/buffer-from\": {\n \"version\": \"1.1.2\",\n \"resolved\": \"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz\",\n \"integrity\": \"sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/cac\": {\n \"version\": \"6.7.14\",\n \"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n \"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=8\"\n }\n },\n \"node_modules/chai\": {\n \"version\": \"5.3.3\",\n \"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.3.3.tgz\",\n \"integrity\": \"sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"assertion-error\": \"^2.0.1\",\n \"check-error\": \"^2.1.1\",\n \"deep-eql\": \"^5.0.1\",\n \"loupe\": \"^3.1.0\",\n \"pathval\": \"^2.0.0\"\n },\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/check-error\": {\n \"version\": \"2.1.1\",\n \"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n \"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 16\"\n }\n },\n \"node_modules/debug\": {\n \"version\": \"4.4.3\",\n \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"ms\": \"^2.1.3\"\n },\n \"engines\": {\n \"node\": \">=6.0\"\n },\n \"peerDependenciesMeta\": {\n \"supports-color\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/deep-eql\": {\n \"version\": \"5.0.2\",\n \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n \"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=6\"\n }\n },\n \"node_modules/es-module-lexer\": {\n \"version\": \"1.7.0\",\n \"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n \"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/esbuild\": {\n \"version\": \"0.18.20\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz\",\n \"integrity\": \"sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"optionalDependencies\": {\n \"@esbuild/android-arm\": \"0.18.20\",\n \"@esbuild/android-arm64\": \"0.18.20\",\n \"@esbuild/android-x64\": \"0.18.20\",\n \"@esbuild/darwin-arm64\": \"0.18.20\",\n \"@esbuild/darwin-x64\": \"0.18.20\",\n \"@esbuild/freebsd-arm64\": \"0.18.20\",\n \"@esbuild/freebsd-x64\": \"0.18.20\",\n \"@esbuild/linux-arm\": \"0.18.20\",\n \"@esbuild/linux-arm64\": \"0.18.20\",\n \"@esbuild/linux-ia32\": \"0.18.20\",\n \"@esbuild/linux-loong64\": \"0.18.20\",\n \"@esbuild/linux-mips64el\": \"0.18.20\",\n \"@esbuild/linux-ppc64\": \"0.18.20\",\n \"@esbuild/linux-riscv64\": \"0.18.20\",\n \"@esbuild/linux-s390x\": \"0.18.20\",\n \"@esbuild/linux-x64\": \"0.18.20\",\n \"@esbuild/netbsd-x64\": \"0.18.20\",\n \"@esbuild/openbsd-x64\": \"0.18.20\",\n \"@esbuild/sunos-x64\": \"0.18.20\",\n \"@esbuild/win32-arm64\": \"0.18.20\",\n \"@esbuild/win32-ia32\": \"0.18.20\",\n \"@esbuild/win32-x64\": \"0.18.20\"\n }\n },\n \"node_modules/estree-walker\": {\n \"version\": \"3.0.3\",\n \"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n \"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"^1.0.0\"\n }\n },\n \"node_modules/expect-type\": {\n \"version\": \"1.2.2\",\n \"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz\",\n \"integrity\": \"sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n }\n },\n \"node_modules/fdir\": {\n \"version\": \"6.5.0\",\n \"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz\",\n \"integrity\": \"sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"peerDependencies\": {\n \"picomatch\": \"^3 || ^4\"\n },\n \"peerDependenciesMeta\": {\n \"picomatch\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/fsevents\": {\n \"version\": \"2.3.3\",\n \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n \"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n }\n },\n \"node_modules/get-tsconfig\": {\n \"version\": \"4.12.0\",\n \"resolved\": \"https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.12.0.tgz\",\n \"integrity\": \"sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"resolve-pkg-maps\": \"^1.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/get-tsconfig?sponsor=1\"\n }\n },\n \"node_modules/hono\": {\n \"version\": \"4.9.12\",\n \"resolved\": \"https://registry.npmjs.org/hono/-/hono-4.9.12.tgz\",\n \"integrity\": \"sha512-SrTC0YxqPwnN7yKa8gg/giLyQ2pILCKoideIHbYbFQlWZjYt68D2A4Ae1hehO/aDQ6RmTcpqOV/O2yBtMzx/VQ==\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=16.9.0\"\n }\n },\n \"node_modules/js-tokens\": {\n \"version\": \"9.0.1\",\n \"resolved\": \"https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz\",\n \"integrity\": \"sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/loupe\": {\n \"version\": \"3.2.1\",\n \"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz\",\n \"integrity\": \"sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/magic-string\": {\n \"version\": \"0.30.19\",\n \"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz\",\n \"integrity\": \"sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@jridgewell/sourcemap-codec\": \"^1.5.5\"\n }\n },\n \"node_modules/ms\": {\n \"version\": \"2.1.3\",\n \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/nanoid\": {\n \"version\": \"3.3.11\",\n \"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n \"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"bin\": {\n \"nanoid\": \"bin/nanoid.cjs\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n }\n },\n \"node_modules/pathe\": {\n \"version\": \"2.0.3\",\n \"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n \"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/pathval\": {\n \"version\": \"2.0.1\",\n \"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz\",\n \"integrity\": \"sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">= 14.16\"\n }\n },\n \"node_modules/picocolors\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n \"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/picomatch\": {\n \"version\": \"4.0.3\",\n \"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz\",\n \"integrity\": \"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=12\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/jonschlinkert\"\n }\n },\n \"node_modules/postcss\": {\n \"version\": \"8.5.6\",\n \"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz\",\n \"integrity\": \"sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==\",\n \"dev\": true,\n \"funding\": [\n {\n \"type\": \"opencollective\",\n \"url\": \"https://opencollective.com/postcss/\"\n },\n {\n \"type\": \"tidelift\",\n \"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n },\n {\n \"type\": \"github\",\n \"url\": \"https://github.com/sponsors/ai\"\n }\n ],\n \"license\": \"MIT\",\n \"dependencies\": {\n \"nanoid\": \"^3.3.11\",\n \"picocolors\": \"^1.1.1\",\n \"source-map-js\": \"^1.2.1\"\n },\n \"engines\": {\n \"node\": \"^10 || ^12 || >=14\"\n }\n },\n \"node_modules/resolve-pkg-maps\": {\n \"version\": \"1.0.0\",\n \"resolved\": \"https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz\",\n \"integrity\": \"sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"funding\": {\n \"url\": \"https://github.com/privatenumber/resolve-pkg-maps?sponsor=1\"\n }\n },\n \"node_modules/rivetkit\": {\n \"version\": \"0.9.9\",\n \"resolved\": \"https://registry.npmjs.org/rivetkit/-/rivetkit-0.9.9.tgz\",\n \"integrity\": \"sha512-7kqlTGoZGBH1dSNe1jONI3vBe9GzY8s7FZPWSiF0+gkjvN9+cNXd++FVJpiTDoeaVThFdt7or00n5LIbtZbQXQ==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\"\n },\n \"node_modules/rollup\": {\n \"version\": \"4.52.4\",\n \"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz\",\n \"integrity\": \"sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/estree\": \"1.0.8\"\n },\n \"bin\": {\n \"rollup\": \"dist/bin/rollup\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\",\n \"npm\": \">=8.0.0\"\n },\n \"optionalDependencies\": {\n \"@rollup/rollup-android-arm-eabi\": \"4.52.4\",\n \"@rollup/rollup-android-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-arm64\": \"4.52.4\",\n \"@rollup/rollup-darwin-x64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-arm64\": \"4.52.4\",\n \"@rollup/rollup-freebsd-x64\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-gnueabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm-musleabihf\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-arm64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-loong64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-ppc64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-riscv64-musl\": \"4.52.4\",\n \"@rollup/rollup-linux-s390x-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-linux-x64-musl\": \"4.52.4\",\n \"@rollup/rollup-openharmony-arm64\": \"4.52.4\",\n \"@rollup/rollup-win32-arm64-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-ia32-msvc\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-gnu\": \"4.52.4\",\n \"@rollup/rollup-win32-x64-msvc\": \"4.52.4\",\n \"fsevents\": \"~2.3.2\"\n }\n },\n \"node_modules/siginfo\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n \"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n \"dev\": true,\n \"license\": \"ISC\"\n },\n \"node_modules/source-map\": {\n \"version\": \"0.6.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-js\": {\n \"version\": \"1.2.1\",\n \"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n \"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n \"dev\": true,\n \"license\": \"BSD-3-Clause\",\n \"engines\": {\n \"node\": \">=0.10.0\"\n }\n },\n \"node_modules/source-map-support\": {\n \"version\": \"0.5.21\",\n \"resolved\": \"https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz\",\n \"integrity\": \"sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"buffer-from\": \"^1.0.0\",\n \"source-map\": \"^0.6.0\"\n }\n },\n \"node_modules/stackback\": {\n \"version\": \"0.0.2\",\n \"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n \"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/std-env\": {\n \"version\": \"3.10.0\",\n \"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz\",\n \"integrity\": \"sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/strip-literal\": {\n \"version\": \"3.1.0\",\n \"resolved\": \"https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz\",\n \"integrity\": \"sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"js-tokens\": \"^9.0.1\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/antfu\"\n }\n },\n \"node_modules/tinybench\": {\n \"version\": \"2.9.0\",\n \"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n \"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyexec\": {\n \"version\": \"0.3.2\",\n \"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n \"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/tinyglobby\": {\n \"version\": \"0.2.15\",\n \"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz\",\n \"integrity\": \"sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\"\n },\n \"engines\": {\n \"node\": \">=12.0.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/sponsors/SuperchupuDev\"\n }\n },\n \"node_modules/tinypool\": {\n \"version\": \"1.1.1\",\n \"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz\",\n \"integrity\": \"sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \"^18.0.0 || >=20.0.0\"\n }\n },\n \"node_modules/tinyrainbow\": {\n \"version\": \"2.0.0\",\n \"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n \"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tinyspy\": {\n \"version\": \"4.0.4\",\n \"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz\",\n \"integrity\": \"sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=14.0.0\"\n }\n },\n \"node_modules/tsx\": {\n \"version\": \"3.14.0\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz\",\n \"integrity\": \"sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"~0.18.20\",\n \"get-tsconfig\": \"^4.7.2\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/typescript\": {\n \"version\": \"5.9.3\",\n \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz\",\n \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n \"dev\": true,\n \"license\": \"Apache-2.0\",\n \"bin\": {\n \"tsc\": \"bin/tsc\",\n \"tsserver\": \"bin/tsserver\"\n },\n \"engines\": {\n \"node\": \">=14.17\"\n }\n },\n \"node_modules/undici-types\": {\n \"version\": \"6.21.0\",\n \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz\",\n \"integrity\": \"sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==\",\n \"dev\": true,\n \"license\": \"MIT\"\n },\n \"node_modules/vite-node\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz\",\n \"integrity\": \"sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"cac\": \"^6.7.14\",\n \"debug\": \"^4.4.1\",\n \"es-module-lexer\": \"^1.7.0\",\n \"pathe\": \"^2.0.3\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"bin\": {\n \"vite-node\": \"vite-node.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vite-node/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vite-node/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vite-node/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz\",\n \"integrity\": \"sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@types/chai\": \"^5.2.2\",\n \"@vitest/expect\": \"3.2.4\",\n \"@vitest/mocker\": \"3.2.4\",\n \"@vitest/pretty-format\": \"^3.2.4\",\n \"@vitest/runner\": \"3.2.4\",\n \"@vitest/snapshot\": \"3.2.4\",\n \"@vitest/spy\": \"3.2.4\",\n \"@vitest/utils\": \"3.2.4\",\n \"chai\": \"^5.2.0\",\n \"debug\": \"^4.4.1\",\n \"expect-type\": \"^1.2.1\",\n \"magic-string\": \"^0.30.17\",\n \"pathe\": \"^2.0.3\",\n \"picomatch\": \"^4.0.2\",\n \"std-env\": \"^3.9.0\",\n \"tinybench\": \"^2.9.0\",\n \"tinyexec\": \"^0.3.2\",\n \"tinyglobby\": \"^0.2.14\",\n \"tinypool\": \"^1.1.1\",\n \"tinyrainbow\": \"^2.0.0\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\",\n \"vite-node\": \"3.2.4\",\n \"why-is-node-running\": \"^2.3.0\"\n },\n \"bin\": {\n \"vitest\": \"vitest.mjs\"\n },\n \"engines\": {\n \"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"@edge-runtime/vm\": \"*\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n \"@vitest/browser\": \"3.2.4\",\n \"@vitest/ui\": \"3.2.4\",\n \"happy-dom\": \"*\",\n \"jsdom\": \"*\"\n },\n \"peerDependenciesMeta\": {\n \"@edge-runtime/vm\": {\n \"optional\": true\n },\n \"@types/debug\": {\n \"optional\": true\n },\n \"@types/node\": {\n \"optional\": true\n },\n \"@vitest/browser\": {\n \"optional\": true\n },\n \"@vitest/ui\": {\n \"optional\": true\n },\n \"happy-dom\": {\n \"optional\": true\n },\n \"jsdom\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/android-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"android\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/darwin-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"darwin\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/freebsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"freebsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz\",\n \"integrity\": \"sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==\",\n \"cpu\": [\n \"arm\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-loong64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz\",\n \"integrity\": \"sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==\",\n \"cpu\": [\n \"loong64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-mips64el\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz\",\n \"integrity\": \"sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==\",\n \"cpu\": [\n \"mips64el\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-ppc64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz\",\n \"integrity\": \"sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==\",\n \"cpu\": [\n \"ppc64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-riscv64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz\",\n \"integrity\": \"sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==\",\n \"cpu\": [\n \"riscv64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-s390x\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz\",\n \"integrity\": \"sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==\",\n \"cpu\": [\n \"s390x\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/linux-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"linux\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/netbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"netbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/openbsd-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"openbsd\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/sunos-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"sunos\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-arm64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz\",\n \"integrity\": \"sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==\",\n \"cpu\": [\n \"arm64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-ia32\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz\",\n \"integrity\": \"sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==\",\n \"cpu\": [\n \"ia32\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@esbuild/win32-x64\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz\",\n \"integrity\": \"sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==\",\n \"cpu\": [\n \"x64\"\n ],\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"os\": [\n \"win32\"\n ],\n \"engines\": {\n \"node\": \">=18\"\n }\n },\n \"node_modules/vitest/node_modules/@vitest/mocker\": {\n \"version\": \"3.2.4\",\n \"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz\",\n \"integrity\": \"sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@vitest/spy\": \"3.2.4\",\n \"estree-walker\": \"^3.0.3\",\n \"magic-string\": \"^0.30.17\"\n },\n \"funding\": {\n \"url\": \"https://opencollective.com/vitest\"\n },\n \"peerDependencies\": {\n \"msw\": \"^2.4.9\",\n \"vite\": \"^5.0.0 || ^6.0.0 || ^7.0.0-0\"\n },\n \"peerDependenciesMeta\": {\n \"msw\": {\n \"optional\": true\n },\n \"vite\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/vitest/node_modules/esbuild\": {\n \"version\": \"0.25.11\",\n \"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz\",\n \"integrity\": \"sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==\",\n \"dev\": true,\n \"hasInstallScript\": true,\n \"license\": \"MIT\",\n \"bin\": {\n \"esbuild\": \"bin/esbuild\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"optionalDependencies\": {\n \"@esbuild/aix-ppc64\": \"0.25.11\",\n \"@esbuild/android-arm\": \"0.25.11\",\n \"@esbuild/android-arm64\": \"0.25.11\",\n \"@esbuild/android-x64\": \"0.25.11\",\n \"@esbuild/darwin-arm64\": \"0.25.11\",\n \"@esbuild/darwin-x64\": \"0.25.11\",\n \"@esbuild/freebsd-arm64\": \"0.25.11\",\n \"@esbuild/freebsd-x64\": \"0.25.11\",\n \"@esbuild/linux-arm\": \"0.25.11\",\n \"@esbuild/linux-arm64\": \"0.25.11\",\n \"@esbuild/linux-ia32\": \"0.25.11\",\n \"@esbuild/linux-loong64\": \"0.25.11\",\n \"@esbuild/linux-mips64el\": \"0.25.11\",\n \"@esbuild/linux-ppc64\": \"0.25.11\",\n \"@esbuild/linux-riscv64\": \"0.25.11\",\n \"@esbuild/linux-s390x\": \"0.25.11\",\n \"@esbuild/linux-x64\": \"0.25.11\",\n \"@esbuild/netbsd-arm64\": \"0.25.11\",\n \"@esbuild/netbsd-x64\": \"0.25.11\",\n \"@esbuild/openbsd-arm64\": \"0.25.11\",\n \"@esbuild/openbsd-x64\": \"0.25.11\",\n \"@esbuild/openharmony-arm64\": \"0.25.11\",\n \"@esbuild/sunos-x64\": \"0.25.11\",\n \"@esbuild/win32-arm64\": \"0.25.11\",\n \"@esbuild/win32-ia32\": \"0.25.11\",\n \"@esbuild/win32-x64\": \"0.25.11\"\n }\n },\n \"node_modules/vitest/node_modules/tsx\": {\n \"version\": \"4.20.6\",\n \"resolved\": \"https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz\",\n \"integrity\": \"sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"optional\": true,\n \"peer\": true,\n \"dependencies\": {\n \"esbuild\": \"~0.25.0\",\n \"get-tsconfig\": \"^4.7.5\"\n },\n \"bin\": {\n \"tsx\": \"dist/cli.mjs\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n }\n },\n \"node_modules/vitest/node_modules/vite\": {\n \"version\": \"7.1.10\",\n \"resolved\": \"https://registry.npmjs.org/vite/-/vite-7.1.10.tgz\",\n \"integrity\": \"sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"esbuild\": \"^0.25.0\",\n \"fdir\": \"^6.5.0\",\n \"picomatch\": \"^4.0.3\",\n \"postcss\": \"^8.5.6\",\n \"rollup\": \"^4.43.0\",\n \"tinyglobby\": \"^0.2.15\"\n },\n \"bin\": {\n \"vite\": \"bin/vite.js\"\n },\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"funding\": {\n \"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n },\n \"optionalDependencies\": {\n \"fsevents\": \"~2.3.3\"\n },\n \"peerDependencies\": {\n \"@types/node\": \"^20.19.0 || >=22.12.0\",\n \"jiti\": \">=1.21.0\",\n \"less\": \"^4.0.0\",\n \"lightningcss\": \"^1.21.0\",\n \"sass\": \"^1.70.0\",\n \"sass-embedded\": \"^1.70.0\",\n \"stylus\": \">=0.54.8\",\n \"sugarss\": \"^5.0.0\",\n \"terser\": \"^5.16.0\",\n \"tsx\": \"^4.8.1\",\n \"yaml\": \"^2.4.2\"\n },\n \"peerDependenciesMeta\": {\n \"@types/node\": {\n \"optional\": true\n },\n \"jiti\": {\n \"optional\": true\n },\n \"less\": {\n \"optional\": true\n },\n \"lightningcss\": {\n \"optional\": true\n },\n \"sass\": {\n \"optional\": true\n },\n \"sass-embedded\": {\n \"optional\": true\n },\n \"stylus\": {\n \"optional\": true\n },\n \"sugarss\": {\n \"optional\": true\n },\n \"terser\": {\n \"optional\": true\n },\n \"tsx\": {\n \"optional\": true\n },\n \"yaml\": {\n \"optional\": true\n }\n }\n },\n \"node_modules/why-is-node-running\": {\n \"version\": \"2.3.0\",\n \"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n \"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n \"dev\": true,\n \"license\": \"MIT\",\n \"dependencies\": {\n \"siginfo\": \"^2.0.0\",\n \"stackback\": \"0.0.2\"\n },\n \"bin\": {\n \"why-is-node-running\": \"cli.js\"\n },\n \"engines\": {\n \"node\": \">=8\"\n }\n }\n }\n}\n", + "package.json": "{\n \"name\": \"example-bots\",\n \"version\": \"2.0.14\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"tsx src/server.ts\",\n \"check-types\": \"tsc --noEmit\",\n \"test\": \"vitest run\"\n },\n \"devDependencies\": {\n \"rivetkit\": \"^0.9.1\",\n \"@types/node\": \"^22.13.9\",\n \"tsx\": \"^3.12.7\",\n \"typescript\": \"^5.7.3\",\n \"vitest\": \"^3.1.1\"\n },\n \"dependencies\": {\n \"@hono/node-server\": \"^1.14.3\",\n \"hono\": \"^4.7.0\"\n },\n \"stableVersion\": \"0.8.0\"\n}\n", + "tsconfig.json": "{\n \"compilerOptions\": {\n /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */\n \"target\": \"esnext\",\n /* Specify a set of bundled library declaration files that describe the target runtime environment. */\n \"lib\": [\"esnext\"],\n /* Specify what JSX code is generated. */\n \"jsx\": \"react-jsx\",\n\n /* Specify what module code is generated. */\n \"module\": \"esnext\",\n /* Specify how TypeScript looks up a file from a given module specifier. */\n \"moduleResolution\": \"bundler\",\n /* Specify type package names to be included without being referenced in a source file. */\n \"types\": [\"node\"],\n /* Enable importing .json files */\n \"resolveJsonModule\": true,\n\n /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */\n \"allowJs\": true,\n /* Enable error reporting in type-checked JavaScript files. */\n \"checkJs\": false,\n\n /* Disable emitting files from a compilation. */\n \"noEmit\": true,\n\n /* Ensure that each file can be safely transpiled without relying on other imports. */\n \"isolatedModules\": true,\n /* Allow 'import x from y' when a module doesn't have a default export. */\n \"allowSyntheticDefaultImports\": true,\n /* Ensure that casing is correct in imports. */\n \"forceConsistentCasingInFileNames\": true,\n\n /* Enable all strict type-checking options. */\n \"strict\": true,\n\n /* Skip type checking all .d.ts files. */\n \"skipLibCheck\": true\n },\n \"include\": [\"src/**/*.ts\", \"scripts/**/*.ts\", \"tests/**/*.ts\"]\n}\n", + "src/utils.ts": "export async function sendSlackMessage(\n\tchannelId: string,\n\ttext: string,\n): Promise {\n\tconst token = process.env.SLACK_BOT_TOKEN;\n\tif (!token) {\n\t\treturn;\n\t}\n\n\tawait fetch(\"https://slack.com/api/chat.postMessage\", {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${token}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t},\n\t\tbody: JSON.stringify({\n\t\t\tchannel: channelId,\n\t\t\ttext,\n\t\t}),\n\t});\n}\n", + "src/types.ts": "export type WorkspaceInput = {\n\tworkspaceId: string;\n\tchannelId: string;\n};\n\nexport type WorkspaceState = WorkspaceInput & {\n\tmessageCount: number;\n\tnextReportAt?: number;\n};\n", + "src/registry.ts": "import { actor, setup } from \"rivetkit\";\nimport type { WorkspaceInput, WorkspaceState } from \"./types\";\nimport { sendSlackMessage } from \"./utils\";\n\nconst DAY_IN_MS = 86_400_000;\n\nexport const slackWorkspaceBot = actor({\n\tcreateState: async (c, input): Promise => {\n\t\t// Schedule first daily report\n\t\tconst nextReportAt = Date.now() + DAY_IN_MS;\n\t\tawait c.schedule.at(nextReportAt, \"sendDailyReport\");\n\n\t\treturn {\n\t\t\tworkspaceId: (input as WorkspaceInput).workspaceId,\n\t\t\tchannelId: (input as WorkspaceInput).channelId,\n\t\t\tmessageCount: 0,\n\t\t\tnextReportAt,\n\t\t};\n\t},\n\n\tactions: {\n\t\t// Called by the Slack webhook in the Hono server\n\t\thandleMessage: async (c, text: string) => {\n\t\t\tc.state.messageCount++;\n\n\t\t\tconst msg = text.toLowerCase().trim();\n\t\t\tlet response: string | undefined;\n\n\t\t\tif (msg === \"ping\") {\n\t\t\t\tresponse = \"pong\";\n\t\t\t} else if (msg === \"count\") {\n\t\t\t\tresponse = `I've received ${c.state.messageCount} messages in this workspace`;\n\t\t\t} else if (msg === \"help\") {\n\t\t\t\tresponse =\n\t\t\t\t\t\"Available commands:\\n• ping - responds with pong\\n• count - shows message count\\n• help - shows this message\";\n\t\t\t}\n\n\t\t\tif (response) {\n\t\t\t\tawait sendSlackMessage(c.state.channelId, response);\n\t\t\t}\n\t\t},\n\n\t\tsendDailyReport: async (c) => {\n\t\t\t// Schedule next report\n\t\t\tconst nextReportAt = Date.now() + DAY_IN_MS;\n\t\t\tc.state.nextReportAt = nextReportAt;\n\t\t\tawait c.schedule.at(nextReportAt, \"sendDailyReport\");\n\n\t\t\t// Send report to Slack if we have a channel\n\t\t\tif (c.state.channelId) {\n\t\t\t\tconst report = `Daily report: ${c.state.messageCount} messages received so far`;\n\t\t\t\tawait sendSlackMessage(c.state.channelId, report);\n\t\t\t}\n\t\t},\n\t},\n});\n\nexport const registry = setup({\n\tuse: { slackWorkspaceBot },\n});\n\nexport type Registry = typeof registry;\n", + "src/server.ts": "import { serve } from \"@hono/node-server\";\nimport { Hono } from \"hono\";\nimport { registry } from \"./registry\";\n\nconst { client } = registry.start();\n\nconst app = new Hono();\n\napp.post(\"/slack/events\", async (c) => {\n\tconst body = await c.req.json();\n\n\tif (body.type === \"url_verification\") {\n\t\treturn c.json({ challenge: body.challenge });\n\t}\n\n\tif (body.type === \"event_callback\" && body.event.type === \"message\") {\n\t\tconst workspaceId = body.team_id;\n\t\tconst channelId = body.event.channel;\n\n\t\tconst bot = client.slackWorkspaceBot.getOrCreate(workspaceId, {\n\t\t\tcreateWithInput: {\n\t\t\t\tworkspaceId,\n\t\t\t\tchannelId,\n\t\t\t},\n\t\t});\n\n\t\tawait bot.handleMessage(body.event.text);\n\n\t\treturn c.json({ ok: true });\n\t}\n\n\treturn c.json({ ok: false }, 400);\n});\n\nserve({ fetch: app.fetch, port: 8080 });\nconsole.log(\"Slack bot listening on port 8080\");\n" } } ]; diff --git a/site/src/data/use-cases.ts b/site/src/data/use-cases.ts new file mode 100644 index 0000000000..5b7de99597 --- /dev/null +++ b/site/src/data/use-cases.ts @@ -0,0 +1,75 @@ +import { + faRobot, + faUserRobot, + faFilePen, + faDiagramNext, + faRotate, + faDatabase, + faGamepad, + faClock, + faGaugeHigh, +} from "@rivet-gg/icons"; + +export interface UseCase { + title: string; + href: string; + icon?: any; + description?: string; +} + +export const useCases: UseCase[] = [ + { + title: "AI Agent", + href: "/docs/use-cases/ai-agent", + icon: faRobot, + description: "Build durable AI assistants with persistent memory and realtime streaming", + }, + { + title: "Realtime Docs", + href: "/docs/use-cases/crdt", + icon: faFilePen, + description: "Collaborative documents with CRDTs and realtime synchronization", + }, + { + title: "Workflows", + href: "/docs/use-cases/workflows", + icon: faDiagramNext, + description: "Durable multi-step workflows with automatic state management", + }, + { + title: "Local-First Sync", + href: "/docs/use-cases/sync", + icon: faRotate, + description: "Offline-first applications with server synchronization", + }, + { + title: "Bots", + href: "/docs/use-cases/bots", + icon: faUserRobot, + description: "Discord, Slack, or autonomous bots with persistent state", + }, + { + title: "Per-User Database", + href: "/docs/use-cases/database", + icon: faDatabase, + description: "Isolated data stores for each user with zero-latency access", + }, + { + title: "Multiplayer Game", + href: "/docs/use-cases/game", + icon: faGamepad, + description: "Authoritative game servers with realtime state synchronization", + }, + { + title: "Background Jobs", + href: "/docs/use-cases/background-jobs", + icon: faClock, + description: "Scheduled and recurring jobs without external queue infrastructure", + }, + { + title: "Rate Limiting", + href: "/docs/use-cases/rate", + icon: faGaugeHigh, + description: "Distributed rate limiting with in-memory counters", + }, +]; diff --git a/site/src/images/screenshots/rivet-hub.png b/site/src/images/screenshots/rivet-hub.png index 1e47521ecd..d719f18e49 100644 Binary files a/site/src/images/screenshots/rivet-hub.png and b/site/src/images/screenshots/rivet-hub.png differ diff --git a/site/src/sitemap/mod.ts b/site/src/sitemap/mod.ts index 76fbe7a03f..d35e708760 100644 --- a/site/src/sitemap/mod.ts +++ b/site/src/sitemap/mod.ts @@ -2,6 +2,7 @@ import apiData from "@/generated/apiPages.json" assert { type: "json" }; import { deployOptions } from "@/data/deploy-options"; import type { DeployOption } from "@/data/deploy-options"; import { integrationGroups } from "@/data/integrations/shared"; +import { useCases } from "@/data/use-cases"; import nextjs from "@/images/vendors/next-js.svg"; import type { SidebarItem, Sitemap } from "@/lib/sitemap"; import { @@ -29,6 +30,7 @@ import { faNetworkWired, faNodeJs, faReact, + faNextjs, faRecycle, faRotate, faRust, @@ -64,6 +66,8 @@ import { faCloud, faRailway, faLightbulb, + faCloudArrowUp, + faUpload, } from "@rivet-gg/icons"; // Goals: @@ -103,19 +107,6 @@ export const sitemap = [ href: "/docs", icon: faSquareInfo, }, - { - title: "Use Cases", - icon: faLightbulb, - collapsible: true, - pages: [ - { title: "AI Agents", href: "/docs/use-cases/ai-agents" }, - { title: "Realtime", href: "/docs/use-cases/realtime" }, - { title: "Durable Compute", href: "/docs/use-cases/durable-compute" }, - { title: "Per-Tenant Databases", href: "/docs/use-cases/per-tenant-databases" }, - { title: "Rate Limiting", href: "/docs/use-cases/rate-limiting" }, - { title: "Bots", href: "/docs/use-cases/bots" }, - ] - }, ] }, { @@ -130,19 +121,40 @@ export const sitemap = [ ] }, { - title: "Deploy", - pages: deployHosts.map(({ title, href, icon, badge }) => ({ - title, - href, - icon, - badge, - })), + title: "Use Cases", + pages: [ + ...useCases.slice(0, 3).map(({ title, href, icon }) => ({ + title, + href, + icon, + })), + { + title: "More", + collapsible: true, + pages: useCases.slice(3).map(({ title, href, icon }) => ({ + title, + href, + icon, + })), + }, + ], }, { title: "Reference", pages: [ { - title: "Cloud", + title: "Deploy", + icon: faUpload, + collapsible: true, + pages: deployHosts.map(({ title, href, icon, badge }) => ({ + title, + href, + icon, + badge, + })), + }, + { + title: "Rivet Cloud", icon: faCloud, collapsible: true, pages: [ @@ -268,7 +280,7 @@ export const sitemap = [ { title: "Next.js", href: "/docs/actors/quickstart/next-js", - icon: nextjs, + icon: faNextjs, }, { title: "Cloudflare Workers", @@ -487,7 +499,7 @@ export const sitemap = [ { title: "Next.js", href: "/docs/clients/next-js", - icon: nextjs, + icon: faNextjs, }, { title: "Rust",