@nori-ui/core 1.0.6 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2UXKXUX2.js +286 -0
- package/dist/chunk-2UXKXUX2.js.map +1 -0
- package/dist/{chunk-DDGMLLS3.js → chunk-46OT4PA6.js} +3 -3
- package/dist/{chunk-DDGMLLS3.js.map → chunk-46OT4PA6.js.map} +1 -1
- package/dist/{chunk-SFNDR6DI.js → chunk-5BM6H2CD.js} +3 -3
- package/dist/{chunk-SFNDR6DI.js.map → chunk-5BM6H2CD.js.map} +1 -1
- package/dist/{chunk-EWWQQ5DB.js → chunk-6JVUVBZH.js} +5 -5
- package/dist/{chunk-EWWQQ5DB.js.map → chunk-6JVUVBZH.js.map} +1 -1
- package/dist/{chunk-FT2XBBQJ.js → chunk-6PO2IWB3.js} +8 -5
- package/dist/chunk-6PO2IWB3.js.map +1 -0
- package/dist/{chunk-YNKKEO2A.js → chunk-7D2BHQ6M.js} +3 -3
- package/dist/{chunk-YNKKEO2A.js.map → chunk-7D2BHQ6M.js.map} +1 -1
- package/dist/{chunk-MRJWPRCX.js → chunk-AFQIK6JI.js} +3 -3
- package/dist/{chunk-MRJWPRCX.js.map → chunk-AFQIK6JI.js.map} +1 -1
- package/dist/{chunk-IKLA2CVQ.js → chunk-C6TRLHMW.js} +21 -5
- package/dist/chunk-C6TRLHMW.js.map +1 -0
- package/dist/{chunk-NRYWNOG5.js → chunk-CGQIVFCN.js} +3 -3
- package/dist/{chunk-NRYWNOG5.js.map → chunk-CGQIVFCN.js.map} +1 -1
- package/dist/chunk-EFK7726V.js +104 -0
- package/dist/chunk-EFK7726V.js.map +1 -0
- package/dist/{chunk-3BDDPFCI.js → chunk-FDBQOQMW.js} +3 -3
- package/dist/{chunk-3BDDPFCI.js.map → chunk-FDBQOQMW.js.map} +1 -1
- package/dist/{chunk-XALU6LOT.js → chunk-GELLSU64.js} +3 -3
- package/dist/{chunk-XALU6LOT.js.map → chunk-GELLSU64.js.map} +1 -1
- package/dist/{chunk-BZLT6R62.js → chunk-GRDVE3IR.js} +3 -3
- package/dist/{chunk-BZLT6R62.js.map → chunk-GRDVE3IR.js.map} +1 -1
- package/dist/{chunk-OMU4R4Y5.js → chunk-HTF6FDB6.js} +3 -3
- package/dist/{chunk-OMU4R4Y5.js.map → chunk-HTF6FDB6.js.map} +1 -1
- package/dist/{chunk-X7APG7G2.js → chunk-HZKXPN6B.js} +154 -34
- package/dist/chunk-HZKXPN6B.js.map +1 -0
- package/dist/{chunk-WGT345SV.js → chunk-IGLMPAWE.js} +3 -3
- package/dist/{chunk-WGT345SV.js.map → chunk-IGLMPAWE.js.map} +1 -1
- package/dist/{chunk-5XEGZFG5.js → chunk-LWQZ257T.js} +3 -3
- package/dist/{chunk-5XEGZFG5.js.map → chunk-LWQZ257T.js.map} +1 -1
- package/dist/{chunk-RFW5SRZA.js → chunk-MJ4AGXS7.js} +3 -3
- package/dist/{chunk-RFW5SRZA.js.map → chunk-MJ4AGXS7.js.map} +1 -1
- package/dist/{chunk-PNP7L4TA.js → chunk-RM5TSXVE.js} +3 -3
- package/dist/{chunk-PNP7L4TA.js.map → chunk-RM5TSXVE.js.map} +1 -1
- package/dist/{chunk-MKSDYRWQ.js → chunk-SINLREQV.js} +3 -3
- package/dist/{chunk-MKSDYRWQ.js.map → chunk-SINLREQV.js.map} +1 -1
- package/dist/{chunk-TLS54G6Y.js → chunk-UF5OENHV.js} +3 -3
- package/dist/{chunk-TLS54G6Y.js.map → chunk-UF5OENHV.js.map} +1 -1
- package/dist/{chunk-ZQMNGPLE.js → chunk-UJ5KFRDE.js} +18 -6
- package/dist/chunk-UJ5KFRDE.js.map +1 -0
- package/dist/{chunk-SWC5CNKE.js → chunk-UPVNZPFV.js} +3 -3
- package/dist/{chunk-SWC5CNKE.js.map → chunk-UPVNZPFV.js.map} +1 -1
- package/dist/{chunk-3F4TXKDY.js → chunk-UUXWRDWW.js} +3 -3
- package/dist/chunk-UUXWRDWW.js.map +1 -0
- package/dist/{chunk-7GPDNQSX.js → chunk-V2AWSDDZ.js} +5 -5
- package/dist/{chunk-7GPDNQSX.js.map → chunk-V2AWSDDZ.js.map} +1 -1
- package/dist/{chunk-JQQ3FBN7.js → chunk-VCJF75T2.js} +3 -3
- package/dist/{chunk-JQQ3FBN7.js.map → chunk-VCJF75T2.js.map} +1 -1
- package/dist/{chunk-ZBW3BA5R.js → chunk-VMAGFYHG.js} +39 -4
- package/dist/chunk-VMAGFYHG.js.map +1 -0
- package/dist/{chunk-JZ774T7U.js → chunk-W3HMOOON.js} +3 -3
- package/dist/{chunk-JZ774T7U.js.map → chunk-W3HMOOON.js.map} +1 -1
- package/dist/{chunk-6AD6KCVB.js → chunk-WAKKQROH.js} +3 -3
- package/dist/{chunk-6AD6KCVB.js.map → chunk-WAKKQROH.js.map} +1 -1
- package/dist/{chunk-LVWNMQGR.js → chunk-WDNDTSNX.js} +5 -5
- package/dist/{chunk-LVWNMQGR.js.map → chunk-WDNDTSNX.js.map} +1 -1
- package/dist/chunk-WOF67PKT.js +60 -0
- package/dist/chunk-WOF67PKT.js.map +1 -0
- package/dist/{chunk-QJNV7YQP.js → chunk-WTNDPO2V.js} +39 -4
- package/dist/chunk-WTNDPO2V.js.map +1 -0
- package/dist/chunk-XBNVKPJN.js +343 -0
- package/dist/chunk-XBNVKPJN.js.map +1 -0
- package/dist/{chunk-FEPTH5RV.js → chunk-XP55RZ3D.js} +3 -3
- package/dist/{chunk-FEPTH5RV.js.map → chunk-XP55RZ3D.js.map} +1 -1
- package/dist/{chunk-CCUXO2HN.js → chunk-Y4ZRSW35.js} +3 -3
- package/dist/{chunk-CCUXO2HN.js.map → chunk-Y4ZRSW35.js.map} +1 -1
- package/dist/client.cjs +948 -123
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +3 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.js +42 -39
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Alert/index.js +2 -2
- package/dist/components/AlertDialog/index.js +2 -2
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Box/index.js +4 -4
- package/dist/components/Breadcrumb/index.cjs +6 -3
- package/dist/components/Breadcrumb/index.cjs.map +1 -1
- package/dist/components/Breadcrumb/index.js +5 -5
- package/dist/components/Button/index.js +2 -2
- package/dist/components/Calendar/index.cjs +170 -35
- package/dist/components/Calendar/index.cjs.map +1 -1
- package/dist/components/Calendar/index.js +5 -5
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Checkbox/index.cjs +36 -1
- package/dist/components/Checkbox/index.cjs.map +1 -1
- package/dist/components/Checkbox/index.d.cts +17 -1
- package/dist/components/Checkbox/index.d.ts +17 -1
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/DatePicker/index.cjs +3875 -0
- package/dist/components/DatePicker/index.cjs.map +1 -0
- package/dist/components/DatePicker/index.d.cts +58 -0
- package/dist/components/DatePicker/index.d.ts +58 -0
- package/dist/components/DatePicker/index.js +14 -0
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/Field/index.cjs +703 -0
- package/dist/components/Field/index.cjs.map +1 -0
- package/dist/components/Field/index.d.cts +51 -0
- package/dist/components/Field/index.d.ts +51 -0
- package/dist/components/Field/index.js +9 -0
- package/dist/components/Field/index.js.map +1 -0
- package/dist/components/FloatButton/index.cjs +6 -3
- package/dist/components/FloatButton/index.cjs.map +1 -1
- package/dist/components/FloatButton/index.js +5 -5
- package/dist/components/HStack/index.js +4 -4
- package/dist/components/InputGroup/index.cjs.map +1 -1
- package/dist/components/InputGroup/index.d.cts +8 -1
- package/dist/components/InputGroup/index.d.ts +8 -1
- package/dist/components/InputGroup/index.js +2 -2
- package/dist/components/Label/index.cjs +458 -0
- package/dist/components/Label/index.cjs.map +1 -0
- package/dist/components/Label/index.d.cts +14 -0
- package/dist/components/Label/index.d.ts +14 -0
- package/dist/components/Label/index.js +8 -0
- package/dist/components/Label/index.js.map +1 -0
- package/dist/components/Pagination/index.cjs +21 -6
- package/dist/components/Pagination/index.cjs.map +1 -1
- package/dist/components/Pagination/index.js +5 -5
- package/dist/components/Popover/index.js +2 -2
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/Radio/index.cjs +18 -2
- package/dist/components/Radio/index.cjs.map +1 -1
- package/dist/components/Radio/index.d.cts +17 -1
- package/dist/components/Radio/index.d.ts +17 -1
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/SegmentedControl/index.js +2 -2
- package/dist/components/Select/index.cjs +15 -3
- package/dist/components/Select/index.cjs.map +1 -1
- package/dist/components/Select/index.d.cts +6 -0
- package/dist/components/Select/index.d.ts +6 -0
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Switch/index.cjs +36 -1
- package/dist/components/Switch/index.cjs.map +1 -1
- package/dist/components/Switch/index.d.cts +17 -1
- package/dist/components/Switch/index.d.ts +17 -1
- package/dist/components/Switch/index.js +2 -2
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/index.js +2 -2
- package/dist/components/TextArea/index.cjs +35 -84
- package/dist/components/TextArea/index.cjs.map +1 -1
- package/dist/components/TextArea/index.js +3 -3
- package/dist/components/TextInput/index.cjs +35 -84
- package/dist/components/TextInput/index.cjs.map +1 -1
- package/dist/components/TextInput/index.d.cts +7 -8
- package/dist/components/TextInput/index.d.ts +7 -8
- package/dist/components/TextInput/index.js +2 -2
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/VStack/index.js +4 -4
- package/dist/i18n/index.cjs +6 -3
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.cjs +948 -123
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +39 -36
- package/package.json +8 -1
- package/dist/chunk-3F4TXKDY.js.map +0 -1
- package/dist/chunk-FT2XBBQJ.js.map +0 -1
- package/dist/chunk-IKLA2CVQ.js.map +0 -1
- package/dist/chunk-QJNV7YQP.js.map +0 -1
- package/dist/chunk-X7APG7G2.js.map +0 -1
- package/dist/chunk-ZBW3BA5R.js.map +0 -1
- package/dist/chunk-ZQMNGPLE.js.map +0 -1
- package/dist/chunk-ZRD4FQBT.js +0 -153
- package/dist/chunk-ZRD4FQBT.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/i18n/locale.tsx","../src/components/Calendar/state/locale-utils.ts","../src/components/Calendar/state/use-calendar-keyboard.ts","../src/components/Calendar/state/constraints.ts","../src/components/Calendar/state/use-calendar-state.ts","../src/components/Calendar/state/use-range-state.ts","../src/components/Calendar/state/use-caption.tsx","../src/components/Calendar/view/Caption.tsx","../src/components/Calendar/view/DayCell.tsx","../src/components/Calendar/view/DayGrid.tsx","../src/components/Calendar/view/Footer.tsx","../src/components/Calendar/view/MonthGrid.tsx","../src/components/Calendar/view/YearGrid.tsx","../src/components/Calendar/Calendar.tsx"],"names":["useMemo","useCallback","useState","createContext","jsx","useContext","RNText","Pressable","jsxs","View","today","getLocalTimeZone","ROW_KEYS","initialFocus","Fragment"],"mappings":";;;;;;;;;AAYO,IAAM,+BAAe,MAAA,CAAA,MAAc;AACtC,EAAA,IAAI;AACA,IAAA,OAAO,IAAI,IAAA,CAAK,cAAA,EAAe,CAAE,iBAAgB,CAAE,MAAA;AAAA,EACvD,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,OAAA;AAAA,EACX;AACJ,CAAA,EAN4B,cAAA;AAQ5B,IAAM,KAAA,mBAAQ,MAAA,CAAA,CAAC,KAAA,KACX,KAAA,KAAU,MAAA,GAAY,YAAA,EAAa,GAAI,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,KAAA,CAAM,UAAS,EADhF,OAAA,CAAA;AAGd,IAAM,aAAA,GAAgB,cAA6B,IAAI,CAAA;AACvD,aAAA,CAAc,WAAA,GAAc,eAAA;AAOrB,IAAM,cAAA,mBAAiB,MAAA,CAAA,CAAC,EAAE,MAAA,EAAQ,UAAS,KAA2B;AACzE,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM,KAAA,CAAM,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACnD,EAAA,uBAAO,GAAA,CAAC,aAAA,CAAc,QAAA,EAAd,EAAuB,OAAe,QAAA,EAAS,CAAA;AAC3D,CAAA,EAH8B,gBAAA;AAKvB,IAAM,4BAAY,MAAA,CAAA,MAAc;AACnC,EAAA,MAAM,GAAA,GAAM,WAAW,aAAa,CAAA;AACpC,EAAA,OAAO,OAAO,YAAA,EAAa;AAC/B,CAAA,EAHyB,WAAA;;;ACpBlB,IAAM,iBAAA,2BAAqB,MAAA,KAA8B;AAC5D,EAAA,IAAI;AAEA,IAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAClC,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,WAAA,IAAc,IAAK,GAAA,CAAI,QAAA;AACxC,IAAA,IAAI,OAAO,IAAA,EAAM,QAAA,KAAa,QAAA,EAAU;AAEpC,MAAA,OAAQ,IAAA,CAAK,QAAA,KAAa,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,QAAA;AAAA,IAC3C;AAAA,EACJ,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,kBAAA,CAAmB,MAAM,CAAA,IAAK,kBAAA,CAAmB,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAE,CAAA,IAAK,CAAA;AAC3F,CAAA,EAdiC,mBAAA,CAAA;AAqBjC,IAAM,kBAAA,GAAgD;AAAA,EAClD,EAAA,EAAI,CAAA;AAAA,EACJ,OAAA,EAAS,CAAA;AAAA,EACT,OAAA,EAAS,CAAA;AAAA,EACT,OAAA,EAAS,CAAA;AAAA,EACT,OAAA,EAAS,CAAA;AAAA,EACT,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AASO,IAAM,cAAA,2BAAkB,MAAA,KAA2C;AACtE,EAAA,IAAI;AAEA,IAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAClC,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,WAAA,IAAc,IAAK,GAAA,CAAI,QAAA;AACxC,IAAA,IAAI,IAAA,EAAM,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAE3E,MAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAe,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAe,CAAA;AAC7E,MAAA,OAAO,CAAC,GAAG,CAAC,CAAA;AAAA,IAChB;AAAA,EACJ,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,gBAAA,CAAiB,MAAM,CAAA,IAAK,gBAAA,CAAiB,OAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,EAAE,CAAA,IAAK,CAAC,GAAG,CAAC,CAAA;AAC5F,CAAA,EAd8B,gBAAA,CAAA;AAgB9B,IAAM,gBAAA,GAA2D;AAAA,EAC7D,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,OAAA,EAAS,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACd,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACT,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACT,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACT,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,EACT,EAAA,EAAI,CAAC,CAAA,EAAG,CAAC;AACb,CAAA;AAMO,IAAM,kBAAA,mBAAqB,MAAA,CAAA,CAAC,MAAA,EAAgB,MAAA,GAA6B,OAAA,KAAsB;AAClG,EAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,cAAA,CAAe,QAAQ,EAAE,OAAA,EAAS,QAAQ,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,kBAAkB,MAAM,CAAA;AAEtC,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,GAAE,EAAG,CAAC,GAAG,CAAA,KAAM;AACvC,IAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAA,EAAG,CAAA,GAAA,CAAM,KAAA,GAAQ,CAAA,IAAK,CAAE,CAAC,CAAA;AAC3D,IAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA;AAAA,EACvB,CAAC,CAAA;AACL,CAAA,EARkC,oBAAA,CAAA;AAW3B,IAAM,oBAAA,mBAAuB,MAAA,CAAA,CAAC,IAAA,EAAoB,MAAA,KAA2B;AAChF,EAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,CAAA;AAC9E,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AACxC,CAAA,EAHoC,sBAAA,CAAA;AAM7B,IAAM,gBAAA,2BAAoB,MAAA,KAA6B;AAC1D,EAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,cAAA,CAAe,QAAQ,EAAE,KAAA,EAAO,QAAQ,CAAA;AAC7D,EAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,IAAG,EAAG,CAAC,GAAG,CAAA,KAAM,GAAA,CAAI,OAAO,IAAI,IAAA,CAAK,KAAK,GAAA,CAAI,IAAA,EAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AAC3F,CAAA,EAHgC,kBAAA,CAAA;AC7FzB,IAAM,mBAAA,2BAAuB,KAAA,KAAoC;AACpE,EAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAW,UAAA,EAAY,cAAA,GAAiB,GAAE,GAAI,KAAA;AAEnE,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IACd,CAAC,KAAA,KAA+B;AAC5B,MAAA,MAAM,UAAA,GAAa,WAAA,CAAY,MAAA,CAAO,KAAK,EAAE,SAAA,EAAU;AAEvD,MAAA,QAAQ,MAAM,GAAA;AAAK,QACf,KAAK,WAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,EAAE,IAAA,EAAM,EAAA,EAAI,CAAA;AACtB,UAAA;AAAA,QACJ,KAAK,YAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,EAAE,IAAA,EAAM,CAAA,EAAG,CAAA;AACrB,UAAA;AAAA,QACJ,KAAK,SAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,EAAE,KAAA,EAAO,EAAA,EAAI,CAAA;AACvB,UAAA;AAAA,QACJ,KAAK,WAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA;AACtB,UAAA;AAAA,QACJ,KAAK,QAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,KAAA,CAAM,WAAW,EAAE,KAAA,EAAO,IAAG,GAAI,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAA;AACzD,UAAA;AAAA,QACJ,KAAK,UAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,SAAA,CAAU,KAAA,CAAM,WAAW,EAAE,KAAA,EAAO,GAAE,GAAI,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAA;AACvD,UAAA;AAAA,QACJ,KAAK,MAAA,EAAQ;AACT,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAM,IAAA,GAAA,CAAQ,UAAA,GAAa,cAAA,GAAiB,CAAA,IAAK,CAAA;AACjD,UAAA,SAAA,CAAU,EAAE,IAAA,EAAM,CAAC,IAAA,EAAM,CAAA;AACzB,UAAA;AAAA,QACJ;AAAA,QACA,KAAK,KAAA,EAAO;AACR,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAM,IAAA,GAAA,CAAQ,UAAA,GAAa,cAAA,GAAiB,CAAA,IAAK,CAAA;AACjD,UAAA,MAAM,UAAU,CAAA,GAAI,IAAA;AACpB,UAAA,SAAA,CAAU,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAC3B,UAAA;AAAA,QACJ;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACD,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,UAAA,CAAW,aAAa,UAAU,CAAA;AAClC,UAAA;AAAA,QACJ;AACI,UAAA;AAAA;AACR,IACJ,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,cAAA,EAAgB,SAAA,EAAW,UAAU;AAAA,GACvD;AAEA,EAAA,OAAO,EAAE,SAAA,EAAU;AACvB,CAAA,EA1DmC,qBAAA,CAAA;;;ACVnC,IAAM,sBAAM,MAAA,CAAA,CAAC,CAAA,EAAiB,MAA4B,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAzD,KAAA,CAAA;AAEL,IAAM,YAAA,mBAAe,MAAA,CAAA,CAAC,IAAA,EAAoB,MAAA,GAAqD,EAAC,KAAe;AAClH,EAAA,IAAI,OAAO,QAAA,IAAY,GAAA,CAAI,MAAM,MAAA,CAAO,QAAQ,IAAI,CAAA,EAAG;AACnD,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,IAAI,OAAO,QAAA,IAAY,GAAA,CAAI,MAAM,MAAA,CAAO,QAAQ,IAAI,CAAA,EAAG;AACnD,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,OAAO,KAAA;AACX,CAAA,EAR4B,cAAA,CAAA;AAerB,IAAM,kBAAA,mBACT,MAAA,CAAA,CAAC,CAAA,KACD,CAAC,IAAA,KAAgC;AAC7B,EAAA,IAAI,YAAA,CAAa,IAAA,EAAM,CAAC,CAAA,EAAG;AACvB,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,IAAI,CAAA,CAAE,iBAAA,GAAoB,IAAI,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,OAAO,KAAA;AACX,CAAA,EATA,oBAAA,CAAA;;;ACWJ,IAAM,YAAA,mBAAe,MAAA,CAAA,CACjB,IAAA,EACA,KAAA,EACA,QAAA,KACe;AACf,EAAA,IAAI,CAAC,KAAA,EAAO;AACR,IAAA,OAAO,QAAA;AAAA,EACX;AACA,EAAA,IAAI,SAAS,QAAA,EAAU;AACnB,IAAA,OAAQ,KAAA,IAAiC,QAAA;AAAA,EAC7C;AACA,EAAA,IAAI,SAAS,OAAA,EAAS;AAClB,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,OAAO,GAAG,KAAA,IAAS,QAAA;AAAA,EACvB;AACA,EAAA,MAAM,GAAA,GAAM,KAAA;AACZ,EAAA,OAAO,GAAA,CAAI,CAAC,CAAA,IAAK,QAAA;AACrB,CAAA,EAjBqB,cAAA,CAAA;AAmBd,IAAM,gBAAA,2BACT,KAAA,KAC4B;AAC5B,EAAA,MAAM,IAAA,GAAQ,MAAM,IAAA,IAAQ,QAAA;AAC5B,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,gBAAA,EAAkB,CAAA;AAEzC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAA2B,MAAM;AACvE,IAAA,IAAI,KAAA,CAAM,UAAU,MAAA,EAAW;AAC3B,MAAA,OAAO,KAAA,CAAM,KAAA;AAAA,IACjB;AACA,IAAA,IAAI,KAAA,CAAM,iBAAiB,MAAA,EAAW;AAClC,MAAA,OAAO,KAAA,CAAM,YAAA;AAAA,IACjB;AACA,IAAA,OAAQ,IAAA,KAAS,UAAA,GAAa,EAAC,GAAI,IAAA;AAAA,EACvC,CAAC,CAAA;AACD,EAAA,MAAM,YAAA,GAAe,MAAM,KAAA,KAAU,MAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,YAAA,GAAgB,KAAA,CAAM,KAAA,GAA6B,aAAA;AAEjE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAI,QAAA,CAAuB,KAAA,CAAM,eAAe,KAAK,CAAA;AACzF,EAAA,MAAM,gBAAA,GAAmB,MAAM,IAAA,KAAS,MAAA;AACxC,EAAA,MAAM,IAAA,GAAO,gBAAA,GAAoB,KAAA,CAAM,IAAA,GAAwB,YAAA;AAE/D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA,CAAuB,MAAM,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEtG,EAAA,MAAM,aAAA,GAAgBA,OAAAA;AAAA,IAClB,MACI,kBAAA,CAAmB;AAAA,MACf,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,MACnE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,MACnE,GAAI,MAAM,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,KAAA,CAAM,iBAAA,EAAkB,GAAI;AAAC,KACjG,CAAA;AAAA,IACL,CAAC,KAAA,CAAM,QAAA,EAAU,KAAA,CAAM,QAAA,EAAU,MAAM,iBAAiB;AAAA,GAC5D;AAEA,EAAA,MAAM,OAAA,GAAUC,WAAAA;AAAA,IACZ,CAAC,IAAA,KAAuB;AACpB,MAAA,IAAI,CAAC,gBAAA,EAAkB;AACnB,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACxB;AACA,MAAA,KAAA,CAAM,eAAe,IAAI,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,gBAAA,EAAkB,KAAA,CAAM,YAAY;AAAA,GACzC;AAEA,EAAA,MAAM,SAAA,GAAYA,WAAAA;AAAA,IACd,CAAC,KAAA,KAAsB;AACnB,MAAA,cAAA,CAAe,CAAC,GAAA,KAAQ;AACpB,QAAA,IAAI,IAAA,GAAO,GAAA;AACX,QAAA,IAAI,MAAM,IAAA,EAAM;AACZ,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AAAA,QACxC;AACA,QAAA,IAAI,MAAM,KAAA,EAAO;AACb,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,IAAI,MAAM,MAAA,EAAQ;AACd,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC5C;AACA,QAAA,IAAI,MAAM,KAAA,EAAO;AACb,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,IAAI,CAAC,aAAA,CAAc,IAAI,CAAA,EAAG;AACtB,UAAA,OAAO,IAAA;AAAA,QACX;AAKA,QAAA,MAAM,UAAA,GAAA,CACD,KAAA,CAAM,IAAA,IAAQ,CAAA,IAAA,CAAM,MAAM,KAAA,IAAS,CAAA,IAAK,CAAA,GAAA,CAAK,KAAA,CAAM,MAAA,IAAU,CAAA,IAAK,EAAA,GAAA,CAAM,KAAA,CAAM,SAAS,CAAA,IAAK,GAAA;AACjG,QAAA,MAAM,IAAA,GAAO,UAAA,IAAc,CAAA,GAAI,CAAA,GAAI,EAAA;AACnC,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,EAAK;AAC3B,UAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,EAAE,IAAA,EAAM,IAAA,GAAO,GAAG,CAAA;AAC7C,UAAA,IAAI,CAAC,aAAA,CAAc,SAAS,CAAA,EAAG;AAC3B,YAAA,OAAO,SAAA;AAAA,UACX;AAAA,QACJ;AACA,QAAA,OAAO,GAAA;AAAA,MACX,CAAC,CAAA;AAAA,IACL,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAClB;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA;AAAA,IACf,CAAC,MAAoB,MAAA,KAAiC;AAClD,MAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG;AACrB,QAAA;AAAA,MACJ;AACA,MAAA,MAAM,IAAA,GAAmB,EAAE,IAAA,EAAM,MAAA,EAAO;AACxC,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,SAAS,QAAA,EAAU;AACnB,QAAA,IAAA,GAAO,IAAA;AAAA,MACX,CAAA,MAAA,IAAW,SAAS,UAAA,EAAY;AAC5B,QAAA,MAAM,GAAA,GAAO,SAA4B,EAAC;AAC1C,QAAA,MAAM,MAAA,GAAS,IAAI,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAC,CAAA;AACpD,QAAA,IAAA,GAAQ,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAC,CAAA,GAAI,CAAC,GAAG,KAAK,IAAI,CAAA;AAAA,MAC7E,CAAA,MAAO;AAEH,QAAA;AAAA,MACJ;AACA,MAAA,IAAI,CAAC,YAAA,EAAc;AACf,QAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,MACzB;AACA,MAAA,KAAA,CAAM,QAAA,GAAW,MAAM,IAAI,CAAA;AAC3B,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,aAAA,EAAe,MAAM,KAAA,CAAM,QAAA,EAAU,OAAO,IAAI;AAAA,GACnE;AAEA,EAAA,OAAO;AAAA,IACH,KAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACJ;AACJ,CAAA,EAtHgC,kBAAA,CAAA;AChChC,IAAM,wBAAQ,MAAA,CAAA,CAAC,CAAA,EAAiB,CAAA,KAAmD,CAAA,CAAE,QAAQ,CAAC,CAAA,IAAK,CAAA,GAAI,CAAC,GAAG,CAAC,CAAA,GAAI,CAAC,CAAA,EAAG,CAAC,CAAA,EAAvG,OAAA,CAAA;AAEd,IAAM,aAAA,mBAAgB,MAAA,CAAA,CAAC,CAAA,EAAiB,CAAA,KAA4B;AAChE,EAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAI,KAAA,CAAM,GAAG,CAAC,CAAA;AAChC,EAAA,OAAO,IAAA,CAAK,KAAA,CAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,EAAQ,GAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,MAAa,KAAQ,CAAA;AAC/F,CAAA,EAHsB,eAAA,CAAA;AAKf,IAAM,aAAA,2BAAiB,KAAA,KAAmD;AAC7E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAIC,QAAAA,CAA2B,KAAA,CAAM,gBAAgB,IAAI,CAAA;AACrF,EAAA,MAAM,YAAA,GAAe,MAAM,KAAA,KAAU,MAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,YAAA,GAAgB,KAAA,CAAM,KAAA,IAAS,IAAA,GAAQ,QAAA;AAErD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAA8B,IAAI,CAAA;AAExE,EAAA,MAAM,aAAA,GAAgBF,OAAAA;AAAA,IAClB,MACI,kBAAA,CAAmB;AAAA,MACf,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,MACnE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,MACnE,GAAI,MAAM,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,KAAA,CAAM,iBAAA,EAAkB,GAAI;AAAC,KACjG,CAAA;AAAA,IACL,CAAC,KAAA,CAAM,QAAA,EAAU,KAAA,CAAM,QAAA,EAAU,MAAM,iBAAiB;AAAA,GAC5D;AAEA,EAAA,MAAM,MAAA,GAASC,WAAAA;AAAA,IACX,CAAC,MAAwB,MAAA,KAAiC;AACtD,MAAA,IAAI,CAAC,YAAA,EAAc;AACf,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MACpB;AACA,MAAA,KAAA,CAAM,WAAW,IAAA,EAAM,EAAE,IAAA,EAAM,KAAA,EAAO,QAAQ,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,KAAA,CAAM,QAAQ;AAAA,GACjC;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA;AAAA,IACf,CAAC,IAAA,EAAoB,MAAA,GAA+B,OAAA,KAAY;AAC5D,MAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG;AACrB,QAAA;AAAA,MACJ;AAGA,MAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,GAAA,KAAQ,IAAA,EAAM;AAC9B,QAAA,MAAA,CAAO,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAK,IAAA,IAAQ,MAAM,CAAA;AACzC,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA;AAAA,MACJ;AAGA,MAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAC9C,MAAA,IAAI,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,MAAA,GAAS,MAAM,SAAA,EAAW;AAC3D,QAAA;AAAA,MACJ;AACA,MAAA,IAAI,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,MAAA,GAAS,MAAM,SAAA,EAAW;AAC3D,QAAA;AAAA,MACJ;AAEA,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,IAAI,KAAA,CAAM,KAAA,CAAM,OAAO,IAAI,CAAA;AAC5C,MAAA,MAAA,CAAO,EAAE,KAAA,EAAO,GAAA,EAAI,EAAG,MAAM,CAAA;AAC7B,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACvB,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,aAAA,EAAe,MAAM,SAAA,EAAW,KAAA,CAAM,WAAW,KAAK;AAAA,GACnE;AAEA,EAAA,MAAM,YAAA,GAAeD,QAA0B,MAAM;AACjD,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,GAAA,KAAQ,IAAA,IAAQ,CAAC,WAAA,EAAa;AAC9C,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,MAAM,CAAC,KAAA,EAAO,GAAG,IAAI,KAAA,CAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AACnD,IAAA,OAAO,EAAE,OAAO,GAAA,EAAI;AAAA,EACxB,CAAA,EAAG,CAAC,WAAA,EAAa,KAAK,CAAC,CAAA;AAEvB,EAAA,OAAO;AAAA,IACH,KAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACJ;AACJ,CAAA,EAxE6B,eAAA,CAAA;ACA7B,IAAM,cAAA,GAAiBG,cAA0C,IAAI,CAAA;AACrE,cAAA,CAAe,WAAA,GAAc,wBAAA;AAOtB,IAAM,eAAA,mBAAkB,MAAA,CAAA,CAAC,EAAE,KAAA,EAAO,QAAA,EAAS,qBAC9CC,GAAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EAAe,UAAS,CAAA,EADtB,iBAAA,CAAA;AAWxB,IAAM,qCAAqB,MAAA,CAAA,MAA2B;AACzD,EAAA,MAAM,GAAA,GAAMC,WAAW,cAAc,CAAA;AACrC,EAAA,IAAI,CAAC,GAAA,EAAK;AACN,IAAA,MAAM,IAAI,MAAM,iFAAiF,CAAA;AAAA,EACrG;AACA,EAAA,OAAO,GAAA;AACX,CAAA,EANkC,oBAAA;ACrClC,IAAM,gBAAA,GAAmB,CAAA;AAgCzB,IAAM,4BAAY,MAAA,CAAA,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,UAAS,KAAsB;AAChE,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,uBACID,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACG,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,KAAA;AAAA,MACpB,OAAA;AAAA,MACA,OAAO,CAAC,EAAE,OAAA,EAAS,OAAA,EAAS,SAAQ,KAAkE;AAClG,QAAA,MAAM,IAAA,GAAkB;AAAA,UACpB,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,YAAA,EAAc;AAAA,SAClB;AACA,QAAA,MAAM,UAAA,GAAa;AAAA,UACf,kBAAA,EAAoB,2CAAA;AAAA,UACpB,kBAAA,EAAoB,OAAA;AAAA,UACpB,wBAAA,EAA0B,4BAAA;AAAA,UAC1B,YAAA,EAAc;AAAA,SAClB;AACA,QAAA,MAAM,EAAA,GAAK,OAAA,GACL,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAC1B,OAAA,GACE,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAC1B,aAAA;AACR,QAAA,MAAM,MAAA,GAAS,OAAA,GACT,EAAE,WAAA,EAAa,CAAA,EAAG,WAAA,EAAa,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,OAAA,EAAQ,GACnE,EAAE,aAAa,CAAA,EAAE;AACvB,QAAA,OAAO,CAAC,IAAA,EAAM,UAAA,EAAY,EAAE,eAAA,EAAiB,IAAI,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,UAAU,IAAA,GAAO,CAAA,EAAG,CAAA,IAAK,MAAM,CAAA;AAAA,MACzG,CAAA;AAAA,MAEA,0BAAAA,GAAAA,CAACE,IAAA,EAAA,EAAO,KAAA,EAAO,EAAE,OAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS,UAAU,EAAA,EAAI,UAAA,EAAY,IAAI,UAAA,EAAY,KAAA,IAC3F,QAAA,EACL;AAAA;AAAA,GACJ;AAER,CAAA,EArCkB,WAAA,CAAA;AAuClB,IAAM,8BAAc,MAAA,CAAA,CAAC;AAAA,EACjB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACJ,CAAA,KAKM;AACF,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,uBACIF,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,EAAE,iBAAA,EAAmB,EAAA,EAAI,eAAA,EAAiB,CAAA,EAAG,UAAA,EAAY,QAAA,EAAS,EAC3E,QAAA,kBAAAA,GAAAA;AAAA,MAACE,IAAA;AAAA,MAAA;AAAA,QACG,KAAA,EAAO;AAAA,UACH,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,OAAA;AAAA,UAC5B,QAAA,EAAU,EAAA;AAAA,UACV,UAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAe;AAAA,SACnB;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACL,EACJ,CAAA;AAAA,EAER;AACA,EAAA,uBACI,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACG,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,SAAA;AAAA,MACpB,OAAA;AAAA,MACA,OAAO,CAAC,EAAE,OAAA,EAAS,OAAA,EAAS,SAAQ,KAAkE;AAClG,QAAA,MAAM,IAAA,GAAkB;AAAA,UACpB,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,CAAA;AAAA,UACL,iBAAA,EAAmB,EAAA;AAAA,UACnB,eAAA,EAAiB,CAAA;AAAA,UACjB,YAAA,EAAc;AAAA,SAClB;AACA,QAAA,MAAM,UAAA,GAAa;AAAA,UACf,kBAAA,EAAoB,6BAAA;AAAA,UACpB,kBAAA,EAAoB,OAAA;AAAA,UACpB,wBAAA,EAA0B,4BAAA;AAAA,UAC1B,YAAA,EAAc;AAAA,SAClB;AACA,QAAA,MAAM,EAAA,GAAK,OAAA,GACL,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAC1B,OAAA,GACE,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAC1B,aAAA;AACR,QAAA,MAAM,MAAA,GAAS,OAAA,GACT,EAAE,WAAA,EAAa,CAAA,EAAG,WAAA,EAAa,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,OAAA,EAAQ,GACnE,EAAE,aAAa,CAAA,EAAE;AACvB,QAAA,OAAO,CAAC,IAAA,EAAM,UAAA,EAAY,EAAE,eAAA,EAAiB,IAAI,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,UAAU,IAAA,GAAO,CAAA,EAAG,CAAA,IAAK,MAAM,CAAA;AAAA,MACzG,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAACE,IAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,OAAA;AAAA,cAC5B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,KAAA;AAAA,cACZ,aAAA,EAAe;AAAA,aACnB;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACL;AAAA,QACC,4BACGF,GAAAA,CAACE,QAAO,aAAA,EAAW,IAAA,EAAC,OAAO,EAAE,KAAA,EAAO,OAAO,QAAA,CAAS,IAAA,CAAK,OAAO,QAAA,EAAU,EAAA,EAAI,SAAS,GAAA,EAAI,EAAG,oBAE9F,CAAA,GACA;AAAA;AAAA;AAAA,GACR;AAER,CAAA,EA5EoB,aAAA,CAAA;AA8Eb,IAAM,0BAAU,MAAA,CAAA,CAAC;AAAA,EACpB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA;AACJ,CAAA,KAAoB;AAChB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,MAAM,SAAA,2BAAa,CAAA,KAAoB;AACnC,IAAA,IAAI,SAAS,KAAA,EAAO;AAChB,MAAA,OAAO,oBAAA,CAAqB,GAAG,MAAM,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,OAAA,EAAS;AAClB,MAAA,OAAO,MAAA,CAAO,EAAE,IAAI,CAAA;AAAA,IACxB;AACA,IAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,IAAA,GAAQ,CAAA,CAAE,IAAA,GAAO,EAAA;AACjC,IAAA,OAAO,CAAA,EAAG,KAAK,CAAA,QAAA,EAAM,KAAA,GAAQ,EAAE,CAAA,CAAA;AAAA,EACnC,CAAA,EATkB,WAAA,CAAA;AAWlB,EAAA,MAAM,eACF,IAAA,KAAS,KAAA,GACH,+BAAA,GACA,IAAA,KAAS,UACP,8BAAA,GACA,6BAAA;AAGZ,EAAA,MAAM,eAAA,GAAkB,IAAA,KAAS,KAAA,IAAS,MAAA,CAAO,MAAA,GAAS,CAAA;AAC1D,EAAA,MAAM,aAAA,GAAgB,kBAAkB,MAAA,CAAO,MAAA,GAAS,aAAa,MAAA,CAAO,MAAA,GAAS,KAAK,QAAA,GAAW,SAAA;AAGrG,EAAA,MAAM,UAAA,GAAaN,QAAQ,MAAM,gBAAA,CAAiB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAKnE,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,CAAC,CAAA,IAAK,MAAA;AAC7B,EAAA,IAAI,CAAC,OAAA,EAAS;AACV,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,MAAM,QAAA,GAAgC;AAAA,IAClC,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,YAAA,EAAc,OAAA;AAAA,IACd,YAAA,EAAc,UAAA,CAAW,GAAA,CAAI,CAAC,OAAO,CAAA,MAAO;AAAA,MACxC,OAAO,CAAA,GAAI,CAAA;AAAA,MACX,KAAA;AAAA,MACA,UAAU,eAAA,GAAkB,OAAA,CAAQ,IAAA,EAAM,CAAA,GAAI,CAAC,CAAA,IAAK;AAAA,KACxD,CAAE,CAAA;AAAA,IACF,WAAA,EAAa,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,SAAA,CAAU,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA,GAAI,CAAA,EAAE,EAAG,CAAC,GAAG,CAAA,MAAO;AAAA,MAC5E,KAAA,EAAO,SAAA,CAAU,CAAC,CAAA,GAAI,CAAA;AAAA,MACtB,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,CAAC,IAAI,CAAC,CAAA;AAAA,MAC9B,UAAU,cAAA,GAAiB,SAAA,CAAU,CAAC,CAAA,GAAI,CAAC,CAAA,IAAK;AAAA,KACpD,CAAE,CAAA;AAAA,IACF,0BAAU,MAAA,CAAA,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,EAAG,CAAC,CAAA,EAAtB,UAAA,CAAA;AAAA,IACV,yBAAS,MAAA,CAAA,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA,EAArB,SAAA,CAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACZ;AAEA,EAAA,IAAI,YAAY,QAAA,EAAU;AACtB,IAAA,uBACII,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACG,KAAA,EAAO;AAAA,UACH,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,aAAA,EAAe,EAAA;AAAA,UACf,GAAA,EAAK,gBAAA;AAAA,UACL,SAAA,EAAW;AAAA,SACf;AAAA,QAEA,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAO,UAAW,QAAA,EAAS;AAAA;AAAA,KAChD;AAAA,EAER;AAEA,EAAA,uBACI,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACG,KAAA,EAAO;AAAA,QACH,aAAA,EAAe,KAAA;AAAA,QACf,UAAA,EAAY,QAAA;AAAA,QACZ,aAAA,EAAe,EAAA;AAAA,QACf,GAAA,EAAK,gBAAA;AAAA,QACL,SAAA,EAAW;AAAA,OACf;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,CAAA,CAAE,0BAAA,EAA4B,EAAE,YAAA,EAAc,UAAA,EAAY,CAAA,EAAG,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAA,QAAA,EAEhG,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,aAAA,EAAc,EACpE,QAAA,EAAA,eAAA,GACG,OAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACXA,GAAAA,CAAC,IAAA,EAAA,EAAkC,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,QAAA,EAAS,EAC9E,QAAA,EAAA,OAAA,KAAY,UAAA,IAAc,IAAA,KAAS,wBAChCA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACG,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,MAAM,CAAA,CAAE,IAAA;AAAA,YACR,YAAA,EAAc,UAAA,CAAW,GAAA,CAAI,CAAC,OAAO,CAAA,MAAO;AAAA,cACxC,OAAO,CAAA,GAAI,CAAA;AAAA,cACX,KAAA;AAAA,cACA,UAAU,eAAA,GAAkB,CAAA,CAAE,IAAA,EAAM,CAAA,GAAI,CAAC,CAAA,IAAK;AAAA,aAClD,CAAE,CAAA;AAAA,YACF,WAAA,EAAa,eAAA,CAAgB,SAAA,EAAW,cAAc,CAAA;AAAA,YACtD,aAAA,EAAe,CAAC,IAAA,KAAS,UAAA,CAAW,GAAG,IAAI,CAAA;AAAA,YAC3C,YAAA,EAAc,CAAC,IAAA,KAAS,SAAA,CAAU,GAAG,IAAI;AAAA;AAAA,4BAG7CA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACG,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,YACjB,WAAW,CAAA,CAAE,YAAA,EAAc,EAAE,YAAA,EAAc,eAAe,CAAA;AAAA,YAC1D,OAAA,EAAS,MAAM,YAAA,CAAa,CAAC,CAAA;AAAA,YAC7B,SAAA,EAAS;AAAA;AAAA,SACb,EAAA,EApBG,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA,CAsB/B,CACH,CAAA,mBAEDA,GAAAA,CAAC,QAAK,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,QAAA,IACxC,QAAA,EAAA,OAAA,KAAY,UAAA,IAAc,IAAA,KAAS,KAAA,mBAChCA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACG,OAAO,OAAA,CAAQ,KAAA;AAAA,YACf,MAAM,OAAA,CAAQ,IAAA;AAAA,YACd,YAAA,EAAc,UAAA,CAAW,GAAA,CAAI,CAAC,OAAO,CAAA,MAAO;AAAA,cACxC,OAAO,CAAA,GAAI,CAAA;AAAA,cACX,KAAA;AAAA,cACA,UAAU,eAAA,GAAkB,OAAA,CAAQ,IAAA,EAAM,CAAA,GAAI,CAAC,CAAA,IAAK;AAAA,aACxD,CAAE,CAAA;AAAA,YACF,WAAA,EAAa,eAAA,CAAgB,SAAA,EAAW,cAAc,CAAA;AAAA,YACtD,aAAA,EAAe,CAAC,IAAA,KAAS,UAAA,CAAW,GAAG,IAAI,CAAA;AAAA,YAC3C,YAAA,EAAc,CAAC,IAAA,KAAS,SAAA,CAAU,GAAG,IAAI;AAAA;AAAA,4BAG7CA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACG,IAAA,EAAM,UAAU,OAAO,CAAA;AAAA,YACvB,WAAW,CAAA,CAAE,YAAA,EAAc,EAAE,YAAA,EAAc,eAAe,CAAA;AAAA,YAC1D,OAAA,EAAS,MAAM,YAAA,CAAa,OAAO,CAAA;AAAA,YACnC,SAAA,EAAS;AAAA;AAAA,WAGrB,CAAA,EAER,CAAA;AAAA,wBACAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,CAAA,CAAE,sBAAA,EAAwB,EAAE,YAAA,EAAc,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,QAAQ,QAAA,EAAA,QAAA,EAExF;AAAA;AAAA;AAAA,GACJ;AAER,CAAA,EA9JuB,SAAA,CAAA;AAgKvB,IAAM,kCAAkB,MAAA,CAAA,CACpB,SAAA,EACA,mBAEA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,SAAA,CAAU,CAAC,CAAA,GAAI,UAAU,CAAC,CAAA,GAAI,GAAE,EAAG,CAAC,GAAG,CAAA,MAAO;AAAA,EAC/D,KAAA,EAAO,SAAA,CAAU,CAAC,CAAA,GAAI,CAAA;AAAA,EACtB,KAAA,EAAO,MAAA,CAAO,SAAA,CAAU,CAAC,IAAI,CAAC,CAAA;AAAA,EAC9B,UAAU,cAAA,GAAiB,SAAA,CAAU,CAAC,CAAA,GAAI,CAAC,CAAA,IAAK;AACpD,CAAA,CAAE,CAAA,EARkB,iBAAA,CAAA;AAmBxB,IAAM,YAAA,2BAAgB,EAAE,KAAA,EAAO,MAAM,YAAA,EAAc,WAAA,EAAa,aAAA,EAAe,YAAA,EAAa,KAAyB;AACjH,EAAA,uBACI,IAAA,CAAC,QAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,GAAA,EAAK,GAAE,EACxC,QAAA,EAAA;AAAA,oBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACG,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,QACnB,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,QACxC,OAAA,EAAS,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,UAC9B,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,UACrB,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,UAAU,CAAA,CAAE;AAAA,SAChB,CAAE,CAAA;AAAA,QACF,YAAA,EAAW,OAAA;AAAA,QACX,UAAA,EAAY;AAAA;AAAA,KAChB;AAAA,oBACAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACG,KAAA,EAAO,OAAO,IAAI,CAAA;AAAA,QAClB,UAAU,CAAC,CAAA,KAAM,YAAA,CAAa,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,QACvC,OAAA,EAAS,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,UAC7B,KAAA,EAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA;AAAA,UACrB,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,UAAU,CAAA,CAAE;AAAA,SAChB,CAAE,CAAA;AAAA,QACF,YAAA,EAAW,MAAA;AAAA,QACX,UAAA,EAAY;AAAA;AAAA;AAChB,GAAA,EACJ,CAAA;AAER,CAAA,EA3BqB,cAAA,CAAA;ACpUd,IAAM,SAAA,GAAY,EAAA;AAElB,IAAM,OAAA,2BAAW,EAAE,GAAA,EAAK,SAAS,SAAA,EAAW,UAAA,EAAY,WAAU,KAAoB;AACzF,EAAA,MAAM,SAAS,cAAA,EAAe;AAE9B,EAAA,MAAM,cAAA,GAAiB,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,gBAAgB,GAAA,CAAI,UAAA;AAKjE,EAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,SAAA,IAAa,GAAA,CAAI,gBAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,iBAAiB,CAAC,cAAA;AAExC,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,UAAA,GAChB,UAAA,GACA,IAAI,YAAA,GACF,aAAA,GACA,GAAA,CAAI,UAAA,GACF,cACA,GAAA,CAAI,gBAAA,GACF,SAAA,GACA,GAAA,CAAI,YACF,UAAA,GACA,MAAA;AAEd,EAAA,uBACIA,GAAAA;AAAA,IAACG,SAAAA;AAAA,IAAA;AAAA,MACG,iBAAA,EAAkB,QAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,QAAA,EAAU,GAAA,CAAI,aAAA,EAAc;AAAA,MAClD,UAAU,GAAA,CAAI,aAAA;AAAA,MACd,OAAA;AAAA,MACC,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,MACjC,GAAI,UAAA,GAAa,EAAE,UAAA,KAAe,EAAC;AAAA,MACpC,OAAO,CAAC,EAAE,OAAA,EAAS,OAAA,EAAS,SAAQ,KAAkE;AAClG,QAAA,MAAM,IAAA,GAAkB;AAAA,UACpB,KAAA,EAAO,SAAA;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,YAAA,EAAc,GAAA;AAAA;AAAA,UACd,QAAA,EAAU;AAAA,SACd;AAEA,QAAA,IAAI,IAAI,aAAA,EAAe;AACnB,UAAA,OAAO,CAAC,IAAA,EAAM,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,QACnC;AAEA,QAAA,IAAI,eAAA;AACJ,QAAA,IAAI,SAAA;AACJ,QAAA,IAAI,WAAA;AACJ,QAAA,IAAI,WAAA;AAEJ,QAAA,IAAI,cAAA,EAAgB;AAChB,UAAA,eAAA,GAAkB,MAAA,CAAO,SAAS,WAAA,CAAY,OAAA;AAC9C,UAAA,IAAI,OAAA,EAAS;AACT,YAAA,eAAA,GAAkB,MAAA,CAAO,SAAS,WAAA,CAAY,cAAA;AAAA,UAClD,WAAW,OAAA,EAAS;AAChB,YAAA,eAAA,GAAkB,MAAA,CAAO,SAAS,WAAA,CAAY,YAAA;AAAA,UAClD;AACA,UAAA,SAAA,GAAY,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,IAAA,GAAO,GAAG,CAAA;AAAA,QAC9C,WAAW,aAAA,EAAe;AAItB,UAAA,eAAA,GAAkB,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,aAAA;AAC1D,UAAA,SAAA,GAAY,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,IAAA,GAAO,GAAG,CAAA;AAAA,QAC9C,CAAA,MAAO;AAEH,UAAA,IAAI,OAAA,EAAS;AACT,YAAA,eAAA,GAAkB,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UAChD,WAAW,OAAA,EAAS;AAChB,YAAA,eAAA,GAAkB,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UAChD,CAAA,MAAO;AACH,YAAA,eAAA,GAAkB,aAAA;AAAA,UACtB;AACA,UAAA,SAAA,GAAY,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,IAAA,GAAO,GAAG,CAAA;AAAA,QAC9C;AAEA,QAAA,IAAA,CAAK,GAAA,CAAI,SAAA,IAAa,OAAA,KAAY,CAAC,cAAA,EAAgB;AAC/C,UAAA,WAAA,GAAc,CAAA;AACd,UAAA,WAAA,GAAc,MAAA,CAAO,SAAS,WAAA,CAAY,OAAA;AAAA,QAC9C;AAGA,QAAA,MAAM,UAAA,GAAwB;AAAA,UAC1B,kBAAA,EAAoB,oDAAA;AAAA,UACpB,kBAAA,EAAoB,OAAA;AAAA,UACpB,wBAAA,EAA0B,4BAAA;AAAA,UAC1B,YAAA,EAAc;AAAA,SAClB;AAEA,QAAA,OAAO;AAAA,UACH,IAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA,YACI,eAAA;AAAA,YACA,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,YACjC,GAAI,WAAA,GAAc,EAAE,WAAA,EAAa,WAAA,KAAgB;AAAC;AACtD,SACJ;AAAA,MACJ,CAAA;AAAA,MACC,GAAI;AAAA,QACD,OAAA,EAAS;AAAA,UACL,MAAA,EAAQ,CAAA,EAAG,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,UAC1D,GAAI,SAAA,GAAY,EAAE,KAAA,EAAO,SAAA,KAAc;AAAC;AAC5C,OACJ;AAAA,MAEC,sBACG,SAAA,CAAU,GAAG,CAAA,mBAEbC,KAAA,QAAA,EAAA,EACI,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAACE,IAAAA;AAAA,UAAA;AAAA,YACG,KAAA,EACI;AAAA,cACI,KAAA,EAAO,cAAA,GACD,MAAA,CAAO,QAAA,CAAS,KAAK,QAAA,GACrB,GAAA,CAAI,cAAA,GACF,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,KAAA,GACrB,MAAA,CAAO,SAAS,IAAA,CAAK,OAAA;AAAA,cAC7B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,GAAA,CAAI,OAAA,GAAU,KAAA,GAAQ,KAAA;AAAA,cAClC,OAAA,EAAS,GAAA,CAAI,cAAA,GAAiB,IAAA,GAAO,CAAA;AAAA,cACrC,kBAAA,EAAoB,OAAA;AAAA,cACpB,kBAAA,EAAoB;AAAA,aACxB;AAAA,YAGH,cAAI,IAAA,CAAK;AAAA;AAAA,SACd;AAAA,QAIC,GAAA,CAAI,0BACDF,GAAAA;AAAA,UAACK,IAAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,QAAA,EAAU,UAAA;AAAA,cACV,MAAA,EAAQ,CAAA;AAAA,cACR,KAAA,EAAO,CAAA;AAAA,cACP,MAAA,EAAQ,CAAA;AAAA,cACR,YAAA,EAAc,GAAA;AAAA,cACd,eAAA,EAAiB,iBACX,MAAA,CAAO,QAAA,CAAS,KAAK,QAAA,GACrB,MAAA,CAAO,SAAS,WAAA,CAAY;AAAA;AACtC;AAAA,SACJ,GACA;AAAA,OAAA,EACR;AAAA;AAAA,GAER;AAER,CAAA,EArJuB,SAAA,CAAA;ACQvB,IAAM,SAAA,mBAAY,MAAA,CAAA,CAAC,IAAA,EAAoB,KAAA,KAAiD;AACpF,EAAA,IAAI,CAAC,OAAO,GAAA,EAAK;AACb,IAAA,OAAO,KAAA;AAAA,EACX;AACA,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,IAAK,KAAK,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,IAAK,CAAA;AACxE,CAAA,EALkB,WAAA,CAAA;AAOlB,IAAM,YAAA,mBAAe,MAAA,CAAA,CACjB,IAAA,EACA,IAAA,KAUa;AACb,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,KAAU,IAAA,CAAK,YAAA,CAAa,KAAA;AACxD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,KAAM,CAAA;AACjD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,KAAK,EAAE,SAAA,EAAU;AACzC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,GAAG,CAAA;AAC/C,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,IAAI,UAAA,GAAa,KAAA;AACjB,EAAA,IAAI,OAAA,GAAU,KAAA;AAEd,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AACxB,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,IAAA,UAAA,GAAa,CAAC,CAAC,CAAA,IAAK,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAA;AAAA,EAC5C,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAC9B,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,IAAA,IAAI,CAAA,EAAG;AACH,MAAA,YAAA,GAAe,CAAA,CAAE,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAA;AACzC,MAAA,UAAA,GAAa,EAAE,GAAA,KAAQ,IAAA,IAAQ,EAAE,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAA;AACvD,MAAA,OAAA,GAAU,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,IAC/B;AAAA,EACJ,CAAA,MAAO;AACH,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA;AACjB,IAAA,UAAA,GAAa,GAAA,CAAI,KAAK,CAAC,CAAA,KAAM,EAAE,OAAA,CAAQ,IAAI,MAAM,CAAC,CAAA;AAAA,EACtD;AAEA,EAAA,OAAO;AAAA,IACH,IAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,OAAA;AAAA,IACX,gBAAA,EAAkB,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA,IAC3D,aAAA,EAAe,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA;AAAA,IACtC,SAAA,EAAW,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAA;AAAA,IAC9C;AAAA,GACJ;AACJ,CAAA,EAlDqB,cAAA,CAAA;AAqDrB,IAAM,WAAW,CAAC,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAE/D,IAAM,OAAA,2BAAmC,KAAA,KAA2B;AACvE,EAAA,MAAM;AAAA,IACF,YAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACJ,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,IAAA,GAAO,cAAA,IAAkB,iBAAA,CAAkB,MAAM,CAAA;AAEvD,EAAA,MAAM,KAAA,GAAQT,QAAwB,MAAM;AACxC,IAAA,MAAM,KAAA,GAAQ,aAAa,YAAY,CAAA;AACvC,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,KAAK,EAAE,SAAA,EAAU;AAC/C,IAAA,MAAM,IAAA,GAAA,CAAQ,QAAA,GAAW,IAAA,GAAO,CAAA,IAAK,CAAA;AACrC,IAAA,MAAM,QAAQ,KAAA,CAAM,QAAA,CAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AAC3C,IAAA,MAAM,KAAA,GAAQ,EAAA;AACd,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAM,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AAAA,EACzE,CAAA,EAAG,CAAC,YAAA,EAAc,IAAI,CAAC,CAAA;AAEvB,EAAA,MAAM,YAAA,GAAeA,QAAQ,MAAM,kBAAA,CAAmB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACvE,EAAA,MAAM,SAAA,GAAYA,QAAQ,MAAMU,KAAAA,CAAMC,kBAAkB,CAAA,EAAG,EAAE,CAAA;AAE7D,EAAA,MAAM,YAAY,CAAA,GAAI,SAAA;AAEtB,EAAA,uBACIH,IAAAA,CAACC,IAAAA,EAAA,EAAK,IAAA,EAAK,QAAO,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EACxC,QAAA,EAAA;AAAA,oBAAAL,IAACK,IAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,OAAO,EAAE,aAAA,EAAe,KAAA,EAAO,YAAA,EAAc,GAAE,EAC3D,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,yBACfL,GAAAA;AAAA,MAACK,IAAAA;AAAA,MAAA;AAAA,QAEG,IAAA,EAAK,cAAA;AAAA,QACL,OAAO,EAAE,KAAA,EAAO,WAAW,UAAA,EAAY,QAAA,EAAU,iBAAiB,CAAA,EAAE;AAAA,QAEpE,QAAA,kBAAAL,GAAAA;AAAA,UAACE,IAAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,KAAA;AAAA,cACZ,aAAA,EAAe,GAAA;AAAA,cACf,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,KAAA;AAAA,cAC5B,aAAA,EAAe;AAAA,aACnB;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACL,OAAA;AAAA,MAdK;AAAA,KAgBZ,CAAA,EACL,CAAA;AAAA,IACC,QAAA,CAAS,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,qBACnBF,GAAAA,CAACK,IAAAA,EAAA,EAAkB,IAAA,EAAK,KAAA,EAAM,KAAA,EAAO,EAAE,eAAe,KAAA,EAAM,EACvD,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,CAAA,GAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS;AAC7C,MAAA,MAAM,GAAA,GAAM,aAAa,IAAA,EAAM;AAAA,QAC3B,YAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,KAAiB,EAAC;AAAA,QACrD,WAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACH,CAAA;AACD,MAAA,MAAM,cAAA,GAAiB,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,gBAAgB,GAAA,CAAI,UAAA;AACjE,MAAA,MAAM,aAAA,GAAgB,GAAA,CAAI,SAAA,IAAa,GAAA,CAAI,gBAAA;AAM3C,MAAA,MAAM,YAAA,GAA0B;AAAA,QAC5B,KAAA,EAAO,SAAA;AAAA,QACP,MAAA,EAAQ,SAAA;AAAA,QACR,QAAA,EAAU;AAAA,OACd;AACA,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAChD,MAAA,IAAI,cAAA,GAAmC,IAAA;AAEvC,MAAA,IAAI,GAAA,CAAI,YAAA,IAAgB,CAAC,GAAA,CAAI,UAAA,EAAY;AACrC,QAAA,cAAA,GAAiB;AAAA,UACb,QAAA,EAAU,UAAA;AAAA,UACV,GAAA,EAAK,CAAA;AAAA,UACL,MAAA,EAAQ,CAAA;AAAA,UACR,IAAA,EAAM,KAAA;AAAA,UACN,KAAA,EAAO,CAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACrB;AAAA,MACJ,CAAA,MAAA,IAAW,GAAA,CAAI,UAAA,IAAc,CAAC,IAAI,YAAA,EAAc;AAC5C,QAAA,cAAA,GAAiB;AAAA,UACb,QAAA,EAAU,UAAA;AAAA,UACV,GAAA,EAAK,CAAA;AAAA,UACL,MAAA,EAAQ,CAAA;AAAA,UACR,IAAA,EAAM,CAAA;AAAA,UACN,KAAA,EAAO,KAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACrB;AAAA,MACJ,CAAA,MAAA,IAAW,aAAA,IAAiB,CAAC,cAAA,EAAgB;AACzC,QAAA,cAAA,GAAiB;AAAA,UACb,QAAA,EAAU,UAAA;AAAA,UACV,GAAA,EAAK,CAAA;AAAA,UACL,MAAA,EAAQ,CAAA;AAAA,UACR,IAAA,EAAM,CAAA;AAAA,UACN,KAAA,EAAO,CAAA;AAAA,UACP,eAAA,EAAiB;AAAA,SACrB;AAAA,MACJ;AAEA,MAAA,MAAM,aAAA,GAAgB;AAAA,QAClB,IAAA,EAAM,UAAA;AAAA,QACN,GAAI,cAAA,GAAiB,EAAE,eAAA,EAAiB,IAAA,KAAkB;AAAC,OAC/D;AAEA,MAAA,uBACID,IAAAA;AAAA,QAACC,IAAAA;AAAA,QAAA;AAAA,UAEI,GAAG,aAAA;AAAA,UACJ,KAAA,EAAO,YAAA;AAAA,UAEN,QAAA,EAAA;AAAA,YAAA,cAAA,mBAAiBL,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,gBAAgB,CAAA,GAAK,IAAA;AAAA,4BACpDL,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACG,GAAA;AAAA,gBACA,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,gBAC7B,GAAI,UAAA,GACC;AAAA,kBACI,SAAA,kBAAW,MAAA,CAAA,MAAM,UAAA,CAAW,IAAI,CAAA,EAArB,WAAA,CAAA;AAAA,kBACX,UAAA,kBAAY,MAAA,CAAA,MAAM,UAAA,CAAW,IAAI,CAAA,EAArB,YAAA;AAAA,oBAEhB,EAAC;AAAA,gBACN,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC;AAAA;AACtC;AAAA,SAAA;AAAA,QAfK,CAAA,EAAG,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,GAAG,CAAA;AAAA,OAgB/C;AAAA,IAER,CAAC,CAAA,EAAA,EAjFM,MAkFX,CACH;AAAA,GAAA,EACL,CAAA;AAER,CAAA,EA/IuB,SAAA,CAAA;ACpFhB,IAAM,MAAA,mBAAS,MAAA,CAAA,CAAC,EAAE,QAAA,uBAAyCA,GAAAA,CAACK,IAAAA,EAAA,EAAK,OAAO,EAAE,UAAA,EAAY,EAAA,EAAG,EAAI,UAAS,CAAA,EAAvF,QAAA,CAAA;ACWtB,IAAMG,SAAAA,GAAW,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAEjC,IAAM,4BAAY,MAAA,CAAA,CAAC,EAAE,cAAc,MAAA,EAAQ,cAAA,EAAgB,UAAS,KAAsB;AAC7F,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,KAAA,GAAQ,iBAAiB,MAAM,CAAA;AACrC,EAAA,MAAM,UAAA,GAAa,EAAA;AAEnB,EAAA,uBACIR,GAAAA,CAACK,IAAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,cAAA,EAAgB,eAAA,EAAiB,GAAE,EACpD,QAAA,EAAAG,SAAAA,CAAS,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,qBACnBR,GAAAA,CAACK,MAAA,EAAkB,KAAA,EAAO,EAAE,aAAA,EAAe,OAAO,YAAA,EAAc,CAAA,EAAE,EAC7D,QAAA,EAAA,CAAC,GAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,IAAA,MAAM,GAAA,GAAM,MAAM,CAAA,GAAI,GAAA;AACtB,IAAA,MAAM,cAAc,GAAA,GAAM,CAAA;AAC1B,IAAA,MAAM,SAAA,GAAY,gBAAgB,YAAA,CAAa,KAAA;AAC/C,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAG,CAAA,IAAK,EAAA;AAC3B,IAAA,uBACIL,GAAAA,CAACK,IAAAA,EAAA,EAAuB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,iBAAA,EAAmB,CAAA,EAAE,EAC3D,QAAA,kBAAAL,GAAAA;AAAA,MAACG,SAAAA;AAAA,MAAA;AAAA,QACG,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,IAAA;AAAA,QACpB,OAAA,EAAS,MAAM,QAAA,CAAS,WAAW,CAAA;AAAA,QACnC,OAAO,CAAC;AAAA,UACJ,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACJ,KAIM;AACF,UAAA,MAAM,IAAA,GAAkB;AAAA,YACpB,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,YAAA,EAAc;AAAA,WAClB;AACA,UAAA,MAAM,UAAA,GAAa;AAAA,YACf,kBAAA,EAAoB,2CAAA;AAAA,YACpB,kBAAA,EAAoB,OAAA;AAAA,YACpB,wBAAA,EAA0B,4BAAA;AAAA,YAC1B,YAAA,EAAc;AAAA,WAClB;AACA,UAAA,IAAI,EAAA;AACJ,UAAA,IAAI,SAAA,EAAW;AACX,YAAA,EAAA,GAAK,OAAA,GACC,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,cAAA,GAC5B,OAAA,GACE,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,YAAA,GAC5B,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,OAAA;AAAA,UACxC,WAAW,OAAA,EAAS;AAChB,YAAA,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UACnC,WAAW,OAAA,EAAS;AAChB,YAAA,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UACnC,CAAA,MAAO;AACH,YAAA,EAAA,GAAK,aAAA;AAAA,UACT;AACA,UAAA,MAAM,MAAA,GACF,OAAA,IAAW,CAAC,SAAA,GACN,EAAE,WAAA,EAAa,CAAA,EAAG,WAAA,EAAa,MAAA,CAAO,SAAS,WAAA,CAAY,OAAA,EAAQ,GACnE,EAAE,aAAa,CAAA,EAAE;AAC3B,UAAA,OAAO;AAAA,YACH,IAAA;AAAA,YACA,UAAA;AAAA,YACA,EAAE,eAAA,EAAiB,EAAA,EAAI,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,IAAA,GAAO,CAAA,EAAG,CAAA,EAAE;AAAA,YAClE;AAAA,WACJ;AAAA,QACJ,CAAA;AAAA,QAEA,QAAA,kBAAAH,GAAAA;AAAA,UAACE,IAAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,KAAA,EAAO,YACD,MAAA,CAAO,QAAA,CAAS,KAAK,QAAA,GACrB,MAAA,CAAO,SAAS,IAAA,CAAK,OAAA;AAAA,cAC3B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,YAAY,KAAA,GAAQ;AAAA,aACpC;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACL;AAAA,SA9DG,WAgEX,CAAA;AAAA,EAER,CAAC,CAAA,EAAA,EAzEM,MA0EX,CACH,CAAA,EACL,CAAA;AAER,CAAA,EAtFyB,WAAA,CAAA;ACJzB,IAAMM,SAAAA,GAAW,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAE3B,IAAM,2BAAW,MAAA,CAAA,CAAC,EAAE,YAAA,EAAc,cAAA,EAAgB,UAAS,KAAqB;AACnF,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,IAAA,GAAQ,YAAA,CAAa,IAAA,GAAO,EAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,WAAA,GAAc,CAAA,GAAI,CAAC,CAAA;AACtE,EAAA,MAAM,UAAA,GAAa,EAAA;AAEnB,EAAA,uBACIR,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,cAAA,EAAgB,eAAA,EAAiB,CAAA,IAClD,QAAA,EAAAG,SAAAA,CAAS,GAAA,CAAI,CAAC,QAAQ,GAAA,qBACnBR,GAAAA,CAACK,IAAAA,EAAA,EAAkB,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,cAAc,CAAA,EAAE,EAC7D,QAAA,EAAA,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ;AACvB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,GAAM,CAAA,GAAI,GAAG,CAAA;AAChC,IAAA,IAAI,SAAS,MAAA,EAAW;AACpB,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,MAAM,SAAA,GAAY,SAAS,YAAA,CAAa,IAAA;AACxC,IAAA,MAAM,gBAAA,GAAmB,IAAA,GAAO,WAAA,IAAe,IAAA,IAAQ,WAAA,GAAc,EAAA;AACrE,IAAA,uBACIL,GAAAA,CAACK,IAAAA,EAAA,EAAgB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,iBAAA,EAAmB,CAAA,EAAE,EACpD,QAAA,kBAAAL,GAAAA;AAAA,MAACG,SAAAA;AAAA,MAAA;AAAA,QACG,iBAAA,EAAkB,QAAA;AAAA,QAClB,kBAAA,EAAoB,OAAO,IAAI,CAAA;AAAA,QAC/B,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,QAC5B,OAAO,CAAC;AAAA,UACJ,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACJ,KAIM;AACF,UAAA,MAAM,IAAA,GAAkB;AAAA,YACpB,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,YAAA,EAAc;AAAA,WAClB;AACA,UAAA,MAAM,UAAA,GAAa;AAAA,YACf,kBAAA,EAAoB,2CAAA;AAAA,YACpB,kBAAA,EAAoB,OAAA;AAAA,YACpB,wBAAA,EAA0B,4BAAA;AAAA,YAC1B,YAAA,EAAc;AAAA,WAClB;AACA,UAAA,IAAI,EAAA;AACJ,UAAA,IAAI,SAAA,EAAW;AACX,YAAA,EAAA,GAAK,OAAA,GACC,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,cAAA,GAC5B,OAAA,GACE,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,YAAA,GAC5B,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,OAAA;AAAA,UACxC,WAAW,OAAA,EAAS;AAChB,YAAA,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UACnC,WAAW,OAAA,EAAS;AAChB,YAAA,EAAA,GAAK,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,UACnC,CAAA,MAAO;AACH,YAAA,EAAA,GAAK,aAAA;AAAA,UACT;AACA,UAAA,MAAM,MAAA,GACF,OAAA,IAAW,CAAC,SAAA,GACN,EAAE,WAAA,EAAa,CAAA,EAAG,WAAA,EAAa,MAAA,CAAO,SAAS,WAAA,CAAY,OAAA,EAAQ,GACnE,EAAE,aAAa,CAAA,EAAE;AAC3B,UAAA,OAAO;AAAA,YACH,IAAA;AAAA,YACA,UAAA;AAAA,YACA,EAAE,eAAA,EAAiB,EAAA,EAAI,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,IAAA,GAAO,CAAA,EAAG,CAAA,EAAE;AAAA,YAClE;AAAA,WACJ;AAAA,QACJ,CAAA;AAAA,QAEA,QAAA,kBAAAH,GAAAA;AAAA,UAACE,IAAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,KAAA,EAAO,YACD,MAAA,CAAO,QAAA,CAAS,KAAK,QAAA,GACrB,MAAA,CAAO,SAAS,IAAA,CAAK,OAAA;AAAA,cAC3B,QAAA,EAAU,EAAA;AAAA,cACV,UAAA,EAAY,YAAY,KAAA,GAAQ,KAAA;AAAA,cAChC,OAAA,EAAS,mBAAmB,IAAA,GAAO;AAAA,aACvC;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACL;AAAA,SA/DG,IAiEX,CAAA;AAAA,EAER,CAAC,CAAA,EAAA,EA5EM,MA6EX,CACH,CAAA,EACL,CAAA;AAER,CAAA,EA1FwB,UAAA,CAAA;ACMxB,IAAM,aAAa,CAAA,GAAI,SAAA;AACvB,IAAM,SAAA,GAAY,EAAA;AAClB,IAAM,aAAa,EAAA,GAAK,CAAA;AACxB,IAAM,eAAA,GAAkB,EAAA;AACxB,IAAM,cAAA,GAAiB,CAAA;AACvB,IAAM,kBAAA,mBAAqB,MAAA,CAAA,CAAC,CAAA,KACxB,CAAA,IAAK,UAAA,GAAa,eAAA,GAAkB,cAAA,CAAA,GAAkB,CAAA,GAAI,UAAA,GAAA,CAAc,CAAA,GAAI,CAAA,IAAK,SAAA,EAD1D,oBAAA,CAAA;AAO3B,IAAM,YAAA,mBAAe,MAAA,CAAA,CAAC,IAAA,EAA0B,IAAA,EAAoB,KAAA,KAAmB;AACnF,EAAA,IAAI,CAAC,IAAA,EAAM;AACP,IAAA;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,KAAK,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,EAAG;AAClD,IAAA;AAAA,EACJ;AACA,EAAA,MAAM,GAAA,GAAM,kBAAkB,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,GAAG,CAAA,EAAA,CAAA;AACjE,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,aAAA,CAAc,GAAG,CAAA;AACnC,EAAA,MAAM,UAAA,GAAc,MAAmC,QAAA,KAAa,IAAA;AACpE,EAAA,IAAI,IAAA,IAAQ,CAAC,UAAA,EAAY;AACrB,IAAA,IAAI,IAAA,KAAS,SAAS,aAAA,EAAe;AACjC,MAAA,IAAA,CAAK,KAAA,EAAM;AAAA,IACf;AACA,IAAA;AAAA,EACJ;AAIA,EAAA,IAAI,SAAS,CAAC,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,EAAG;AACjD,IAAA,IAAA,CAAK,KAAA,EAAM;AAAA,EACf;AACJ,CAAA,EAtBqB,cAAA,CAAA;AAwBrB,IAAM,MAAA,mBAAS,MAAA,CAAA,CAAC,EAAE,QAAA,EAAS,KAA+B;AACtD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIJ,SAAS,KAAK,CAAA;AAC5C,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,EAAA,GAAK,qBAAA,CAAsB,MAAM,UAAA,CAAW,IAAI,CAAC,CAAA;AACvD,IAAA,OAAO,MAAM,qBAAqB,EAAE,CAAA;AAAA,EACxC,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,uBACIE,GAAAA;AAAA,IAACK,IAAAA;AAAA,IAAA;AAAA,MACG,KAAA,EACI;AAAA,QACI,OAAA,EAAS,UAAU,CAAA,GAAI,CAAA;AAAA,QACvB,WAAW,CAAC,EAAE,YAAY,OAAA,GAAU,CAAA,GAAI,GAAG,CAAA;AAAA,QAC3C,kBAAA,EAAoB,oBAAA;AAAA,QACpB,kBAAA,EAAoB,OAAA;AAAA,QACpB,wBAAA,EAA0B;AAAA,OAC9B;AAAA,MAGH;AAAA;AAAA,GACL;AAER,CAAA,EArBe,QAAA,CAAA;AA6Bf,IAAM,gBAAA,mBAAmB,MAAA,CAAA,CACrB,KAAA,EACA,QAAA,EACA,UACA,WAAA,KACmB;AACnB,EAAA,IAAI,KAAA,EAAO;AACP,IAAA,OAAO,KAAA;AAAA,EACX;AACA,EAAA,IAAI,YAAY,QAAA,EAAU;AACtB,IAAA,OAAO,CAAC,QAAA,CAAS,IAAA,EAAM,QAAA,CAAS,IAAI,CAAA;AAAA,EACxC;AACA,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,OAAO,CAAC,SAAS,IAAA,EAAM,IAAA,CAAK,IAAI,QAAA,CAAS,IAAA,EAAM,WAAA,GAAc,EAAE,CAAC,CAAA;AAAA,EACpE;AACA,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,OAAO,CAAC,KAAK,GAAA,CAAI,QAAA,CAAS,MAAM,WAAA,GAAc,GAAG,CAAA,EAAG,QAAA,CAAS,IAAI,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,CAAC,WAAA,GAAc,GAAA,EAAK,WAAA,GAAc,EAAE,CAAA;AAC/C,CAAA,EAnByB,kBAAA,CAAA;AAqBzB,IAAM,iBAAA,mBAAoB,MAAA,CAAA,CAAC,KAAA,EAAoC,aAAA,KAAyC;AAIpG,EAAA,MAAM,MAAA,GAAS,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,CAAA;AACnD,EAAA,IAAI,aAAA,IAAiB,IAAA,IAAQ,aAAA,KAAkB,CAAA,EAAG;AAG9C,IAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,CAAA;AAAA,EAC/C;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,MAAA,EAAQ,CAAA,IAAK,CAAA,EAAG,CAAA,EAAA,EAAK;AAC9B,IAAA,IAAI,aAAA,IAAiB,kBAAA,CAAmB,CAAC,CAAA,EAAG;AACxC,MAAA,OAAO,CAAA;AAAA,IACX;AAAA,EACJ;AACA,EAAA,OAAO,CAAA;AACX,CAAA,EAhB0B,mBAAA,CAAA;AAwB1B,IAAM,YAAA,2BAAmD,KAAA,KAAgC;AACrF,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIP,SAAwB,IAAI,CAAA;AACxE,EAAA,MAAM,QAAA,GAAWD,WAAAA,CAAY,CAAC,CAAA,KAAyB;AACnD,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,WAAA,CAAY,MAAA,CAAO,KAAA;AAClC,IAAA,iBAAA,CAAkB,CAAC,IAAA,KAAU,IAAA,KAAS,IAAA,GAAO,OAAO,IAAK,CAAA;AAAA,EAC7D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACIG,GAAAA,CAACK,IAAAA,EAAA,EAAK,QAAA,EAAoB,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO,EAC7C,QAAA,kBAAAL,IAAC,eAAA,EAAA,EAAmB,cAAA,EAAgB,kBAAkB,CAAA,EAAI,GAAG,OAAO,CAAA,EACxE,CAAA;AAER,CAAA,EAZqB,cAAA,CAAA;AAcrB,IAAM,eAAA,2BACF,KAAA,KACC;AACD,EAAA,MAAM,iBAAiB,SAAA,EAAU;AACjC,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,cAAA;AAE/B,EAAA,IAAA,CAAK,KAAA,CAAM,IAAA,IAAQ,QAAA,MAAc,OAAA,EAAS;AACtC,IAAA,uBACIA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACI,GAAI,KAAA;AAAA,QACL;AAAA;AAAA,KACJ;AAAA,EAER;AACA,EAAA,uBACIA,GAAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACI,GAAI,KAAA;AAAA,MACL;AAAA;AAAA,GACJ;AAER,CAAA,EApBwB,iBAAA,CAAA;AA2BxB,IAAM,cAAA,2BAAkB,aAAA,KAA0B;AAC9C,EAAA,MAAM,aAAa,CAAA,GAAI,UAAA,GAAa,aAAA,GAAgB,UAAA,GAAA,CAAc,gBAAgB,CAAA,IAAK,SAAA;AACvF,EAAA,OAAO;AAAA,IACH,UAAA;AAAA;AAAA,IAEA,aAAA,EAAe,aAAA,GAAgB,UAAA,GAAA,CAAc,aAAA,GAAgB,CAAA,IAAK;AAAA,GACtE;AACJ,CAAA,EAPuB,gBAAA,CAAA;AASvB,IAAM,qBAAA,2BACF,KAAA,KACC;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,cAAA,EAAe,GAAI,KAAA;AAC9C,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,cAAA,IAAkB,iBAAA,CAAkB,MAAM,CAAA;AACvE,EAAA,MAAM,WAAA,GAAe,KAAA,CAAM,WAAA,IAAsD,cAAA,CAAe,MAAM,CAAA;AAEtG,EAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,KAAA,CAAM,aAAA,EAAe,cAAc,CAAA;AAC3E,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAc,GAAI,eAAe,aAAa,CAAA;AAKlE,EAAA,MAAM,YAAA,GAAe,OAA2B,IAAI,CAAA;AAEpD,EAAA,MAAM,QAAQ,gBAAA,CAAoB;AAAA,IAC9B,GAAI,MAAM,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK,GAAI,EAAC;AAAA,IACvD,MAAA;AAAA,IACA,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,MAAM,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,KAAA,CAAM,YAAA,EAAa,GAAI,EAAC;AAAA,IAC/E,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK,GAAI,EAAC;AAAA,IACvD,GAAI,MAAM,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,EAAa,KAAA,CAAM,WAAA,EAAY,GAAI,EAAC;AAAA,IAC5E,GAAI,MAAM,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,KAAA,CAAM,YAAA,EAAa,GAAI,EAAC;AAAA,IAC/E,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,KAAA,CAAM,iBAAA,EAAkB,GAAI;AAAC,GACjG,CAAA;AAED,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIF,QAAAA,CAAuB,MAAM,WAAW,CAAA;AAOpE,EAAA,MAAM,SAAA,GAAY,OAAO,MAAM,CAAA;AAC/B,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAAA,EACxB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACX,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,QAAQ,SAAA,CAAU,OAAA;AACxB,IAAA,MAAM,MAAM,KAAA,CAAM,GAAA,CAAI,EAAE,MAAA,EAAQ,eAAe,CAAA;AAC/C,IAAA,IAAI,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,KAAK,CAAA,GAAI,CAAA,IAAK,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,GAAG,CAAA,IAAK,CAAA,EAAG;AAC7E,MAAA,SAAA,CAAU,MAAM,WAAW,CAAA;AAAA,IAC/B;AAAA,EACJ,CAAA,EAAG,CAAC,KAAA,CAAM,WAAA,EAAa,aAAa,CAAC,CAAA;AAErC,EAAA,MAAM,cAAA,GAAiB,OAAO,KAAK,CAAA;AAEnC,EAAA,eAAA,CAAgB,MAAM;AAClB,IAAA,YAAA,CAAa,YAAA,CAAa,OAAA,EAAS,KAAA,CAAM,WAAA,EAAa,eAAe,OAAO,CAAA;AAC5E,IAAA,cAAA,CAAe,OAAA,GAAU,KAAA;AAAA,EAC7B,GAAG,CAAC,KAAA,CAAM,WAAA,EAAa,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EAAA,MAAM,MAAA,GAASF,OAAAA;AAAA,IACX,MAAM,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,eAAc,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,OAAO,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IAC/E,CAAC,QAAQ,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,WAAW,mBAAA,CAAoB;AAAA,IACjC,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,SAAA,0BAAY,KAAA,KAA2D;AACnE,MAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAKrB,MAAA,IAAI,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,KAAA,EAAO;AAC7B,QAAA,SAAA,CAAU,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,IAAA,GAAO,CAAA;AACX,UAAA,IAAI,MAAM,MAAA,EAAQ;AACd,YAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AAAA,UAC5C;AACA,UAAA,IAAI,MAAM,KAAA,EAAO;AACb,YAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,UAC1C;AACA,UAAA,OAAO,IAAA;AAAA,QACX,CAAC,CAAA;AAAA,MACL;AAAA,IACJ,CAAA,EAlBW,WAAA,CAAA;AAAA,IAmBX,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,SAAS,KAAA,CAAM,OAAA;AAAA,IACf,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ;AAAA,GACH,CAAA;AAED,EAAA,MAAM,yBAAS,MAAA,CAAA,MAAM;AACjB,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACvB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,GAAA,EAAK,CAAC,CAAA;AAAA,IAC1C,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AAC/B,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,EAAA,EAAI,CAAC,CAAA;AAAA,IACzC,CAAA,MAAO;AACH,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAC,CAAA;AAAA,IAC1C;AAAA,EACJ,CAAA,EARe,QAAA,CAAA;AASf,EAAA,MAAM,yBAAS,MAAA,CAAA,MAAM;AACjB,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACvB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,EAAA,EAAI,CAAC,CAAA;AAAA,IACzC,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AAC/B,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IACxC,CAAA,MAAO;AACH,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IACzC;AAAA,EACJ,CAAA,EARe,QAAA,CAAA;AASf,EAAA,MAAM,YAAA,mBAAe,MAAA,CAAA,MAAM,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,IAAA,KAAS,KAAA,GAAQ,OAAA,GAAU,KAAA,CAAM,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,KAAK,CAAA,EAA5F,cAAA,CAAA;AAErB,EAAA,uBACIQ,IAAAA;AAAA,IAACC,IAAAA;AAAA,IAAA;AAAA,MACG,GAAA,EAAK,CAAC,IAAA,KAAS;AACX,QAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,QAAA,IAAI,OAAO,KAAA,CAAM,GAAA,KAAQ,UAAA,EAAY;AACjC,UAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAAA,QAClB,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AAClB,UAAC,KAAA,CAAM,IAAiC,OAAA,GAAU,IAAA;AAAA,QACtD;AAAA,MACJ,CAAA;AAAA,MACC,GAAI,MAAM,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO,GAAI,EAAC;AAAA,MAE9D,SAAA,EAAW,CAAC,CAAA,KAA2B;AACnC,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AACzB,QAAA,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,QAAA,EAAU,CAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACH,OAAA,EAAS,eAAA;AAAA,QACT,eAAA,EAAiB,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,QAAA;AAAA,QAC5C,YAAA,EAAc,EAAA;AAAA,QACd,WAAA,EAAa,cAAA;AAAA,QACb,WAAA,EAAa,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,OAAA;AAAA,QACpC,WAAA,EAAa,MAAA;AAAA,QACb,aAAA,EAAe,IAAA;AAAA,QACf,YAAA,EAAc,EAAA;AAAA,QACd,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,QACpC,KAAA,EAAO,UAAA,GAAa,CAAA,GAAI,eAAA,GAAkB,CAAA,GAAI,cAAA;AAAA,QAC9C,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACf;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACG,MAAA;AAAA,YACA,MAAA;AAAA,YACA,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,OAAA,EAAS,MAAM,OAAA,IAAW,OAAA;AAAA,YAC1B,SAAA,EAAW,UAAA;AAAA,YACX,QAAA,EAAU,SAAA;AAAA,YACV,SAAA,EAAW,iBAAiB,KAAA,CAAM,SAAA,EAAW,MAAM,QAAA,EAAU,KAAA,CAAM,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA;AAAA,YACxF,MAAA;AAAA,YACA,MAAA;AAAA,YACA,YAAA;AAAA,YACA,UAAA,EAAY,CAAC,IAAA,EAAM,CAAA,KAAM;AACrB,cAAA,MAAM,MAAA,GAAA,CAAU,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA,EAAQ,GAAA,CAAI,EAAE,KAAA,EAAO,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA;AAGhE,cAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AAAA,YAC/C,CAAA;AAAA,YACA,SAAA,EAAW,CAAC,IAAA,EAAM,CAAA,KAAM;AACpB,cAAA,MAAM,MAAA,GAAA,CAAU,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA,EAAQ,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA;AAC/D,cAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AAAA,YAC/C,CAAA;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACX;AAAA,wBACAI,KAAC,MAAA,EAAA,EACI,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,IAAA,KAAS,yBACZJ,GAAAA,CAACK,MAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,KAAK,SAAA,EAAW,SAAA,EAAW,UAAU,KAAA,EAAO,aAAA,IAC5E,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACTL,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cAEG,YAAA,EAAc,CAAA;AAAA,cACd,MAAA;AAAA,cACA,IAAA,EAAO,MAAM,IAAA,IAAQ,QAAA;AAAA,cACrB,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,aAAa,KAAA,CAAM,WAAA;AAAA,cACnB,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,WAAA;AAAA,cACA,cAAA;AAAA,cACA,YAAY,CAAC,IAAA,KAAS,KAAA,CAAM,UAAA,CAAW,MAAM,OAAO,CAAA;AAAA,cACnD,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC,aAAA;AAAA,YAV7B,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA;AAAA,WAYhC,CAAA,EACL,CAAA;AAAA,UAEH,KAAA,CAAM,IAAA,KAAS,OAAA,oBACZA,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAS,EAChC,QAAA,kBAAAL,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACG,YAAA,EAAc,MAAA;AAAA,cACd,MAAA;AAAA,cACA,cAAA,EAAgB,aAAA;AAAA,cAChB,QAAA,EAAU,CAAC,KAAA,KAAU;AACjB,gBAAA,SAAA,CAAU,IAAI,YAAA,CAAa,MAAA,CAAO,IAAA,EAAM,KAAA,EAAO,CAAC,CAAC,CAAA;AACjD,gBAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,cACvB;AAAA;AAAA,WACJ,EACJ,CAAA;AAAA,UAEH,KAAA,CAAM,IAAA,KAAS,MAAA,oBACZA,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAS,EAChC,QAAA,kBAAAL,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACG,YAAA,EAAc,MAAA;AAAA,cACd,cAAA,EAAgB,aAAA;AAAA,cAChB,QAAA,EAAU,CAAC,IAAA,KAAS;AAChB,gBAAA,SAAA,CAAU,IAAI,YAAA,CAAa,IAAA,EAAM,MAAA,CAAO,KAAA,EAAO,CAAC,CAAC,CAAA;AACjD,gBAAA,KAAA,CAAM,QAAQ,OAAO,CAAA;AAAA,cACzB;AAAA;AAAA,WACJ,EACJ,CAAA;AAAA,UAEH,KAAA,CAAM,QAAA,IAAA,CAAa,KAAA,CAAM,OAAA,IAAW,OAAA,MAAa,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,CAAM,QAAA,EAAS,CAAA,GAAY;AAAA,SAAA,EAAA,EA7CxF,CAAA,IAAA,EAAO,KAAA,CAAM,IAAI,CAAA,CA8C9B;AAAA;AAAA;AAAA,GACJ;AAER,CAAA,EArN8B,uBAAA,CAAA;AAuN9B,IAAM,aAAA,2BAAiB,KAAA,KAAmF;AACtG,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,cAAA,EAAe,GAAI,KAAA;AAC9C,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,cAAA,IAAkB,iBAAA,CAAkB,MAAM,CAAA;AACvE,EAAA,MAAM,WAAA,GAAe,KAAA,CAAM,WAAA,IAAsD,cAAA,CAAe,MAAM,CAAA;AAEtG,EAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,KAAA,CAAM,aAAA,EAAe,cAAc,CAAA;AAC3E,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAc,GAAI,eAAe,aAAa,CAAA;AAElE,EAAA,MAAM,YAAA,GAAe,OAA2B,IAAI,CAAA;AAEpD,EAAA,MAAM,QAAQ,aAAA,CAAc;AAAA,IACxB,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,EAAM,GAAI,EAAC;AAAA,IAC1D,GAAI,MAAM,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,KAAA,CAAM,YAAA,EAAa,GAAI,EAAC;AAAA,IAC/E,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS,GAAI,EAAC;AAAA,IACnE,GAAI,MAAM,iBAAA,KAAsB,MAAA,GAAY,EAAE,iBAAA,EAAmB,KAAA,CAAM,iBAAA,EAAkB,GAAI,EAAC;AAAA,IAC9F,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU,GAAI,EAAC;AAAA,IACtE,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU,GAAI;AAAC,GACzE,CAAA;AAED,EAAA,MAAMS,gBAAe,KAAA,CAAM,KAAA,EAAO,KAAA,IAASH,KAAAA,CAAMC,kBAAkB,CAAA;AACnE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIT,SAAuBW,aAAY,CAAA;AACzE,EAAA,MAAM,cAAA,GAAiB,OAAO,KAAK,CAAA;AAEnC,EAAA,eAAA,CAAgB,MAAM;AAClB,IAAA,YAAA,CAAa,YAAA,CAAa,OAAA,EAAS,WAAA,EAAa,cAAA,CAAe,OAAO,CAAA;AACtE,IAAA,cAAA,CAAe,OAAA,GAAU,KAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,WAAA,EAAa,KAAA,CAAM,KAAK,CAAC,CAAA;AAC7B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIX,SAAuBW,aAAY,CAAA;AAE/D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAIX,QAAAA,CAAuB,KAAA,CAAM,eAAe,KAAK,CAAA;AACzF,EAAA,MAAM,gBAAA,GAAmB,MAAM,IAAA,KAAS,MAAA;AACxC,EAAA,MAAM,IAAA,GAAqB,gBAAA,GAAoB,KAAA,CAAM,IAAA,GAAwB,YAAA;AAC7E,EAAA,MAAM,OAAA,GAAUD,WAAAA;AAAA,IACZ,CAAC,IAAA,KAAuB;AACpB,MAAA,IAAI,CAAC,gBAAA,EAAkB;AACnB,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACxB;AACA,MAAA,KAAA,CAAM,eAAe,IAAI,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,gBAAA,EAAkB,KAAA,CAAM,YAAY;AAAA,GACzC;AAEA,EAAA,MAAM,MAAA,GAASD,OAAAA;AAAA,IACX,MAAM,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,eAAc,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,OAAO,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IAC/E,CAAC,QAAQ,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,WAAW,mBAAA,CAAoB;AAAA,IACjC,WAAA;AAAA,IACA,SAAA,0BAAY,KAAA,KAAU;AAClB,MAAA,cAAA,CAAe,CAAC,CAAA,KAAM;AAClB,QAAA,IAAI,IAAA,GAAO,CAAA;AACX,QAAA,IAAI,MAAM,IAAA,EAAM;AACZ,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AAAA,QACxC;AACA,QAAA,IAAI,MAAM,KAAA,EAAO;AACb,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,IAAI,MAAM,MAAA,EAAQ;AACd,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AAAA,QAC5C;AACA,QAAA,IAAI,MAAM,KAAA,EAAO;AACb,UAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,OAAO,IAAA;AAAA,MACX,CAAC,CAAA;AACD,MAAA,IAAI,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,KAAA,EAAO;AAC7B,QAAA,SAAA,CAAU,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,IAAA,GAAO,CAAA;AACX,UAAA,IAAI,MAAM,MAAA,EAAQ;AACd,YAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAA;AAAA,UAC5C;AACA,UAAA,IAAI,MAAM,KAAA,EAAO;AACb,YAAA,IAAA,GAAO,KAAK,GAAA,CAAI,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,UAC1C;AACA,UAAA,OAAO,IAAA;AAAA,QACX,CAAC,CAAA;AAAA,MACL;AAAA,IACJ,CAAA,EA7BW,WAAA,CAAA;AAAA,IA8BX,4BAAY,MAAA,CAAA,CAAC,IAAA,KAAS,MAAM,UAAA,CAAW,IAAA,EAAM,UAAU,CAAA,EAA3C,YAAA,CAAA;AAAA,IACZ,OAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACH,CAAA;AAED,EAAA,MAAM,yBAAS,MAAA,CAAA,MAAM;AACjB,IAAA,IAAI,SAAS,MAAA,EAAQ;AACjB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,GAAA,EAAK,CAAC,CAAA;AAAA,IAC1C,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AACzB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,EAAA,EAAI,CAAC,CAAA;AAAA,IACzC,CAAA,MAAO;AACH,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAC,CAAA;AAAA,IAC1C;AAAA,EACJ,CAAA,EARe,QAAA,CAAA;AASf,EAAA,MAAM,yBAAS,MAAA,CAAA,MAAM;AACjB,IAAA,IAAI,SAAS,MAAA,EAAQ;AACjB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,EAAA,EAAI,CAAC,CAAA;AAAA,IACzC,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AACzB,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IACxC,CAAA,MAAO;AACH,MAAA,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,GAAA,CAAI,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IACzC;AAAA,EACJ,CAAA,EARe,QAAA,CAAA;AASf,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIE,SAAS,CAAC,CAAA;AACpD,EAAA,MAAM,YAAA,2BAAgB,OAAA,KAA0B;AAC5C,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,OAAA,CAAQ,IAAA,IAAQ,CAAA,CAAE,KAAA,KAAU,OAAA,CAAQ,KAAK,CAAA;AACzF,IAAA,gBAAA,CAAiB,IAAA,IAAQ,CAAA,GAAI,IAAA,GAAO,CAAC,CAAA;AACrC,IAAA,IAAI,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,KAAM,CAAA,EAAG;AAC/B,MAAA,SAAA,CAAU,OAAO,CAAA;AAAA,IACrB;AACA,IAAA,OAAA,CAAQ,SAAS,KAAA,GAAQ,OAAA,GAAU,IAAA,KAAS,OAAA,GAAU,SAAS,KAAK,CAAA;AAAA,EACxE,CAAA,EAPqB,cAAA,CAAA;AASrB,EAAA,uBACIM,IAAAA;AAAA,IAACC,IAAAA;AAAA,IAAA;AAAA,MACG,GAAA,EAAK,CAAC,IAAA,KAAS;AACX,QAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,QAAA,IAAI,OAAO,KAAA,CAAM,GAAA,KAAQ,UAAA,EAAY;AACjC,UAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAAA,QAClB,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AAClB,UAAC,KAAA,CAAM,IAAiC,OAAA,GAAU,IAAA;AAAA,QACtD;AAAA,MACJ,CAAA;AAAA,MACC,GAAI,MAAM,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO,GAAI,EAAC;AAAA,MAE9D,SAAA,EAAW,CAAC,CAAA,KAA2B;AACnC,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AACzB,QAAA,QAAA,CAAS,UAAU,CAAC,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,QAAA,EAAU,CAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACH,OAAA,EAAS,eAAA;AAAA,QACT,eAAA,EAAiB,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,QAAA;AAAA,QAC5C,YAAA,EAAc,EAAA;AAAA,QACd,WAAA,EAAa,cAAA;AAAA,QACb,WAAA,EAAa,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,OAAA;AAAA,QACpC,WAAA,EAAa,MAAA;AAAA,QACb,aAAA,EAAe,IAAA;AAAA,QACf,YAAA,EAAc,EAAA;AAAA,QACd,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,QACpC,KAAA,EAAO,UAAA,GAAa,CAAA,GAAI,eAAA,GAAkB,CAAA,GAAI,cAAA;AAAA,QAC9C,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACf;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAL,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACG,MAAA;AAAA,YACA,MAAA;AAAA,YACA,IAAA;AAAA,YACA,OAAA,EAAS,MAAM,OAAA,IAAW,OAAA;AAAA,YAC1B,SAAA,EAAW,UAAA;AAAA,YACX,QAAA,EAAU,SAAA;AAAA,YACV,SAAA,EAAW,iBAAiB,KAAA,CAAM,SAAA,EAAW,MAAM,QAAA,EAAU,KAAA,CAAM,QAAA,EAAU,MAAA,CAAO,IAAI,CAAA;AAAA,YACxF,MAAA;AAAA,YACA,MAAA;AAAA,YACA,YAAA;AAAA,YACA,UAAA,EAAY,CAAC,IAAA,EAAM,CAAA,KAAM;AACrB,cAAA,MAAM,MAAA,GAAA,CAAU,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA,EAAQ,GAAA,CAAI,EAAE,KAAA,EAAO,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA;AAGhE,cAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AAAA,YAC/C,CAAA;AAAA,YACA,SAAA,EAAW,CAAC,IAAA,EAAM,CAAA,KAAM;AACpB,cAAA,MAAM,MAAA,GAAA,CAAU,MAAA,CAAO,IAAI,CAAA,IAAK,MAAA,EAAQ,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,CAAA;AAC/D,cAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AAAA,YAC/C,CAAA;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACX;AAAA,wBACAI,KAAC,MAAA,EAAA,EACI,QAAA,EAAA;AAAA,UAAA,IAAA,KAAS,KAAA,oBACNJ,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,GAAA,EAAK,WAAW,SAAA,EAAW,QAAA,EAAU,OAAO,aAAA,EAAc,EAC1F,iBAAO,GAAA,CAAI,CAAC,sBACTL,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cAEG,YAAA,EAAc,CAAA;AAAA,cACd,MAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,cAAc,KAAA,CAAM,YAAA;AAAA,cACpB,WAAA;AAAA,cACA,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,WAAA;AAAA,cACA,cAAA;AAAA,cACA,UAAA,EAAY,CAAC,IAAA,KAAS,KAAA,CAAM,WAAW,IAAI,CAAA;AAAA,cAC3C,UAAA,EAAY,CAAC,IAAA,KAAS,KAAA,CAAM,eAAe,IAAI,CAAA;AAAA,cAC9C,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC,aAAA;AAAA,YAZ7B,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA;AAAA,WAchC,CAAA,EACL,CAAA;AAAA,UAEH,IAAA,KAAS,OAAA,oBACNA,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAS,EAChC,QAAA,kBAAAL,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACG,YAAA,EAAc,MAAA;AAAA,cACd,MAAA;AAAA,cACA,cAAA,EAAgB,aAAA;AAAA,cAChB,QAAA,EAAU,CAAC,KAAA,KAAU;AACjB,gBAAA,MAAM,SAAS,IAAI,YAAA,CAAa,MAAA,CAAO,IAAA,EAAM,OAAO,CAAC,CAAA;AACrD,gBAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,aAAA,EAAe,CAAC,CAAA;AACpD,gBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,cACjB;AAAA;AAAA,WACJ,EACJ,CAAA;AAAA,UAEH,IAAA,KAAS,MAAA,oBACNA,GAAAA,CAACK,IAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAS,EAChC,QAAA,kBAAAL,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACG,YAAA,EAAc,MAAA;AAAA,cACd,cAAA,EAAgB,aAAA;AAAA,cAChB,QAAA,EAAU,CAAC,IAAA,KAAS;AAChB,gBAAA,MAAM,SAAS,IAAI,YAAA,CAAa,IAAA,EAAM,MAAA,CAAO,OAAO,CAAC,CAAA;AACrD,gBAAA,SAAA,CAAU,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,aAAA,EAAe,CAAC,CAAA;AACpD,gBAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,cACnB;AAAA;AAAA,WACJ,EACJ,CAAA;AAAA,UAEH,KAAA,CAAM,QAAA,IAAA,CAAa,KAAA,CAAM,OAAA,IAAW,OAAA,MAAa,QAAA,mBAAWA,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,CAAM,QAAA,EAAS,CAAA,GAAY;AAAA,SAAA,EAAA,EAjDxF,CAAA,MAAA,EAAS,IAAI,CAAA,CAkD1B;AAAA;AAAA;AAAA,GACJ;AAER,CAAA,EAjOsB,eAAA,CAAA;AAwPf,IAAM,eAAA,mBAAkB,MAAA,CAAA,CAAC,EAAE,QAAA,EAAS,qBAAuCA,GAAAA,CAAAU,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA,EAA/D,iBAAA,CAAA;AAK/B,eAAA,CAAgB,WAAA,GAAc,iBAAA;AASvB,IAAM,QAAA,GAAW;AACxB,QAAA,CAAS,OAAA,GAAU,eAAA","file":"chunk-X7APG7G2.js","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\n\nexport type LocaleInput = string | Intl.Locale;\n\n/**\n * Resolve the runtime's default locale. Works under Hermes (which ships\n * Intl on iOS via system ICU and on Android via bundled ICU) and any\n * browser. Returns a BCP 47 tag.\n */\nexport const detectLocale = (): string => {\n try {\n return new Intl.DateTimeFormat().resolvedOptions().locale;\n } catch {\n return 'en-US';\n }\n};\n\nconst toTag = (input: LocaleInput | undefined): string =>\n input === undefined ? detectLocale() : typeof input === 'string' ? input : input.toString();\n\nconst LocaleContext = createContext<string | null>(null);\nLocaleContext.displayName = 'LocaleContext';\n\nexport type LocaleProviderProps = {\n locale?: LocaleInput;\n children?: ReactNode;\n};\n\nexport const LocaleProvider = ({ locale, children }: LocaleProviderProps) => {\n const value = useMemo(() => toTag(locale), [locale]);\n return <LocaleContext.Provider value={value}>{children}</LocaleContext.Provider>;\n};\n\nexport const useLocale = (): string => {\n const ctx = useContext(LocaleContext);\n return ctx ?? detectLocale();\n};\n","import type { CalendarDate } from '@internationalized/date';\n\n/**\n * Day of week index where 0 = Sunday, 1 = Monday, ..., 6 = Saturday.\n * Matches `Date.prototype.getDay()` semantics.\n */\nexport type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n/**\n * The weekday a calendar week begins on for the given locale, per CLDR.\n * Examples: en-US → 0 (Sun), de-DE → 1 (Mon), fa-IR → 6 (Sat).\n *\n * Trusts `Intl.Locale#getWeekInfo` as the authoritative source. Falls back\n * to a small lookup only when CLDR data is unavailable (e.g. Hermes on\n * Android with bundled ICU gaps).\n */\nexport const getFirstDayOfWeek = (locale: string): DayOfWeek => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (typeof info?.firstDay === 'number') {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n return (info.firstDay === 7 ? 0 : info.firstDay) as DayOfWeek;\n }\n } catch {\n // fall through\n }\n // Fallback for environments without CLDR weekInfo (e.g. some Hermes builds).\n return FIRST_DAY_FALLBACK[locale] ?? FIRST_DAY_FALLBACK[locale.split('-')[0] ?? ''] ?? 1;\n};\n\n/**\n * Last-resort lookup when `Intl.Locale#getWeekInfo` is unavailable. Values\n * are 0=Sun..6=Sat. Keep small — only enough to keep the calendar usable\n * if the runtime has no CLDR data at all.\n */\nconst FIRST_DAY_FALLBACK: Record<string, DayOfWeek> = {\n en: 0,\n 'en-US': 0,\n 'en-CA': 0,\n 'en-GB': 1,\n 'en-AU': 1,\n de: 1,\n fr: 1,\n ja: 0,\n ar: 0,\n he: 0,\n fa: 6,\n};\n\n/**\n * The two days CLDR considers weekend in this locale (e.g. [6, 0] for\n * en-US = Sat+Sun; [5, 6] for ar-SA = Fri+Sat).\n *\n * Falls back to a small lookup when `Intl.Locale#getWeekInfo` is unavailable\n * (notably Hermes Android in some configurations).\n */\nexport const getWeekendDays = (locale: string): [DayOfWeek, DayOfWeek] => {\n try {\n // biome-ignore lint/suspicious/noExplicitAny: weekInfo is in the spec but TS lib types lag\n const loc = new Intl.Locale(locale) as any;\n const info = loc.getWeekInfo?.() ?? loc.weekInfo;\n if (info?.weekend && Array.isArray(info.weekend) && info.weekend.length === 2) {\n // CLDR uses 1=Mon..7=Sun; convert to 0=Sun..6=Sat.\n const [a, b] = info.weekend.map((d: number) => (d === 7 ? 0 : d) as DayOfWeek);\n return [a, b];\n }\n } catch {\n // fall through\n }\n return WEEKEND_FALLBACK[locale] ?? WEEKEND_FALLBACK[locale.split('-')[0] ?? ''] ?? [6, 0];\n};\n\nconst WEEKEND_FALLBACK: Record<string, [DayOfWeek, DayOfWeek]> = {\n 'en-US': [6, 0],\n 'de-DE': [6, 0],\n 'fr-FR': [6, 0],\n 'ja-JP': [6, 0],\n 'ar-SA': [5, 6],\n 'ar-AE': [5, 6],\n 'he-IL': [5, 6],\n 'fa-IR': [4, 5],\n en: [6, 0],\n de: [6, 0],\n fr: [6, 0],\n ar: [5, 6],\n he: [5, 6],\n};\n\n/**\n * Seven weekday short names ordered to begin at the locale's firstDayOfWeek.\n * Use for the calendar grid header row.\n */\nexport const formatWeekdayNames = (locale: string, format: 'short' | 'narrow' = 'short'): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: format });\n const start = getFirstDayOfWeek(locale);\n // 2026-01-04 is a Sunday in Gregorian; offset from there.\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(Date.UTC(2026, 0, 4 + ((start + i) % 7)));\n return fmt.format(d);\n });\n};\n\n/** \"May 2026\" / \"Mai 2026\" / \"mai 2026\" — for the calendar header. */\nexport const formatMonthYearTitle = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' });\n return fmt.format(date.toDate('UTC'));\n};\n\n/** Twelve full month names in the active locale. */\nexport const formatMonthNames = (locale: string): string[] => {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long' });\n return Array.from({ length: 12 }, (_, m) => fmt.format(new Date(Date.UTC(2026, m, 15))));\n};\n\n/** \"May 5, 2026\" — for screen-reader announcements of the focused date. */\nexport const formatFullDate = (date: CalendarDate, locale: string): string => {\n const fmt = new Intl.DateTimeFormat(locale, { dateStyle: 'long' });\n return fmt.format(date.toDate('UTC'));\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback } from 'react';\nimport type { CalendarView, ChangeMeta } from '../Calendar.types';\nimport type { DayOfWeek } from './locale-utils';\nimport type { FocusDelta } from './use-calendar-state';\n\nexport type UseCalendarKeyboardProps = {\n focusedDate: CalendarDate;\n moveFocus: (delta: FocusDelta) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n setView: (view: CalendarView) => void;\n view: CalendarView;\n /** Default 0 (Sunday). Used by Home/End to compute week boundaries. */\n firstDayOfWeek?: DayOfWeek;\n};\n\nexport const useCalendarKeyboard = (props: UseCalendarKeyboardProps) => {\n const { focusedDate, moveFocus, selectDate, firstDayOfWeek = 0 } = props;\n\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const focusedDow = focusedDate.toDate('UTC').getUTCDay() as DayOfWeek;\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n moveFocus({ days: -1 });\n return;\n case 'ArrowRight':\n event.preventDefault();\n moveFocus({ days: 1 });\n return;\n case 'ArrowUp':\n event.preventDefault();\n moveFocus({ weeks: -1 });\n return;\n case 'ArrowDown':\n event.preventDefault();\n moveFocus({ weeks: 1 });\n return;\n case 'PageUp':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: -1 } : { months: -1 });\n return;\n case 'PageDown':\n event.preventDefault();\n moveFocus(event.shiftKey ? { years: 1 } : { months: 1 });\n return;\n case 'Home': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n moveFocus({ days: -back });\n return;\n }\n case 'End': {\n event.preventDefault();\n const back = (focusedDow - firstDayOfWeek + 7) % 7;\n const forward = 6 - back;\n moveFocus({ days: forward });\n return;\n }\n case 'Enter':\n case ' ':\n event.preventDefault();\n selectDate(focusedDate, 'keyboard');\n return;\n default:\n return;\n }\n },\n [focusedDate, firstDayOfWeek, moveFocus, selectDate]\n );\n\n return { onKeyDown };\n};\n","import type { CalendarDate } from '@internationalized/date';\n\nexport type Constraints = {\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n};\n\nconst cmp = (a: CalendarDate, b: CalendarDate): number => a.compare(b);\n\nexport const isOutOfRange = (date: CalendarDate, bounds: Pick<Constraints, 'minValue' | 'maxValue'> = {}): boolean => {\n if (bounds.minValue && cmp(date, bounds.minValue) < 0) {\n return true;\n }\n if (bounds.maxValue && cmp(date, bounds.maxValue) > 0) {\n return true;\n }\n return false;\n};\n\n/**\n * Returns a single predicate that combines minValue/maxValue bounds and\n * a user-provided `isDateUnavailable`. The composed function is what every\n * view layer (DayCell, keyboard nav focus skip, scroll list) consults.\n */\nexport const composeUnavailable =\n (c: Constraints) =>\n (date: CalendarDate): boolean => {\n if (isOutOfRange(date, c)) {\n return true;\n }\n if (c.isDateUnavailable?.(date)) {\n return true;\n }\n return false;\n };\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, today } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { CalendarMode, CalendarValue, CalendarView, ChangeMeta } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type FocusDelta = {\n days?: number;\n weeks?: number;\n months?: number;\n years?: number;\n};\n\nexport type UseCalendarStateProps<M extends CalendarMode> = Constraints & {\n mode?: M;\n locale: string;\n value?: CalendarValue<M>;\n defaultValue?: CalendarValue<M>;\n onChange?: (value: CalendarValue<M>, meta: ChangeMeta) => void;\n view?: CalendarView;\n defaultView?: CalendarView;\n onViewChange?: (view: CalendarView) => void;\n};\n\nexport type UseCalendarStateReturn<M extends CalendarMode> = {\n value: CalendarValue<M>;\n view: CalendarView;\n focusedDate: CalendarDate;\n setView: (next: CalendarView) => void;\n moveFocus: (delta: FocusDelta) => void;\n setFocusedDate: (date: CalendarDate) => void;\n selectDate: (date: CalendarDate, source: ChangeMeta['source']) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst initialFocus = <M extends CalendarMode>(\n mode: M,\n value: CalendarValue<M> | undefined,\n fallback: CalendarDate\n): CalendarDate => {\n if (!value) {\n return fallback;\n }\n if (mode === 'single') {\n return (value as CalendarDate | null) ?? fallback;\n }\n if (mode === 'range') {\n const r = value as { start: CalendarDate; end: CalendarDate | null };\n return r?.start ?? fallback;\n }\n const arr = value as CalendarDate[];\n return arr[0] ?? fallback;\n};\n\nexport const useCalendarState = <M extends CalendarMode = 'single'>(\n props: UseCalendarStateProps<M>\n): UseCalendarStateReturn<M> => {\n const mode = (props.mode ?? 'single') as M;\n const fallback = today(getLocalTimeZone());\n\n const [internalValue, setInternalValue] = useState<CalendarValue<M>>(() => {\n if (props.value !== undefined) {\n return props.value;\n }\n if (props.defaultValue !== undefined) {\n return props.defaultValue;\n }\n return (mode === 'multiple' ? [] : null) as CalendarValue<M>;\n });\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value as CalendarValue<M>) : internalValue;\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view = isViewControlled ? (props.view as CalendarView) : internalView;\n\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(() => initialFocus(mode, value, fallback));\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const moveFocus = useCallback(\n (delta: FocusDelta) => {\n setFocusedDate((cur) => {\n let next = cur;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n if (!isUnavailable(next)) {\n return next;\n }\n // Target is disabled — scan in the direction of motion for\n // the next available date. Cap at ~100 days so a wide\n // disabled range doesn't loop forever; if nothing's\n // available within the cap, leave focus where it was.\n const totalDelta =\n (delta.days ?? 0) + (delta.weeks ?? 0) * 7 + (delta.months ?? 0) * 30 + (delta.years ?? 0) * 365;\n const sign = totalDelta >= 0 ? 1 : -1;\n for (let i = 1; i <= 100; i++) {\n const candidate = next.add({ days: sign * i });\n if (!isUnavailable(candidate)) {\n return candidate;\n }\n }\n return cur;\n });\n },\n [isUnavailable]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source']) => {\n if (isUnavailable(date)) {\n return;\n }\n const meta: ChangeMeta = { view, source };\n let next: CalendarValue<M>;\n if (mode === 'single') {\n next = date as CalendarValue<M>;\n } else if (mode === 'multiple') {\n const arr = (value as CalendarDate[]) ?? [];\n const exists = arr.some((d) => d.compare(date) === 0);\n next = (exists ? arr.filter((d) => d.compare(date) !== 0) : [...arr, date]) as CalendarValue<M>;\n } else {\n // range mode is delegated to useRangeState\n return;\n }\n if (!isControlled) {\n setInternalValue(next);\n }\n props.onChange?.(next, meta);\n setFocusedDate(date);\n },\n [isControlled, isUnavailable, mode, props.onChange, value, view]\n );\n\n return {\n value,\n view,\n focusedDate,\n setView,\n moveFocus,\n setFocusedDate,\n selectDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { useCallback, useMemo, useState } from 'react';\nimport type { ChangeMeta, DateRange } from '../Calendar.types';\nimport { type Constraints, composeUnavailable } from './constraints';\n\nexport type UseRangeStateProps = Constraints & {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (value: DateRange | null, meta: ChangeMeta) => void;\n minNights?: number;\n maxNights?: number;\n};\n\nexport type UseRangeStateReturn = {\n value: DateRange | null;\n previewRange: DateRange | null;\n hoveredDate: CalendarDate | null;\n selectDate: (date: CalendarDate, source?: ChangeMeta['source']) => void;\n setHoveredDate: (date: CalendarDate | null) => void;\n isUnavailable: (date: CalendarDate) => boolean;\n};\n\nconst order = (a: CalendarDate, b: CalendarDate): [CalendarDate, CalendarDate] => (a.compare(b) <= 0 ? [a, b] : [b, a]);\n\nconst nightsBetween = (a: CalendarDate, b: CalendarDate): number => {\n const [first, last] = order(a, b);\n return Math.round((last.toDate('UTC').getTime() - first.toDate('UTC').getTime()) / 86400000);\n};\n\nexport const useRangeState = (props: UseRangeStateProps): UseRangeStateReturn => {\n const [internal, setInternal] = useState<DateRange | null>(props.defaultValue ?? null);\n const isControlled = props.value !== undefined;\n const value = isControlled ? (props.value ?? null) : internal;\n\n const [hoveredDate, setHoveredDate] = useState<CalendarDate | null>(null);\n\n const isUnavailable = useMemo(\n () =>\n composeUnavailable({\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n }),\n [props.minValue, props.maxValue, props.isDateUnavailable]\n );\n\n const commit = useCallback(\n (next: DateRange | null, source: ChangeMeta['source']) => {\n if (!isControlled) {\n setInternal(next);\n }\n props.onChange?.(next, { view: 'day', source });\n },\n [isControlled, props.onChange]\n );\n\n const selectDate = useCallback(\n (date: CalendarDate, source: ChangeMeta['source'] = 'click') => {\n if (isUnavailable(date)) {\n return;\n }\n\n // No range yet, or both endpoints set → start a fresh selection.\n if (!value || value.end !== null) {\n commit({ start: date, end: null }, source);\n setHoveredDate(null);\n return;\n }\n\n // We have a pending start, no end yet.\n const nights = nightsBetween(value.start, date);\n if (props.minNights !== undefined && nights < props.minNights) {\n return;\n }\n if (props.maxNights !== undefined && nights > props.maxNights) {\n return;\n }\n\n const [start, end] = order(value.start, date);\n commit({ start, end }, source);\n setHoveredDate(null);\n },\n [commit, isUnavailable, props.maxNights, props.minNights, value]\n );\n\n const previewRange = useMemo<DateRange | null>(() => {\n if (!value || value.end !== null || !hoveredDate) {\n return null;\n }\n const [start, end] = order(value.start, hoveredDate);\n return { start, end };\n }, [hoveredDate, value]);\n\n return {\n value,\n previewRange,\n hoveredDate,\n selectDate,\n setHoveredDate,\n isUnavailable,\n };\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { createContext, type ReactNode, useContext } from 'react';\n\nexport type CaptionOption = {\n value: number;\n label: string;\n disabled: boolean;\n};\n\nexport type CaptionContextValue = {\n /** Currently displayed month, 1..12. */\n month: number;\n /** Currently displayed year. */\n year: number;\n visibleMonth: CalendarDate;\n /** All months a, optional disabled flag derived from min/max + isDateUnavailable. */\n monthOptions: ReadonlyArray<CaptionOption>;\n /** Years inside `yearRange`, optional disabled flag. */\n yearOptions: ReadonlyArray<CaptionOption>;\n /** Set the displayed month, 1..12. */\n setMonth: (month: number) => void;\n /** Set the displayed year. */\n setYear: (year: number) => void;\n /** Move to the previous month/year/decade depending on the current view. */\n goPrev: () => void;\n /** Move to the next month/year/decade depending on the current view. */\n goNext: () => void;\n};\n\nconst CaptionContext = createContext<CaptionContextValue | null>(null);\nCaptionContext.displayName = 'CalendarCaptionContext';\n\nexport type CaptionProviderProps = {\n value: CaptionContextValue;\n children?: ReactNode;\n};\n\nexport const CaptionProvider = ({ value, children }: CaptionProviderProps) => (\n <CaptionContext.Provider value={value}>{children}</CaptionContext.Provider>\n);\n\n/**\n * Returns the current caption state and setters for a Calendar. Use inside\n * a `<Calendar.Caption>` slot (or any direct child of a Calendar with\n * `caption=\"custom\"`) to render your own dropdowns / navigation.\n *\n * @throws if called outside a Calendar with `caption=\"custom\"`.\n */\nexport const useCalendarCaption = (): CaptionContextValue => {\n const ctx = useContext(CaptionContext);\n if (!ctx) {\n throw new Error('useCalendarCaption must be called inside a <Calendar caption=\"custom\"> subtree.');\n }\n return ctx;\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useTranslation } from '../../../i18n/use-translation';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { Select } from '../../Select';\nimport type { CalendarCaption, CalendarView } from '../Calendar.types';\nimport { formatMonthNames, formatMonthYearTitle } from '../state/locale-utils';\nimport { type CaptionContextValue, type CaptionOption, CaptionProvider } from '../state/use-caption';\n\nconst ARROW_BUTTON_GAP = 8;\n\ntype CaptionProps = {\n /** All visible months, leftmost first. Always length-1 for non-day views. */\n months: ReadonlyArray<CalendarDate>;\n locale: string;\n view: CalendarView;\n caption: CalendarCaption;\n /** Width of one month grid; titles align centered above each grid. */\n gridWidth: number;\n monthGap: number;\n /** Year-dropdown bounds. */\n yearRange: [min: number, max: number];\n /** Constraint for disabling out-of-bounds options. */\n isMonthDisabled?: (year: number, month: number) => boolean;\n isYearDisabled?: (year: number) => boolean;\n onPrev: () => void;\n onNext: () => void;\n onTitlePress: (clicked: CalendarDate) => void;\n /** Mutate the anchor month for a specific visible month index. */\n onSetMonth: (slotIndex: number, month: number) => void;\n onSetYear: (slotIndex: number, year: number) => void;\n /** Children for `caption=\"custom\"` mode. */\n children?: ReactNode;\n};\n\ntype NavButtonProps = {\n label: string;\n onPress: () => void;\n children: ReactNode;\n};\n\nconst NavButton = ({ label, onPress, children }: NavButtonProps) => {\n const colors = useThemeColors();\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, border-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.94 : 1 }] }, border];\n }}\n >\n <RNText style={{ color: colors.semantic.text.default, fontSize: 16, lineHeight: 16, fontWeight: '500' }}>\n {children}\n </RNText>\n </Pressable>\n );\n};\n\nconst TitleButton = ({\n text,\n ariaLabel,\n onPress,\n drilldown,\n}: {\n text: string;\n ariaLabel: string;\n onPress?: () => void;\n drilldown: boolean;\n}) => {\n const colors = useThemeColors();\n if (!onPress) {\n return (\n <View style={{ paddingHorizontal: 12, paddingVertical: 6, alignItems: 'center' }}>\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n </View>\n );\n }\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={ariaLabel}\n onPress={onPress}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 8,\n };\n const transition = {\n transitionProperty: 'background-color, transform',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n const bg = pressed\n ? colors.color.primary['200']\n : hovered\n ? colors.color.primary['100']\n : 'transparent';\n const border = focused\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [base, transition, { backgroundColor: bg, transform: [{ scale: pressed ? 0.97 : 1 }] }, border];\n }}\n >\n <RNText\n style={{\n color: colors.semantic.text.default,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: -0.1,\n }}\n >\n {text}\n </RNText>\n {drilldown ? (\n <RNText aria-hidden style={{ color: colors.semantic.text.muted, fontSize: 10, opacity: 0.7 }}>\n ▾\n </RNText>\n ) : null}\n </Pressable>\n );\n};\n\nexport const Caption = ({\n months,\n locale,\n view,\n caption,\n gridWidth,\n monthGap,\n yearRange,\n isMonthDisabled,\n isYearDisabled,\n onPrev,\n onNext,\n onTitlePress,\n onSetMonth,\n onSetYear,\n children,\n}: CaptionProps) => {\n const { t } = useTranslation();\n\n const titleText = (m: CalendarDate) => {\n if (view === 'day') {\n return formatMonthYearTitle(m, locale);\n }\n if (view === 'month') {\n return String(m.year);\n }\n const start = m.year - (m.year % 10);\n return `${start} – ${start + 11}`;\n };\n\n const titleAriaKey =\n view === 'day'\n ? 'calendar.header.openMonthView'\n : view === 'month'\n ? 'calendar.header.openYearView'\n : 'calendar.header.openDayView';\n\n // Title row width — sized to the visible grids so titles align over them.\n const showMultiTitles = view === 'day' && months.length > 1;\n const titleRowWidth = showMultiTitles ? months.length * gridWidth + (months.length - 1) * monthGap : gridWidth;\n\n // Month and year option lists — used by the dropdown / custom modes.\n const monthNames = useMemo(() => formatMonthNames(locale), [locale]);\n\n // Custom mode: provide the context for slot consumers and render their JSX.\n // We use `months[0]` (focused leftmost month) for context — when consumers\n // need per-month dropdowns they can compose multiple `Calendar.Caption`s.\n const focused = months[0] ?? undefined;\n if (!focused) {\n return null;\n }\n const ctxValue: CaptionContextValue = {\n month: focused.month,\n year: focused.year,\n visibleMonth: focused,\n monthOptions: monthNames.map((label, i) => ({\n value: i + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, i + 1) ?? false,\n })),\n yearOptions: Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n })),\n setMonth: (m) => onSetMonth(0, m),\n setYear: (y) => onSetYear(0, y),\n goPrev: onPrev,\n goNext: onNext,\n };\n\n if (caption === 'custom') {\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <CaptionProvider value={ctxValue}>{children}</CaptionProvider>\n </View>\n );\n }\n\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 10,\n gap: ARROW_BUTTON_GAP,\n alignSelf: 'center',\n }}\n >\n <NavButton label={t('calendar.header.previous', { defaultValue: 'Previous' })} onPress={onPrev}>\n ‹\n </NavButton>\n <View style={{ flexDirection: 'row', gap: monthGap, width: titleRowWidth }}>\n {showMultiTitles ? (\n months.map((m, i) => (\n <View key={`${m.year}-${m.month}`} style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={m.month}\n year={m.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(m.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(i, next)}\n onYearChange={(next) => onSetYear(i, next)}\n />\n ) : (\n <TitleButton\n text={titleText(m)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(m)}\n drilldown\n />\n )}\n </View>\n ))\n ) : (\n <View style={{ width: gridWidth, alignItems: 'center' }}>\n {caption === 'dropdown' && view === 'day' ? (\n <DropdownPair\n month={focused.month}\n year={focused.year}\n monthOptions={monthNames.map((label, j) => ({\n value: j + 1,\n label,\n disabled: isMonthDisabled?.(focused.year, j + 1) ?? false,\n }))}\n yearOptions={makeYearOptions(yearRange, isYearDisabled)}\n onMonthChange={(next) => onSetMonth(0, next)}\n onYearChange={(next) => onSetYear(0, next)}\n />\n ) : (\n <TitleButton\n text={titleText(focused)}\n ariaLabel={t(titleAriaKey, { defaultValue: 'Change view' })}\n onPress={() => onTitlePress(focused)}\n drilldown\n />\n )}\n </View>\n )}\n </View>\n <NavButton label={t('calendar.header.next', { defaultValue: 'Next' })} onPress={onNext}>\n ›\n </NavButton>\n </View>\n );\n};\n\nconst makeYearOptions = (\n yearRange: [number, number],\n isYearDisabled?: (year: number) => boolean\n): ReadonlyArray<CaptionOption> =>\n Array.from({ length: yearRange[1] - yearRange[0] + 1 }, (_, i) => ({\n value: yearRange[0] + i,\n label: String(yearRange[0] + i),\n disabled: isYearDisabled?.(yearRange[0] + i) ?? false,\n }));\n\ntype DropdownPairProps = {\n month: number;\n year: number;\n monthOptions: ReadonlyArray<CaptionOption>;\n yearOptions: ReadonlyArray<CaptionOption>;\n onMonthChange: (m: number) => void;\n onYearChange: (y: number) => void;\n};\n\nconst DropdownPair = ({ month, year, monthOptions, yearOptions, onMonthChange, onYearChange }: DropdownPairProps) => {\n return (\n <View style={{ flexDirection: 'row', gap: 6 }}>\n <Select\n value={String(month)}\n onChange={(v) => onMonthChange(Number(v))}\n options={monthOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Month\"\n searchable={false}\n />\n <Select\n value={String(year)}\n onChange={(v) => onYearChange(Number(v))}\n options={yearOptions.map((o) => ({\n value: String(o.value),\n label: o.label,\n disabled: o.disabled,\n }))}\n aria-label=\"Year\"\n searchable={false}\n />\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { TextStyle, ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { DayContext } from '../Calendar.types';\n\nexport type DayCellProps = {\n ctx: DayContext;\n onPress: () => void;\n onHoverIn?: () => void;\n onHoverOut?: () => void;\n /** When provided, the slot wins over default day rendering. */\n renderDay?: (ctx: DayContext) => ReactNode;\n};\n\nexport const CELL_SIZE = 40;\n\nexport const DayCell = ({ ctx, onPress, onHoverIn, onHoverOut, renderDay }: DayCellProps) => {\n const colors = useThemeColors();\n\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n\n // Range middle / preview cells get a flat background drawn by the\n // gridcell wrapper in DayGrid (so adjacent cells visually connect).\n // The DayCell itself is transparent in that case.\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n const isRangeMiddle = isInsideRange && !isSelectedLike;\n\n const dataState = ctx.isSelected\n ? 'selected'\n : ctx.isRangeStart\n ? 'range-start'\n : ctx.isRangeEnd\n ? 'range-end'\n : ctx.isInPreviewRange\n ? 'preview'\n : ctx.isInRange\n ? 'in-range'\n : undefined;\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: ctx.isUnavailable }}\n disabled={ctx.isUnavailable}\n onPress={onPress}\n {...(onHoverIn ? { onHoverIn } : {})}\n {...(onHoverOut ? { onHoverOut } : {})}\n style={({ pressed, hovered, focused }: { pressed: boolean; hovered?: boolean; focused?: boolean }) => {\n const base: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 999, // perfect circle for endpoints/selected\n position: 'relative',\n };\n\n if (ctx.isUnavailable) {\n return [base, { opacity: 0.28 }];\n }\n\n let backgroundColor: string | undefined;\n let transform: ViewStyle['transform'];\n let borderWidth: number | undefined;\n let borderColor: string | undefined;\n\n if (isSelectedLike) {\n backgroundColor = colors.semantic.interactive.primary;\n if (pressed) {\n backgroundColor = colors.semantic.interactive.primaryPressed;\n } else if (hovered) {\n backgroundColor = colors.semantic.interactive.primaryHover;\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else if (isRangeMiddle) {\n // Sits ON TOP of the gridcell range fill. Keep transparent\n // so the bar reads continuous across cells. On hover we\n // brighten with a soft circular halo.\n backgroundColor = hovered ? colors.color.primary['200'] : 'transparent';\n transform = [{ scale: pressed ? 0.94 : 1 }];\n } else {\n // Idle / hover / focus on a non-selected non-range cell.\n if (pressed) {\n backgroundColor = colors.color.primary['200'];\n } else if (hovered) {\n backgroundColor = colors.color.primary['100'];\n } else {\n backgroundColor = 'transparent';\n }\n transform = [{ scale: pressed ? 0.94 : 1 }];\n }\n\n if ((ctx.isFocused || focused) && !isSelectedLike) {\n borderWidth = 2;\n borderColor = colors.semantic.interactive.primary;\n }\n\n // RN-Web honors these as CSS transitions; native ignores silently.\n const transition: ViewStyle = {\n transitionProperty: 'background-color, transform, border-color, opacity',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n\n return [\n base,\n transition,\n {\n backgroundColor,\n ...(transform ? { transform } : {}),\n ...(borderWidth ? { borderWidth, borderColor } : {}),\n },\n ];\n }}\n {...({\n dataSet: {\n dayKey: `${ctx.date.year}-${ctx.date.month}-${ctx.date.day}`,\n ...(dataState ? { state: dataState } : {}),\n },\n } as unknown as { dataSet: Record<string, string> })}\n >\n {renderDay ? (\n renderDay(ctx)\n ) : (\n <>\n <RNText\n style={\n {\n color: isSelectedLike\n ? colors.semantic.text.inverted\n : ctx.isOutsideMonth\n ? colors.semantic.text.muted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: ctx.isToday ? '600' : '400',\n opacity: ctx.isOutsideMonth ? 0.55 : 1,\n transitionProperty: 'color',\n transitionDuration: '140ms',\n } as unknown as TextStyle\n }\n >\n {ctx.date.day}\n </RNText>\n {/* Today indicator: a 4px dot below the number, primary-colored,\n becomes white when the cell is selected. Subtler than a ring\n and never causes layout shift. */}\n {ctx.isToday ? (\n <View\n style={{\n position: 'absolute',\n bottom: 5,\n width: 4,\n height: 4,\n borderRadius: 999,\n backgroundColor: isSelectedLike\n ? colors.semantic.text.inverted\n : colors.semantic.interactive.primary,\n }}\n />\n ) : null}\n </>\n )}\n </Pressable>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone, startOfMonth, today } from '@internationalized/date';\nimport { type ReactNode, useMemo } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport type { CalendarMode, CalendarValue, DateRange, DayContext } from '../Calendar.types';\nimport { type DayOfWeek, formatWeekdayNames, getFirstDayOfWeek } from '../state/locale-utils';\nimport { CELL_SIZE, DayCell } from './DayCell';\n\ntype DayGridProps<M extends CalendarMode> = {\n visibleMonth: CalendarDate;\n locale: string;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n firstDayOfWeek?: DayOfWeek;\n onDayPress: (date: CalendarDate) => void;\n onDayHover?: (date: CalendarDate | null) => void;\n renderDay?: (ctx: DayContext) => ReactNode;\n};\n\nconst isInRange = (date: CalendarDate, range: DateRange | null | undefined): boolean => {\n if (!range?.end) {\n return false;\n }\n return date.compare(range.start) >= 0 && date.compare(range.end) <= 0;\n};\n\nconst buildContext = <M extends CalendarMode>(\n date: CalendarDate,\n args: {\n visibleMonth: CalendarDate;\n mode: M;\n value: CalendarValue<M>;\n previewRange?: DateRange | null;\n focusedDate: CalendarDate;\n isUnavailable: (date: CalendarDate) => boolean;\n weekendDays: [DayOfWeek, DayOfWeek];\n todayDate: CalendarDate;\n }\n): DayContext => {\n const isOutsideMonth = date.month !== args.visibleMonth.month;\n const isToday = date.compare(args.todayDate) === 0;\n const dow = date.toDate('UTC').getUTCDay() as DayOfWeek;\n const isWeekend = args.weekendDays.includes(dow);\n let isSelected = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n let inRange = false;\n\n if (args.mode === 'single') {\n const v = args.value as CalendarDate | null;\n isSelected = !!v && v.compare(date) === 0;\n } else if (args.mode === 'range') {\n const r = args.value as DateRange | null;\n if (r) {\n isRangeStart = r.start.compare(date) === 0;\n isRangeEnd = r.end !== null && r.end.compare(date) === 0;\n inRange = isInRange(date, r);\n }\n } else {\n const arr = args.value as CalendarDate[];\n isSelected = arr.some((x) => x.compare(date) === 0);\n }\n\n return {\n date,\n isOutsideMonth,\n isToday,\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange: inRange,\n isInPreviewRange: isInRange(date, args.previewRange ?? null),\n isUnavailable: args.isUnavailable(date),\n isFocused: args.focusedDate.compare(date) === 0,\n isWeekend,\n };\n};\n\n// Stable row keys for the 6-row grid — never reorder, never change count.\nconst ROW_KEYS = ['row-0', 'row-1', 'row-2', 'row-3', 'row-4', 'row-5'] as const;\n\nexport const DayGrid = <M extends CalendarMode>(props: DayGridProps<M>) => {\n const {\n visibleMonth,\n locale,\n mode,\n value,\n previewRange,\n focusedDate,\n isUnavailable,\n weekendDays,\n firstDayOfWeek,\n onDayPress,\n onDayHover,\n renderDay,\n } = props;\n\n const colors = useThemeColors();\n const fdow = firstDayOfWeek ?? getFirstDayOfWeek(locale);\n\n const cells = useMemo<CalendarDate[]>(() => {\n const start = startOfMonth(visibleMonth);\n const startDow = start.toDate('UTC').getUTCDay() as DayOfWeek;\n const back = (startDow - fdow + 7) % 7;\n const first = start.subtract({ days: back });\n const total = 42; // 6 rows × 7 — handles all month layouts\n return Array.from({ length: total }, (_, i) => first.add({ days: i }));\n }, [visibleMonth, fdow]);\n\n const weekdayNames = useMemo(() => formatWeekdayNames(locale), [locale]);\n const todayDate = useMemo(() => today(getLocalTimeZone()), []);\n\n const gridWidth = 7 * CELL_SIZE;\n\n return (\n <View role=\"grid\" style={{ width: gridWidth }}>\n <View role=\"row\" style={{ flexDirection: 'row', marginBottom: 4 }}>\n {weekdayNames.map((name) => (\n <View\n key={name}\n role=\"columnheader\"\n style={{ width: CELL_SIZE, alignItems: 'center', paddingVertical: 6 }}\n >\n <RNText\n style={{\n fontSize: 11,\n fontWeight: '500',\n letterSpacing: 0.6,\n color: colors.semantic.text.muted,\n textTransform: 'uppercase',\n }}\n >\n {name}\n </RNText>\n </View>\n ))}\n </View>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} role=\"row\" style={{ flexDirection: 'row' }}>\n {cells.slice(row * 7, row * 7 + 7).map((date) => {\n const ctx = buildContext(date, {\n visibleMonth,\n mode,\n value,\n ...(previewRange !== undefined ? { previewRange } : {}),\n focusedDate,\n isUnavailable,\n weekendDays,\n todayDate,\n });\n const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;\n const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;\n\n // Range continuity: middle cells get a flat full-width\n // background. Endpoints get a half-fill on the side\n // facing the range so the bar visually connects with\n // the adjacent cell. Single-day ranges get no spillover.\n const wrapperStyle: ViewStyle = {\n width: CELL_SIZE,\n height: CELL_SIZE,\n position: 'relative',\n };\n const rangeFillTint = colors.color.primary['100'];\n let rangeFillStyle: ViewStyle | null = null;\n\n if (ctx.isRangeStart && !ctx.isRangeEnd) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: '50%',\n right: 0,\n backgroundColor: rangeFillTint,\n };\n } else if (ctx.isRangeEnd && !ctx.isRangeStart) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: '50%',\n backgroundColor: rangeFillTint,\n };\n } else if (isInsideRange && !isSelectedLike) {\n rangeFillStyle = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: rangeFillTint,\n };\n }\n\n const gridcellProps = {\n role: 'gridcell' as 'cell',\n ...(isSelectedLike ? { 'aria-selected': true as const } : {}),\n };\n\n return (\n <View\n key={`${date.year}-${date.month}-${date.day}`}\n {...gridcellProps}\n style={wrapperStyle}\n >\n {rangeFillStyle ? <View style={rangeFillStyle} /> : null}\n <DayCell\n ctx={ctx}\n onPress={() => onDayPress(date)}\n {...(onDayHover\n ? {\n onHoverIn: () => onDayHover(date),\n onHoverOut: () => onDayHover(null),\n }\n : {})}\n {...(renderDay ? { renderDay } : {})}\n />\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { View } from 'react-native';\n\nexport const Footer = ({ children }: { children?: ReactNode }) => <View style={{ paddingTop: 12 }}>{children}</View>;\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\nimport { formatMonthNames } from '../state/locale-utils';\n\ntype MonthGridProps = {\n visibleMonth: CalendarDate;\n locale: string;\n /** Width to fill (calendar inner width). Cells distribute across this. */\n availableWidth: number;\n onSelect: (month: number) => void; // 1..12\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2', 'r3'] as const;\n\nexport const MonthGrid = ({ visibleMonth, locale, availableWidth, onSelect }: MonthGridProps) => {\n const colors = useThemeColors();\n const names = formatMonthNames(locale);\n const cellHeight = 56;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2].map((col) => {\n const idx = row * 3 + col;\n const monthNumber = idx + 1;\n const isCurrent = monthNumber === visibleMonth.month;\n const name = names[idx] ?? '';\n return (\n <View key={monthNumber} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={name}\n onPress={() => onSelect(monthNumber)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n }}\n >\n {name}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useThemeColors } from '../../../theme/use-theme-colors';\n\ntype YearGridProps = {\n visibleMonth: CalendarDate;\n /** Width to fill (calendar inner width). */\n availableWidth: number;\n onSelect: (year: number) => void;\n};\n\nconst ROW_KEYS = ['r0', 'r1', 'r2'] as const;\n\nexport const YearGrid = ({ visibleMonth, availableWidth, onSelect }: YearGridProps) => {\n const colors = useThemeColors();\n const decadeStart = visibleMonth.year - (visibleMonth.year % 10);\n const years = Array.from({ length: 12 }, (_, i) => decadeStart + i - 1);\n const cellHeight = 60;\n\n return (\n <View style={{ width: availableWidth, paddingVertical: 8 }}>\n {ROW_KEYS.map((rowKey, row) => (\n <View key={rowKey} style={{ flexDirection: 'row', marginBottom: 4 }}>\n {[0, 1, 2, 3].map((col) => {\n const year = years[row * 4 + col];\n if (year === undefined) {\n return null;\n }\n const isCurrent = year === visibleMonth.year;\n const isAdjacentDecade = year < decadeStart || year >= decadeStart + 10;\n return (\n <View key={year} style={{ flex: 1, paddingHorizontal: 4 }}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={String(year)}\n onPress={() => onSelect(year)}\n style={({\n pressed,\n hovered,\n focused,\n }: {\n pressed: boolean;\n hovered?: boolean;\n focused?: boolean;\n }) => {\n const base: ViewStyle = {\n height: cellHeight,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n };\n const transition = {\n transitionProperty: 'background-color, transform, border-color',\n transitionDuration: '140ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n outlineStyle: 'none',\n } as unknown as ViewStyle;\n let bg: string;\n if (isCurrent) {\n bg = pressed\n ? colors.semantic.interactive.primaryPressed\n : hovered\n ? colors.semantic.interactive.primaryHover\n : colors.semantic.interactive.primary;\n } else if (pressed) {\n bg = colors.color.primary['200'];\n } else if (hovered) {\n bg = colors.color.primary['100'];\n } else {\n bg = 'transparent';\n }\n const border =\n focused && !isCurrent\n ? { borderWidth: 2, borderColor: colors.semantic.interactive.primary }\n : { borderWidth: 0 };\n return [\n base,\n transition,\n { backgroundColor: bg, transform: [{ scale: pressed ? 0.96 : 1 }] },\n border,\n ];\n }}\n >\n <RNText\n style={{\n color: isCurrent\n ? colors.semantic.text.inverted\n : colors.semantic.text.default,\n fontSize: 14,\n fontWeight: isCurrent ? '600' : '500',\n opacity: isAdjacentDecade ? 0.45 : 1,\n }}\n >\n {year}\n </RNText>\n </Pressable>\n </View>\n );\n })}\n </View>\n ))}\n </View>\n );\n};\n","'use client';\n\nimport { CalendarDate, getLocalTimeZone, today } from '@internationalized/date';\nimport { type ReactNode, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport type { LayoutChangeEvent, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { useLocale } from '../../i18n/locale';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport type { CalendarBaseProps, CalendarMode, CalendarValue, CalendarView, DateRange } from './Calendar.types';\nimport { type DayOfWeek, getFirstDayOfWeek, getWeekendDays } from './state/locale-utils';\nimport { useCalendarKeyboard } from './state/use-calendar-keyboard';\nimport { useCalendarState } from './state/use-calendar-state';\nimport { useRangeState } from './state/use-range-state';\nimport { Caption } from './view/Caption';\nimport { CELL_SIZE } from './view/DayCell';\nimport { DayGrid } from './view/DayGrid';\nimport { Footer } from './view/Footer';\nimport { MonthGrid } from './view/MonthGrid';\nimport { YearGrid } from './view/YearGrid';\n\n// Width constants used to compute the calendar's natural content width and\n// to pick a responsive `visibleMonths` based on the parent container width.\nconst GRID_WIDTH = 7 * CELL_SIZE; // single month grid (7 cols)\nconst MONTH_GAP = 16;\nconst ARROW_AREA = 32 + 8; // nav button width + gap to first/last grid edge\nconst SURFACE_PADDING = 16;\nconst SURFACE_BORDER = 1;\nconst requiredOuterWidth = (n: number) =>\n 2 * (ARROW_AREA + SURFACE_PADDING + SURFACE_BORDER) + n * GRID_WIDTH + (n - 1) * MONTH_GAP;\n\n// Body fade-up on view/month change. The wrapper's `key` flips on every\n// navigation (prev/next, drilldown), forcing a fresh mount; FadeIn starts\n// at opacity 0 + 4px down, then bumps to 1 / 0 in an effect so the inline\n// transition runs. RN-Web honors transition* style props; native ignores.\nconst focusDayCell = (root: HTMLElement | null, date: CalendarDate, force: boolean) => {\n if (!root) {\n return;\n }\n if (!force && !root.contains(document.activeElement)) {\n return;\n }\n const sel = `[data-day-key=\"${date.year}-${date.month}-${date.day}\"]`;\n const cell = root.querySelector(sel) as HTMLElement | null;\n const isDisabled = (cell as HTMLButtonElement | null)?.disabled === true;\n if (cell && !isDisabled) {\n if (cell !== document.activeElement) {\n cell.focus();\n }\n return;\n }\n // Cell is missing or disabled — fall back to focusing the calendar root\n // so subsequent keyboard navigation continues to fire onKeyDown\n // (otherwise focus drops to <body> and arrow keys go to the page).\n if (force && !root.contains(document.activeElement)) {\n root.focus();\n }\n};\n\nconst FadeIn = ({ children }: { children: ReactNode }) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n const id = requestAnimationFrame(() => setMounted(true));\n return () => cancelAnimationFrame(id);\n }, []);\n return (\n <View\n style={\n {\n opacity: mounted ? 1 : 0,\n transform: [{ translateY: mounted ? 0 : 4 }],\n transitionProperty: 'opacity, transform',\n transitionDuration: '220ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n } as ViewStyle\n }\n >\n {children}\n </View>\n );\n};\n\n/**\n * Picks a responsive number of visible months from a measured container\n * width. Used when the consumer doesn't pin `visibleMonths`. Falls back\n * to 1 month while measurement is in flight (initial render) so we never\n * overflow on first paint.\n */\nconst resolveYearRange = (\n input: [number, number] | undefined,\n minValue: import('@internationalized/date').CalendarDate | undefined,\n maxValue: import('@internationalized/date').CalendarDate | undefined,\n focusedYear: number\n): [number, number] => {\n if (input) {\n return input;\n }\n if (minValue && maxValue) {\n return [minValue.year, maxValue.year];\n }\n if (minValue) {\n return [minValue.year, Math.max(minValue.year, focusedYear + 10)];\n }\n if (maxValue) {\n return [Math.min(maxValue.year, focusedYear - 100), maxValue.year];\n }\n return [focusedYear - 100, focusedYear + 10];\n};\n\nconst pickVisibleMonths = (input: number | 'auto' | undefined, measuredWidth: number | null): number => {\n // `visibleMonths` is treated as a *maximum*: when the parent container\n // is too narrow to fit `target` months side-by-side, we drop to the\n // largest count that fits. `auto` defaults to 2.\n const target = typeof input === 'number' ? input : 2;\n if (measuredWidth == null || measuredWidth === 0) {\n // Pre-measurement (e.g. SSR / jsdom). Trust an explicit number;\n // fall back to 1 for `auto` so we don't overflow on first paint.\n return typeof input === 'number' ? input : 1;\n }\n for (let n = target; n >= 1; n--) {\n if (measuredWidth >= requiredOuterWidth(n)) {\n return n;\n }\n }\n return 1;\n};\n\n/**\n * Outer wrapper that measures the available container width and renders\n * the actual Calendar root once the measurement is in. Renders nothing on\n * the first paint to avoid the 1-month → 2-month flash; this is one\n * synchronous re-render after layout, imperceptible in practice.\n */\nconst CalendarRoot = <M extends CalendarMode = 'single'>(props: CalendarBaseProps<M>) => {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const onLayout = useCallback((e: LayoutChangeEvent) => {\n const next = e.nativeEvent.layout.width;\n setContainerWidth((prev) => (prev === next ? prev : next));\n }, []);\n\n return (\n <View onLayout={onLayout} style={{ width: '100%' }}>\n <CalendarSurface<M> containerWidth={containerWidth ?? 0} {...props} />\n </View>\n );\n};\n\nconst CalendarSurface = <M extends CalendarMode = 'single'>(\n props: CalendarBaseProps<M> & { containerWidth: number }\n) => {\n const providerLocale = useLocale();\n const locale = props.locale ?? providerLocale;\n\n if ((props.mode ?? 'single') === 'range') {\n return (\n <RangeCalendar\n {...(props as unknown as CalendarBaseProps<'range'> & { containerWidth: number })}\n locale={locale}\n />\n );\n }\n return (\n <SingleOrMultiCalendar\n {...(props as unknown as CalendarBaseProps<Exclude<CalendarMode, 'range'>> & { containerWidth: number })}\n locale={locale}\n />\n );\n};\n\n/**\n * Computes both the inner content width (for centering the body) and the\n * outer surface width (for the bordered card). Both depend on\n * visibleMonths only.\n */\nconst surfaceMetrics = (visibleMonths: number) => {\n const innerWidth = 2 * ARROW_AREA + visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP;\n return {\n innerWidth,\n // Body grids row width (excludes arrow area)\n gridsRowWidth: visibleMonths * GRID_WIDTH + (visibleMonths - 1) * MONTH_GAP,\n };\n};\n\nconst SingleOrMultiCalendar = <M extends Exclude<CalendarMode, 'range'>>(\n props: CalendarBaseProps<M> & { locale: string; containerWidth: number }\n) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n // Anchor month: what the user sees. Decoupled from `state.focusedDate`\n // so selecting a day in the rightmost grid does NOT shift the view.\n // Prev/Next buttons mutate this anchor; selectDate does not.\n const containerRef = useRef<HTMLElement | null>(null);\n\n const state = useCalendarState<M>({\n ...(props.mode !== undefined ? { mode: props.mode } : {}),\n locale,\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.view !== undefined ? { view: props.view } : {}),\n ...(props.defaultView !== undefined ? { defaultView: props.defaultView } : {}),\n ...(props.onViewChange !== undefined ? { onViewChange: props.onViewChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n });\n\n const [anchor, setAnchor] = useState<CalendarDate>(state.focusedDate);\n\n // Snap the anchor when the focused date moves OUTSIDE visible months\n // (only triggered by keyboard nav). We must not re-fire when the\n // anchor changes (prev/next), or arrow navigation would snap right\n // back to the focused month. anchorRef gives us the current value\n // without putting `anchor` in the dependency array.\n const anchorRef = useRef(anchor);\n useEffect(() => {\n anchorRef.current = anchor;\n }, [anchor]);\n useEffect(() => {\n const start = anchorRef.current;\n const end = start.add({ months: visibleMonths });\n if (state.focusedDate.compare(start) < 0 || state.focusedDate.compare(end) >= 0) {\n setAnchor(state.focusedDate);\n }\n }, [state.focusedDate, visibleMonths]);\n\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: state.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, state.focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [state.focusedDate, state.value]);\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate: state.focusedDate,\n moveFocus: (delta: import('./state/use-calendar-state').FocusDelta) => {\n state.moveFocus(delta);\n // PgDn/PgUp (months) and Shift+PgDn/PgUp (years) feel like\n // \"scroll the view by N\" — shift the anchor by the same delta so\n // the focused cell stays in its current slot. Day/week deltas\n // leave the anchor alone; the snap effect handles overflow.\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: state.selectDate,\n setView: state.setView,\n view: state.view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (state.view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (state.view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const onTitlePress = () => state.setView(state.view === 'day' ? 'month' : state.view === 'month' ? 'year' : 'day');\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={state.view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`smc-${state.view}`}>\n {state.view === 'day' && (\n <View style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}>\n {months.map((m) => (\n <DayGrid<M>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode={(props.mode ?? 'single') as M}\n value={state.value as CalendarValue<M>}\n focusedDate={state.focusedDate}\n isUnavailable={state.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => state.selectDate(date, 'click')}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n )}\n {state.view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n setAnchor(new CalendarDate(anchor.year, month, 1));\n state.setView('day');\n }}\n />\n </View>\n )}\n {state.view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n setAnchor(new CalendarDate(year, anchor.month, 1));\n state.setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\nconst RangeCalendar = (props: CalendarBaseProps<'range'> & { locale: string; containerWidth: number }) => {\n const { locale, renderDay, containerWidth } = props;\n const colors = useThemeColors();\n const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);\n const weekendDays = (props.weekendDays as [DayOfWeek, DayOfWeek] | undefined) ?? getWeekendDays(locale);\n\n const visibleMonths = pickVisibleMonths(props.visibleMonths, containerWidth);\n const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);\n\n const containerRef = useRef<HTMLElement | null>(null);\n\n const range = useRangeState({\n ...(props.value !== undefined ? { value: props.value } : {}),\n ...(props.defaultValue !== undefined ? { defaultValue: props.defaultValue } : {}),\n ...(props.onChange !== undefined ? { onChange: props.onChange } : {}),\n ...(props.minValue !== undefined ? { minValue: props.minValue } : {}),\n ...(props.maxValue !== undefined ? { maxValue: props.maxValue } : {}),\n ...(props.isDateUnavailable !== undefined ? { isDateUnavailable: props.isDateUnavailable } : {}),\n ...(props.minNights !== undefined ? { minNights: props.minNights } : {}),\n ...(props.maxNights !== undefined ? { maxNights: props.maxNights } : {}),\n });\n\n const initialFocus = range.value?.start ?? today(getLocalTimeZone());\n const [focusedDate, setFocusedDate] = useState<CalendarDate>(initialFocus);\n const keyboardNavRef = useRef(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: range.value is intentional — re-fire focus after a selection re-renders the cell\n useLayoutEffect(() => {\n focusDayCell(containerRef.current, focusedDate, keyboardNavRef.current);\n keyboardNavRef.current = false;\n }, [focusedDate, range.value]);\n const [anchor, setAnchor] = useState<CalendarDate>(initialFocus);\n\n const [internalView, setInternalView] = useState<CalendarView>(props.defaultView ?? 'day');\n const isViewControlled = props.view !== undefined;\n const view: CalendarView = isViewControlled ? (props.view as CalendarView) : internalView;\n const setView = useCallback(\n (next: CalendarView) => {\n if (!isViewControlled) {\n setInternalView(next);\n }\n props.onViewChange?.(next);\n },\n [isViewControlled, props.onViewChange]\n );\n\n const months = useMemo(\n () => Array.from({ length: visibleMonths }, (_, i) => anchor.add({ months: i })),\n [anchor, visibleMonths]\n );\n\n const keyboard = useCalendarKeyboard({\n focusedDate,\n moveFocus: (delta) => {\n setFocusedDate((f) => {\n let next = f;\n if (delta.days) {\n next = next.add({ days: delta.days });\n }\n if (delta.weeks) {\n next = next.add({ weeks: delta.weeks });\n }\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n if (delta.months || delta.years) {\n setAnchor((a) => {\n let next = a;\n if (delta.months) {\n next = next.add({ months: delta.months });\n }\n if (delta.years) {\n next = next.add({ years: delta.years });\n }\n return next;\n });\n }\n },\n selectDate: (date) => range.selectDate(date, 'keyboard'),\n setView,\n view,\n firstDayOfWeek,\n });\n\n const onPrev = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: -10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: -1 }));\n } else {\n setAnchor((a) => a.add({ months: -1 }));\n }\n };\n const onNext = () => {\n if (view === 'year') {\n setAnchor((a) => a.add({ years: 10 }));\n } else if (view === 'month') {\n setAnchor((a) => a.add({ years: 1 }));\n } else {\n setAnchor((a) => a.add({ months: 1 }));\n }\n };\n const [drilldownSlot, setDrilldownSlot] = useState(0);\n const onTitlePress = (clicked: CalendarDate) => {\n const slot = months.findIndex((m) => m.year === clicked.year && m.month === clicked.month);\n setDrilldownSlot(slot >= 0 ? slot : 0);\n if (clicked.compare(anchor) !== 0) {\n setAnchor(clicked);\n }\n setView(view === 'day' ? 'month' : view === 'month' ? 'year' : 'day');\n };\n\n return (\n <View\n ref={(node) => {\n containerRef.current = node as unknown as HTMLElement | null;\n if (typeof props.ref === 'function') {\n props.ref(node);\n } else if (props.ref) {\n (props.ref as { current: View | null }).current = node;\n }\n }}\n {...(props.testID !== undefined ? { testID: props.testID } : {})}\n // @ts-expect-error onKeyDown is supported by react-native-web on View\n onKeyDown={(e: React.KeyboardEvent) => {\n keyboardNavRef.current = true;\n keyboard.onKeyDown(e);\n }}\n tabIndex={0}\n style={{\n padding: SURFACE_PADDING,\n backgroundColor: colors.semantic.background.elevated,\n borderRadius: 16,\n borderWidth: SURFACE_BORDER,\n borderColor: colors.semantic.border.default,\n shadowColor: '#000',\n shadowOpacity: 0.04,\n shadowRadius: 12,\n shadowOffset: { width: 0, height: 4 },\n width: innerWidth + 2 * SURFACE_PADDING + 2 * SURFACE_BORDER,\n maxWidth: '100%',\n alignSelf: 'center',\n }}\n >\n <Caption\n months={months}\n locale={locale}\n view={view}\n caption={props.caption ?? 'title'}\n gridWidth={GRID_WIDTH}\n monthGap={MONTH_GAP}\n yearRange={resolveYearRange(props.yearRange, props.minValue, props.maxValue, anchor.year)}\n onPrev={onPrev}\n onNext={onNext}\n onTitlePress={onTitlePress}\n onSetMonth={(slot, m) => {\n const picked = (months[slot] ?? anchor).set({ month: m, day: 1 });\n // Subtract slot offset so the picked month stays in the\n // SAME visible slot the user clicked (not the leftmost).\n setAnchor(picked.subtract({ months: slot }));\n }}\n onSetYear={(slot, y) => {\n const picked = (months[slot] ?? anchor).set({ year: y, day: 1 });\n setAnchor(picked.subtract({ months: slot }));\n }}\n >\n {props.children}\n </Caption>\n <FadeIn key={`range-${view}`}>\n {view === 'day' && (\n <View style={{ flexDirection: 'row', gap: MONTH_GAP, alignSelf: 'center', width: gridsRowWidth }}>\n {months.map((m) => (\n <DayGrid<'range'>\n key={`${m.year}-${m.month}`}\n visibleMonth={m}\n locale={locale}\n mode=\"range\"\n value={range.value as DateRange | null}\n previewRange={range.previewRange}\n focusedDate={focusedDate}\n isUnavailable={range.isUnavailable}\n weekendDays={weekendDays}\n firstDayOfWeek={firstDayOfWeek}\n onDayPress={(date) => range.selectDate(date)}\n onDayHover={(date) => range.setHoveredDate(date)}\n {...(renderDay ? { renderDay } : {})}\n />\n ))}\n </View>\n )}\n {view === 'month' && (\n <View style={{ alignItems: 'center' }}>\n <MonthGrid\n visibleMonth={anchor}\n locale={locale}\n availableWidth={gridsRowWidth}\n onSelect={(month) => {\n const picked = new CalendarDate(anchor.year, month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('day');\n }}\n />\n </View>\n )}\n {view === 'year' && (\n <View style={{ alignItems: 'center' }}>\n <YearGrid\n visibleMonth={anchor}\n availableWidth={gridsRowWidth}\n onSelect={(year) => {\n const picked = new CalendarDate(year, anchor.month, 1);\n setAnchor(picked.subtract({ months: drilldownSlot }));\n setView('month');\n }}\n />\n </View>\n )}\n {props.children && (props.caption ?? 'title') !== 'custom' ? <Footer>{props.children}</Footer> : null}\n </FadeIn>\n </View>\n );\n};\n\n/**\n * Slot wrapper for Calendar's `caption=\"custom\"` mode. Use it to mark the\n * subtree that renders your own month/year pickers (or any other header\n * UI). Inside, call {@link useCalendarCaption} to read the current\n * month/year and trigger changes.\n *\n * `<Calendar.Caption>` is a transparent passthrough — Calendar renders\n * any direct children when `caption=\"custom\"`. The wrapper exists to\n * make the intent explicit at call sites and to give static analysis\n * something to introspect.\n *\n * @example\n * ```tsx\n * <Calendar caption=\"custom\">\n * <Calendar.Caption>\n * <MyMonthSelect />\n * <MyYearSelect />\n * </Calendar.Caption>\n * </Calendar>\n * ```\n */\nexport const CalendarCaption = ({ children }: CalendarCaptionProps): ReactNode => <>{children}</>;\n// react-docgen-typescript keys the generated props table by displayName,\n// and dotted names like 'Calendar.Caption' would force odd index lookups\n// downstream. Keep the registered name flat; consumers still access it\n// at call sites as `Calendar.Caption`.\nCalendarCaption.displayName = 'CalendarCaption';\n\nexport type CalendarCaptionProps = {\n /** Custom caption content — typically your own month / year selects. */\n children?: ReactNode;\n};\n\ntype CalendarComponent = typeof CalendarRoot & { Caption: typeof CalendarCaption };\n\nexport const Calendar = CalendarRoot as CalendarComponent;\nCalendar.Caption = CalendarCaption;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Switch/Switch.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-ZBW3BA5R.js","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { useCallback, useState } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { AnimatedView } from '../../animation/animated-view';\nimport { useAnimatedNumber } from '../../animation/use-animated-number';\nimport { Slot } from '../../slot';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type SwitchProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (next: boolean) => void;\n label?: string;\n className?: string;\n testID?: string;\n asChild?: boolean;\n children?: ReactNode;\n};\n\n// Layout-only base; row gap is theme-driven inside the component.\nconst ROW_LAYOUT_BASE: ViewStyle = { flexDirection: 'row', alignItems: 'center' };\n// Switch track + thumb are tightly coupled — width 40, height 24, thumb\n// 20×20, travel 18px. Component-density literals — not from theme.\nconst TRACK_BASE: ViewStyle = {\n width: 40,\n height: 24,\n borderRadius: 12,\n // Relative so the absolutely-positioned thumb anchors against the\n // track (not the page). The thumb's `left` value transitions between\n // 2 (off) and 18 (on) — see thumb style below.\n position: 'relative',\n};\nconst THUMB_BASE_STYLE: ViewStyle = {\n width: 20,\n height: 20,\n borderRadius: 10,\n // Web: boxShadow (the modern CSS-style replacement for the legacy RN\n // `shadow*` props that react-native-web has deprecated).\n // Native: elevation (Android) — RN ignores boxShadow there.\n ...({ boxShadow: '0 1px 2px rgba(0, 0, 0, 0.15)' } as ViewStyle),\n elevation: 2,\n};\n\n/**\n * Switch — a toggle control with role=\"switch\". Supports controlled + uncontrolled,\n * disabled state, asChild (via Slot), and a visible label that doubles as the\n * accessibility label.\n */\nexport const Switch = ({\n checked,\n defaultChecked = false,\n disabled,\n onChange,\n label,\n className,\n testID,\n asChild,\n children,\n}: SwitchProps) => {\n const colors = useThemeColors();\n const [inner, setInner] = useState<boolean>(defaultChecked);\n const isControlled = checked !== undefined;\n const value = isControlled ? Boolean(checked) : inner;\n // Pulled up here (above the asChild early-return) so the hook is\n // called on every render path, not conditionally. The slide isn't\n // used in the asChild branch, but the wasted work is tiny.\n const slide = useAnimatedNumber('left', value ? 18 : 2);\n\n const toggle = useCallback(() => {\n if (disabled) {\n return;\n }\n const next = !value;\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n }, [disabled, value, isControlled, onChange]);\n\n const ariaChecked: 'true' | 'false' = value ? 'true' : 'false';\n\n const commonProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n accessibilityRole: 'switch' as const,\n accessibilityState: { checked: value, disabled: Boolean(disabled) },\n testID,\n };\n if (disabled) {\n commonProps['aria-disabled'] = true;\n }\n if (label !== undefined) {\n commonProps['aria-label'] = label;\n commonProps.accessibilityLabel = label;\n }\n\n if (asChild) {\n const slotProps: Record<string, unknown> = {\n role: 'switch',\n 'aria-checked': ariaChecked,\n onClick: toggle,\n };\n if (disabled) {\n slotProps['aria-disabled'] = true;\n }\n if (label !== undefined) {\n slotProps['aria-label'] = label;\n }\n if (testID !== undefined) {\n slotProps['data-testid'] = testID;\n }\n if (className !== undefined) {\n slotProps.className = className;\n }\n return <Slot {...slotProps}>{children}</Slot>;\n }\n\n const trackClasses = cn(\n 'w-10 h-6 rounded-full justify-center px-0.5 transition-colors',\n value ? 'bg-semantic-interactive-primary' : 'bg-neutral-300 dark:bg-neutral-700',\n disabled ? 'opacity-60' : undefined\n );\n // Position is set inline below (absolute + animated `left`), so no\n // self-start/self-end classes here — they'd fight the inline position.\n const thumbClasses = cn('w-5 h-5 rounded-full bg-white dark:bg-neutral-100 shadow-sm');\n\n const trackStyle = [\n TRACK_BASE,\n {\n backgroundColor: value ? colors.semantic.interactive.primary : colors.color.neutral['600'],\n // Subtle 180ms color transition between off → on. Web only;\n // native has no equivalent for the track tint in v1.\n ...({ transitionProperty: 'background-color', transitionDuration: '180ms' } as ViewStyle),\n },\n disabled ? { opacity: 0.6 } : null,\n ];\n // Thumb stays a near-white disc — we deliberately don't go to a dark\n // grey on dark mode because the thumb needs to read as the \"moveable\n // puck\" against the track in both schemes.\n //\n // Animation: thumb slides between left:2 (off) and left:18 (on) —\n // track width 40 - padding 2 - thumb 20 = 18 px travel. The\n // useAnimatedNumber hook picks the right engine per platform (web\n // CSS transition / reanimated spring / RN Animated). The hook is\n // called once at the top of the function — see the `slide` above.\n const thumbStyle = [\n THUMB_BASE_STYLE,\n {\n backgroundColor: colors.color.neutral['50'],\n position: 'absolute' as const,\n top: 2,\n } as ViewStyle,\n slide as ViewStyle,\n ];\n\n // Whole-row Pressable so clicking the label toggles the switch. The\n // visible track is a non-interactive View — one role=\"switch\" per\n // logical control, not two competing hit-areas.\n const rowStyle: ViewStyle = { ...ROW_LAYOUT_BASE, gap: px(colors.spacing['2']) };\n\n return (\n <Pressable\n onPress={toggle}\n {...commonProps}\n className={cn('flex-row items-center gap-2', className)}\n style={rowStyle}\n >\n <View className={trackClasses} style={trackStyle}>\n {/*\n * Animated.View — the slide style fragment from\n * `useAnimatedNumber` contains an `Animated.Value` on\n * native; a plain `View` would render the value as 0\n * (no animation). On web, the same fragment is plain\n * CSS and `Animated.View` falls through to a regular\n * div via react-native-web.\n */}\n <AnimatedView className={thumbClasses} style={thumbStyle} />\n </View>\n {label ? (\n <RNText\n className=\"text-md text-semantic-text-default\"\n style={{\n color: colors.semantic.text.default,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n }}\n >\n {label}\n </RNText>\n ) : null}\n {children}\n </Pressable>\n );\n};\n"]}
|