@djangocfg/ui-core 2.1.103 → 2.1.105
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/package.json +18 -22
- package/src/components/index.ts +2 -0
- package/src/hooks/index.ts +2 -0
- package/src/index.ts +2 -0
- package/dist/components.cjs +0 -6825
- package/dist/components.cjs.map +0 -1
- package/dist/components.d.mts +0 -1536
- package/dist/components.d.ts +0 -1536
- package/dist/components.mjs +0 -6523
- package/dist/components.mjs.map +0 -1
- package/dist/hooks.cjs +0 -715
- package/dist/hooks.cjs.map +0 -1
- package/dist/hooks.d.mts +0 -190
- package/dist/hooks.d.ts +0 -190
- package/dist/hooks.mjs +0 -675
- package/dist/hooks.mjs.map +0 -1
- package/dist/index.cjs +0 -7301
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.mts +0 -1861
- package/dist/index.d.ts +0 -1861
- package/dist/index.mjs +0 -6969
- package/dist/index.mjs.map +0 -1
- package/dist/lib.cjs +0 -277
- package/dist/lib.cjs.map +0 -1
- package/dist/lib.d.mts +0 -206
- package/dist/lib.d.ts +0 -206
- package/dist/lib.mjs +0 -264
- package/dist/lib.mjs.map +0 -1
package/dist/components.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/components/button.tsx","../src/components/card.tsx","../src/components/badge.tsx","../src/components/input.tsx","../src/components/textarea.tsx","../src/components/label.tsx","../src/components/section.tsx","../src/hooks/useImageLoader.ts","../src/components/image-with-fallback.tsx","../src/components/checkbox.tsx","../src/components/radio-group.tsx","../src/components/select.tsx","../src/components/dialog.tsx","../src/components/command.tsx","../src/components/popover.tsx","../src/components/combobox.tsx","../src/components/multi-select.tsx","../src/components/separator.tsx","../src/lib/og-image.ts","../src/lib/logger/logStore.ts","../src/lib/logger/logger.ts","../src/components/multi-select-pro/index.tsx","../src/components/multi-select-pro/async.tsx","../src/components/switch.tsx","../src/components/slider.tsx","../src/components/input-otp.tsx","../src/components/otp/use-otp-input.ts","../src/components/otp/index.tsx","../src/components/skeleton.tsx","../src/components/aspect-ratio.tsx","../src/components/scroll-area.tsx","../src/components/resizable.tsx","../src/hooks/useMobile.tsx","../src/components/sticky.tsx","../src/components/portal.tsx","../src/components/alert-dialog.tsx","../src/components/sheet.tsx","../src/components/drawer.tsx","../src/components/hover-card.tsx","../src/components/tooltip.tsx","../src/components/table.tsx","../src/hooks/useEventsBus.ts","../src/hooks/useResolvedTheme.ts","../src/hooks/useLocalStorage.ts","../src/components/tabs.tsx","../src/components/accordion.tsx","../src/components/collapsible.tsx","../src/components/progress.tsx","../src/components/avatar.tsx","../src/components/calendar/calendar.tsx","../src/components/calendar/date-picker.tsx","../src/components/carousel.tsx","../src/components/token-icon.tsx","../src/components/chart.tsx","../src/components/toggle.tsx","../src/components/toggle-group.tsx","../src/components/context-menu.tsx","../src/components/dropdown-menu.tsx","../src/components/alert.tsx","../src/components/form.tsx","../src/components/button-group.tsx","../src/components/empty.tsx","../src/components/spinner.tsx","../src/components/preloader.tsx","../src/components/kbd.tsx","../src/components/input-group.tsx","../src/components/item.tsx","../src/components/field.tsx","../src/components/copy.tsx","../src/components/button-download.tsx","../src/components/og-image.tsx","../src/components/sonner.tsx","../src/components/phone-input.tsx","../src/components/navigation-menu.tsx","../src/components/menubar.tsx"],"names":["twMerge","clsx","cva","React","jsx","Slot","jsxs","Loader2","React2","React3","React4","React5","LabelPrimitive","useState","useCallback","useEffect","forwardRef","Car","User","Package","MapPin","ImageIcon","React7","CheckboxPrimitive","CheckIcon","React8","RadioGroupPrimitive","DotFilledIcon","SelectPrimitive","React9","ChevronDownIcon","ChevronUpIcon","DialogPrimitive","React10","Cross2Icon","React11","CommandPrimitive","MagnifyingGlassIcon","PopoverPrimitive","React12","React13","ChevronsUpDown","Check","React14","X","Separator","React15","SeparatorPrimitive","create","consola","log","React16","Icon","XCircle","Fragment","multiSelectVariants","badgeAnimations","popoverAnimations","isGroupedOptions","flattenOptions","deduplicateOptions","React17","React18","SwitchPrimitives","React19","SliderPrimitive","React20","OTPInput","OTPInputContext","MinusIcon","useMemo","InputOTPSeparator","React21","AspectRatioPrimitive","React22","ScrollAreaPrimitive","React23","ResizablePrimitive","DragHandleDots2Icon","React24","React25","StickyBox","Portal","React26","createPortal","AlertDialogPrimitive","React27","SheetPrimitive","React28","DrawerPrimitive","React29","HoverCardPrimitive","React30","TooltipPrimitive","React31","React32","useRef","key","React33","childrenArray","tabsList","tabsContent","TabsPrimitive","Menu","AccordionPrimitive","React34","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent","React35","ProgressPrimitive","React36","AvatarPrimitive","getDefaultClassNames","DayPicker","className","props","ChevronLeftIcon","ChevronRightIcon","React37","React38","CalendarIcon","format","React39","useEmblaCarousel","api","ArrowLeftIcon","ArrowRightIcon","React40","React41","RechartsPrimitive","config","React42","TogglePrimitive","React43","ToggleGroupPrimitive","ContextMenuPrimitive","React44","DropdownMenuPrimitive","React45","ChevronRight","Circle","React46","FormProvider","React47","Controller","useFormContext","Loader2Icon","Item","React48","Copy","React49","url","CheckCircle2","AlertCircle","Download","React50","Sonner","getCountries","getCountryCallingCode","React51","parsePhoneNumberFromString","AsYouType","ChevronDown","Search","React52","NavigationMenuPrimitive","MenubarPrimitive","React53"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;AAFgB,MAAA,CAAA,EAAA,EAAA,IAAA,CAAA;ACOhB,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EACrB,wTAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,+DAAA;AAAA,QACF,WAAA,EACE,8EAAA;AAAA,QACF,OAAA,EACE,0FAAA;AAAA,QACF,SAAA,EACE,wEAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,eAAA;AAAA,QACT,EAAA,EAAI,6BAAA;AAAA,QACJ,EAAA,EAAI,+BAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM,+BAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAUA,SAAS,YAAY,QAAA,EAA4C;AAC/D,EAAA,OAAaC,kBAAA,CAAA,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC7C,IAAA,IAAI,CAAOA,kBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG,OAAO,KAAA;AAEzC,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAEnB,IAAA,IAAI,SAAS,KAAA,IAAU,OAAO,IAAA,KAAS,QAAA,IAAY,SAAS,IAAA,EAAO;AACjE,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAZS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAcT,IAAM,MAAA,GAAeA,kBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,MAAM,OAAA,GAAU,KAAA,EAAO,OAAA,GAAU,KAAA,EAAO,SAAS,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC9G,IAAA,MAAM,WAAA,2BAAe,CAAA,KAA2C;AAC9D,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,OAAA,GAAU,CAAC,CAAA;AAAA,MACb;AAAA,IACF,CAAA,EAJoB,aAAA,CAAA;AAQpB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEC,cAAA;AAAA,QAACC,cAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,UAC1D,GAAA;AAAA,UACA,OAAA;AAAA,UACC,GAAG,KAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEC,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,UAAU,QAAA,IAAY,OAAA;AAAA,QACrB,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWF,cAAA,CAACG,mBAAA,EAAA,EAAQ,SAAA,EAAU,qBAAA,EAAsB,CAAA;AAAA,UACpD,OAAA,GAAU,WAAA,CAAY,QAAQ,CAAA,GAAI;AAAA;AAAA;AAAA,KACrC;AAAA,EAEJ;AACF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AASrB,IAAM,UAAA,GAAmBJ,kBAAA,CAAA,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC/D,IAAA,uBACEC,cAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;ACxHzB,IAAM,IAAA,GAAaI,8BAGjB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BJ,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,uDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,IAAM,UAAA,GAAmBI,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BJ,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,SAAA,GAAkBI,8BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BJ,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,IACnE,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,eAAA,GAAwBI,8BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BJ,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,WAAA,GAAoBI,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BJ,eAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,OAAO,CACjE;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,UAAA,GAAmBI,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BJ,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;ACpEzB,IAAM,aAAA,GAAgBF,0BAAAA;AAAA,EACpB,sKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,kFAAA;AAAA,QACF,SAAA,EACE,iFAAA;AAAA,QACF,WAAA,EACE,8FAAA;AAAA,QACF,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAMA,SAAS,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,OAAM,EAAe;AAC3D,EAAA,uBACEE,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE1E;AAJS,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;ACzBT,IAAM,KAAA,GAAcK,kBAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBACEL,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,0WAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;ACfpB,IAAM,QAAA,GAAiBM,8BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACEN,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,8PAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;ACVvB,IAAM,aAAA,GAAgBF,0BAAAA;AAAA,EACpB;AACF,CAAA;AAEA,IAAM,KAAA,GAAcS,8BAIlB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BP,cAAAA;AAAA,EAAgBQ,yBAAA,CAAA,IAAA;AAAA,EAAf;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,aAAA,EAAc,EAAG,SAAS,CAAA;AAAA,IACvC,GAAG;AAAA;AACN,CACD;AACD,KAAA,CAAM,cAA6BA,yBAAA,CAAA,IAAA,CAAK,WAAA;ACbjC,IAAM,0BAAU,MAAA,CAAA,CAAC;AAAA,EACtB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO;AACT,CAAA,KAAoB;AAQlB,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,OAAA,EAAS,eAAA;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,wCAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAEA,EAAA,uBACER,cAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,mBAAmB,cAAA,CAAe,OAAO,CAAA,EAAG,SAAS,GAC1E,QAAA,kBAAAA,cAAAA,CAAC,SAAI,SAAA,EAAU,6BAAA,EACZ,UACH,CAAA,EACF,CAAA;AAEJ,CAAA,EA3BuB,SAAA;AAmChB,IAAM,aAAA,mBAAgB,MAAA,CAAA,CAAC,EAAE,KAAA,EAAO,UAAU,SAAA,EAAU,qBACzDE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EAC/D,QAAA,EAAA;AAAA,kBAAAF,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,iEAAA,EACX,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,EACC,4BACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,mDACV,QAAA,EAAA,QAAA,EACH;AAAA,CAAA,EAEJ,CAAA,EAV2B,eAAA;ACxBtB,IAAM,cAAA,mBAAiB,MAAA,CAAA,CAC5B,GAAA,EACA,SAAA,KACqB;AACrB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIS,gBAAA,CAA2B;AAAA,IACnD,SAAA,EAAW,KAAA;AAAA,IACX,QAAA,EAAU,KAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,UAAA,GAAaC,mBAAA,CAAY,CAAC,KAAA,KAAiB;AAC/C,IAAA,QAAA,CAAS;AAAA,MACP,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,SAAA,CAAU,OAAO,KAA0D,CAAA;AAAA,IAC7E;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,MAAM,CAAC,CAAA;AAEtB,EAAA,MAAM,WAAA,GAAcA,mBAAA,CAAY,CAAC,KAAA,KAAiB;AAChD,IAAA,QAAA,CAAS;AAAA,MACP,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,SAAA,CAAU,QAAQ,KAA0D,CAAA;AAAA,IAC9E;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA;AAEvB,EAAAC,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,QAAA,CAAS;AAAA,QACP,SAAA,EAAW,KAAA;AAAA,QACX,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACX,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS;AAAA,MACP,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,IAAI,WAAW,WAAA,EAAa;AAC1B,MAAA,SAAA,CAAU,WAAA,EAAY;AAAA,IACxB;AAEA,IAAA,MAAM,GAAA,GAAM,IAAI,KAAA,EAAM;AAEtB,IAAA,GAAA,CAAI,gBAAA,CAAiB,QAAQ,UAAU,CAAA;AACvC,IAAA,GAAA,CAAI,gBAAA,CAAiB,SAAS,WAAW,CAAA;AAEzC,IAAA,GAAA,CAAI,GAAA,GAAM,GAAA;AAGV,IAAA,OAAO,MAAM;AACX,MAAA,GAAA,CAAI,mBAAA,CAAoB,QAAQ,UAAU,CAAA;AAC1C,MAAA,GAAA,CAAI,mBAAA,CAAoB,SAAS,WAAW,CAAA;AAAA,IAC9C,CAAA;AAAA,EACF,GAAG,CAAC,GAAA,EAAK,YAAY,WAAA,EAAa,SAAA,EAAW,WAAW,CAAC,CAAA;AAEzD,EAAA,OAAO,KAAA;AACT,CAAA,EAxE8B,gBAAA,CAAA;ACcvB,IAAM,iBAAA,GAAoBC,mBAAqD,CAAC;AAAA,EACrF,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,SAAA;AAAA;AAAA,EAGA,YAAA,GAAe,UAAA;AAAA,EACf,eAAA;AAAA,EACA,gBAAA,GAAmB,IAAA;AAAA;AAAA,EAGnB,WAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAGA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAGA,QAAA,GAAW,KAAA;AAAA,EACX,WAAA,GAAc,KAAA;AAAA;AAAA,EAGd,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,WAAW,OAAA,GAAU,MAAA;AAAA,EAC/B,QAAA,GAAW,OAAA;AAAA,EACX,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,QAAA,EAAS,GAAI,eAAe,GAAA,EAAK;AAAA,IAC5D,WAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,kCAAkB,MAAA,CAAA,MAAM;AAC5B,IAAA,QAAQ,YAAA;AAAc,MACpB,KAAK,KAAA;AAAO,QAAA,OAAOC,eAAA;AAAA,MACnB,KAAK,MAAA;AAAQ,QAAA,OAAOC,gBAAA;AAAA,MACpB,KAAK,SAAA;AAAW,QAAA,OAAOC,mBAAA;AAAA,MACvB,KAAK,UAAA;AAAY,QAAA,OAAOC,kBAAA;AAAA,MACxB,KAAK,OAAA;AAAA,MACL;AAAS,QAAA,OAAOC,qBAAA;AAAA;AAClB,EACF,CAAA,EATwB,iBAAA,CAAA;AAWxB,EAAA,MAAM,eAAe,eAAA,EAAgB;AAGrC,EAAA,IAAI,QAAA,IAAY,CAAC,GAAA,EAAK;AACpB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,uBACEjB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,kCAAA,EAAoC,SAAS,GAC7D,QAAA,EAAA,eAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,uEAAA;AAAA,UACA,gCAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,KACpC;AAAA,EAEJ;AAGA,EAAA,IAAI,aAAa,gBAAA,EAAkB;AACjC,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA,EAEpD,QAAA,EAAA;AAAA,MAAA,CAAA,WAAA,IAAe,gCACfF,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,WAAA,IAAe,WAAA;AAAA,UACpB,GAAA,EAAI,EAAA;AAAA,UACJ,SAAA,EAAU,+DAAA;AAAA,UACV,aAAA,EAAY;AAAA;AAAA,OACd;AAAA,sBAIFA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA;AAAA,QACd,mDAAA;AAAA,QACA,oDAAA;AAAA,QACA;AAAA,SAEA,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,WAAU,CAAA,EACpC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACEA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,SAAS,CAAA;AAAA,QACvE,MAAA;AAAA,QACA,OAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AAGA,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uEAAA;AAAA,QACA,gCAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,GACpC;AAEJ,CAAC;AAED,iBAAA,CAAkB,WAAA,GAAc,mBAAA;ACjKhC,IAAM,QAAA,GAAiBkB,8BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BlB,cAAAA;AAAA,EAAmBmB,4BAAA,CAAA,IAAA;AAAA,EAAlB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oQAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAnB,cAAAA;AAAA,MAAmBmB,4BAAA,CAAA,SAAA;AAAA,MAAlB;AAAA,QACC,SAAA,EAAW,GAAG,+CAA+C,CAAA;AAAA,QAE7D,QAAA,kBAAAnB,cAAAA,CAACoB,oBAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACjC;AACF,CACD;AACD,QAAA,CAAS,cAAgCD,4BAAA,CAAA,IAAA,CAAK,WAAA;ACnB9C,IAAM,UAAA,GAAmBE,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACErB,cAAAA;AAAA,IAAqBsB,8BAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MACJ;AAAA;AAAA,GACF;AAEJ,CAAC;AACD,UAAA,CAAW,cAAkCA,8BAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,cAAA,GAAuBD,8BAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACErB,cAAAA;AAAA,IAAqBsB,8BAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8LAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAtB,cAAAA,CAAqBsB,8BAAA,CAAA,SAAA,EAApB,EAA8B,SAAA,EAAU,kCAAA,EACvC,QAAA,kBAAAtB,cAAAA,CAACuB,wBAAA,EAAA,EAAc,SAAA,EAAU,0BAAA,EAA2B,CAAA,EACtD;AAAA;AAAA,GACF;AAEJ,CAAC;AACD,cAAA,CAAe,cAAkCD,8BAAA,CAAA,IAAA,CAAK,WAAA;ACjCtD,IAAM,MAAA,GAAyBE,0BAAA,CAAA;AAI/B,IAAM,WAAA,GAA8BA,0BAAA,CAAA;AAEpC,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCvB,eAAAA;AAAA,EAAiBsB,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iUAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDxB,cAAAA,CAAiBwB,0BAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAxB,cAAAA,CAAC0B,0BAAA,EAAA,EAAgB,SAAA,EAAU,oBAAA,EAAqB,CAAA,EAClD;AAAA;AAAA;AACF,CACD;AACD,aAAA,CAAc,cAA8BF,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,oBAAA,GAA6BC,8BAGjC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BzB,cAAAA;AAAA,EAAiBwB,0BAAA,CAAA,cAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAxB,cAAAA,CAAC2B,wBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU;AAAA;AACrC,CACD,CAAA;AACD,oBAAA,CAAqB,cAA8BH,0BAAA,CAAA,cAAA,CAAe,WAAA;AAElE,IAAM,sBAAA,GAA+BC,8BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BzB,cAAAA;AAAA,EAAiBwB,0BAAA,CAAA,gBAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAxB,cAAAA,CAAC0B,0BAAA,EAAA,EAAgB,SAAA,EAAU,SAAA,EAAU;AAAA;AACvC,CACD,CAAA;AACD,sBAAA,CAAuB,cACLF,0BAAA,CAAA,gBAAA,CAAiB,WAAA;AAEnC,IAAM,gBAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,UAAU,QAAA,GAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,qBACzDzB,cAAAA,CAAiBwB,0BAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAtB,eAAAA;AAAA,EAAiBsB,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4gBAAA;AAAA,MACA,aAAa,QAAA,IACX,iIAAA;AAAA,MACF;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAxB,eAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,sBACtBA,cAAAA;AAAA,QAAiBwB,0BAAA,CAAA,QAAA;AAAA,QAAhB;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,KAAA;AAAA,YACA,aAAa,QAAA,IACX;AAAA,WACJ;AAAA,UAEC;AAAA;AAAA,OACH;AAAA,sBACAxB,eAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAC1B,CAAA,EACF,CACD;AACD,aAAA,CAAc,cAA8BwB,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,WAAA,GAAoBC,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BzB,cAAAA;AAAA,EAAiBwB,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,IAC3D,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,UAAA,GAAmBC,kBAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCvB,eAAAA;AAAA,EAAiBsB,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2NAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAxB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+DAAA,EACd,0BAAAA,cAAAA,CAAiBwB,0BAAA,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAAxB,eAACoB,oBAAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU,GACjC,CAAA,EACF,CAAA;AAAA,sBACApB,cAAAA,CAAiBwB,0BAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AACtC,CACD;AACD,UAAA,CAAW,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;AAE9C,IAAM,eAAA,GAAwBC,8BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BzB,cAAAA;AAAA,EAAiBwB,0BAAA,CAAA,SAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD,CAAA;AACD,eAAA,CAAgB,cAA8BA,0BAAA,CAAA,SAAA,CAAU,WAAA;ACzIxD,IAAM,MAAA,GAAyBI,0BAAA,CAAA;AAE/B,IAAM,aAAA,GAAgCA,0BAAA,CAAA;AAEtC,IAAM,YAAA,GAA+BA,0BAAA,CAAA,MAAA;AAErC,IAAM,WAAA,GAA8BA,0BAAA,CAAA;AAEpC,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjC7B,cAAAA;AAAA,EAAiB4B,0BAAA,CAAA,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,6IAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,EAAE,eAAA,EAAiB,kBAAA,EAAoB,GAAG,KAAA,EAAM;AAAA,IACtD,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,cAA8BA,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC3B,eAAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAF,eAAC,aAAA,EAAA,EAAc,CAAA;AAAA,kBACfE,eAAAA;AAAA,IAAiB0B,0BAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD1B,eAAAA,CAAiB0B,0BAAA,CAAA,KAAA,EAAhB,EAAsB,WAAU,+QAAA,EAC/B,QAAA,EAAA;AAAA,0BAAA5B,cAAAA,CAAC8B,qBAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BAChC9B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC;AAAA;AAAA;AAAA;AACF,CAAA,EACF,CACD;AACD,aAAA,CAAc,cAA8B4B,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAEpD,IAAM,+BAAe,MAAA,CAAA,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACE5B,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVmB,cAAA;AAYrB,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,+BAAe,MAAA,CAAA,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVmB,cAAA;AAYrB,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoB6B,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,cAAAA;AAAA,EAAiB4B,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,cAAAA;AAAA,EAAiB4B,0BAAA,CAAA,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAA8BA,0BAAA,CAAA,WAAA,CAAY,WAAA;ACnG5D,IAAM,OAAA,GAAgBG,8BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B/B,cAAAA;AAAA,EAACgC,YAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,OAAA,CAAQ,cAAcA,YAAA,CAAiB,WAAA;AAEvC,IAAM,gCAAgB,MAAA,CAAA,CAAC,EAAE,QAAA,EAAU,GAAG,OAAM,KAAmB;AAC7D,EAAA,uBACEhC,cAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,KAAA,EACV,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,qBAAA,EACvB,0BAAAA,cAAAA,CAAC,OAAA,EAAA,EAAQ,WAAU,6WAAA,EAChB,QAAA,EACH,GACF,CAAA,EACF,CAAA;AAEJ,CAAA,EAVsB,eAAA;AAYtB,IAAM,YAAA,GAAqB+B,kBAAA,CAAA,UAAA,CAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B7B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,sBAAmB,EAAA,EAClE,QAAA,EAAA;AAAA,kBAAAF,cAAAA,CAACiC,8BAAA,EAAA,EAAoB,SAAA,EAAU,kCAAA,EAAmC,CAAA;AAAA,kBAClEjC,cAAAA;AAAA,IAACgC,YAAA,CAAiB,KAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF,CACD;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,WAAA,GAAoBD,8BAGxB,CAAC,EAAE,WAAW,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACzC,EAAA,MAAM,OAAA,GAAgBA,0BAAuB,IAAI,CAAA;AAEjD,EAAMA,kBAAA,CAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,OAAA,CAAQ,OAAyB,CAAA;AAEtE,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,OAAA,IAAW,2FAAA;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE/B,cAAAA;AAAA,IAACgC,YAAA,CAAiB,IAAA;AAAA,IAAjB;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA;AAAA,MAC1E,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,OAAA;AAAA,QACX,SAAA,EAAW,MAAA;AAAA,QACX,SAAA,EAAW,QAAA;AAAA,QACX,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,WAAA,CAAY,WAAA,GAAcA,aAAiB,IAAA,CAAK,WAAA;AAEhD,IAAM,YAAA,GAAqBD,kBAAA,CAAA,UAAA,CAGzB,CAAC,KAAA,EAAO,wBACR/B,cAAAA;AAAA,EAACgC,YAAA,CAAiB,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0BAAA;AAAA,IACT,GAAG;AAAA;AACN,CACD;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,YAAA,GAAqBD,8BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B/B,cAAAA;AAAA,EAACgC,YAAA,CAAiB,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,YAAA,CAAa,WAAA,GAAcA,aAAiB,KAAA,CAAM,WAAA;AAElD,IAAM,gBAAA,GAAyBD,8BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B/B,cAAAA;AAAA,EAACgC,YAAA,CAAiB,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA;AAAA,IAC9C,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,WAAA,GAAcA,aAAiB,SAAA,CAAU,WAAA;AAE1D,IAAM,WAAA,GAAoBD,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B/B,cAAAA;AAAA,EAACgC,YAAA,CAAiB,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yTAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AAED,WAAA,CAAY,WAAA,GAAcA,aAAiB,IAAA,CAAK,WAAA;AAEhD,IAAM,kCAAkB,MAAA,CAAA,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6C;AAC3C,EAAA,uBACEhC,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA,EAbwB,iBAAA;AAcxB,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACvJ9B,IAAM,OAAA,GAA2BkC,2BAAA,CAAA;AAEjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AAIxC,IAAM,iBAAuBC,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,QAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EAAG,GAAA,qBAC5DnC,cAAAA,CAAkBkC,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAlC,cAAAA;AAAA,EAAkBkC,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,8bAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;ACC/C,SAAS,QAAA,CAAS;AAAA,EACvB,OAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA,GAAc,kBAAA;AAAA,EACd,iBAAA,GAAoB,WAAA;AAAA,EACpB,SAAA,GAAY,mBAAA;AAAA,EACZ,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,YAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUE,4BAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAkBA,0BAAuB,IAAI,CAAA;AAEnD,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,SAAA,CAAU,WAAW,IAAA,EAAM;AAE7B,MAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,MAAA,EAAA,CAAG,MAAM,OAAA,GAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA;AAAA,IAOrB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,cAAA,GAAuBA,kBAAA,CAAA,OAAA;AAAA,IAC3B,MAAM,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,UAAU,KAAK,CAAA;AAAA,IACrD,CAAC,SAAS,KAAK;AAAA,GACjB;AAEA,EAAA,MAAM,eAAA,GAAwBA,2BAAQ,MAAM;AAC1C,IAAA,IAAI,CAAC,QAAQ,OAAO,OAAA;AACpB,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,EAAY;AACvC,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACb,CAAC,WACC,MAAA,CAAO,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,WAAW,CAAA,IAC/C,MAAA,CAAO,MAAM,WAAA,EAAY,CAAE,SAAS,WAAW,CAAA,IAC/C,OAAO,WAAA,EAAa,WAAA,EAAY,CAAE,QAAA,CAAS,WAAW;AAAA,KAC1D;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAEpB,EAAA,uBACElC,eAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,QAAA,OAAA,CAAQ,MAAM,CAAA;AACd,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,SAAA,CAAU,EAAE,CAAA;AAAA,QACd;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,UAAA;AAAA,YACL,eAAA,EAAe,IAAA;AAAA,YACf,SAAA,EAAW,EAAA;AAAA,cACT,wBAAA;AAAA,cACA,CAAC,KAAA,IAAS,uBAAA;AAAA,cACV;AAAA,aACF;AAAA,YACA,QAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,WAAA,IAAe,iBACZ,WAAA,CAAY,cAAc,CAAA,GAC1B,cAAA,GACA,eAAe,KAAA,GACf,WAAA;AAAA,8BACJF,cAAAA,CAACqC,0BAAA,EAAA,EAAe,SAAA,EAAU,kCAAA,EAAmC;AAAA;AAAA;AAAA,SAC/D,EACF,CAAA;AAAA,wBACArC,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,4CAAA,EAA6C,KAAA,EAAM,OAAA,EAC3E,QAAA,kBAAAE,eAAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EAAO,WAAU,eAAA,EACtC,QAAA,EAAA;AAAA,0BAAAF,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAa,iBAAA;AAAA,cACb,SAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,MAAA;AAAA,cACP,aAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,SAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAU,qCAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAW;AAAA,eACb;AAAA,cACA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,cACpB,CAAA;AAAA,cAEA,QAAA,kBAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,iCAAgC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EACnF,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC1BA,cAAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,SAAA,EAAU,CAAA,mBAEzBA,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,qBAAoB,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EACxE,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,2BACtBE,eAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,kBACd,QAAA,EAAU,CAAC,YAAA,KAAiB;AAC1B,oBAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,sBAAA,aAAA,GAAgB,YAAA,KAAiB,KAAA,GAAQ,EAAA,GAAK,YAAY,CAAA;AAC1D,sBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,oBACf;AAAA,kBACF,CAAA;AAAA,kBACA,UAAU,MAAA,CAAO,QAAA;AAAA,kBAEjB,QAAA,EAAA;AAAA,oCAAAF,cAAAA;AAAA,sBAACsC,iBAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,uBAAA;AAAA,0BACA,KAAA,KAAU,MAAA,CAAO,KAAA,GAAQ,aAAA,GAAgB;AAAA;AAC3C;AAAA,qBACF;AAAA,oBACC,YAAA,GACC,aAAa,MAAM,CAAA,mBAEnBpC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACb,QAAA,EAAA;AAAA,sCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,iBAAO,KAAA,EAAM,CAAA;AAAA,sBACxC,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,wCAAA,EACb,iBAAO,WAAA,EACV;AAAA,qBAAA,EAEJ;AAAA;AAAA,iBAAA;AAAA,gBA1BG,MAAA,CAAO;AAAA,eA6Bb,GACH,CAAA,EAEJ;AAAA;AAAA;AACF,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AA7IgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;ACAT,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA;AAAA,EACA,QAAQ,EAAC;AAAA,EACT,QAAA;AAAA,EACA,WAAA,GAAc,mBAAA;AAAA,EACd,iBAAA,GAAoB,WAAA;AAAA,EACpB,SAAA,GAAY,mBAAA;AAAA,EACZ,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa;AACf,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUuC,4BAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAkBA,0BAAuB,IAAI,CAAA;AAEnD,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,SAAA,CAAU,WAAW,IAAA,EAAM;AAC7B,MAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,MAAA,EAAA,CAAG,MAAM,OAAA,GAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA;AAAA,IAOrB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,eAAA,GAAwBA,kBAAA,CAAA,OAAA;AAAA,IAC5B,MAAM,QAAQ,MAAA,CAAO,CAAC,WAAW,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAC7D,CAAC,SAAS,KAAK;AAAA,GACjB;AAEA,EAAA,MAAM,eAAA,GAAwBA,2BAAQ,MAAM;AAC1C,IAAA,IAAI,CAAC,QAAQ,OAAO,OAAA;AACpB,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,EAAY;AACvC,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACb,CAAC,WACC,MAAA,CAAO,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,WAAW,CAAA,IAC/C,MAAA,CAAO,MAAM,WAAA,EAAY,CAAE,SAAS,WAAW,CAAA,IAC/C,OAAO,WAAA,EAAa,WAAA,EAAY,CAAE,QAAA,CAAS,WAAW;AAAA,KAC1D;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAEpB,EAAA,MAAM,YAAA,2BAAgB,WAAA,KAAwB;AAC5C,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,CAAS,WAAW,IACvC,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,WAAW,CAAA,GACrC,CAAC,GAAG,OAAO,WAAW,CAAA;AAC1B,IAAA,QAAA,GAAW,QAAQ,CAAA;AAAA,EACrB,CAAA,EALqB,cAAA,CAAA;AAOrB,EAAA,MAAM,YAAA,mBAAe,MAAA,CAAA,CAAC,WAAA,EAAqB,CAAA,KAAwB;AACjE,IAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,IAAA,QAAA,GAAW,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,WAAW,CAAC,CAAA;AAAA,EACnD,CAAA,EAHqB,cAAA,CAAA;AAKrB,EAAA,MAAM,YAAA,GAAqBA,2BAAQ,MAAM;AACvC,IAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,MAAA,uBAAOvC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IAC9D;AAEA,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA;AACrD,IAAA,MAAM,SAAA,GAAY,gBAAgB,MAAA,GAAS,UAAA;AAE3C,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,SAAA,CAAU,GAAA,CAAI,CAAC,MAAA,qBACdA,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAQ,WAAA;AAAA,UACR,SAAA,EAAU,cAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,MAAA,CAAO,KAAA;AAAA,4BACRF,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,gDAAA;AAAA,gBACV,SAAS,CAAC,CAAA,KAAM,YAAA,CAAa,MAAA,CAAO,OAAO,CAAC,CAAA;AAAA,gBAC5C,QAAA;AAAA,gBAEA,QAAA,kBAAAA,cAAAA,CAACwC,aAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB;AAAA,SAAA;AAAA,QAXK,MAAA,CAAO;AAAA,OAaf,CAAA;AAAA,MACA,SAAA,GAAY,qBACXtC,eAAAA,CAAC,SAAM,OAAA,EAAQ,SAAA,EAAU,WAAU,SAAA,EAAU,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QACzC,SAAA;AAAA,QAAU;AAAA,OAAA,EACd;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ,GAAG,CAAC,eAAA,EAAiB,UAAA,EAAY,WAAA,EAAa,QAAQ,CAAC,CAAA;AAEvD,EAAA,uBACEA,eAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,QAAA,OAAA,CAAQ,MAAM,CAAA;AACd,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,SAAA,CAAU,EAAE,CAAA;AAAA,QACd;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,UAAA;AAAA,YACL,eAAA,EAAe,IAAA;AAAA,YACf,SAAA,EAAW,EAAA;AAAA,cACT,6CAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,QAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,8BACAA,cAAAA,CAACqC,0BAAAA,EAAA,EAAe,WAAU,kCAAA,EAAmC;AAAA;AAAA;AAAA,SAC/D,EACF,CAAA;AAAA,wBACArC,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,4CAAA,EAA6C,KAAA,EAAM,OAAA,EAC3E,QAAA,kBAAAE,eAAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EAAO,WAAU,eAAA,EACtC,QAAA,EAAA;AAAA,0BAAAF,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAa,iBAAA;AAAA,cACb,SAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,MAAA;AAAA,cACP,aAAA,EAAe;AAAA;AAAA,WACjB;AAAA,0BACAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,SAAA;AAAA,cACL,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAU,qCAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,SAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAW;AAAA,eACb;AAAA,cACA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,cACpB,CAAA;AAAA,cAEA,QAAA,kBAAAA,cAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,+BAAA,EAAgC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EACnF,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,oBAC1BA,cAAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,SAAA,EAAU,CAAA,mBAEzBA,cAAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EACxE,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC/B,gBAAA,MAAM,UAAA,GAAa,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AAC9C,gBAAA,uBACEE,eAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,oBACd,UAAU,MAAM;AACd,sBAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,wBAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,sBAC3B;AAAA,oBACF,CAAA;AAAA,oBACA,UAAU,MAAA,CAAO,QAAA;AAAA,oBAEjB,QAAA,EAAA;AAAA,sCAAAF,cAAAA;AAAA,wBAACsC,iBAAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW,EAAA;AAAA,4BACT,uBAAA;AAAA,4BACA,aAAa,aAAA,GAAgB;AAAA;AAC/B;AAAA,uBACF;AAAA,sCACApC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,wCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,iBAAO,KAAA,EAAM,CAAA;AAAA,wBACxC,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,wCAAA,EACb,iBAAO,WAAA,EACV;AAAA,uBAAA,EAEJ;AAAA;AAAA,mBAAA;AAAA,kBAtBK,MAAA,CAAO;AAAA,iBAuBd;AAAA,cAEJ,CAAC,GACH,CAAA,EAEJ;AAAA;AAAA;AACF,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AArLgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACxBhB,IAAMyC,UAAAA,GAAkBC,kBAAA,CAAA,UAAA;AAAA,EAItB,CACE,EAAE,SAAA,EAAW,WAAA,GAAc,YAAA,EAAc,UAAA,GAAa,IAAA,EAAM,GAAG,KAAA,EAAM,EACrE,GAAA,qBAEA1C,cAAAA;AAAA,IAAoB2C,6BAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,oBAAA;AAAA,QACA,WAAA,KAAgB,eAAe,gBAAA,GAAmB,gBAAA;AAAA,QAClD;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACAF,UAAAA,CAAU,cAAiCE,6BAAA,CAAA,IAAA,CAAK,WAAA;;;ACtBhD,IAAM,yBAAA,GAA4B,8BAAA;AAMlC,SAAS,aAAa,GAAA,EAAqB;AAEzC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,OAAO,OAAO,IAAA,CAAK,GAAA,EAAK,OAAO,CAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,SAAA,GAAY,IAAI,WAAA,EAAY,CAAE,OAAO,GAAG,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,IAAA,CAAK,SAAA,EAAW,CAAA,IAAA,KAAQ,MAAA,CAAO,YAAA,CAAa,IAAI,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACrF,EAAA,OAAO,KAAK,YAAY,CAAA;AAC1B;AATS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAqFF,SAAS,kBAAA,CACd,MAAA,EACA,OAAA,GAAqC,EAAC,EAC9B;AACR,EAAA,MAAM,EAAE,OAAA,GAAU,yBAAA,EAA2B,SAAA,GAAY,MAAK,GAAI,OAAA;AAElE,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,cAAyD,EAAC;AAChE,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,UAAU,EAAA,EAAI;AACzD,QAAA,WAAA,CAAY,GAAG,CAAA,GAAI,KAAA;AAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA;AAC7C,IAAA,MAAM,UAAA,GAAa,aAAa,UAAU,CAAA;AAC1C,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,EACjC,CAAA,MAAO;AACL,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AACzC,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,MAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,UAAU,EAAA,EAAI;AACzD,QAAA,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MACxC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,aAAa,QAAA,EAAS;AACpC,IAAA,OAAO,KAAA,GAAQ,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,OAAA;AAAA,EACzC;AACF;AA3BgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACtFhB,IAAM,cAAA,GAA4B;AAAA,EAChC,QAAQ,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,SAAS,SAAS,CAAA;AAAA,EACpD,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,QAAA,GAAW,GAAA;AAEjB,SAAS,UAAA,GAAqB;AAC5B,EAAA,OAAO,CAAA,IAAA,EAAO,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACpE;AAFS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAIT,SAAS,aAAA,CAAc,OAAiB,MAAA,EAA4B;AAElE,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACxC,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,SAAA,EAAW;AACpB,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,SAAA,CAAU,WAAA,EAAY;AAC1C,IAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,aAAY,CAAE,QAAA,CAAS,IAAI,CAAA,EAAG;AACjD,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AACzC,IAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAY,CAAE,SAAS,MAAM,CAAA;AAC7D,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,GACjB,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,MAAM,CAAA,GACxD,KAAA;AACJ,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,MAAA,EAAQ;AACzB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,IAAI,MAAA,CAAO,KAAA,IAAS,KAAA,CAAM,SAAA,GAAY,OAAO,KAAA,EAAO;AAClD,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAhCS,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAkCF,IAAM,WAAA,GAAcC,cAAA,CAAiB,CAAC,GAAA,EAAK,GAAA,MAAS;AAAA,EACzD,MAAM,EAAC;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EAET,MAAA,0BAAS,KAAA,KAAU;AACjB,IAAA,MAAM,QAAA,GAAqB;AAAA,MACzB,GAAG,KAAA;AAAA,MACH,IAAI,UAAA,EAAW;AAAA,MACf,SAAA,sBAAe,IAAA;AAAK,KACtB;AAEA,IAAA,GAAA,CAAI,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,OAAA,GAAU,CAAC,GAAG,KAAA,CAAM,MAAM,QAAQ,CAAA;AAExC,MAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,KAAA,CAAM,OAAA,EAAS;AAClC,QAAA,OAAO,EAAE,IAAA,EAAM,OAAA,CAAQ,MAAM,CAAC,KAAA,CAAM,OAAO,CAAA,EAAE;AAAA,MAC/C;AACA,MAAA,OAAO,EAAE,MAAM,OAAA,EAAQ;AAAA,IACzB,CAAC,CAAA;AAAA,EACH,CAAA,EAfQ,QAAA,CAAA;AAAA,EAiBR,2BAAW,MAAA,CAAA,MAAM;AACf,IAAA,GAAA,CAAI,EAAE,IAAA,EAAM,EAAC,EAAG,CAAA;AAAA,EAClB,CAAA,EAFW,WAAA,CAAA;AAAA,EAIX,SAAA,0BAAY,MAAA,KAAW;AACrB,IAAA,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,MACd,QAAQ,EAAE,GAAG,KAAA,CAAM,MAAA,EAAQ,GAAG,MAAA;AAAO,KACvC,CAAE,CAAA;AAAA,EACJ,CAAA,EAJW,WAAA,CAAA;AAAA,EAMX,6BAAa,MAAA,CAAA,MAAM;AACjB,IAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,cAAA,EAAgB,CAAA;AAAA,EAChC,CAAA,EAFa,aAAA,CAAA;AAAA,EAIb,iCAAiB,MAAA,CAAA,MAAM;AACrB,IAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAO,GAAI,GAAA,EAAI;AAC7B,IAAA,OAAO,KAAK,MAAA,CAAO,CAAC,UAAU,aAAA,CAAc,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,EAC5D,CAAA,EAHiB,iBAAA,CAAA;AAAA,EAKjB,4BAAY,MAAA,CAAA,MAAM;AAChB,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,GAAA,EAAI;AACrB,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA;AAAA,EACrC,CAAA,EAHY,YAAA;AAId,CAAA,CAAE,CAAA;ACxFF,IAAM,SAAA,GAAY,OAAO,MAAA,KAAW,WAAA;AAGpC,IAAM,WAAA,GAAcC,gBAAQ,MAAA,CAAO;AAAA,EACjC,KAAA,EAAe,CAAA;AAAI;AACrB,CAAC,CAAA;AAKD,SAAS,iBAAiB,IAAA,EAGxB;AACA,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,EAAE,SAAA,EAAW,MAAA,EAAW,OAAO,MAAA,EAAU;AAE3D,EAAA,MAAM,SAAA,GAAY,EAAE,GAAG,IAAA,EAAK;AAC5B,EAAA,IAAI,KAAA;AAGJ,EAAA,IAAI,IAAA,CAAK,iBAAiB,KAAA,EAAO;AAC/B,IAAA,KAAA,GAAQ,KAAK,KAAA,CAAM,KAAA;AACnB,IAAA,SAAA,CAAU,KAAA,GAAQ;AAAA,MAChB,IAAA,EAAM,KAAK,KAAA,CAAM,IAAA;AAAA,MACjB,OAAA,EAAS,KAAK,KAAA,CAAM;AAAA,KACtB;AAAA,EACF,WAAW,OAAO,IAAA,CAAK,UAAU,QAAA,IAAY,IAAA,CAAK,UAAU,IAAA,EAAM;AAChE,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,IAAI,OAAO,MAAA,CAAO,KAAA,KAAU,QAAA,EAAU;AACpC,MAAA,KAAA,GAAQ,MAAA,CAAO,KAAA;AAAA,IACjB;AACA,IAAA,IAAI,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,EAAU;AACtC,MAAA,SAAA,CAAU,QAAQ,MAAA,CAAO,OAAA;AAAA,IAC3B;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,WAAW,KAAA,EAAM;AAC5B;AA3BS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAgDF,SAAS,aAAa,SAAA,EAA2B;AACtD,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA;AAEnD,EAAA,MAAMC,IAAAA,mBAAM,MAAA,CAAA,CAAC,KAAA,EAAiB,OAAA,EAAiB,IAAA,KAAmC;AAChF,IAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAM,GAAI,iBAAiB,IAAI,CAAA;AAGlD,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,WAAA,CAAY,QAAA,GAAW,MAAA,CAAO;AAAA,QAC5B,KAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAA,EAAM,SAAA;AAAA,QACN;AAAA,OACD,CAAA;AAAA,IACH;AAGA,IAAW;AACT,MAAA,MAAM,aAAA,GAAgB,KAAA,KAAU,SAAA,GAAY,SAAA,GAAY,KAAA;AACxD,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,aAAA,CAAc,aAAa,CAAA,CAAE,OAAA,EAAS,SAAS,CAAA;AAAA,MACjD,CAAA,MAAO;AACL,QAAA,aAAA,CAAc,aAAa,EAAE,OAAO,CAAA;AAAA,MACtC;AAAA,IACF;AAAA,EACF,CAAA,EAvBY,KAAA,CAAA;AAyBZ,EAAA,OAAO;AAAA,IACL,KAAA,0BAAQ,OAAA,EAAS,IAAA,KAASA,KAAI,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA,EAA7C,OAAA,CAAA;AAAA,IACP,IAAA,0BAAO,OAAA,EAAS,IAAA,KAASA,KAAI,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAA,EAA5C,MAAA,CAAA;AAAA,IACN,IAAA,0BAAO,OAAA,EAAS,IAAA,KAASA,KAAI,MAAA,EAAQ,OAAA,EAAS,IAAI,CAAA,EAA5C,MAAA,CAAA;AAAA,IACN,KAAA,0BAAQ,OAAA,EAAS,IAAA,KAASA,KAAI,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA,EAA7C,OAAA,CAAA;AAAA,IACP,OAAA,0BAAU,OAAA,EAAS,IAAA,KAASA,KAAI,SAAA,EAAW,OAAA,EAAS,IAAI,CAAA,EAA/C,SAAA;AAAA,GACX;AACF;AAnCgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAoFM,aAAa,KAAK;ACrGxC,IAAM,mBAAA,GAAsBhD,0BAAAA;AAAA,EAC1B,6CAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,+CAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,WAAA,EAAa,oEAAA;AAAA,QACb,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,IAAM,eAAA,GAAkB;AAAA,EACtB,MAAA,EAAQ,gBAAA;AAAA,EACR,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,KAAA,EAAO,iBAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,iBAAA,GAAoB;AAAA,EACxB,KAAA,EAAO,wEAAA;AAAA,EACP,KAAA,EAAO,yEAAA;AAAA,EACP,IAAA,EAAM,sEAAA;AAAA,EACN,IAAA,EAAM,sEAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAiCA,SAAS,iBAAiB,OAAA,EAA2F;AACnH,EAAA,OAAO,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,SAAA,IAAa,QAAQ,CAAC,CAAA;AACrD;AAFS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAIT,SAAS,eAAe,OAAA,EAAiF;AACvG,EAAA,IAAI,gBAAA,CAAiB,OAAO,CAAA,EAAG;AAC7B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,OAAA;AACT;AALS,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAOT,SAAS,mBAAmB,OAAA,EAAyD;AACnF,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW;AAChC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAK,GAAA,CAAI,OAAO,KAAK,CAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AATS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAaF,IAAM,cAAA,GAAuBiD,kBAAA,CAAA,UAAA;AAAA,EAClC,CACE;AAAA,IACE,OAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAe,EAAC;AAAA,IAChB,WAAA,GAAc,gBAAA;AAAA,IACd,OAAA,GAAU,SAAA;AAAA,IACV,SAAA,GAAY,CAAA;AAAA,IACZ,eAAA;AAAA,IACA,QAAA,GAAW,CAAA;AAAA,IACX,YAAA,GAAe,KAAA;AAAA,IACf,SAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,UAAA,GAAa,IAAA;AAAA,IACb,cAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,UAAA,GAAa,KAAA;AAAA,IACb,gBAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,UAAA,GAAa,KAAA;AAAA,IACb,QAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAoB,iBAAA,GAAoB,KAAA;AAAA,IACxC,yBAAA,GAA4B,IAAA;AAAA,IAC5B,aAAA,GAAgB;AAAA,KAElB,GAAA,KACG;AACH,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC5C,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,4BAAmB,YAAY,CAAA;AACjF,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAC7C,IAAA,MAAM,SAAA,GAAkBA,0BAA0B,IAAI,CAAA;AACtD,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,4BAAiB,EAAE,CAAA;AAEnE,IAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,IAAUA,kBAAA,CAAA,QAAA,iBAA4C,IAAI,KAAK,CAAA;AAGnH,IAAA,MAAM,WAAA,GAAoBA,2BAAQ,MAAM;AACtC,MAAA,MAAM,IAAA,GAAO,eAAe,OAAO,CAAA;AACnC,MAAA,OAAO,iBAAA,GAAoB,kBAAA,CAAmB,IAAI,CAAA,GAAI,IAAA;AAAA,IACxD,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAG/B,IAAMA,6BAAU,MAAM;AACpB,MAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ;AAC9B,QAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAI,CAAA;AAC5B,QAAA,WAAA,CAAY,QAAQ,CAAA,MAAA,KAAU;AAC5B,UAAA,IAAI,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AACzC,YAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,UAClC;AAAA,QACF,CAAC,CAAA;AACD,QAAA,OAAO,OAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,WAAA,EAAa,cAAc,CAAC,CAAA;AAGhC,IAA+BA,2BAAQ,MAAwB;AAC7D,MAAA,IAAI,OAAO,eAAe,SAAA,EAAW;AACnC,QAAA,OAAO,UAAA,GACH;AAAA,UACE,MAAA,EAAQ,EAAE,UAAA,EAAY,CAAA,EAAG,SAAS,IAAA,EAAK;AAAA,UACvC,MAAA,EAAQ,EAAE,UAAA,EAAY,CAAA,EAAG,SAAS,KAAA,EAAM;AAAA,UACxC,OAAA,EAAS,EAAE,UAAA,EAAY,CAAA,EAAG,SAAS,KAAA;AAAM,YAE3C,EAAC;AAAA,MACP;AACA,MAAA,OAAO,cAAc,EAAC;AAAA,IACxB,CAAA,EAAG,CAAC,UAAU,CAAC;AAGf,IAAA,MAAM,UAAA,GAAmBA,kBAAA,CAAA,OAAA;AAAA,MACvB,OAAwB;AAAA,QACtB,cAAA,EAAgB,eAAA,EAAiB,cAAA,KAAmB,SAAA,GAAY,IAAI,QAAA,GAAW,MAAA,CAAA;AAAA,QAC/E,gBAAA,EAAkB,iBAAiB,gBAAA,IAAoB,OAAA;AAAA,QACvD,oBAAA,EAAsB,iBAAiB,oBAAA,IAAwB,WAAA;AAAA,QAC/D,QAAA,EAAU,eAAA,EAAiB,QAAA,IAAY,SAAA,IAAa,GAAA;AAAA,QACpD,KAAA,EAAO,iBAAiB,KAAA,IAAS;AAAA,OACnC,CAAA;AAAA,MACA,CAAC,WAAW,eAAe;AAAA,KAC7B;AAGA,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,yBAAA,EAA2B;AAC7B,QAAA,iBAAA,CAAkB,YAAY,CAAA;AAAA,MAChC;AAAA,IACF,CAAA,EAAG,CAAC,YAAA,EAAc,yBAAyB,CAAC,CAAA;AAG5C,IAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,WAAA,CAAY,CAAC,OAAA,KAAoB;AACtD,MAAA,gBAAA,CAAiB,OAAO,CAAA;AACxB,MAAA,UAAA,CAAW,MAAM,gBAAA,CAAiB,EAAE,CAAA,EAAG,GAAI,CAAA;AAAA,IAC7C,CAAA,EAAG,EAAE,CAAA;AAGL,IAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AAAA,MACzB,CAAC,KAAA,KAAkB;AACjB,QAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAChD,QAAA,MAAM,SAAA,GAAY,UAAA,GACd,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA,GACxC,CAAC,GAAG,cAAA,EAAgB,KAAK,CAAA;AAE7B,QAAA,iBAAA,CAAkB,SAAS,CAAA;AAC3B,QAAA,aAAA,GAAgB,SAAS,CAAA;AAEzB,QAAA,MAAM,SAAS,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AACxD,QAAA,IAAI,MAAA,EAAQ;AAEV,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ,IAAI,GAAA,CAAI,IAAI,EAAE,GAAA,CAAI,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,UAClE;AAEA,UAAA,QAAA;AAAA,YACE,aACI,CAAA,QAAA,EAAW,MAAA,CAAO,KAAK,CAAA,CAAA,GACvB,CAAA,MAAA,EAAS,OAAO,KAAK,CAAA;AAAA,WAC3B;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AAAA,MACA,CAAC,cAAA,EAAgB,aAAA,EAAe,WAAA,EAAa,UAAU,aAAa;AAAA,KACtE;AAGA,IAAA,MAAM,eAAA,GAAwBA,+BAAY,MAAM;AAC9C,MAAA,MAAM,SAAA,GAAY,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC3E,MAAA,iBAAA,CAAkB,SAAS,CAAA;AAC3B,MAAA,aAAA,GAAgB,SAAS,CAAA;AAGzB,MAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ;AAC9B,QAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAI,CAAA;AAC5B,QAAA,WAAA,CAAY,QAAQ,CAAA,MAAA,KAAU;AAC5B,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,UAClC;AAAA,QACF,CAAC,CAAA;AACD,QAAA,OAAO,OAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,QAAA,CAAS,CAAA,aAAA,EAAgB,SAAA,CAAU,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,IACrD,CAAA,EAAG,CAAC,WAAA,EAAa,aAAA,EAAe,QAAQ,CAAC,CAAA;AAGzC,IAAA,MAAM,cAAA,GAAuBA,+BAAY,MAAM;AAC7C,MAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,MAAA,aAAA,GAAgB,EAAE,CAAA;AAClB,MAAA,QAAA,CAAS,wBAAwB,CAAA;AAAA,IACnC,CAAA,EAAG,CAAC,aAAA,EAAe,QAAQ,CAAC,CAAA;AAG5B,IAAMA,kBAAA,CAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,MACpC,uBAAO,MAAA,CAAA,MAAM;AACX,QAAA,iBAAA,CAAkB,YAAY,CAAA;AAC9B,QAAA,QAAA,CAAS,yBAAyB,CAAA;AAAA,MACpC,CAAA,EAHO,OAAA,CAAA;AAAA,MAIP,iBAAA,+BAAyB,cAAA,EAAN,mBAAA,CAAA;AAAA,MACnB,iBAAA,0BAAoB,MAAA,KAAqB;AACvC,QAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,QAAA,aAAA,GAAgB,MAAM,CAAA;AAAA,MACxB,CAAA,EAHmB,mBAAA,CAAA;AAAA,MAInB,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,kBAAO,MAAA,CAAA,MAAM,SAAA,CAAU,OAAA,EAAS,OAAM,EAA/B,OAAA;AAAA,KACT,CAAE,CAAA;AAGF,IAAA,MAAM,eAAA,GAAwBA,2BAAQ,MAAM;AAC1C,MAAA,IAAI,CAAC,QAAQ,OAAO,OAAA;AACpB,MAAA,MAAM,WAAA,GAAc,OAAO,WAAA,EAAY;AAEvC,MAAA,IAAI,gBAAA,CAAiB,OAAO,CAAA,EAAG;AAC7B,QAAA,OAAO,OAAA,CACJ,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UACf,GAAG,KAAA;AAAA,UACH,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAA;AAAA,YACrB,CAAC,MAAA,KACC,MAAA,CAAO,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,WAAW,CAAA,IAC/C,MAAA,CAAO,KAAA,CAAM,WAAA,EAAY,CAAE,SAAS,WAAW;AAAA;AACnD,SACF,CAAE,EACD,MAAA,CAAO,CAAC,UAAU,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,MAC/C;AAEA,MAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,QACb,CAAC,MAAA,KACC,MAAA,CAAO,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,WAAW,CAAA,IAC/C,MAAA,CAAO,KAAA,CAAM,WAAA,EAAY,CAAE,SAAS,WAAW;AAAA,OACnD;AAAA,IACF,CAAA,EAAG,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAGpB,IAAA,MAAM,eAAA,GAAwBA,kBAAA,CAAA,OAAA;AAAA,MAC5B,MAAM,cAAA,CAAe,GAAA,CAAI,CAAA,KAAA,KAAS;AAEhC,QAAA,MAAM,SAAS,WAAA,CAAY,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,KAAK,CAAA;AAEtD,QAAA,OAAO,MAAA,IAAU,oBAAA,CAAqB,GAAA,CAAI,KAAK,CAAA;AAAA,MACjD,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,MAAA,KAA2C,WAAW,MAAS,CAAA;AAAA,MAC1E,CAAC,WAAA,EAAa,cAAA,EAAgB,oBAAoB;AAAA,KACpD;AAGA,IAAA,MAAM,WAAA,mBAAc,MAAA,CAAA,CAAC,MAAA,EAA8B,KAAA,KAAkB;AACnE,MAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAMC,KAAAA,EAAK,GAAI,MAAA;AAC9B,MAAA,MAAM,aAAkC,EAAC;AAEzC,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,UAAA,CAAW,aAAa,KAAA,CAAM,QAAA;AAC9B,QAAA,UAAA,CAAW,KAAA,GAAQ,MAAM,SAAA,IAAa,OAAA;AAAA,MACxC,CAAA,MAAA,IAAW,OAAO,UAAA,EAAY;AAC5B,QAAA,UAAA,CAAW,kBAAkB,KAAA,CAAM,UAAA;AACnC,QAAA,UAAA,CAAW,KAAA,GAAQ,MAAM,SAAA,IAAa,OAAA;AAAA,MACxC;AAEA,MAAA,MAAM,iBAAiB,UAAA,CAAW,cAAA,GAC9B,eAAA,CAAgB,UAAA,CAAW,cAAc,CAAA,GACzC,EAAA;AAEJ,MAAA,uBACE9C,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,OAAA,KAAY,SAAA,GAAY,WAAA,GAAc,SAAA;AAAA,UAC/C,SAAA,EAAW,EAAA;AAAA,YACT,2CAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,GAAG,UAAA;AAAA,YACH,cAAA,EAAgB,CAAA,EAAA,CAAI,UAAA,CAAW,KAAA,IAAS,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,YAClD,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,WAC3C;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA8C,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,SAAA,EAAU,CAAA;AAAA,4BACnChD,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,YACnB,CAAC,4BACAA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,gGAAA;AAAA,gBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,kBAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,gBAC3B,CAAA;AAAA,gBACA,YAAA,EAAY,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,gBAElC,QAAA,kBAAAA,cAAAA,CAACwC,aAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA;AACzB;AAAA,SAAA;AAAA,QAxBG,MAAA,CAAO;AAAA,OA0Bd;AAAA,IAEJ,CAAA,EA9CoB,aAAA,CAAA;AAiDpB,IAAA,MAAM,YAAA,GAAqBO,2BAAQ,MAAM;AACvC,MAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,QAAA,uBAAO/C,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AACnD,MAAA,MAAM,SAAA,GAAY,gBAAgB,MAAA,GAAS,QAAA;AAE3C,MAAA,uBACEE,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,UAAA,GAAa,6BAAA,GAAgC,WAAW,CAAA,EACtF,QAAA,EAAA;AAAA,QAAA,SAAA,CAAU,IAAI,CAAC,MAAA,EAAQ,UAAU,WAAA,CAAY,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,QAC3D,SAAA,GAAY,qBACXA,eAAAA,CAAC,SAAM,OAAA,EAAQ,SAAA,EAAU,WAAU,SAAA,EAAU,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UACzC,SAAA;AAAA,UAAU;AAAA,SAAA,EACd;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ,CAAA,EAAG,CAAC,eAAA,EAAiB,QAAA,EAAU,aAAa,UAAA,EAAY,OAAA,EAAS,QAAA,EAAU,UAAU,CAAC,CAAA;AAGtF,IAAA,MAAM,gCAAgB,MAAA,CAAA,MAAM;AAC1B,MAAA,IAAI,gBAAA,CAAiB,eAAe,CAAA,EAAG;AACrC,QAAA,OAAO,eAAA,CAAgB,IAAI,CAAC,KAAA,EAAO,+BACjCA,eAAAA,CAAO6C,6BAAN,EACE,QAAA,EAAA;AAAA,UAAA,UAAA,GAAa,CAAA,oBAAK/C,cAAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,0BACrCA,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAS,KAAA,CAAM,SAC1B,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AAC7B,YAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,YAAA,MAAMgD,QAAO,MAAA,CAAO,IAAA;AAEpB,YAAA,uBACE9C,eAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,gBACd,UAAU,MAAM,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,gBAC7D,UAAU,MAAA,CAAO,QAAA;AAAA,gBACjB,SAAA,EAAW,EAAA;AAAA,kBACT,gBAAA;AAAA,kBACA,OAAO,QAAA,IAAY;AAAA,iBACrB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,cAAAA;AAAA,oBAACsC,iBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,uBAAA;AAAA,wBACA,aAAa,aAAA,GAAgB;AAAA;AAC/B;AAAA,mBACF;AAAA,kBACCU,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,cAAA,EAAe,CAAA;AAAA,kCACxC9C,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,oCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,oBACnB,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,+BAAA,EAAiC,iBAAO,WAAA,EAAY;AAAA,mBAAA,EAExE;AAAA;AAAA,eAAA;AAAA,cArBK,MAAA,CAAO;AAAA,aAsBd;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA,SAAA,EAAA,EAlCmB,KAAA,CAAM,OAmC3B,CACD,CAAA;AAAA,MACH;AAEA,MAAA,uBACEA,cAAAA,CAAC,YAAA,EAAA,EACG,QAAA,EAAA,eAAA,CAA2C,GAAA,CAAI,CAAC,MAAA,KAAW;AAC3D,QAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,QAAA,MAAMgD,QAAO,MAAA,CAAO,IAAA;AAEpB,QAAA,uBACE9C,eAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YAEC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAU,MAAM,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,YAC7D,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,SAAA,EAAW,EAAA;AAAA,cACT,gBAAA;AAAA,cACA,OAAO,QAAA,IAAY;AAAA,aACrB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,cAAAA;AAAA,gBAACsC,iBAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,uBAAA;AAAA,oBACA,aAAa,aAAA,GAAgB;AAAA;AAC/B;AAAA,eACF;AAAA,cACCU,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,cAAA,EAAe,CAAA;AAAA,8BACxC9C,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,gBACnB,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,+BAAA,EAAiC,iBAAO,WAAA,EAAY;AAAA,eAAA,EAExE;AAAA;AAAA,WAAA;AAAA,UArBK,MAAA,CAAO;AAAA,SAsBd;AAAA,MAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IAEJ,CAAA,EA7EsB,eAAA,CAAA;AA+EtB,IAAA,MAAM,iBAAsC,EAAC;AAC7C,IAAA,IAAI,QAAA,iBAAyB,QAAA,GAAW,QAAA;AACxC,IAAA,IAAI,QAAA,iBAAyB,QAAA,GAAW,QAAA;AAExC,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,cAAA,EAAgB,WAAU,UAAA,EAEpC,QAAA,EAAA;AAAA,sBAAAF,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,WAAA,EAAU,QAAA;AAAA,UACV,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAU,SAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEAE,eAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,YAAA,IAAI,CAAC,QAAA,EAAU;AACb,cAAA,OAAA,CAAQ,MAAM,CAAA;AACd,cAAA,IAAI,MAAA,EAAQ;AACV,gBAAA,QAAA,CAAS,CAAA,iBAAA,EAAoB,WAAA,CAAY,MAAM,CAAA,kBAAA,CAAoB,CAAA;AAAA,cACrE,CAAA,MAAO;AACL,gBAAA,SAAA,CAAU,EAAE,CAAA;AACZ,gBAAA,QAAA,CAAS,iBAAiB,CAAA;AAAA,cAC5B;AAAA,YACF;AAAA,UACF,CAAA;AAAA,UACA,KAAA,EAAO,YAAA;AAAA,UAEP,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,SAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,UAAA;AAAA,gBACL,eAAA,EAAe,IAAA;AAAA,gBACf,YAAA,EAAY,WAAA;AAAA,gBACZ,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,gBACzD,QAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,cAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,oBAAoB,QAAA,GAAW,EAAA,GAAK,iBAAiB,CAAA,EACrE,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,kCACAE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,CAAC,QAAA,oBAC7BF,cAAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,0BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,0BAAA,cAAA,EAAe;AAAA,wBACjB,CAAA;AAAA,wBACA,SAAA,EAAU,2FAAA;AAAA,wBACV,YAAA,EAAW,sBAAA;AAAA,wBAEX,QAAA,kBAAAA,cAAAA,CAACiD,mBAAA,EAAA,EAAQ,SAAA,EAAU,6BAAA,EAA8B;AAAA;AAAA,qBACnD;AAAA,oCAEFjD,cAAAA,CAACqC,0BAAAA,EAAA,EAAe,WAAU,6BAAA,EAA8B;AAAA,mBAAA,EAC1D;AAAA;AAAA;AAAA,aACF,EACF,CAAA;AAAA,4BACArC,cAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,4CAAA;AAAA,kBACA,UAAA,CAAW,gBAAA,GAAmB,iBAAA,CAAkB,UAAA,CAAW,gBAAgB,CAAA,GAAI,EAAA;AAAA,kBAC/E;AAAA,iBACF;AAAA,gBACA,KAAA,EAAM,OAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,iBAC3C;AAAA,gBAEA,QAAA,kBAAAE,eAAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EACpB,QAAA,EAAA;AAAA,kBAAA,UAAA,oBACCF,cAAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBACC,WAAA,EAAY,WAAA;AAAA,sBACZ,KAAA,EAAO,MAAA;AAAA,sBACP,aAAA,EAAe;AAAA;AAAA,mBACjB;AAAA,kCAEFE,gBAAC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,CAAC,aAAA,IAAiB,CAAC,gBAAA,CAAiB,OAAO,qBAC1CA,eAAAA,CAAAgD,qBAAA,EACE,QAAA,EAAA;AAAA,sCAAAlD,cAAAA,CAAC,gBACC,QAAA,kBAAAA,cAAAA;AAAA,wBAAC,WAAA;AAAA,wBAAA;AAAA,0BACC,QAAA,EAAU,eAAA;AAAA,0BACV,SAAA,EAAU,2CAAA;AAAA,0BACX,QAAA,EAAA;AAAA;AAAA,uBAED,EACF,CAAA;AAAA,sCACAA,cAAAA,CAACyC,UAAAA,EAAA,EAAU;AAAA,qBAAA,EACb,CAAA;AAAA,oBAGD,eAAA,CAAgB,WAAW,CAAA,mBAC1BzC,eAAC,YAAA,EAAA,EACE,QAAA,EAAA,cAAA,IAAkB,mBAAA,EACrB,CAAA,GAEA,aAAA;AAAc,mBAAA,EAElB;AAAA,iBAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;AC1f7B,IAAMmD,oBAAAA,GAAsBrD,0BAAAA;AAAA,EAC1B,6CAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,+CAAA;AAAA,QACT,SAAA,EAAW,8DAAA;AAAA,QACX,WAAA,EAAa,oEAAA;AAAA,QACb,QAAA,EAAU;AAAA;AACZ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,IAAMsD,gBAAAA,GAAkB;AAAA,EACtB,MAAA,EAAQ,gBAAA;AAAA,EACR,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,IAAA,EAAM,gBAAA;AAAA,EACN,KAAA,EAAO,iBAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,IAAMC,kBAAAA,GAAoB;AAAA,EACxB,KAAA,EAAO,wEAAA;AAAA,EACP,KAAA,EAAO,yEAAA;AAAA,EACP,IAAA,EAAM,sEAAA;AAAA,EACN,IAAA,EAAM,sEAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAIA,SAASC,kBAAiB,OAAA,EAA0G;AAClI,EAAA,OAAO,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,SAAA,IAAa,QAAQ,CAAC,CAAA;AACrD;AAFS,MAAA,CAAAA,iBAAAA,EAAA,kBAAA,CAAA;AAIT,SAASC,gBAAe,OAAA,EAAgG;AACtH,EAAA,IAAID,iBAAAA,CAAiB,OAAO,CAAA,EAAG;AAC7B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU,MAAM,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,OAAA;AACT;AALS,MAAA,CAAAC,eAAAA,EAAA,gBAAA,CAAA;AAOT,SAASC,oBAAmB,OAAA,EAAmE;AAC7F,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW;AAChC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AAC1B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAK,GAAA,CAAI,OAAO,KAAK,CAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AATS,MAAA,CAAAA,mBAAAA,EAAA,oBAAA,CAAA;AAaF,IAAM,mBAAA,GAA4BC,kBAAA,CAAA,UAAA;AAAA,EACvC,CACE;AAAA,IACE,OAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAe,EAAC;AAAA,IAChB,WAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,WAAA,GAAc,gBAAA;AAAA,IACd,iBAAA,GAAoB,WAAA;AAAA,IACpB,SAAA,GAAY,mBAAA;AAAA,IACZ,WAAA,GAAc,YAAA;AAAA,IACd,OAAA,GAAU,SAAA;AAAA,IACV,SAAA,GAAY,CAAA;AAAA,IACZ,eAAA;AAAA,IACA,QAAA,GAAW,CAAA;AAAA,IACX,YAAA,GAAe,KAAA;AAAA,IACf,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,aAAA,GAAgB,KAAA;AAAA,IAChB,UAAA,GAAa,IAAA;AAAA,IACb,aAAA,GAAgB,KAAA;AAAA,IAChB,yBAAA,GAA4B,IAAA;AAAA,IAC5B,QAAA,GAAW,KAAA;AAAA,IACX,UAAA,GAAa,KAAA;AAAA,IACb,QAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAoB,iBAAA,GAAoB;AAAA,KAE1C,GAAA,KACG;AACH,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAC5C,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,4BAAmB,YAAY,CAAA;AACjF,IAAA,MAAM,SAAA,GAAkBA,0BAA0B,IAAI,CAAA;AACtD,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,4BAAiB,EAAE,CAAA;AAEnE,IAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,IAAUA,kBAAA,CAAA,QAAA,iBAAiD,IAAI,KAAK,CAAA;AAGxH,IAAA,MAAM,WAAA,GAAoBA,2BAAQ,MAAM;AACtC,MAAA,MAAM,IAAA,GAAOF,gBAAe,OAAO,CAAA;AACnC,MAAA,OAAO,iBAAA,GAAoBC,mBAAAA,CAAmB,IAAI,CAAA,GAAI,IAAA;AAAA,IACxD,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAG/B,IAAMC,6BAAU,MAAM;AACpB,MAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ;AAC9B,QAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAI,CAAA;AAC5B,QAAA,WAAA,CAAY,QAAQ,CAAA,MAAA,KAAU;AAC5B,UAAA,IAAI,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AACzC,YAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,UAClC;AAAA,QACF,CAAC,CAAA;AACD,QAAA,OAAO,OAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA,EAAG,CAAC,WAAA,EAAa,cAAc,CAAC,CAAA;AAGhC,IAAA,MAAM,UAAA,GAAmBA,kBAAA,CAAA,OAAA;AAAA,MACvB,OAAwB;AAAA,QACtB,cAAA,EAAgB,eAAA,EAAiB,cAAA,KAAmB,SAAA,GAAY,IAAI,QAAA,GAAW,MAAA,CAAA;AAAA,QAC/E,gBAAA,EAAkB,iBAAiB,gBAAA,IAAoB,OAAA;AAAA,QACvD,oBAAA,EAAsB,iBAAiB,oBAAA,IAAwB,WAAA;AAAA,QAC/D,QAAA,EAAU,eAAA,EAAiB,QAAA,IAAY,SAAA,IAAa,GAAA;AAAA,QACpD,KAAA,EAAO,iBAAiB,KAAA,IAAS;AAAA,OACnC,CAAA;AAAA,MACA,CAAC,WAAW,eAAe;AAAA,KAC7B;AAGA,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,yBAAA,EAA2B;AAC7B,QAAA,iBAAA,CAAkB,YAAY,CAAA;AAAA,MAChC;AAAA,IACF,GAAG,CAAC,IAAA,CAAK,UAAU,YAAY,CAAA,EAAG,yBAAyB,CAAC,CAAA;AAG5D,IAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,WAAA,CAAY,CAAC,OAAA,KAAoB;AACtD,MAAA,gBAAA,CAAiB,OAAO,CAAA;AACxB,MAAA,UAAA,CAAW,MAAM,gBAAA,CAAiB,EAAE,CAAA,EAAG,GAAI,CAAA;AAAA,IAC7C,CAAA,EAAG,EAAE,CAAA;AAGL,IAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,WAAA;AAAA,MACzB,CAAC,KAAA,KAAkB;AACjB,QAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAChD,QAAA,MAAM,SAAA,GAAY,UAAA,GACd,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA,GACxC,CAAC,GAAG,cAAA,EAAgB,KAAK,CAAA;AAE7B,QAAA,iBAAA,CAAkB,SAAS,CAAA;AAC3B,QAAA,aAAA,GAAgB,SAAS,CAAA;AAEzB,QAAA,MAAM,SAAS,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,KAAK,CAAA;AACxD,QAAA,IAAI,MAAA,EAAQ;AAEV,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ,IAAI,GAAA,CAAI,IAAI,EAAE,GAAA,CAAI,KAAA,EAAO,MAAM,CAAC,CAAA;AAAA,UAClE;AAEA,UAAA,QAAA;AAAA,YACE,aACI,CAAA,QAAA,EAAW,MAAA,CAAO,KAAK,CAAA,CAAA,GACvB,CAAA,MAAA,EAAS,OAAO,KAAK,CAAA;AAAA,WAC3B;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf;AAAA,MACF,CAAA;AAAA,MACA,CAAC,cAAA,EAAgB,aAAA,EAAe,WAAA,EAAa,UAAU,aAAa;AAAA,KACtE;AAGA,IAAA,MAAM,eAAA,GAAwBA,+BAAY,MAAM;AAC9C,MAAA,MAAM,SAAA,GAAY,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC3E,MAAA,iBAAA,CAAkB,SAAS,CAAA;AAC3B,MAAA,aAAA,GAAgB,SAAS,CAAA;AAGzB,MAAA,uBAAA,CAAwB,CAAA,IAAA,KAAQ;AAC9B,QAAA,MAAM,OAAA,GAAU,IAAI,GAAA,CAAI,IAAI,CAAA;AAC5B,QAAA,WAAA,CAAY,QAAQ,CAAA,MAAA,KAAU;AAC5B,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,CAAA;AAAA,UAClC;AAAA,QACF,CAAC,CAAA;AACD,QAAA,OAAO,OAAA;AAAA,MACT,CAAC,CAAA;AAED,MAAA,QAAA,CAAS,CAAA,aAAA,EAAgB,SAAA,CAAU,MAAM,CAAA,QAAA,CAAU,CAAA;AAAA,IACrD,CAAA,EAAG,CAAC,WAAA,EAAa,aAAA,EAAe,QAAQ,CAAC,CAAA;AAGzC,IAAA,MAAM,cAAA,GAAuBA,+BAAY,MAAM;AAC7C,MAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,MAAA,aAAA,GAAgB,EAAE,CAAA;AAClB,MAAA,QAAA,CAAS,wBAAwB,CAAA;AAAA,IACnC,CAAA,EAAG,CAAC,aAAA,EAAe,QAAQ,CAAC,CAAA;AAG5B,IAAMA,kBAAA,CAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,MACpC,uBAAO,MAAA,CAAA,MAAM;AACX,QAAA,iBAAA,CAAkB,YAAY,CAAA;AAC9B,QAAA,QAAA,CAAS,yBAAyB,CAAA;AAAA,MACpC,CAAA,EAHO,OAAA,CAAA;AAAA,MAIP,iBAAA,+BAAyB,cAAA,EAAN,mBAAA,CAAA;AAAA,MACnB,iBAAA,0BAAoB,MAAA,KAAqB;AACvC,QAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,QAAA,aAAA,GAAgB,MAAM,CAAA;AAAA,MACxB,CAAA,EAHmB,mBAAA,CAAA;AAAA,MAInB,KAAA,EAAO,cAAA;AAAA,MACP,KAAA,kBAAO,MAAA,CAAA,MAAM,SAAA,CAAU,OAAA,EAAS,OAAM,EAA/B,OAAA;AAAA,KACT,CAAE,CAAA;AAGF,IAAA,MAAM,eAAA,GAAwBA,kBAAA,CAAA,OAAA;AAAA,MAC5B,MAAM,cAAA,CAAe,GAAA,CAAI,CAAA,KAAA,KAAS;AAEhC,QAAA,MAAM,SAAS,WAAA,CAAY,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,KAAK,CAAA;AAEtD,QAAA,OAAO,MAAA,IAAU,oBAAA,CAAqB,GAAA,CAAI,KAAK,CAAA;AAAA,MACjD,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,MAAA,KAAgD,WAAW,MAAS,CAAA;AAAA,MAC/E,CAAC,WAAA,EAAa,cAAA,EAAgB,oBAAoB;AAAA,KACpD;AAGA,IAAA,MAAM,WAAA,mBAAc,MAAA,CAAA,CAAC,MAAA,EAAmC,KAAA,KAAkB;AACxE,MAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAMT,KAAAA,EAAK,GAAI,MAAA;AAC9B,MAAA,MAAM,aAAkC,EAAC;AAEzC,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,UAAA,CAAW,aAAa,KAAA,CAAM,QAAA;AAC9B,QAAA,UAAA,CAAW,KAAA,GAAQ,MAAM,SAAA,IAAa,OAAA;AAAA,MACxC,CAAA,MAAA,IAAW,OAAO,UAAA,EAAY;AAC5B,QAAA,UAAA,CAAW,kBAAkB,KAAA,CAAM,UAAA;AACnC,QAAA,UAAA,CAAW,KAAA,GAAQ,MAAM,SAAA,IAAa,OAAA;AAAA,MACxC;AAEA,MAAA,MAAM,iBAAiB,UAAA,CAAW,cAAA,GAC9BI,gBAAAA,CAAgB,UAAA,CAAW,cAAc,CAAA,GACzC,EAAA;AAEJ,MAAA,uBACElD,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,OAAA,KAAY,SAAA,GAAY,WAAA,GAAc,SAAA;AAAA,UAC/C,SAAA,EAAW,EAAA;AAAA,YACT,2CAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,GAAG,UAAA;AAAA,YACH,cAAA,EAAgB,CAAA,EAAA,CAAI,UAAA,CAAW,KAAA,IAAS,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,YAClD,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,WAC3C;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA8C,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,SAAA,EAAU,CAAA;AAAA,4BACnChD,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,YACnB,CAAC,4BACAA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,gGAAA;AAAA,gBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,kBAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,gBAC3B,CAAA;AAAA,gBACA,YAAA,EAAY,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,gBAElC,QAAA,kBAAAA,cAAAA,CAACwC,aAAAA,EAAA,EAAE,WAAU,SAAA,EAAU;AAAA;AAAA;AACzB;AAAA,SAAA;AAAA,QAxBG,MAAA,CAAO;AAAA,OA0Bd;AAAA,IAEJ,CAAA,EA9CoB,aAAA,CAAA;AAiDpB,IAAA,MAAM,YAAA,GAAqBiB,2BAAQ,MAAM;AACvC,MAAA,IAAI,eAAA,CAAgB,WAAW,CAAA,EAAG;AAChC,QAAA,uBAAOzD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AACnD,MAAA,MAAM,SAAA,GAAY,gBAAgB,MAAA,GAAS,QAAA;AAE3C,MAAA,uBACEE,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,UAAA,GAAa,6BAAA,GAAgC,WAAW,CAAA,EACtF,QAAA,EAAA;AAAA,QAAA,SAAA,CAAU,IAAI,CAAC,MAAA,EAAQ,UAAU,WAAA,CAAY,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,QAC3D,SAAA,GAAY,qBACXA,eAAAA,CAAC,SAAM,OAAA,EAAQ,SAAA,EAAU,WAAU,SAAA,EAAU,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UACzC,SAAA;AAAA,UAAU;AAAA,SAAA,EACd;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ,CAAA,EAAG,CAAC,eAAA,EAAiB,QAAA,EAAU,aAAa,UAAA,EAAY,OAAA,EAAS,QAAA,EAAU,UAAU,CAAC,CAAA;AAGtF,IAAA,MAAM,gCAAgB,MAAA,CAAA,MAAM;AAC1B,MAAA,IAAIoD,iBAAAA,CAAiB,OAAO,CAAA,EAAG;AAC7B,QAAA,OAAO,OAAA,CAAQ,IAAI,CAAC,KAAA,EAAO,+BACzBpD,eAAAA,CAAOuD,6BAAN,EACE,QAAA,EAAA;AAAA,UAAA,UAAA,GAAa,CAAA,oBAAKzD,cAAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,0BACrCA,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAS,KAAA,CAAM,SAC1B,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AAC7B,YAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,YAAA,MAAMgD,QAAO,MAAA,CAAO,IAAA;AAEpB,YAAA,uBACE9C,eAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,OAAO,MAAA,CAAO,KAAA;AAAA,gBACd,UAAU,MAAM,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,gBAC7D,UAAU,MAAA,CAAO,QAAA;AAAA,gBACjB,SAAA,EAAW,EAAA;AAAA,kBACT,gBAAA;AAAA,kBACA,OAAO,QAAA,IAAY;AAAA,iBACrB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAF,cAAAA;AAAA,oBAACsC,iBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,uBAAA;AAAA,wBACA,aAAa,aAAA,GAAgB;AAAA;AAC/B;AAAA,mBACF;AAAA,kBACCU,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,cAAA,EAAe,CAAA;AAAA,kCACxC9C,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,oCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,oBACnB,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,+BAAA,EAAiC,iBAAO,WAAA,EAAY;AAAA,mBAAA,EAExE;AAAA;AAAA,eAAA;AAAA,cArBK,MAAA,CAAO;AAAA,aAsBd;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA,SAAA,EAAA,EAlCmB,KAAA,CAAM,OAmC3B,CACD,CAAA;AAAA,MACH;AAEA,MAAA,uBACEA,cAAAA,CAAC,YAAA,EAAA,EACG,QAAA,EAAA,OAAA,CAAwC,GAAA,CAAI,CAAC,MAAA,KAAW;AACxD,QAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,QAAA,MAAMgD,QAAO,MAAA,CAAO,IAAA;AAEpB,QAAA,uBACE9C,eAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YAEC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAU,MAAM,CAAC,OAAO,QAAA,IAAY,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,YAC7D,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,SAAA,EAAW,EAAA;AAAA,cACT,gBAAA;AAAA,cACA,OAAO,QAAA,IAAY;AAAA,aACrB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,cAAAA;AAAA,gBAACsC,iBAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,uBAAA;AAAA,oBACA,aAAa,aAAA,GAAgB;AAAA;AAC/B;AAAA,eACF;AAAA,cACCU,yBAAQhD,cAAAA,CAACgD,KAAAA,EAAA,EAAK,WAAU,cAAA,EAAe,CAAA;AAAA,8BACxC9C,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,gCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,gBACnB,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,+BAAA,EAAiC,iBAAO,WAAA,EAAY;AAAA,eAAA,EAExE;AAAA;AAAA,WAAA;AAAA,UArBK,MAAA,CAAO;AAAA,SAsBd;AAAA,MAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IAEJ,CAAA,EA7EsB,eAAA,CAAA;AA+EtB,IAAA,MAAM,iBAAsC,EAAC;AAC7C,IAAA,IAAI,QAAA,iBAAyB,QAAA,GAAW,QAAA;AACxC,IAAA,IAAI,QAAA,iBAAyB,QAAA,GAAW,QAAA;AAExC,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,cAAA,EAAgB,WAAU,UAAA,EAEpC,QAAA,EAAA;AAAA,sBAAAF,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,WAAA,EAAU,QAAA;AAAA,UACV,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAU,SAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEAE,eAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,YAAA,EAAc,CAAC,MAAA,KAAW;AACxB,YAAA,IAAI,CAAC,QAAA,EAAU;AACb,cAAA,OAAA,CAAQ,MAAM,CAAA;AACd,cAAA,IAAI,MAAA,EAAQ;AACV,gBAAA,QAAA,CAAS,CAAA,iBAAA,EAAoB,WAAA,CAAY,MAAM,CAAA,kBAAA,CAAoB,CAAA;AAAA,cACrE,CAAA,MAAO;AACL,gBAAA,cAAA,CAAe,EAAE,CAAA;AACjB,gBAAA,QAAA,CAAS,iBAAiB,CAAA;AAAA,cAC5B;AAAA,YACF;AAAA,UACF,CAAA;AAAA,UACA,KAAA,EAAO,YAAA;AAAA,UAEP,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,SAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,UAAA;AAAA,gBACL,eAAA,EAAe,IAAA;AAAA,gBACf,YAAA,EAAY,WAAA;AAAA,gBACZ,WAAW,EAAA,CAAGiD,oBAAAA,CAAoB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,gBACzD,QAAA;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAnD,cAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,oBAAoB,QAAA,GAAW,EAAA,GAAK,iBAAiB,CAAA,EACrE,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,kCACAE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,cAAA,CAAe,MAAA,GAAS,CAAA,IAAK,CAAC,QAAA,oBAC7BF,cAAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,0BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,0BAAA,cAAA,EAAe;AAAA,wBACjB,CAAA;AAAA,wBACA,SAAA,EAAU,2FAAA;AAAA,wBACV,YAAA,EAAW,sBAAA;AAAA,wBAEX,QAAA,kBAAAA,cAAAA,CAACiD,mBAAAA,EAAA,EAAQ,WAAU,6BAAA,EAA8B;AAAA;AAAA,qBACnD;AAAA,oCAEFjD,cAAAA,CAACqC,0BAAAA,EAAA,EAAe,WAAU,6BAAA,EAA8B;AAAA,mBAAA,EAC1D;AAAA;AAAA;AAAA,aACF,EACF,CAAA;AAAA,4BACArC,cAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,4CAAA;AAAA,kBACA,UAAA,CAAW,gBAAA,GAAmBqD,kBAAAA,CAAkB,UAAA,CAAW,gBAAgB,CAAA,GAAI,EAAA;AAAA,kBAC/E;AAAA,iBACF;AAAA,gBACA,KAAA,EAAM,OAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,iBAAA,EAAmB,CAAA,EAAG,UAAA,CAAW,QAAQ,CAAA,CAAA;AAAA,iBAC3C;AAAA,gBAEA,QAAA,kBAAAnD,eAAAA,CAAC,OAAA,EAAA,EAAQ,YAAA,EAAc,KAAA,EACpB,QAAA,EAAA;AAAA,kBAAA,UAAA,oBACCF,cAAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBACC,WAAA,EAAa,iBAAA;AAAA,sBACb,KAAA,EAAO,WAAA;AAAA,sBACP,aAAA,EAAe;AAAA;AAAA,mBACjB;AAAA,kCAEFE,gBAAC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,CAAC,aAAA,IAAiB,CAACoD,iBAAAA,CAAiB,OAAO,qBAC1CpD,eAAAA,CAAAgD,qBAAA,EACE,QAAA,EAAA;AAAA,sCAAAlD,cAAAA,CAAC,gBACC,QAAA,kBAAAA,cAAAA;AAAA,wBAAC,WAAA;AAAA,wBAAA;AAAA,0BACC,QAAA,EAAU,eAAA;AAAA,0BACV,SAAA,EAAU,2CAAA;AAAA,0BACX,QAAA,EAAA;AAAA;AAAA,uBAED,EACF,CAAA;AAAA,sCACAA,cAAAA,CAACyC,UAAAA,EAAA,EAAU;AAAA,qBAAA,EACb,CAAA;AAAA,oBAGD,SAAA,mBACCvC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0BAAA,EACb,QAAA,EAAA;AAAA,sCAAAF,cAAAA,CAACG,mBAAAA,EAAA,EAAQ,SAAA,EAAU,mCAAA,EAAoC,CAAA;AAAA,sBACtD;AAAA,qBAAA,EACH,CAAA,GACE,QAAQ,MAAA,KAAW,CAAA,mBACrBH,cAAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,SAAA,EAAU,CAAA,GAEzB,aAAA;AAAc,mBAAA,EAElB;AAAA,iBAAA,EACF;AAAA;AAAA;AACF;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AC/kBlC,IAAM,MAAA,GAAe0D,8BAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B1D,cAAAA;AAAA,EAAkB2D,2BAAA,CAAA,IAAA;AAAA,EAAjB;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,6XAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAA,kBAAA3D,cAAAA;AAAA,MAAkB2D,2BAAA,CAAA,KAAA;AAAA,MAAjB;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT;AAAA;AACF;AAAA;AACF;AACF,CACD;AACD,MAAA,CAAO,cAA+BA,2BAAA,CAAA,IAAA,CAAK,WAAA;ACnB3C,IAAM,MAAA,GAAeC,8BAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B1D,eAAAA;AAAA,EAAiB2D,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,0DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA7D,cAAAA,CAAiB6D,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,uEAAA,EAC/B,QAAA,kBAAA7D,cAAAA,CAAiB6D,0BAAA,CAAA,KAAA,EAAhB,EAAsB,SAAA,EAAU,4BAAA,EAA6B,CAAA,EAChE,CAAA;AAAA,sBACA7D,cAAAA,CAAiB6D,0BAAA,CAAA,KAAA,EAAhB,EAAsB,WAAU,qNAAA,EAAsN;AAAA;AAAA;AACzP,CACD;AACD,MAAA,CAAO,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;ACV1C,IAAM,QAAA,GAAiBC,kBAAA,CAAA,UAAA,CAGrB,CAAC,EAAE,SAAA,EAAW,kBAAA,EAAoB,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACxD9D,cAAAA;AAAA,EAAC+D,iBAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,kBAAA,EAAoB,EAAA;AAAA,MAClB,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,IACrD,GAAG,KAAA;AAAA,IAEH;AAAA;AACH,CACD;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,aAAA,GAAsBD,8BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B9D,eAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAAI,GAAG,OAAO,CAC1E;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,YAAA,GAAqB8D,8BAGzB,CAAC,EAAE,OAAO,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACzC,EAAA,MAAM,eAAA,GAAwBA,8BAAWE,wBAAe,CAAA;AACxD,EAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AACxC,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,EAAc,QAAA,EAAS,GAAI,IAAA;AAEzC,EAAA,uBACE9D,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,uKAAA;AAAA,QACA,QAAA,IAAY,uBAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,oBACCF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,iBAAA,GAA0B8D,8BAG9B,CAAC,EAAE,GAAG,KAAA,EAAM,EAAG,wBACf9D,cAAAA,CAAC,SAAI,GAAA,EAAU,IAAA,EAAK,aAAa,GAAG,KAAA,EAClC,0BAAAA,cAAAA,CAACiE,oBAAA,EAAA,EAAU,GACb,CACD,CAAA;AACD,iBAAA,CAAkB,WAAA,GAAc,mBAAA;ACjEhC,IAAM,mBAAA,GAA4E;AAAA,EAChF,OAAA,EAAS,OAAA;AAAA,EACT,YAAA,EAAc,gBAAA;AAAA,EACd,KAAA,EAAO;AACT,CAAA;AAKA,SAAS,UAAA,CACP,KAAA,EACA,cAAA,EACA,eAAA,EACQ;AACR,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAGnB,EAAA,IAAI,UAAU,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,EAAE,EAAE,IAAA,EAAK;AAE7C,EAAA,IAAI,cAAA,KAAmB,YAAY,eAAA,EAAiB;AAElD,IAAA,OAAO,OAAA,CACJ,KAAA,CAAM,EAAE,CAAA,CACR,MAAA,CAAO,CAAC,IAAA,KAAS,eAAA,CAAgB,IAAI,CAAC,CAAA,CACtC,IAAA,CAAK,EAAE,CAAA;AAAA,EACZ;AAGA,EAAA,MAAM,OAAA,GAAU,oBAAoB,cAAkD,CAAA;AACtF,EAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AAErB,EAAA,OAAO,OAAA,CACJ,KAAA,CAAM,EAAE,CAAA,CACR,MAAA,CAAO,CAAC,IAAA,KAAS,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CACnC,KAAK,EAAE,CAAA;AACZ;AA1BS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AA+BT,SAAS,aAAA,CACP,KAAA,EACA,cAAA,EACA,eAAA,EACS;AACT,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,EAAA,IAAI,cAAA,KAAmB,YAAY,eAAA,EAAiB;AAClD,IAAA,OAAO,gBAAgB,KAAK,CAAA;AAAA,EAC9B;AAEA,EAAA,MAAM,OAAA,GAAU,oBAAoB,cAAkD,CAAA;AACtF,EAAA,OAAO,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA;AACzC;AAbS,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAkBT,SAAS,YAAA,CACP,UAAA,EACA,cAAA,EACA,aAAA,EACA,QACA,eAAA,EACe;AACf,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,UAAA,EAAY,cAAA,EAAgB,eAAe,CAAA;AAEtE,EAAA,QAAQ,aAAA;AAAe,IACrB,KAAK,QAAA;AAEH,MAAA,IAAI,QAAQ,MAAA,KAAW,UAAA,CAAW,QAAQ,MAAA,EAAQ,EAAE,EAAE,MAAA,EAAQ;AAC5D,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA;AAAA,IAEhC,KAAK,SAAA;AAEH,MAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA;AAAA,IAEhC,KAAK,OAAA;AAAA,IACL;AAEE,MAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA;AAAA;AAEpC;AA1BS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAgCF,SAAS,WAAA,CAAY;AAAA,EAC1B,MAAA,GAAS,CAAA;AAAA,EACT,KAAA,EAAO,eAAA;AAAA,EACP,QAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA,GAAiB,SAAA;AAAA,EACjB,eAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,EASsB;AACpB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIxD,iBAAS,EAAE,CAAA;AAGrD,EAAA,MAAM,KAAA,GAAQ,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,aAAA;AAEhE,EAAA,MAAM,UAAA,GAAayD,gBAAQ,MAAM,KAAA,CAAM,WAAW,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA;AAEzE,EAAA,MAAM,OAAA,GAAUA,eAAAA;AAAA,IACd,MAAM,aAAA,CAAc,KAAA,EAAO,cAAA,EAAgB,eAAe,CAAA;AAAA,IAC1D,CAAC,KAAA,EAAO,cAAA,EAAgB,eAAe;AAAA,GACzC;AAKA,EAAA,MAAM,YAAA,GAAexD,mBAAAA;AAAA,IACnB,CAAC,QAAA,KAAqB;AAEpB,MAAA,MAAM,OAAA,GAAU,UAAA,CAAW,QAAA,EAAU,cAAA,EAAgB,eAAe,CAAA;AAGpE,MAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA;AAGvC,MAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,QAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,MAC1B;AAGA,MAAA,QAAA,GAAW,OAAO,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,eAAA,EAAiB,MAAA,EAAQ,UAAU,eAAe;AAAA,GACrE;AAKA,EAAA,MAAM,cAAA,GAAiBA,mBAAAA;AAAA,IACrB,CAAC,cAAA,KAA2B;AAC1B,MAAA,IAAI,cAAA,CAAe,MAAA,KAAW,MAAA,IAAU,OAAA,EAAS;AAC/C,QAAA,UAAA,GAAa,cAAc,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,OAAA,EAAS,UAAU;AAAA,GAC9B;AAKA,EAAA,MAAM,KAAA,GAAQA,oBAAY,MAAM;AAC9B,IAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,MAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,IACrB;AACA,IAAA,QAAA,GAAW,EAAE,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,QAAA,EAAU,eAAe,CAAC,CAAA;AAK9B,EAAAC,kBAAU,MAAM;AACd,IAAA,IAAI,UAAA,IAAc,cAAc,OAAA,EAAS;AACvC,MAAA,cAAA,CAAe,KAAK,CAAA;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAA,EAAY,YAAY,OAAA,EAAS,KAAA,EAAO,cAAc,CAAC,CAAA;AAE3D,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AA3FgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAgGT,SAAS,kBAAA,CACd,MAAA,EACA,cAAA,EACA,aAAA,EACA,UACA,eAAA,EACA;AACA,EAAA,OAAO,CAAC,CAAA,KAA4B;AAClC,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,MAAM,UAAA,GAAa,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAEjD,IAAA,MAAM,SAAA,GAAY,YAAA;AAAA,MAChB,UAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,QAAA,CAAS,SAAS,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AACF;AAvBgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AC1LhB,IAAM,YAAA,GAAe;AAAA,EACnB,EAAA,EAAI,iBAAA;AAAA,EACJ,OAAA,EAAS,qBAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAKA,IAAMwD,kBAAAA,GAA0BC,kBAAA,CAAA,UAAA,CAG9B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpE,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,IAAA,EAAK,WAAA,EAAY,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAAI,GAAG,KAAA,EACjF,QAAA,kBAAAA,cAAAA,CAACiE,qBAAAA,EAAA,EAAU,CAAA,EACb,CACD;AACDE,kBAAAA,CAAkB,WAAA,GAAc,mBAAA;AAkCzB,IAAMJ,SAAAA,GAAiBK,kBAAA,CAAA,UAAA;AAAA,EAI5B,CACE;AAAA,IACE,MAAA,GAAS,CAAA;AAAA,IACT,KAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA,GAAiB,SAAA;AAAA,IACjB,eAAA;AAAA,IACA,aAAA,GAAgB,OAAA;AAAA,IAChB,UAAA,GAAa,KAAA;AAAA,IACb,QAAA,GAAW,KAAA;AAAA,IACX,aAAA,GAAgB,KAAA;AAAA,IAChB,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,IAAA,GAAO,SAAA;AAAA,IACP,KAAA,GAAQ,KAAA;AAAA,IACR,OAAA,GAAU,KAAA;AAAA,IACV,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,QAAA;AAAA,MACP,YAAA;AAAA,MACA;AAAA,QACE,WAAA,CAAY;AAAA,MACd,MAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,YAAA,GAAqBA,kBAAA,CAAA,OAAA;AAAA,MACzB,MACE,kBAAA;AAAA,QACE,MAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACF;AAAA,MACF,CAAC,MAAA,EAAQ,cAAA,EAAgB,aAAA,EAAe,cAAc,eAAe;AAAA,KACvE;AAGA,IAAA,MAAM,iBAAA,GAAoB,cAAA,IAAkB,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AAGjE,IAAA,MAAM,KAAA,GAAcA,2BAAQ,MAAM;AAChC,MAAA,MAAM,eAAkC,EAAC;AAEzC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAE/B,QAAA,IAAI,aAAA,IAAiB,CAAA,KAAM,iBAAA,IAAqB,CAAA,KAAM,CAAA,EAAG;AACvD,UAAA,YAAA,CAAa,IAAA;AAAA,4BACXpE,cAAAA;AAAA,cAACmE,kBAAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,kBAAkB;AAAA,eAAA;AAAA,cADnC,aAAa,CAAC,CAAA;AAAA;AAErB,WACF;AAAA,QACF;AAGA,QAAA,YAAA,CAAa,IAAA;AAAA,0BACXnE,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cAEC,KAAA,EAAO,CAAA;AAAA,cACP,SAAA,EAAW,EAAA;AAAA,gBACT,aAAa,IAAI,CAAA;AAAA,gBACjB,KAAA,IAAS,wCAAA;AAAA,gBACT,OAAA,IAAW,oCAAA;AAAA,gBACX;AAAA;AACF,aAAA;AAAA,YAPK;AAAA;AAQP,SACF;AAAA,MACF;AAEA,MAAA,OAAO,YAAA;AAAA,IACT,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAA,EAAe,iBAAA,EAAmB,oBAAoB,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,aAAa,CAAC,CAAA;AAEtG,IAAA,uBACEA,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,UAAA,EAAY,cAAA;AAAA,QACZ,QAAA;AAAA,QACA,kBAAA,EAAoB,EAAA,CAAG,OAAA,EAAS,kBAAkB,CAAA;AAAA,QAClD,SAAA;AAAA,QACA,OAAA,EAAS,YAAA;AAAA,QACR,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAA,cAAAA,CAAC,aAAA,EAAA,EAAe,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA,KACxB;AAAA,EAEJ;AACF;AAEA+D,SAAAA,CAAS,WAAA,GAAc,UAAA;AC9KvB,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyC;AACvC,EAAA,uBACE/D,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,MAChE,GAAG;AAAA;AAAA,GACN;AAEJ;AAVS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;ACET,IAAM,WAAA,GAAmCqE,+BAAA,CAAA;AC0BzC,IAAM,UAAA,GAAmBC,kBAAA,CAAA,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,aAAa,iBAAA,EAAmB,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC1E,IAAA,MAAM,mBAAA,GAA4BA,0BAAuB,IAAI,CAAA;AAC7D,IAAA,MAAM,oBAAoB,WAAA,IAAe,mBAAA;AAGzC,IAAMA,kBAAA,CAAA,mBAAA,CAAoB,KAAK,OAAO;AAAA,MACpC,cAAA,kBAAgB,MAAA,CAAA,CAAC,QAAA,GAA2B,QAAA,KAAa;AACvD,QAAA,MAAM,WAAW,iBAAA,CAAkB,OAAA;AACnC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS,QAAA,CAAS;AAAA,YAChB,KAAK,QAAA,CAAS,YAAA;AAAA,YACd;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF,CAAA,EARgB,gBAAA,CAAA;AAAA,MAShB,WAAA,kBAAa,MAAA,CAAA,CAAC,QAAA,GAA2B,QAAA,KAAa;AACpD,QAAA,MAAM,WAAW,iBAAA,CAAkB,OAAA;AACnC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS,QAAA,CAAS;AAAA,YAChB,GAAA,EAAK,CAAA;AAAA,YACL;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF,CAAA,EARa,aAAA,CAAA;AAAA,MASb,QAAA,0BAAW,OAAA,KAA6B;AACtC,QAAA,iBAAA,CAAkB,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,MAC7C,CAAA,EAFU,UAAA,CAAA;AAAA,MAGV,WAAA,kBAAa,MAAA,CAAA,MAAM,iBAAA,CAAkB,OAAA,EAAxB,aAAA;AAAA,KACf,CAAA,EAAI,CAAC,iBAAiB,CAAC,CAAA;AAEvB,IAAA,uBACEpE,eAAAA;AAAA,MAAqBqE,8BAAA,CAAA,IAAA;AAAA,MAApB;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,QAClD,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAvE,cAAAA;AAAA,YAAqBuE,8BAAA,CAAA,QAAA;AAAA,YAApB;AAAA,cACC,GAAA,EAAK,iBAAA;AAAA,cACL,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,iBAAiB,CAAA;AAAA,cAEjE;AAAA;AAAA,WACH;AAAA,0BACAvE,eAAC,SAAA,EAAA,EAAU,CAAA;AAAA,0BACXA,cAAAA,CAAqBuE,8BAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAAA,KAC9B;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,SAAA,GAAkBD,kBAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDtE,cAAAA;AAAA,EAAqBuE,8BAAA,CAAA,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IACd,oDAAA;AAAA,MACF,gBAAgB,YAAA,IACd,sDAAA;AAAA,MACF;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAvE,cAAAA,CAAqBuE,8BAAA,CAAA,eAAA,EAApB,EAAoC,WAAU,wCAAA,EAAyC;AAAA;AAC1F,CACD;AACD,SAAA,CAAU,cAAkCA,8BAAA,CAAA,mBAAA,CAAoB,WAAA;AC3FhE,IAAM,2BAAiCC,kBAAA,CAAA,aAAA,CAGpC,EAAE,UAAA,EAAY,KAAA,EAAO,+BAAe,MAAA,CAAA,MAAM;AAAC,CAAA,EAAP,kBAAU,CAAA;AAG1C,IAAM,oBAAA,mBAAuB,MAAA,CAAA,MAAYA,kBAAA,CAAA,UAAA,CAAW,wBAAwB,CAAA,EAA/C,sBAAA;AAEpC,IAAM,sCAAsB,MAAA,CAAA,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAkE;AAChE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAExD,EAAMA,6BAAU,MAAM;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,uBACExE,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,mEAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,KACT;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA,CAAC,wBAAA,CAAyB,QAAA,EAAzB,EAAkC,OAAO,EAAE,UAAA,EAAY,aAAA,EAAc,EACpE,QAAA,kBAAAA,cAAAA;AAAA,IAAoByE,6BAAA,CAAA,UAAA;AAAA,IAAnB;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,MACpC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ,CAAA,EArC4B,qBAAA;AAuC5B,IAAM,cAAA,GAAuBD,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,WAAA,EAAa,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAElD,EAAMA,6BAAU,MAAM;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,SAAA,GAAa,MAAc,4BAA4B,CAAA;AAC7D,IAAA,MAAM,YAAY,WAAA,GACd,SAAA,KAAc,aACZ,EAAE,MAAA,EAAQ,GAAG,WAAW,CAAA,CAAA,CAAA,EAAI,GAC5B,EAAE,OAAO,CAAA,EAAG,WAAW,KAAI,GAC7B,EAAE,MAAM,CAAA,EAAE;AAEd,IAAA,uBACExE,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,mBAAmB,SAAS,CAAA,EAAG,KAAA,EAAO,SAAA,EACtD,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAoByE,6BAAA,CAAA,KAAA;AAAA,IAAnB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MAC1C,WAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,gBAAA;AAS7B,IAAM,kCAAkB,MAAA,CAAA,CAAC;AAAA,EACvB,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,aAAA,GAAgB,KAAA;AAAA,EAChB,eAAA,GAAkB,EAAA;AAAA,EAClB,UAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA4B;AAC1B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUD,4BAAS,KAAK,CAAA;AAClD,EAAA,MAAM,EAAE,aAAA,EAAc,GAAUA,kBAAA,CAAA,UAAA,CAAW,wBAAwB,CAAA;AAEnE,EAAMA,6BAAU,MAAM;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,cAAA,GAAuBA,kBAAA,CAAA,WAAA,CAAY,CAAC,UAAA,KAAwB;AAChE,IAAA,aAAA,CAAc,UAAU,CAAA;AACxB,IAAA,UAAA,GAAa,UAAU,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,aAAA,EAAe,UAAU,CAAC,CAAA;AAG9B,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,EAAA,EAAI,aAAA;AAAA,IACJ,EAAA,EAAI,WAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAGA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,uBACExE,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,gBAAA;AAAA,UACA,yFAAA;AAAA,UACA;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEE,eAAAA;AAAA,IAAoBuE,6BAAA,CAAA,iBAAA;AAAA,IAAnB;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qDAAA;AAAA,QACA,aAAA;AAAA,QACA,0CAAA;AAAA,QACA,mBAAA;AAAA;AAAA,QAEA,wBAAA;AAAA;AAAA,QAEA,sEAAA;AAAA,QACA,YAAY,IAAI,CAAA;AAAA,QAChB,yFAAA;AAAA,QACA,0GAAA;AAAA,QACA,kHAAA;AAAA,QACA,sGAAA;AAAA,QACA,2DAAA;AAAA,QACA,yEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,WAAA,EAAa,MAAA,EAAO;AAAA,MAC7B,UAAA,EAAY,cAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAGH,QAAA,EAAA;AAAA,QAAA,aAAA,oBACCzE,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,qFAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,KAAA,EAAO;AAAA,cACL,MAAA,EAAQ,GAAG,eAAe,CAAA,EAAA,CAAA;AAAA,cAC1B,KAAA,EAAO;AAAA;AACT;AAAA,SACF;AAAA,QAID,UAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC0E,8BAAA,EAAA,EAAoB,SAAA,EAAU,aAAA,EAAc,CAAA,EAC/C;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA,EAxFwB,iBAAA;ACnGxB,IAAM,iBAAA,GAAoB,IAAA;AAEnB,SAAS,WAAA,GAAc;AAC5B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUC,4BAA8B,MAAS,CAAA;AAE7E,EAAMA,6BAAU,MAAM;AACpB,IAAA,MAAM,MAAM,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,iBAAA,GAAoB,CAAC,CAAA,GAAA,CAAK,CAAA;AACvE,IAAA,MAAM,2BAAW,MAAA,CAAA,MAAM;AACrB,MAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AAAA,IACnD,CAAA,EAFiB,UAAA,CAAA;AAGjB,IAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACvC,IAAA,WAAA,CAAY,MAAA,CAAO,aAAa,iBAAiB,CAAA;AACjD,IAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,CAAC,CAAC,QAAA;AACX;AAdgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACmDhB,IAAM,yBAAgC,MAAA,CAAA,CAAC;AAAA,EACrC,SAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,SAAA,GAAY,CAAA;AAAA,EACZ,YAAA,GAAe,CAAA;AAAA,EACf,QAAA,GAAW,KAAA;AAAA,EACX,eAAA,GAAkB,IAAA;AAAA,EAClB,eAAA,GAAkB,KAAA;AAAA,EAClB,KAAA,GAAQ,KAAA;AAAA,EACR,MAAA,GAAS,EAAA;AAAA,EACT,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,WAAW,WAAA,EAAY;AAG7B,EAAA,MAAM,UAAA,GAAa,YAAa,eAAA,IAAmB,QAAA;AAGnD,EAAMC,6BAAU,MAAM;AACpB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,IAAI,eAAA,EAAiB;AAAA,QAC3B,QAAA;AAAA,QACA,QAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,OAAA,CAAQ,KAAK,0GAAgG,CAAA;AAAA,MAC/G;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,iBAAiB,UAAA,EAAY,SAAA,EAAW,YAAA,EAAc,eAAe,CAAC,CAAA;AAGrG,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACE5E,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAsB,KAAA,EAAe,GAAG,OAC1C,QAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,MAAM,iBAAA,GAAyC;AAAA,MAC7C,QAAA,EAAU,QAAA;AAAA,MACV,GAAA,EAAK,MAAA,GAAS,MAAA,GAAS,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA;AAAA,MACnC,MAAA,EAAQ,MAAA,GAAS,CAAA,EAAG,YAAY,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,MACvC,MAAA;AAAA,MACA,GAAG;AAAA,KACL;AAEA,IAAA,uBACEA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,KAAA,EAAO,iBAAA;AAAA,QACN,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAGA,EAAA,MAAM,cAAA,GAAsC;AAAA,IAC1C,MAAA;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAC6E,0BAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO,cAAA;AAAA,MACN,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA,EAtFsC,QAAA;AAwFtC,MAAA,CAAO,WAAA,GAAc,QAAA;AC7Fd,IAAMC,OAAAA,GAAeC,kBAAA,CAAA,UAAA;AAAA,kBAC1B,MAAA,CAAA,SAASD,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,aAAA,GAAgB,OAAM,GAAI,KAAA;AACvD,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUC,4BAAyB,IAAI,CAAA;AAErE,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,YAAA,CAAa,YAAA,CAAa,SAAS,CAAA,IAAK,QAAA,CAAS,IAAI,CAAA;AAAA,MACvD;AAAA,IACF,CAAA,EAAG,CAAC,SAAA,EAAW,aAAa,CAAC,CAAA;AAE7B,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAUA,kBAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAClC,QAAA,OAAaA,gCAAa,QAAA,EAAqE;AAAA,UAC7F;AAAA,SACD,CAAA;AAAA,MACH;AACA,MAAA,uBAAO/E,cAAAA,CAAAkD,mBAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO8B,qBAAA,CAAa,UAAU,SAAS,CAAA;AAAA,IACzC;AAGA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAzBA,QAAA;AA0BF;AAEAF,OAAAA,CAAO,WAAA,GAAc,QAAA;AAKrB,SAAS,aACP,SAAA,EACgB;AAChB,EAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,SAAA,KAAc,MAAA,EAAW;AACjD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,cAAc,UAAA,EAAY;AACnC,IAAA,OAAO,SAAA,EAAU;AAAA,EACnB;AAEA,EAAA,IAAI,aAAa,SAAA,EAAW;AAC1B,IAAA,OAAO,SAAA,CAAU,OAAA;AAAA,EACnB;AAEA,EAAA,OAAO,SAAA;AACT;AAhBS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AC9ET,IAAM,WAAA,GAAmCG,+BAAA,CAAA;AAEzC,IAAM,kBAAA,GAA0CA,+BAAA,CAAA;AAEhD,IAAM,iBAAA,GAAyCA,+BAAA,CAAA,MAAA;AAE/C,IAAM,kBAAA,GAA2BC,kBAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjClF,cAAAA;AAAA,EAAsBiF,+BAAA,CAAA,OAAA;AAAA,EAArB;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,6IAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,EAAE,eAAA,EAAiB,kBAAA,EAAoB,GAAG,KAAA,EAAM;AAAA,IACtD,GAAG,KAAA;AAAA,IACJ;AAAA;AACF,CACD,CAAA;AACD,kBAAA,CAAmB,cAAmCA,+BAAA,CAAA,OAAA,CAAQ,WAAA;AAE9D,IAAM,kBAAA,GAA2BC,kBAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhF,eAAAA,CAAC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAF,eAAC,kBAAA,EAAA,EAAmB,CAAA;AAAA,kBACpBA,cAAAA;AAAA,IAAsBiF,+BAAA,CAAA,OAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,8UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF,CACD;AACD,kBAAA,CAAmB,cAAmCA,+BAAA,CAAA,OAAA,CAAQ,WAAA;AAE9D,IAAM,oCAAoB,MAAA,CAAA,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEjF,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,kDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVwB,mBAAA;AAY1B,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oCAAoB,MAAA,CAAA,CAAC;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVwB,mBAAA;AAY1B,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,gBAAA,GAAyBkF,8BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BlF,cAAAA;AAAA,EAAsBiF,+BAAA,CAAA,KAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,IAC/C,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAAmCA,+BAAA,CAAA,KAAA,CAAM,WAAA;AAE1D,IAAM,sBAAA,GAA+BC,8BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BlF,cAAAA;AAAA,EAAsBiF,+BAAA,CAAA,WAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,sBAAA,CAAuB,cACAA,+BAAA,CAAA,WAAA,CAAY,WAAA;AAEnC,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BlF,cAAAA;AAAA,EAAsBiF,+BAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,cAAA,EAAe,EAAG,SAAS,CAAA;AAAA,IACxC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmCA,+BAAA,CAAA,MAAA,CAAO,WAAA;AAE5D,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BlF,cAAAA;AAAA,EAAsBiF,+BAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,cAAA,CAAe,EAAE,OAAA,EAAS,SAAA,EAAW,CAAA;AAAA,MACrC,cAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmCA,+BAAA,CAAA,MAAA,CAAO,WAAA;ACtH5D,IAAM,KAAA,GAAuBE,0BAAA,CAAA;AAE7B,IAAM,YAAA,GAA8BA,0BAAA,CAAA;AAEpC,IAAM,UAAA,GAA4BA,0BAAA,CAAA;AAElC,IAAM,WAAA,GAA6BA,0BAAA,CAAA,MAAA;AAEnC,IAAM,YAAA,GAAqBC,kBAAA,CAAA,UAAA,CAGzB,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCpF,cAAAA;AAAA,EAAgBmF,0BAAA,CAAA,OAAA;AAAA,EAAf;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,6IAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,KAAA,EAAO,EAAE,eAAA,EAAiB,kBAAA,EAAoB,GAAG,KAAA,EAAM;AAAA,IACtD,GAAG,KAAA;AAAA,IACJ;AAAA;AACF,CACD,CAAA;AACD,YAAA,CAAa,cAA6BA,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAElD,IAAM,aAAA,GAAgBrF,0BAAAA;AAAA,EACpB,mMAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,mGAAA;AAAA,QACL,MAAA,EACE,4GAAA;AAAA,QACF,IAAA,EAAM,+HAAA;AAAA,QACN,KAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAMA,IAAM,YAAA,GAAqBsF,kBAAA,CAAA,UAAA,CAGzB,CAAC,EAAE,OAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDlF,gBAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAF,eAAC,YAAA,EAAA,EAAa,CAAA;AAAA,kBACdE,eAAAA;AAAA,IAAgBiF,0BAAA,CAAA,OAAA;AAAA,IAAf;AAAA,MACC,GAAA;AAAA,MACA,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC/C,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAjF,eAAAA,CAAgBiF,0BAAA,CAAA,KAAA,EAAf,EAAqB,SAAA,EAAU,0OAAA,EAC9B,QAAA,EAAA;AAAA,0BAAAnF,cAAAA,CAAC8B,qBAAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,0BAChC9B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,SAAA,EACjC,CAAA;AAAA,QACC;AAAA;AAAA;AAAA;AACH,CAAA,EACF,CACD;AACD,YAAA,CAAa,cAA6BmF,0BAAA,CAAA,OAAA,CAAQ,WAAA;AAElD,IAAM,8BAAc,MAAA,CAAA,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEnF,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,kDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVkB,aAAA;AAYpB,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,8BAAc,MAAA,CAAA,CAAC;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EAVkB,aAAA;AAYpB,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,UAAA,GAAmBoF,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpF,cAAAA;AAAA,EAAgBmF,0BAAA,CAAA,KAAA;AAAA,EAAf;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA;AAAA,IAC/D,GAAG;AAAA;AACN,CACD;AACD,UAAA,CAAW,cAA6BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAE9C,IAAM,gBAAA,GAAyBC,8BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpF,cAAAA;AAAA,EAAgBmF,0BAAA,CAAA,WAAA;AAAA,EAAf;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAA6BA,0BAAA,CAAA,WAAA,CAAY,WAAA;ACzH1D,IAAM,yBAAS,MAAA,CAAA,CAAC;AAAA,EACd,qBAAA,GAAwB,IAAA;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEnF,cAAAA;AAAA,EAACqF,WAAA,CAAgB,IAAA;AAAA,EAAhB;AAAA,IACC,qBAAA;AAAA,IACA,SAAA;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EATa,QAAA;AAWf,MAAA,CAAO,WAAA,GAAc,QAAA;AAErB,IAAM,gBAAgBA,WAAA,CAAgB;AAEtC,IAAM,eAAeA,WAAA,CAAgB,MAAA;AAErC,IAAM,cAAcA,WAAA,CAAgB;AAEpC,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCtF,cAAAA;AAAA,EAACqF,WAAA,CAAgB,OAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,IAC9E,KAAA,EAAO,EAAE,eAAA,EAAiB,kBAAA,EAAoB,GAAG,KAAA,EAAM;AAAA,IACtD,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,WAAA,GAAcA,YAAgB,OAAA,CAAQ,WAAA;AAEpD,IAAM,eAAA,GAAkB;AAAA,EACtB,MAAA,EAAQ,uDAAA;AAAA,EACR,GAAA,EAAK,oDAAA;AAAA,EACL,KAAA,EAAO,6CAAA;AAAA,EACP,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,aAAA,GAAsBC,kBAAA,CAAA,UAAA,CAG1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,SAAA,GAAY,QAAA,EAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACzE,EAAA,MAAM,UAAA,GAAa,SAAA,KAAc,QAAA,IAAY,SAAA,KAAc,KAAA;AAE3D,EAAA,uBACEpF,gBAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAF,eAAC,aAAA,EAAA,EAAc,CAAA;AAAA,oBACfE,eAAAA;AAAA,MAACmF,WAAA,CAAgB,OAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,yCAAA;AAAA,UACA,gBAAgB,SAAS,CAAA;AAAA,UACzB;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,gDAAA;AAAA,UACZ,GAAG;AAAA,SACL;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,UAAA,oBAAcrF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kDAAA,EAAmD,CAAA;AAAA,UAChF;AAAA;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,+BAAe,MAAA,CAAA,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,IACnE,GAAG;AAAA;AACN,CAAA,EAPmB,cAAA;AASrB,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,+BAAe,MAAA,CAAA,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,SAAS,CAAA;AAAA,IACzD,GAAG;AAAA;AACN,CAAA,EAPmB,cAAA;AASrB,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,WAAA,GAAoBsF,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BtF,cAAAA;AAAA,EAACqF,WAAA,CAAgB,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAcA,YAAgB,KAAA,CAAM,WAAA;AAEhD,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BtF,cAAAA;AAAA,EAACqF,WAAA,CAAgB,WAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,WAAA,GAAcA,YAAgB,WAAA,CAAY,WAAA;ACnH5D,IAAM,SAAA,GAA+BE,6BAAA,CAAA;AAErC,IAAM,gBAAA,GAAsCA,6BAAA,CAAA;AAE5C,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,QAAA,EAAU,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,EAAM,EAAG,wBAC5DxF,cAAAA;AAAA,EAAoBuF,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,8bAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAAiCA,6BAAA,CAAA,OAAA,CAAQ,WAAA;ACnB1D,IAAM,eAAA,GAAmCE,2BAAA,CAAA;AAEzC,IAAM,OAAA,GAA2BA,2BAAA,CAAA;AAEjC,IAAM,cAAA,GAAkCA,2BAAA,CAAA;AAExC,IAAM,cAAA,GAAuBC,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,WAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,IAAS,GAAA,qBAC1C1F,cAAAA,CAAkByF,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAzF,cAAAA;AAAA,EAAkByF,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oXAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;AC1BtD,IAAM,KAAA,GAAcE,kBAAA,CAAA,UAAA,CAGlB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCACb,QAAA,kBAAAA,cAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,KAAA,CAAM,WAAA,GAAc,OAAA;AAEpB,IAAM,WAAA,GAAoB2F,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B3F,eAAC,OAAA,EAAA,EAAM,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAI,GAAG,OAAO,CAC1E;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,SAAA,GAAkB2F,8BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,WAAA,GAAoB2F,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,yDAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,QAAA,GAAiB2F,8BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,6EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,SAAA,GAAkB2F,8BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,SAAA,GAAkB2F,8BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sFAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,YAAA,GAAqB2F,8BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3F,cAAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,IAC5D,GAAG;AAAA;AACN,CACD;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AChG3B,IAAM,SAAA,GAAN,MAAM,SAAA,CAAS;AAAA,EAAf,WAAA,GAAA;AACI,IAAA,aAAA,CAAA,IAAA,EAAQ,WAAA,sBAAyC,GAAA,EAAI,CAAA;AAAA,EAAA;AAAA,EAErD,QAA6B,KAAA,EAAU;AACnC,IAAA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,CAAA,QAAA,KAAY,QAAA,CAAS;AAAA,MACxC,GAAG,KAAA;AAAA,MACH,SAAA,EAAW,KAAA,CAAM,SAAA,IAAa,IAAA,CAAK,GAAA;AAAI,KAC1C,CAAC,CAAA;AAAA,EACN;AAAA,EAEA,UAA+B,QAAA,EAA4B;AACvD,IAAA,IAAA,CAAK,SAAA,CAAU,IAAI,QAAQ,CAAA;AAC3B,IAAA,OAAO,MAAM;AACT,MAAA,IAAA,CAAK,SAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,IAClC,CAAA;AAAA,EACJ;AACJ,CAAA;AAhBe,MAAA,CAAA,SAAA,EAAA,UAAA,CAAA;AAAf,IAAM,QAAA,GAAN,SAAA;AAkBsB,IAAI,QAAA;ACTnB,IAAM,mCAAmB,MAAA,CAAA,MAAqB;AACnD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIS,iBAAwB,OAAO,CAAA;AAEzD,EAAAE,kBAAU,MAAM;AACd,IAAA,MAAM,6BAAa,MAAA,CAAA,MAAqB;AAEtC,MAAA,IAAI,QAAA,CAAS,eAAA,CAAgB,SAAA,CAAU,QAAA,CAAS,MAAM,CAAA,EAAG;AACvD,QAAA,OAAO,MAAA;AAAA,MACT;AAGA,MAAA,IAAI,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAAE,OAAA,EAAS;AAC7D,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA,EAZmB,YAAA,CAAA;AAenB,IAAA,QAAA,CAAS,YAAY,CAAA;AAGrB,IAAA,MAAM,QAAA,GAAW,IAAI,gBAAA,CAAiB,MAAM;AAC1C,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA,IACvB,CAAC,CAAA;AAED,IAAA,QAAA,CAAS,OAAA,CAAQ,SAAS,eAAA,EAAiB;AAAA,MACzC,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,CAAC,OAAO;AAAA,KAC1B,CAAA;AAGD,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA;AACnE,IAAA,MAAM,oCAAoB,MAAA,CAAA,MAAM;AAC9B,MAAA,QAAA,CAAS,YAAY,CAAA;AAAA,IACvB,CAAA,EAF0B,mBAAA,CAAA;AAI1B,IAAA,UAAA,CAAW,gBAAA,CAAiB,UAAU,iBAAiB,CAAA;AAEvD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,UAAA,EAAW;AACpB,MAAA,UAAA,CAAW,mBAAA,CAAoB,UAAU,iBAAiB,CAAA;AAAA,IAC5D,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,KAAA;AACT,CAAA,EA9CgC,kBAAA,CAAA;ACWhC,SAAS,gBAAmB,IAAA,EAA0C;AACpE,EAAA,OACE,SAAS,IAAA,IACT,OAAO,IAAA,KAAS,QAAA,IAChB,WAAW,IAAA,IACX,QAAA,IAAY,IAAA,IACZ,OAAQ,KAA2B,KAAA,KAAU,QAAA,IAC7C,OAAQ,IAAA,CAA2B,MAAM,SAAA,KAAc,QAAA;AAE3D;AATS,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAcT,SAAS,UAAa,OAAA,EAAqC;AACzD,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,OAAO,KAAA;AAC/B,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,EAAI,GAAI,QAAQ,KAAA,CAAM,SAAA;AACvC,EAAA,OAAO,GAAA,GAAM,QAAQ,KAAA,CAAM,GAAA;AAC7B;AAJS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AA4BF,SAAS,eAAA,CACd,GAAA,EACA,YAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,MAAM,OAAA,EAAS,GAAA;AAErB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIF,iBAAY,YAAY,CAAA;AAC9D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAClD,EAAA,MAAM,aAAA,GAAgBmF,eAAO,KAAK,CAAA;AAGlC,EAAAjF,kBAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAA,EAAS;AAC3B,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAExB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAG,CAAA;AAC5C,MAAA,IAAI,SAAS,IAAA,EAAM;AAEjB,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAG9B,UAAA,IAAI,eAAA,CAAmB,MAAM,CAAA,EAAG;AAE9B,YAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AAErB,cAAA,MAAA,CAAO,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,YAEpC,CAAA,MAAO;AAEL,cAAA,cAAA,CAAe,OAAO,MAAM,CAAA;AAAA,YAC9B;AAAA,UACF,CAAA,MAAO;AAEL,YAAA,cAAA,CAAe,MAAW,CAAA;AAAA,UAC5B;AAAA,QACF,CAAA,CAAA,MAAQ;AAEN,UAAA,cAAA,CAAe,IAAS,CAAA;AAAA,QAC1B;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,gCAAA,EAAmC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AAAA,IACjE;AAEA,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAGR,EAAA,MAAM,aAAA,2BAAiB,IAAA,KAAuB;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AACtC,MAAA,MAAM,cAAc,IAAI,IAAA,CAAK,CAAC,UAAU,CAAC,CAAA,CAAE,IAAA;AAC3C,MAAA,MAAM,WAAW,WAAA,GAAc,IAAA;AAG/B,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,OAAA,CAAQ,IAAA,CAAK,cAAc,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAC,CAAA,+BAAA,EAAkC,GAAG,CAAA,CAAA,CAAG,CAAA;AACtF,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,kCAAA,EAAqC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AACjE,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF,CAAA,EAjBsB,eAAA,CAAA;AAoBtB,EAAA,MAAM,+BAAe,MAAA,CAAA,MAAM;AACzB,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,CAAE,MAAA,CAAO,CAAAkF,IAAAA,KAAOA,IAAAA,IAAO,OAAOA,IAAAA,KAAQ,QAAQ,CAAA;AAEnF,MAAA,IAAI,IAAA,CAAK,SAAS,EAAA,EAAI;AACpB,QAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,SAAS,GAAG,CAAA;AACjD,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,aAAA,EAAe,CAAA,EAAA,EAAK;AACtC,UAAA,IAAI;AACF,YAAA,MAAMA,IAAAA,GAAM,KAAK,CAAC,CAAA;AAClB,YAAA,IAAIA,IAAAA,EAAK;AACP,cAAA,YAAA,CAAa,WAAWA,IAAG,CAAA;AAAA,YAC7B;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,yCAAyC,KAAK,CAAA;AAAA,IAC9D;AAAA,EACF,CAAA,EApBqB,cAAA,CAAA;AAuBrB,EAAA,MAAM,gCAAgB,MAAA,CAAA,MAAM;AAC1B,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA;AACrC,MAAA,KAAA,MAAWA,QAAO,IAAA,EAAM;AACtB,QAAA,IAAI;AACF,UAAA,YAAA,CAAa,WAAWA,IAAG,CAAA;AAAA,QAC7B,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AAAA,IAC3D;AAAA,EACF,CAAA,EAbsB,eAAA,CAAA;AAgBtB,EAAA,MAAM,iBAAA,2BAAqB,KAAA,KAAqB;AAC9C,IAAA,IAAI,GAAA,EAAK;AAEP,MAAA,MAAM,OAAA,GAA6B;AAAA,QACjC,KAAA,EAAO;AAAA,UACL,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,UACpB;AAAA,SACF;AAAA,QACA,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,OAAO,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,IAC/B;AAEA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,EAC7B,CAAA,EAjB0B,mBAAA,CAAA;AAoB1B,EAAA,MAAM,QAAA,2BAAY,KAAA,KAA+B;AAC/C,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAe,KAAA,YAAiB,QAAA,GAAW,KAAA,CAAM,WAAW,CAAA,GAAI,KAAA;AAGtE,MAAA,IAAI,CAAC,aAAA,CAAc,YAAY,CAAA,EAAG;AAChC,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,6BAAA,EAAgC,GAAG,CAAA,eAAA,CAAiB,CAAA;AAEjE,QAAA,IAAI;AACF,UAAA,MAAA,CAAO,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,QACpC,CAAA,CAAA,MAAQ;AAAA,QAER;AAEA,QAAA,cAAA,CAAe,YAAY,CAAA;AAC3B,QAAA;AAAA,MACF;AAEA,MAAA,cAAA,CAAe,YAAY,CAAA;AAE3B,MAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,QAAA,MAAM,WAAA,GAAc,kBAAkB,YAAY,CAAA;AAGlD,QAAA,IAAI;AACF,UAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAAA,QAC9C,SAAS,YAAA,EAAmB;AAE1B,UAAA,IAAI,YAAA,CAAa,IAAA,KAAS,oBAAA,IACtB,YAAA,CAAa,IAAA,KAAS,MACtB,YAAA,CAAa,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAC3C,YAAA,OAAA,CAAQ,KAAK,mDAAmD,CAAA;AAChE,YAAA,YAAA,EAAa;AAGb,YAAA,IAAI;AACF,cAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAAA,YAC9C,SAAS,UAAA,EAAY;AACnB,cAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,gCAAA,EAAmC,GAAG,CAAA,0BAAA,CAAA,EAA8B,UAAU,CAAA;AAE5F,cAAA,IAAI;AACF,gBAAA,aAAA,EAAc;AACd,gBAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAAA,cAC9C,SAAS,UAAA,EAAY;AACnB,gBAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,gCAAA,EAAmC,GAAG,CAAA,uBAAA,CAAA,EAA2B,UAAU,CAAA;AAEzF,gBAAA,cAAA,CAAe,YAAY,CAAA;AAAA,cAC7B;AAAA,YACF;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAM,YAAA;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,gCAAA,EAAmC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AAE/D,MAAA,MAAM,YAAA,GAAe,KAAA,YAAiB,QAAA,GAAW,KAAA,CAAM,WAAW,CAAA,GAAI,KAAA;AACtE,MAAA,cAAA,CAAe,YAAY,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EA5DiB,UAAA,CAAA;AA+DjB,EAAA,MAAM,8BAAc,MAAA,CAAA,MAAM;AACxB,IAAA,IAAI;AACF,MAAA,cAAA,CAAe,YAAY,CAAA;AAC3B,MAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,QAAA,IAAI;AACF,UAAA,MAAA,CAAO,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,QACpC,SAAS,WAAA,EAAkB;AAEzB,UAAA,IAAI,WAAA,CAAY,IAAA,KAAS,oBAAA,IACrB,WAAA,CAAY,IAAA,KAAS,MACrB,WAAA,CAAY,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAC1C,YAAA,OAAA,CAAQ,KAAK,kEAAkE,CAAA;AAC/E,YAAA,YAAA,EAAa;AAEb,YAAA,IAAI;AACF,cAAA,MAAA,CAAO,YAAA,CAAa,WAAW,GAAG,CAAA;AAAA,YACpC,SAAS,UAAA,EAAY;AACnB,cAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,mCAAA,EAAsC,GAAG,CAAA,iBAAA,CAAA,EAAqB,UAAU,CAAA;AAEtF,cAAA,aAAA,EAAc;AAAA,YAChB;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAM,WAAA;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,iCAAA,EAAoC,GAAG,CAAA,EAAA,CAAA,EAAM,KAAK,CAAA;AAAA,IAClE;AAAA,EACF,CAAA,EA7BoB,aAAA,CAAA;AA+BpB,EAAA,OAAO,CAAC,WAAA,EAAa,QAAA,EAAU,WAAW,CAAA;AAC5C;AAjOgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;ACnChB,IAAM,IAAA,GAAaC,kBAAA,CAAA,UAAA,CAGjB,CAAC,EAAE,cAAc,KAAA,EAAO,gBAAA,GAAmB,YAAA,EAAc,eAAA,EAAiB,SAAS,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxH,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAG5C,EAAA,IAAI,CAAC,WAAA,IAAe,CAAC,QAAA,EAAU;AAE7B,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAMC,cAAAA,GAAsBD,kBAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AACrD,MAAA,MAAME,YAAWD,cAAAA,CAAc,IAAA;AAAA,QAC7B,CAAC,KAAA,KAAgBD,kBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,IAAK,MAAM,IAAA,KAAS;AAAA,OAC3D;AACA,MAAA,MAAMG,eAAcF,cAAAA,CAAc,MAAA;AAAA,QAChC,CAAC,KAAA,KAAgBD,kBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,IAAK,MAAM,IAAA,KAAS;AAAA,OAC3D;AAEA,MAAA,uBACE5F,eAAAA,CAAegG,wBAAA,CAAA,IAAA,EAAd,EAAmB,GAAA,EAAW,GAAG,KAAA,EAChC,QAAA,EAAA;AAAA,wBAAAlG,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mHAAA,EACZ,UAAAgG,SAAAA,EACH,CAAA;AAAA,QACCC;AAAA,OAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEjG,cAAAA,CAAekG,wBAAA,CAAA,IAAA,EAAd,EAAmB,GAAA,EAAW,GAAG,OAC/B,QAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,MAAM,aAAA,GAAsBJ,kBAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AACrD,EAAA,MAAM,WAAW,aAAA,CAAc,IAAA;AAAA,IAC7B,CAAC,KAAA,KAAgBA,kBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,IAAK,MAAM,IAAA,KAAS;AAAA,GAC3D;AACA,EAAA,MAAM,cAAc,aAAA,CAAc,MAAA;AAAA,IAChC,CAAC,KAAA,KAAgBA,kBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,IAAK,MAAM,IAAA,KAAS;AAAA,GAC3D;AAGA,EAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GACpCA,kBAAA,CAAA,QAAA,CAAS,QAAS,QAAA,CAAS,KAAA,CAAc,QAAQ,CAAA,GACvD,EAAC;AAGL,EAAA,uBACE5F,eAAAA,CAAegG,wBAAA,CAAA,IAAA,EAAd,EAAmB,GAAA,EAAW,GAAG,KAAA,EAChC,QAAA,EAAA;AAAA,oBAAAlG,cAAAA,CAAC,SAAI,SAAA,EAAW,EAAA;AAAA,MACd,iGAAA;AAAA,MACA,MAAA,IAAU;AAAA,KACZ,EACE,QAAA,kBAAAE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+DAAA,EAEZ,QAAA,EAAA;AAAA,MAAA,eAAA,oBACCF,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBAAyB,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,sBAIzDE,eAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,cAAc,OAAA,EAC/B,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,gBAAa,OAAA,EAAO,IAAA,EACnB,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,OAAA,EAAQ,IAAA,EAAK,QAAO,SAAA,EAAW,eAAA,GAAkB,KAAK,SAAA,EACpE,QAAA,kBAAAA,eAACmG,gBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA,EAC5B,CAAA,EACF,CAAA;AAAA,wBACAjG,eAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,OAAA,EAAQ,WAAU,wBAAA,EACnC,QAAA,EAAA;AAAA,0BAAAF,eAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAY,4BAAiB,CAAA,EAChC,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BACb,QAAA,kBAAAA,cAAAA,CAAekG,wBAAA,CAAA,IAAA,EAAd,EAAmB,WAAU,qBAAA,EAC3B,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,SAAS,KAAA,KAAU;AAChC,YAAA,IAAI,CAAOJ,kBAAA,CAAA,cAAA,CAAe,OAAO,CAAA,EAAG,OAAO,IAAA;AAG3C,YAAA,MAAM,YAAA,GAAgB,OAAA,CAAgB,KAAA,IAAS,EAAC;AAChD,YAAA,OAAaA,gCAAa,OAAA,EAA+B;AAAA,cACvD,GAAA,EAAK,KAAA;AAAA,cACL,OAAA,0BAAU,CAAA,KAAwB;AAChC,gBAAA,OAAA,CAAQ,KAAK,CAAA;AACb,gBAAA,YAAA,CAAa,UAAU,CAAC,CAAA;AAAA,cAC1B,CAAA,EAHS,SAAA,CAAA;AAAA,cAIT,SAAA,EAAW,EAAA;AAAA,gBACT,qFAAA;AAAA,gBACA,4EAAA;AAAA,gBACA,gBAAA;AAAA,gBACA,YAAA,CAAa;AAAA;AACf,aACM,CAAA;AAAA,UACV,CAAC,GACH,CAAA,EACF;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ,CAAC;AACD,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,IAAM,QAAA,GAAiBA,kBAAA,CAAA,UAAA,CAcrB,CAAC,EAAE,SAAA,EAAW,SAAA,GAAY,KAAA,EAAO,UAAA,GAAa,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAEzE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACE5F,eAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,qCAAA,EACpB,QAAA,EAAA;AAAA,sBAAAF,cAAAA;AAAA,QAAekG,wBAAA,CAAA,IAAA;AAAA,QAAd;AAAA,UACC,GAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,2FAAA;AAAA,YACA,SAAA,IAAa,aAAA;AAAA,YACb;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA,OACN;AAAA,sBACAlG,cAAAA,CAAC,SAAA,EAAA,EAAU,WAAA,EAAY,YAAA,EAAa;AAAA,KAAA,EACtC,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACEA,cAAAA;AAAA,IAAekG,wBAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,2FAAA;AAAA,QACA,SAAA,IAAa,aAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,QAAA,CAAS,cAA4BA,wBAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBJ,kBAAA,CAAA,UAAA,CAUxB,CAAC,EAAE,SAAA,EAAW,SAAA,GAAY,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC7C9F,cAAAA;AAAA,EAAekG,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gYAAA;AAAA,MACA,SAAA,IAAa,QAAA;AAAA,MACb;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;AAEhD,IAAM,WAAA,GAAoBJ,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B9F,cAAAA;AAAA,EAAekG,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;AC7NhD,IAAM,SAAA,GAA+BE,6BAAA,CAAA;AAErC,IAAM,aAAA,GAAsBC,8BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrG,cAAAA;AAAA,EAAoBoG,6BAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,mBAAyBC,kBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCrG,cAAAA,CAAoBoG,6BAAA,CAAA,MAAA,EAAnB,EAA0B,SAAA,EAAU,QACnC,QAAA,kBAAAlG,eAAAA;AAAA,EAAoBkG,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDpG,cAAAA,CAAC0B,0BAAAA,EAAA,EAAgB,WAAU,0EAAA,EAA2E;AAAA;AAAA;AACxG,CAAA,EACF,CACD;AACD,gBAAA,CAAiB,cAAiC0E,6BAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCrG,cAAAA;AAAA,EAAoBoG,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,2GAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAApG,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD;AACD,gBAAA,CAAiB,cAAiCoG,6BAAA,CAAA,OAAA,CAAQ,WAAA;ACnD1D,IAAM,WAAA,GAAmCE,+BAAA,CAAA;AAEzC,IAAMC,mBAAAA,GAA0CD,+BAAA,CAAA;AAEhD,IAAME,mBAAAA,GAA0CF,+BAAA,CAAA;ACAhD,IAAM,QAAA,GAAiBG,kBAAA,CAAA,UAAA,CAGrB,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCzG,cAAAA;AAAA,EAAmB0G,4BAAA,CAAA,IAAA;AAAA,EAAlB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA1G,cAAAA;AAAA,MAAmB0G,4BAAA,CAAA,SAAA;AAAA,MAAlB;AAAA,QACC,SAAA,EAAU,gDAAA;AAAA,QACV,OAAO,EAAE,SAAA,EAAW,eAAe,GAAA,IAAO,KAAA,IAAS,EAAE,CAAA,EAAA,CAAA;AAAK;AAAA;AAC5D;AACF,CACD;AACD,QAAA,CAAS,cAAgCA,4BAAA,CAAA,IAAA,CAAK,WAAA;AClB9C,IAAM,MAAA,GAAeC,8BAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3G,cAAAA;AAAA,EAAiB4G,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,MAAA,CAAO,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBD,8BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3G,cAAAA;AAAA,EAAiB4G,0BAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,IACrD,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA8BA,0BAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,cAAA,GAAuBD,8BAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B3G,cAAAA;AAAA,EAAiB4G,0BAAA,CAAA,QAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,cAA8BA,0BAAA,CAAA,QAAA,CAAS,WAAA;ACvCtD,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,OAAA;AAAA,EAChB,aAAA,GAAgB,OAAA;AAAA,EAChB,UAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,oBAAoBC,mCAAA,EAAqB;AAE/C,EAAA,uBACE7G,cAAAA;AAAA,IAAC8G,wBAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,gJAAA;AAAA,QACA,MAAA,CAAO,GAAA,CAAA,yCAAA,CAAA;AAAA,QACP,MAAA,CAAO,GAAA,CAAA,6CAAA,CAAA;AAAA,QACP;AAAA,OACF;AAAA,MACA,aAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,mBAAA,kBAAqB,MAAA,CAAA,CAAC,IAAA,KACpB,IAAA,CAAK,cAAA,CAAe,WAAW,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA,EAD9B,qBAAA,CAAA;AAAA,QAErB,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,EAAA,CAAG,OAAA,EAAS,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACxC,MAAA,EAAQ,EAAA;AAAA,UACN,0CAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,EAAA,CAAG,6DAAA,EAA+D,iBAAA,CAAkB,KAAK,CAAA;AAAA,QAChG,GAAA,EAAK,EAAA;AAAA,UACH,yEAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,eAAA,EAAiB,EAAA;AAAA,UACf,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,0EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,0EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,0EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,qFAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,qHAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,uCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,yBAAA;AAAA,UACA,aAAA,KAAkB,UACd,SAAA,GACA,yGAAA;AAAA,UACJ,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,wBAAA;AAAA,QACP,QAAA,EAAU,EAAA,CAAG,MAAA,EAAQ,iBAAA,CAAkB,QAAQ,CAAA;AAAA,QAC/C,OAAA,EAAS,EAAA;AAAA,UACP,+EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,IAAA,EAAM,EAAA,CAAG,kBAAA,EAAoB,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACnD,kBAAA,EAAoB,EAAA;AAAA,UAClB,6BAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,iDAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,GAAA,EAAK,EAAA;AAAA,UACH,2LAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,wBAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,YAAA,EAAc,EAAA,CAAG,cAAA,EAAgB,iBAAA,CAAkB,YAAY,CAAA;AAAA,QAC/D,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,iBAAA,CAAkB,SAAS,CAAA;AAAA,QACnE,KAAA,EAAO,EAAA;AAAA,UACL,+EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,OAAA,EAAS,EAAA;AAAA,UACP,2DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,kCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,MAAA,EAAQ,EAAA,CAAG,WAAA,EAAa,iBAAA,CAAkB,MAAM,CAAA;AAAA,QAChD,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,0BAAO,EAAE,SAAA,EAAAC,YAAW,OAAA,EAAS,GAAGC,QAAM,KAAM;AAC1C,UAAA,uBACEhH,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,UAAA;AAAA,cACV,GAAA,EAAK,OAAA;AAAA,cACL,SAAA,EAAW,GAAG+G,UAAS,CAAA;AAAA,cACtB,GAAGC;AAAA;AAAA,WACN;AAAA,QAEJ,CAAA,EATM,MAAA,CAAA;AAAA,QAUN,OAAA,0BAAU,EAAE,SAAA,EAAAD,YAAW,WAAA,EAAa,GAAGC,QAAM,KAAM;AACjD,UAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC1B,YAAA,uBACEhH,eAACiH,2BAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,QAAA,EAAUF,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,UAEpE;AAEA,UAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,YAAA,uBACEhH,cAAAA;AAAA,cAACkH,4BAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAUH,UAAS,CAAA;AAAA,gBAChC,GAAGC;AAAA;AAAA,aACN;AAAA,UAEJ;AAEA,UAAA,uBACEhH,cAAAA,CAAC0B,2BAAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,QAAA,EAAUqF,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,QAEpE,CAAA,EAnBS,SAAA,CAAA;AAAA,QAoBT,SAAA,EAAW,iBAAA;AAAA,QACX,4BAAY,MAAA,CAAA,CAAC,EAAE,QAAA,EAAU,GAAGA,QAAM,KAAM;AACtC,UAAA,uBACEhH,cAAAA,CAAC,IAAA,EAAA,EAAI,GAAGgH,MAAAA,EACN,QAAA,kBAAAhH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACZ,QAAA,EACH,CAAA,EACF,CAAA;AAAA,QAEJ,CAAA,EARY,YAAA,CAAA;AAAA,QASZ,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AA/JS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAiKT,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2C;AACzC,EAAA,MAAM,oBAAoB6G,mCAAA,EAAqB;AAE/C,EAAA,MAAM,GAAA,GAAYM,0BAA0B,IAAI,CAAA;AAChD,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,GAAA,CAAI,OAAA,EAAS,KAAA,EAAM;AAAA,EAC5C,CAAA,EAAG,CAAC,SAAA,CAAU,OAAO,CAAC,CAAA;AAEtB,EAAA,uBACEnH,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,UAAA,EAAU,GAAA,CAAI,IAAA,CAAK,kBAAA,EAAmB;AAAA,MACtC,sBAAA,EACE,SAAA,CAAU,QAAA,IACV,CAAC,SAAA,CAAU,eACX,CAAC,SAAA,CAAU,SAAA,IACX,CAAC,SAAA,CAAU,YAAA;AAAA,MAEb,oBAAkB,SAAA,CAAU,WAAA;AAAA,MAC5B,kBAAgB,SAAA,CAAU,SAAA;AAAA,MAC1B,qBAAmB,SAAA,CAAU,YAAA;AAAA,MAC7B,SAAA,EAAW,EAAA;AAAA,QACT,qwBAAA;AAAA,QACA,iBAAA,CAAkB,GAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AApCS,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AClIT,IAAM,UAAA,GAAmBoH,kBAAA,CAAA,UAAA;AAAA,EACvB,CACE;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,aAAA;AAAA,IACd,UAAA,GAAa,KAAA;AAAA,IACb,QAAA,GAAW,KAAA;AAAA,IACX,QAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,KAAA,GAAQ;AAAA,KAEV,GAAA,KACG;AACH,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAE5C,IAAA,MAAM,YAAA,2BAA0C,IAAA,KAAS;AACvD,MAAA,QAAA,GAAW,IAAI,CAAA;AACf,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA,EAH+C,cAAA,CAAA;AAK/C,IAAA,uBACElH,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,4CAAA;AAAA,YACA,CAAC,KAAA,IAAS,uBAAA;AAAA,YACV;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAACqH,wBAAA,EAAA,EAAa,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,YACtC,KAAA,GAAQC,cAAA,CAAO,KAAA,EAAO,UAAU,CAAA,GAAI;AAAA;AAAA;AAAA,OACvC,EACF,CAAA;AAAA,sBACAtH,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,OACrC,QAAA,kBAAAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,KAAA;AAAA,UACV,QAAA,EAAU,YAAA;AAAA,UACV,QAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,YAAA,EAAY;AAAA;AAAA,OACd,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAkCzB,IAAM,eAAA,GAAwBoH,kBAAA,CAAA,UAAA;AAAA,EAC5B,CACE;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,mBAAA;AAAA,IACd,UAAA,GAAa,WAAA;AAAA,IACb,QAAA,GAAW,KAAA;AAAA,IACX,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA,GAAiB,CAAA;AAAA,IACjB,SAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,KAAA,GAAQ;AAAA,KAEV,GAAA,KACG;AACH,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAE5C,IAAA,MAAM,8BAAc,MAAA,CAAA,MAAM;AACxB,MAAA,IAAI,CAAC,KAAA,EAAO,IAAA,EAAM,OAAO,WAAA;AACzB,MAAA,IAAI,CAAC,KAAA,CAAM,EAAA,SAAWE,cAAA,CAAO,KAAA,CAAM,MAAM,UAAU,CAAA;AACnD,MAAA,OAAO,CAAA,EAAGA,cAAA,CAAO,KAAA,CAAM,IAAA,EAAM,UAAU,CAAC,CAAA,GAAA,EAAMA,cAAA,CAAO,KAAA,CAAM,EAAA,EAAI,UAAU,CAAC,CAAA,CAAA;AAAA,IAC5E,CAAA,EAJoB,aAAA,CAAA;AAMpB,IAAA,uBACEpH,eAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAE,eAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,4CAAA;AAAA,YACA,CAAC,OAAO,IAAA,IAAQ,uBAAA;AAAA,YAChB;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAACqH,wBAAA,EAAA,EAAa,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,YACtC,WAAA;AAAY;AAAA;AAAA,OACf,EACF,CAAA;AAAA,sBACArH,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,OACrC,QAAA,kBAAAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,QAAA,EAAU,KAAA;AAAA,UACV,QAAA,EAAU,QAAA;AAAA,UACV,QAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,cAAA;AAAA,UACA,YAAA,EAAY;AAAA;AAAA,OACd,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AC5J9B,IAAM,eAAA,GAAwBuH,iCAA2C,IAAI,CAAA;AAE7E,SAAS,WAAA,GAAc;AACrB,EAAA,MAAM,OAAA,GAAgBA,8BAAW,eAAe,CAAA;AAEhD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,OAAO,OAAA;AACT;AARS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAUT,IAAM,QAAA,GAAiBA,kBAAA,CAAA,UAAA;AAAA,EAIrB,CACE;AAAA,IACE,WAAA,GAAc,YAAA;AAAA,IACd,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,WAAA,EAAa,GAAG,CAAA,GAAIC,iCAAA;AAAA,MACzB;AAAA,QACE,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,WAAA,KAAgB,YAAA,GAAe,GAAA,GAAM;AAAA,OAC7C;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUD,4BAAS,KAAK,CAAA;AAC9D,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAE9D,IAAA,MAAM,QAAA,GAAiBA,kBAAA,CAAA,WAAA,CAAY,CAACE,IAAAA,KAAqB;AACvD,MAAA,IAAI,CAACA,IAAAA,EAAK;AACR,QAAA;AAAA,MACF;AAEA,MAAA,gBAAA,CAAiBA,IAAAA,CAAI,eAAe,CAAA;AACpC,MAAA,gBAAA,CAAiBA,IAAAA,CAAI,eAAe,CAAA;AAAA,IACtC,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,UAAA,GAAmBF,+BAAY,MAAM;AACzC,MAAA,GAAA,EAAK,UAAA,EAAW;AAAA,IAClB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,MAAM,UAAA,GAAmBA,+BAAY,MAAM;AACzC,MAAA,GAAA,EAAK,UAAA,EAAW;AAAA,IAClB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,MAAM,aAAA,GAAsBA,kBAAA,CAAA,WAAA;AAAA,MAC1B,CAAC,KAAA,KAA+C;AAC9C,QAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,UAAA,EAAW;AAAA,QACb,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,YAAA,EAAc;AACrC,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,UAAA,EAAW;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MACA,CAAC,YAAY,UAAU;AAAA,KACzB;AAEA,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAA,EAAQ;AACnB,QAAA;AAAA,MACF;AAEA,MAAA,MAAA,CAAO,GAAG,CAAA;AAAA,IACZ,CAAA,EAAG,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhB,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,CAAC,GAAA,EAAK;AACR,QAAA;AAAA,MACF;AAEA,MAAA,QAAA,CAAS,GAAG,CAAA;AACZ,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,QAAQ,CAAA;AACzB,MAAA,GAAA,CAAI,EAAA,CAAG,UAAU,QAAQ,CAAA;AAEzB,MAAA,OAAO,MAAM;AACX,QAAA,GAAA,EAAK,GAAA,CAAI,UAAU,QAAQ,CAAA;AAAA,MAC7B,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,GAAA,EAAK,QAAQ,CAAC,CAAA;AAElB,IAAA,uBACEvH,cAAAA;AAAA,MAAC,eAAA,CAAgB,QAAA;AAAA,MAAhB;AAAA,QACC,KAAA,EAAO;AAAA,UACL,WAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,WAAA,EACE,WAAA,KAAgB,IAAA,EAAM,IAAA,KAAS,MAAM,UAAA,GAAa,YAAA,CAAA;AAAA,UACpD,UAAA;AAAA,UACA,UAAA;AAAA,UACA,aAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,gBAAA,EAAkB,aAAA;AAAA,YAClB,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,YACnC,IAAA,EAAK,QAAA;AAAA,YACL,sBAAA,EAAqB,UAAA;AAAA,YACpB,GAAG,KAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,eAAA,GAAwBuH,8BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,EAAE,WAAA,EAAa,WAAA,EAAY,GAAI,WAAA,EAAY;AAEjD,EAAA,uBACEvH,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,WAAA,EAAa,SAAA,EAAU,mBAC/B,QAAA,kBAAAA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,MAAA;AAAA,QACA,WAAA,KAAgB,eAAe,OAAA,GAAU,gBAAA;AAAA,QACzC;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ,CAAC;AACD,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,YAAA,GAAqBuH,8BAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,WAAA,EAAY;AAEpC,EAAA,uBACEvH,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,sBAAA,EAAqB,OAAA;AAAA,MACrB,SAAA,EAAW,EAAA;AAAA,QACT,oCAAA;AAAA,QACA,WAAA,KAAgB,eAAe,MAAA,GAAS,MAAA;AAAA,QACxC;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,IAAM,gBAAA,GAAyBuH,kBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACtE,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAY,aAAA,KAAkB,WAAA,EAAY;AAE/D,EAAA,uBACErH,eAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,gCAAA;AAAA,QACA,WAAA,KAAgB,eACZ,mCAAA,GACA,6CAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACA,UAAU,CAAC,aAAA;AAAA,MACX,OAAA,EAAS,UAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC0H,wBAAA,EAAA,EAAc,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,wBACnC1H,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,gBAAA,EAAc;AAAA;AAAA;AAAA,GAC1C;AAEJ,CAAC;AACD,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAE/B,IAAM,YAAA,GAAqBuH,kBAAA,CAAA,UAAA,CAGzB,CAAC,EAAE,SAAA,EAAW,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACtE,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAY,aAAA,KAAkB,WAAA,EAAY;AAE/D,EAAA,uBACErH,eAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,+BAAA;AAAA,QACA,WAAA,KAAgB,eACZ,oCAAA,GACA,gDAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACA,UAAU,CAAC,aAAA;AAAA,MACX,OAAA,EAAS,UAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC2H,yBAAA,EAAA,EAAe,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,wBACpC3H,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,YAAA,EAAU;AAAA;AAAA;AAAA,GACtC;AAEJ,CAAC;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;ACzO3B,eAAsB,kBAAA,GAAwC;AAC5D,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,UAAA,EAAW,GAAI,MAAM,OAAO,kBAAkB,CAAA;AACtD,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,GAAA;AAAA,MAAI,CAAA,GAAA,KACjC,IAAI,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG;AAAA,MAC3C,IAAA,EAAK;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AATsB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AActB,eAAsB,aAAa,KAAA,EAAkC;AACnE,EAAA,MAAM,SAAA,GAAY,MAAM,kBAAA,EAAmB;AAC3C,EAAA,MAAM,UAAA,GAAa,MAAM,WAAA,EAAY;AACrC,EAAA,OAAO,SAAA,CAAU,MAAA;AAAA,IAAO,CAAA,MAAA,KACtB,MAAA,CAAO,WAAA,EAAY,CAAE,SAAS,UAAU;AAAA,GAC1C;AACF;AANsB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAgBtB,eAAsB,mBAAA,GAAgD;AACpE,EAAA,MAAM,SAAA,GAAY,MAAM,kBAAA,EAAmB;AAG3C,EAAA,MAAM,YAAY,CAAC,KAAA,EAAO,OAAO,MAAA,EAAQ,KAAA,EAAO,OAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA,CACvF,MAAA,CAAO,OAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAM,cAAc,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,OAAO,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,MAAM,EAC/E,MAAA,CAAO,CAAA,CAAA,KAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAM,OAAO,CAAC,KAAA,EAAO,QAAQ,KAAA,EAAO,KAAA,EAAO,QAAQ,OAAA,EAAS,KAAA,EAAO,QAAQ,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA,CAC5F,MAAA,CAAO,OAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,QAAQ,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,KAAK,CAAA,CACrF,MAAA,CAAO,OAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAM,MAAA,GAAS,CAAC,OAAA,EAAS,IAAA,EAAM,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA,CACxD,MAAA,CAAO,CAAA,CAAA,KAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,MAAM,SAAA,GAAY,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAQ,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA,CAC/D,MAAA,CAAO,CAAA,CAAA,KAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AAEpC,EAAA,OAAO;AAAA,IACL,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAU;AAAA,IACpC,EAAE,IAAA,EAAM,aAAA,EAAe,MAAA,EAAQ,WAAA,EAAY;AAAA,IAC3C,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAK;AAAA,IAC7B,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAO;AAAA,IAClC,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAO;AAAA,IAClC,EAAE,IAAA,EAAM,YAAA,EAAc,MAAA,EAAQ,SAAA;AAAU,IACxC,MAAA,CAAO,CAAA,GAAA,KAAO,GAAA,CAAI,MAAA,CAAO,SAAS,CAAC,CAAA;AACvC;AA9BsB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAmCtB,IAAM,cAAA,uBAAqB,GAAA,EAAsC;AAEjE,eAAe,aAAa,MAAA,EAA0D;AACpF,EAAA,MAAM,mBAAmB,MAAA,CAAO,WAAA,EAAY,CAAE,OAAA,CAAQ,cAAc,GAAG,CAAA;AACvE,EAAA,MAAM,aAAA,GAAgB,QAAQ,gBAAgB,CAAA,CAAA;AAE9C,EAAA,IAAI,cAAA,CAAe,GAAA,CAAI,aAAa,CAAA,EAAG;AACrC,IAAA,OAAO,cAAA,CAAe,IAAI,aAAa,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,OAAO,kBAAkB,CAAA;AAC9C,IAAA,MAAM,SAAA,GAAa,OAAe,aAAa,CAAA;AAC/C,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,cAAA,CAAe,GAAA,CAAI,eAAe,SAAS,CAAA;AAC3C,MAAA,OAAO,SAAA;AAAA,IACT;AAAA,EACF,SAAS,CAAA,EAAG;AAAA,EAEZ;AAEA,EAAA,OAAO,IAAA;AACT;AApBe,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAsBR,SAAS,SAAA,CAAU;AAAA,EACxB,MAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,EAAA;AAAA,EACP,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAU4H,4BAA0C,IAAI,CAAA;AAC9F,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,4BAAS,IAAI,CAAA;AAEjD,EAAMA,6BAAU,MAAM;AACpB,IAAA,IAAI,OAAA,GAAU,IAAA;AAEd,IAAA,YAAA,CAAa,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,SAAA,KAAc;AACvC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,gBAAA,CAAiB,MAAM,SAAS,CAAA;AAChC,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAO,GAAG,CAAA;AAC/C,EAAA,MAAM,eAAA,GAAkB,MAAA,EAAQ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,IAAK,GAAA;AAE/C,EAAA,uBACE5H,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,MAChF,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,MAClC,GAAG,KAAA;AAAA,MAEH,0CACCA,cAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA;AAAA,wBAGAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,6CAAA;AAAA,YACV,KAAA,EAAO,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YAEnC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AArDgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;ACnGhB,IAAM,MAAA,GAAS,EAAE,KAAA,EAAO,EAAA,EAAI,MAAM,OAAA,EAAQ;AAgB1C,IAAM,YAAA,GAAqB6H,iCAAwC,IAAI,CAAA;AAEvE,SAAS,QAAA,GAAW;AAClB,EAAA,MAAM,OAAA,GAAgBA,8BAAW,YAAY,CAAA;AAE7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AAEA,EAAA,OAAO,OAAA;AACT;AARS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAUT,IAAM,cAAA,GAAuBA,kBAAA,CAAA,UAAA,CAQ3B,CAAC,EAAE,EAAA,EAAI,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACxD,EAAA,MAAM,WAAiBA,kBAAA,CAAA,KAAA,EAAM;AAC7B,EAAA,MAAM,UAAU,CAAA,MAAA,EAAS,EAAA,IAAM,SAAS,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAEzD,EAAA,uBACE7H,eAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,MAAA,EAAO,EACrC,QAAA,kBAAAE,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,OAAA;AAAA,MACZ,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,upBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAI,OAAA,EAAS,MAAA,EAAgB,CAAA;AAAA,wBACzCA,cAAAA,CAAmB8H,4BAAA,CAAA,mBAAA,EAAlB,EACE,QAAA,EACH;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,OAAA;AAE7B,IAAM,UAAA,mBAAa,MAAA,CAAA,CAAC,EAAE,EAAA,EAAI,QAAO,KAA2C;AAC1E,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA;AAAA,IACzC,CAAC,GAAGC,OAAM,CAAA,KAAMA,OAAAA,CAAO,SAASA,OAAAA,CAAO;AAAA,GACzC;AAEA,EAAA,IAAI,CAAC,YAAY,MAAA,EAAQ;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE/H,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,uBAAA,EAAyB;AAAA,QACvB,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAC1B,GAAA;AAAA,UACC,CAAC,CAAC,KAAA,EAAO,MAAM,CAAA,KAAM;AAAA,EAC/B,MAAM,gBAAgB,EAAE,CAAA;AAAA,EACxB,YACC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,UAAU,CAAA,KAAM;AAC1B,YAAA,MAAM,KAAA,GACJ,UAAA,CAAW,KAAA,GAAQ,KAAsC,KACzD,UAAA,CAAW,KAAA;AACb,YAAA,OAAO,KAAA,GAAQ,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA,GAAM,IAAA;AAAA,UACjD,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAC;AAAA;AAAA;AAAA,SAGH,CACC,KAAK,IAAI;AAAA;AACd;AAAA,GACF;AAEJ,CAAA,EA/BmB,YAAA;AAiCnB,IAAM,YAAA,GAAiC8H,4BAAA,CAAA;AAEvC,IAAM,mBAAA,GAA4BD,kBAAA,CAAA,UAAA;AAAA,EAWhC,CACE;AAAA,IACE,MAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,KAAA;AAAA,IACZ,aAAA,GAAgB,KAAA;AAAA,IAChB,KAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAE5B,IAAA,MAAM,YAAA,GAAqBA,2BAAQ,MAAM;AACvC,MAAA,IAAI,SAAA,IAAa,CAAC,OAAA,EAAS,MAAA,EAAQ;AACjC,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,CAAC,IAAI,CAAA,GAAI,OAAA;AACf,MAAA,MAAM,MAAM,CAAA,EAAG,QAAA,IAAY,MAAM,OAAA,IAAW,IAAA,EAAM,QAAQ,OAAO,CAAA,CAAA;AACjE,MAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAChE,MAAA,MAAM,KAAA,GACJ,CAAC,QAAA,IAAY,OAAO,KAAA,KAAU,QAAA,GAC1B,MAAA,CAAO,KAA4B,CAAA,EAAG,KAAA,IAAS,KAAA,GAC/C,UAAA,EAAY,KAAA;AAElB,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,uBACE7H,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,cAAc,CAAA,EAC7C,QAAA,EAAA,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA,EAChC,CAAA;AAAA,MAEJ;AAEA,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,uBAAOA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,aAAA,EAAe,cAAc,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACnE,CAAA,EAAG;AAAA,MACD,KAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,OAAA,EAAS,MAAA,EAAQ;AAC/B,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,KAAW,CAAA,IAAK,SAAA,KAAc,KAAA;AAExD,IAAA,uBACEE,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,wHAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,CAAC,YAAY,YAAA,GAAe,IAAA;AAAA,0BAC7BF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACZ,kBACE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,MAAM,CAAA,CACrC,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AACpB,YAAA,MAAM,MAAM,CAAA,EAAG,OAAA,IAAW,KAAK,IAAA,IAAQ,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AAC9D,YAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAChE,YAAA,MAAM,cAAA,GAAiB,KAAA,IAAS,IAAA,CAAK,OAAA,CAAQ,QAAQ,IAAA,CAAK,KAAA;AAE1D,YAAA,uBACEA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,EAAA;AAAA,kBACT,qGAAA;AAAA,kBACA,cAAc,KAAA,IAAS;AAAA,iBACzB;AAAA,gBAEC,uBAAa,IAAA,EAAM,KAAA,KAAU,UAAa,IAAA,CAAK,IAAA,GAC9C,UAAU,IAAA,CAAK,KAAA,EAAO,KAAK,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,CAAK,OAAO,oBAE1DE,eAAAA,CAAAgD,qBAAA,EACG,QAAA,EAAA;AAAA,kBAAA,UAAA,EAAY,IAAA,mBACXlD,cAAAA,CAAC,UAAA,CAAW,MAAX,EAAgB,CAAA,GAEjB,CAAC,aAAA,oBACCA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,gEAAA;AAAA,wBACA;AAAA,0BACE,eAAe,SAAA,KAAc,KAAA;AAAA,0BAC7B,OAAO,SAAA,KAAc,MAAA;AAAA,0BACrB,mDACE,SAAA,KAAc,QAAA;AAAA,0BAChB,QAAA,EAAU,aAAa,SAAA,KAAc;AAAA;AACvC,uBACF;AAAA,sBACA,KAAA,EACE;AAAA,wBACE,YAAA,EAAc,cAAA;AAAA,wBACd,gBAAA,EAAkB;AAAA;AACpB;AAAA,mBAEJ;AAAA,kCAGJE,eAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,0CAAA;AAAA,wBACA,YAAY,WAAA,GAAc;AAAA,uBAC5B;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACZ,QAAA,EAAA;AAAA,0BAAA,SAAA,GAAY,YAAA,GAAe,IAAA;AAAA,0CAC5BF,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBACb,QAAA,EAAA,UAAA,EAAY,KAAA,IAAS,KAAK,IAAA,EAC7B;AAAA,yBAAA,EACF,CAAA;AAAA,wBACC,IAAA,CAAK,KAAA,oBACJA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oDAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,cAAA,EAAe,EAC7B;AAAA;AAAA;AAAA;AAEJ,iBAAA,EACF;AAAA,eAAA;AAAA,cApDG,IAAA,CAAK;AAAA,aAsDZ;AAAA,UAEJ,CAAC,CAAA,EACL;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AACA,mBAAA,CAAoB,WAAA,GAAc,cAAA;AAElC,IAAM,WAAA,GAAgC8H,4BAAA,CAAA;AAEtC,IAAM,kBAAA,GAA2BD,kBAAA,CAAA,UAAA;AAAA,EAQ/B,CACE,EAAE,SAAA,EAAW,QAAA,GAAW,KAAA,EAAO,SAAS,aAAA,GAAgB,QAAA,EAAU,OAAA,EAAQ,EAC1E,GAAA,KACG;AACH,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,QAAA,EAAS;AAE5B,IAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AACpB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,uBACE7H,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,wCAAA;AAAA,UACA,aAAA,KAAkB,QAAQ,MAAA,GAAS,MAAA;AAAA,UACnC;AAAA,SACF;AAAA,QAEC,QAAA,EAAA,OAAA,CACE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,MAAM,CAAA,CACrC,GAAA,CAAI,CAAC,IAAA,KAAS;AACb,UAAA,MAAM,GAAA,GAAM,CAAA,EAAG,OAAA,IAAW,IAAA,CAAK,WAAW,OAAO,CAAA,CAAA;AACjD,UAAA,MAAM,UAAA,GAAa,2BAAA,CAA4B,MAAA,EAAQ,IAAA,EAAM,GAAG,CAAA;AAEhE,UAAA,uBACEE,eAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW,EAAA;AAAA,gBACT;AAAA,eACF;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,UAAA,EAAY,IAAA,IAAQ,CAAC,QAAA,mBACpBF,eAAC,UAAA,CAAW,IAAA,EAAX,EAAgB,CAAA,mBAEjBA,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,gCAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACL,iBAAiB,IAAA,CAAK;AAAA;AACxB;AAAA,iBACF;AAAA,gBAED,UAAA,EAAY;AAAA;AAAA,aAAA;AAAA,YAfR,IAAA,CAAK;AAAA,WAgBZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACL;AAAA,EAEJ;AACF;AACA,kBAAA,CAAmB,WAAA,GAAc,aAAA;AAGjC,SAAS,2BAAA,CACP,MAAA,EACA,OAAA,EACA,GAAA,EACA;AACA,EAAA,IAAI,OAAO,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,IAAA,EAAM;AACnD,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAA,GACJ,SAAA,IAAa,OAAA,IACb,OAAO,OAAA,CAAQ,OAAA,KAAY,QAAA,IAC3B,OAAA,CAAQ,OAAA,KAAY,IAAA,GAChB,OAAA,CAAQ,OAAA,GACR,MAAA;AAEN,EAAA,IAAI,cAAA,GAAyB,GAAA;AAE7B,EAAA,IACE,OAAO,OAAA,IACP,OAAO,OAAA,CAAQ,GAA2B,MAAM,QAAA,EAChD;AACA,IAAA,cAAA,GAAiB,QAAQ,GAA2B,CAAA;AAAA,EACtD,CAAA,MAAA,IACE,kBACA,GAAA,IAAO,cAAA,IACP,OAAO,cAAA,CAAe,GAAkC,MAAM,QAAA,EAC9D;AACA,IAAA,cAAA,GAAiB,eACf,GACF,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,kBAAkB,MAAA,GACrB,MAAA,CAAO,cAAc,CAAA,GACrB,OAAO,GAA0B,CAAA;AACvC;AApCS,MAAA,CAAA,2BAAA,EAAA,6BAAA,CAAA;AC1TT,IAAM,cAAA,GAAiBF,0BAAAA;AAAA,EACrB,iYAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,kBAAA;AAAA,QACT,EAAA,EAAI,oBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,IAAM,MAAA,GAAekI,kBAAA,CAAA,UAAA,CAInB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,GAAA,qBACzChI,cAAAA;AAAA,EAAiBiI,0BAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,IACzD,GAAG;AAAA;AACN,CACD;AAED,MAAA,CAAO,cAA8BA,0BAAA,CAAA,IAAA,CAAK,WAAA;ACjC1C,IAAM,qBAA2BC,kBAAA,CAAA,aAAA,CAE/B;AAAA,EACA,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAC,CAAA;AAED,IAAM,WAAA,GAAoBA,kBAAA,CAAA,UAAA,CAIxB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnDlI,cAAAA;AAAA,EAAsBmI,+BAAA,CAAA,IAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,IAChE,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAnI,cAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAAO,EAAE,OAAA,EAAS,IAAA,EAAK,EACjD,QAAA,EACH;AAAA;AACF,CACD;AAED,WAAA,CAAY,cAAmCmI,+BAAA,CAAA,IAAA,CAAK,WAAA;AAEpD,IAAM,eAAA,GAAwBD,kBAAA,CAAA,UAAA,CAI5B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3D,EAAA,MAAM,OAAA,GAAgBA,8BAAW,kBAAkB,CAAA;AAEnD,EAAA,uBACElI,cAAAA;AAAA,IAAsBmI,+BAAA,CAAA,IAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe;AAAA,UACb,OAAA,EAAS,QAAQ,OAAA,IAAW,OAAA;AAAA,UAC5B,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,SACvB,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,eAAA,CAAgB,cAAmCA,+BAAA,CAAA,IAAA,CAAK,WAAA;AClDxD,IAAM,WAAA,GAAmCC,+BAAA,CAAA;AAEzC,IAAM,kBAAA,GAA0CA,+BAAA,CAAA;AAMhD,IAAM,cAAA,GAAsCA,+BAAA,CAAA;AAE5C,IAAM,qBAAA,GAA6CA,+BAAA,CAAA;AAEnD,IAAM,qBAAA,GAA8BC,kBAAA,CAAA,UAAA,CAKlC,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3CnI,eAAAA;AAAA,EAAsBkI,+BAAA,CAAA,UAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4MAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDpI,cAAAA,CAACkH,2BAAAA,EAAA,EAAiB,WAAU,iBAAA,EAAkB;AAAA;AAAA;AAChD,CACD;AACD,qBAAA,CAAsB,cAAmCkB,+BAAA,CAAA,UAAA,CAAW,WAAA;AAEpE,IAAM,qBAAA,GAA8BC,8BAGlC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrI,cAAAA;AAAA,EAAsBoI,+BAAA,CAAA,UAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,qBAAA,CAAsB,cAAmCA,+BAAA,CAAA,UAAA,CAAW,WAAA;AAEpE,IAAM,kBAAA,GAA2BC,kBAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrI,cAAAA,CAAsBoI,+BAAA,CAAA,MAAA,EAArB,EACC,QAAA,kBAAApI,cAAAA;AAAA,EAAsBoI,+BAAA,CAAA,OAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,6gBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,kBAAA,CAAmB,cAAmCA,+BAAA,CAAA,OAAA,CAAQ,WAAA;AAE9D,IAAM,eAAA,GAAwBC,kBAAA,CAAA,UAAA,CAM5B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCrI,cAAAA;AAAA,EAAsBoI,+BAAA,CAAA,IAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+MAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,eAAA,CAAgB,cAAmCA,+BAAA,CAAA,IAAA,CAAK,WAAA;AAExD,IAAM,uBAAA,GAAgCC,kBAAA,CAAA,UAAA,CAGpC,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC7CnI,eAAAA;AAAA,EAAsBkI,+BAAA,CAAA,YAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAApI,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAsBoI,+BAAA,CAAA,aAAA,EAArB,EACC,QAAA,kBAAApI,eAACoB,oBAAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU,GACjC,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,uBAAA,CAAwB,cACDgH,+BAAA,CAAA,YAAA,CAAa,WAAA;AAEpC,IAAM,oBAAA,GAA6BC,kBAAA,CAAA,UAAA,CAGjC,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCnI,eAAAA;AAAA,EAAsBkI,+BAAA,CAAA,SAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAApI,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAsBoI,+BAAA,CAAA,aAAA,EAArB,EACC,QAAA,kBAAApI,eAACuB,wBAAAA,EAAA,EAAc,SAAA,EAAU,sBAAA,EAAuB,GAClD,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,oBAAA,CAAqB,cAAmC6G,+BAAA,CAAA,SAAA,CAAU,WAAA;AAElE,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA,CAK7B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCrI,cAAAA;AAAA,EAAsBoI,+BAAA,CAAA,KAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mDAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAAmCA,+BAAA,CAAA,KAAA,CAAM,WAAA;AAE1D,IAAM,oBAAA,GAA6BC,8BAGjC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrI,cAAAA;AAAA,EAAsBoI,+BAAA,CAAA,SAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,SAAS,CAAA;AAAA,IACnD,GAAG;AAAA;AACN,CACD;AACD,oBAAA,CAAqB,cAAmCA,+BAAA,CAAA,SAAA,CAAU,WAAA;AAElE,IAAM,sCAAsB,MAAA,CAAA,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6C;AAC3C,EAAA,uBACEpI,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA,EAb4B,qBAAA;AAc5B,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AC/KlC,IAAM,YAAA,GAAqCsI,gCAAA,CAAA;AAE3C,IAAM,mBAAA,GAA4CA,gCAAA,CAAA;AAElD,IAAM,iBAAA,GAA0CA,gCAAA,CAAA;AAEhD,IAAM,kBAAA,GAA2CA,gCAAA,CAAA;AAEjD,IAAM,eAAA,GAAwCA,gCAAA,CAAA;AAE9C,IAAM,sBAAA,GAA+CA,gCAAA,CAAA;AAErD,IAAM,sBAAA,GAA+BC,kBAAA,CAAA,UAAA,CAKnC,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3CrI,eAAAA;AAAA,EAAuBoI,gCAAA,CAAA,UAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wMAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDtI,cAAAA,CAACwI,wBAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACpC,CACD;AACD,sBAAA,CAAuB,cACCF,gCAAA,CAAA,UAAA,CAAW,WAAA;AAEnC,IAAM,sBAAA,GAA+BC,8BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BvI,cAAAA;AAAA,EAAuBsI,gCAAA,CAAA,UAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,sBAAA,CAAuB,cACCA,gCAAA,CAAA,UAAA,CAAW,WAAA;AAEnC,IAAM,mBAAA,GAA4BC,kBAAA,CAAA,UAAA,CAGhC,CAAC,EAAE,WAAW,UAAA,GAAa,CAAA,EAAG,GAAG,KAAA,IAAS,GAAA,qBAC1CvI,cAAAA,CAAuBsI,gCAAA,CAAA,MAAA,EAAtB,EACC,QAAA,kBAAAtI,cAAAA;AAAA,EAAuBsI,gCAAA,CAAA,OAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,kMAAA;AAAA,MACA,kVAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CAAA,EACF,CACD;AACD,mBAAA,CAAoB,cAAoCA,gCAAA,CAAA,OAAA,CAAQ,WAAA;AAEhE,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA,CAO7B,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACzD,EAAA,MAAM,OAAA,GAAU,EAAA;AAAA,IACd,uQAAA;AAAA,IACA,KAAA,IAAS,MAAA;AAAA,IACT;AAAA,GACF;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEvI,cAAAA,CAAuBsI,gCAAA,CAAA,IAAA,EAAtB,EAA2B,OAAA,EAAO,MAAC,GAAA,EAAW,GAAG,KAAA,EAChD,QAAA,kBAAAtI,eAAC,GAAA,EAAA,EAAE,IAAA,EAAY,SAAA,EAAW,OAAA,EACvB,UACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAuBsI,gCAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,gBAAA,CAAiB,cAAoCA,gCAAA,CAAA,IAAA,CAAK,WAAA;AAE1D,IAAM,wBAAA,GAAiCC,kBAAA,CAAA,UAAA,CAGrC,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC7CrI,eAAAA;AAAA,EAAuBoI,gCAAA,CAAA,YAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sOAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAtI,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAuBsI,gCAAA,CAAA,aAAA,EAAtB,EACC,QAAA,kBAAAtI,eAACsC,iBAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,GAC7B,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,wBAAA,CAAyB,cACDgG,gCAAA,CAAA,YAAA,CAAa,WAAA;AAErC,IAAM,qBAAA,GAA8BC,kBAAA,CAAA,UAAA,CAGlC,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCrI,eAAAA;AAAA,EAAuBoI,gCAAA,CAAA,SAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sOAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAtI,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAuBsI,gCAAA,CAAA,aAAA,EAAtB,EACC,QAAA,kBAAAtI,cAAAA,CAACyI,kBAAA,EAAA,EAAO,SAAA,EAAU,sBAAA,EAAuB,GAC3C,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,qBAAA,CAAsB,cAAoCH,gCAAA,CAAA,SAAA,CAAU,WAAA;AAEpE,IAAM,iBAAA,GAA0BC,kBAAA,CAAA,UAAA,CAK9B,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCvI,cAAAA;AAAA,EAAuBsI,gCAAA,CAAA,KAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mCAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAoCA,gCAAA,CAAA,KAAA,CAAM,WAAA;AAE5D,IAAM,qBAAA,GAA8BC,8BAGlC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BvI,cAAAA;AAAA,EAAuBsI,gCAAA,CAAA,SAAA;AAAA,EAAtB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD;AACD,qBAAA,CAAsB,cAAoCA,gCAAA,CAAA,SAAA,CAAU,WAAA;AAEpE,IAAM,uCAAuB,MAAA,CAAA,CAAC;AAAA,EAC5B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6C;AAC3C,EAAA,uBACEtI,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,SAAS,CAAA;AAAA,MACpE,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA,EAV6B,sBAAA;AAW7B,oBAAA,CAAqB,WAAA,GAAc,sBAAA;ACnMnC,IAAM,aAAA,GAAgBF,0BAAAA;AAAA,EACpB,yKAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,+BAAA;AAAA,QACT,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,IAAM,KAAA,GAAc4I,kBAAA,CAAA,UAAA,CAGlB,CAAC,EAAE,SAAA,EAAW,SAAS,GAAG,KAAA,EAAM,EAAG,GAAA,qBACnC1I,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,IAAA,EAAK,OAAA;AAAA,IACL,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD;AACD,KAAA,CAAM,WAAA,GAAc,OAAA;AAEpB,IAAM,UAAA,GAAmB0I,8BAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B1I,cAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,SAAS,CAAA;AAAA,IACtE,GAAG;AAAA;AACN,CACD;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;AAEzB,IAAM,gBAAA,GAAyB0I,8BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1B1I,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AC3C/B,IAAM,IAAA,GAAO2I;AASb,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,aAAA;AAAA,EAC7B;AACF,CAAA;AAEA,IAAM,4BAAY,MAAA,CAAA,CAGhB;AAAA,EACA,GAAG;AACL,CAAA,KAA4C;AAC1C,EAAA,uBACE5I,cAAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,IAC9C,QAAA,kBAAAA,cAAAA,CAAC6I,wBAAA,EAAA,EAAY,GAAG,OAAO,CAAA,EACzB,CAAA;AAEJ,CAAA,EAXkB,WAAA;AAalB,IAAM,+BAAe,MAAA,CAAA,MAAM;AACzB,EAAA,MAAM,YAAA,GAAqBD,8BAAW,gBAAgB,CAAA;AACtD,EAAA,MAAM,WAAA,GAAoBA,8BAAW,eAAe,CAAA;AACpD,EAAA,MAAM,EAAE,aAAA,EAAe,SAAA,EAAU,GAAIE,4BAAA,EAAe;AAEpD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA;AAE7D,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,EAAE,IAAG,GAAI,WAAA;AAEf,EAAA,OAAO;AAAA,IACL,EAAA;AAAA,IACA,MAAM,YAAA,CAAa,IAAA;AAAA,IACnB,UAAA,EAAY,GAAG,EAAE,CAAA,UAAA,CAAA;AAAA,IACjB,iBAAA,EAAmB,GAAG,EAAE,CAAA,sBAAA,CAAA;AAAA,IACxB,aAAA,EAAe,GAAG,EAAE,CAAA,kBAAA,CAAA;AAAA,IACpB,GAAG;AAAA,GACL;AACF,CAAA,EArBqB,cAAA;AA2BrB,IAAM,eAAA,GAAwBF,kBAAA,CAAA,aAAA;AAAA,EAC5B;AACF,CAAA;AAEA,IAAM,QAAA,GAAiBA,8BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,KAAWA,kBAAA,CAAA,KAAA,EAAM;AAEvB,EAAA,uBACE5I,eAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,IAAG,EACpC,QAAA,kBAAAA,eAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EAAI,GAAG,OAAO,CAAA,EACnE,CAAA;AAEJ,CAAC;AACD,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,SAAA,GAAkB4I,8BAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACE5I,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,IAAS,kBAAA,EAAoB,SAAS,CAAA;AAAA,MACpD,OAAA,EAAS,UAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,cAAoB4I,kBAAA,CAAA,UAAA,CAGxB,CAAC,EAAE,GAAG,KAAA,IAAS,GAAA,KAAQ;AACvB,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,iBAAA,EAAmB,aAAA,KAAkB,YAAA,EAAa;AAE7E,EAAA,uBACE5I,cAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,UAAA;AAAA,MACJ,kBAAA,EACE,CAAC,KAAA,GACG,CAAA,EAAG,iBAAiB,CAAA,CAAA,GACpB,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,MAE3C,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,MACf,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,eAAA,GAAwB2I,8BAG5B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACE5I,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,iBAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,qCAAA,EAAuC,SAAS,CAAA;AAAA,MAC7D,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAM,WAAA,GAAoB4I,8BAGxB,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5C,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,YAAA,EAAa;AAC9C,EAAA,MAAM,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,OAAA,IAAW,EAAE,CAAA,GAAI,QAAA;AAEpD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE5I,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,4CAAA,EAA8C,SAAS,CAAA;AAAA,MACpE,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;ACzJ1B,IAAM,mBAAA,GAAsBF,0BAAAA;AAAA,EAC1B,kSAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,WAAA,EAAa;AAAA,QACX,UAAA,EACE,iHAAA;AAAA,QACF,QAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2E;AACzE,EAAA,uBACEE,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,cAAA;AAAA,MACV,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ;AAdS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACtBT,SAAS,KAAA,CAAM,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACnE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAaT,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAaT,IAAM,kBAAA,GAAqBF,0BAAAA;AAAA,EACzB,6FAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,uBACEE,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAbS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAeT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ;AARS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAUT,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC5E,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAaT,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,+EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AC/ET,SAAS,OAAA,CAAQ,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACrE,EAAA,uBACEA,cAAAA;AAAA,IAAC+I,uBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,SAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA,GACN;AAEJ;AATS,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AC0DT,IAAM,OAAA,GAAU;AAAA,EACd,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AA2BO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,QAAA;AAAA,EACV,QAAA,GAAW,IAAA;AAAA,EACX,eAAA,GAAkB,EAAA;AAAA,EAClB,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,WAAA,GAAc,QAAQ,IAAI,CAAA;AAGhC,EAAA,IAAI,YAAY,YAAA,EAAc;AAC5B,IAAA,MAAM,eAAA,GAAkB,QAAA,GACpB,eAAA,IAAmB,EAAA,GACjB,kBAAA,GACA,eAAA,IAAmB,EAAA,GACjB,kBAAA,GACA,eAAA,IAAmB,EAAA,GACjB,kBAAA,GACA,kBAAA,GACN,gBAAA;AAEJ,IAAA,uBACE/I,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,qDAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,cAAY,IAAA,IAAQ,SAAA;AAAA,QACpB,WAAA,EAAU,QAAA;AAAA,QAEV,QAAA,kBAAAE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EAEb,QAAA,EAAA;AAAA,0BAAAF,cAAAA;AAAA,YAACG,mBAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,WAAA,EAAa,gBAAgB,CAAA;AAAA,cACxE,aAAA,EAAY;AAAA;AAAA,WACd;AAAA,UAAA,CAGE,QAAQ,WAAA,qBACRD,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8CAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA,oBACCF,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yCAAyC,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,YAE5D,+BACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,YAG3D,IAAA,oBACCE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACb,QAAA,EAAA;AAAA,8BAAAF,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oDAAA;AAAA,kBACV,KAAA,EAAO,EAAE,cAAA,EAAgB,KAAA;AAAM;AAAA,eACjC;AAAA,8BACAA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oDAAA;AAAA,kBACV,KAAA,EAAO,EAAE,cAAA,EAAgB,OAAA;AAAQ;AAAA,eACnC;AAAA,8BACAA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oDAAA;AAAA,kBACV,KAAA,EAAO,EAAE,cAAA,EAAgB,OAAA;AAAQ;AAAA;AACnC,aAAA,EACF;AAAA,WAAA,EAEJ;AAAA,SAAA,EAEJ;AAAA;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,uBACEE,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,kCAAA;AAAA,QACA,IAAA,IAAQ,cAAc,OAAA,GAAU,EAAA;AAAA,QAChC;AAAA,OACF;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,cAAY,IAAA,IAAQ,SAAA;AAAA,MACpB,WAAA,EAAU,QAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAF,cAAAA;AAAA,UAACG,mBAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA,CAAG,2BAAA,EAA6B,WAAA,EAAa,gBAAgB,CAAA;AAAA,YACxE,aAAA,EAAY;AAAA;AAAA,SACd;AAAA,QAAA,CACE,QAAQ,WAAA,qBACRD,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,IAAA,oBACCF,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uCAAuC,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UAE1D,+BACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAE9D;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAvGgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAgIT,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA,GAAQ,CAAA;AAAA,EACR,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAA2B;AACzB,EAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,IAAA,UAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EAAgD,CAAA;AAAA,sBAC/DE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,CAAA;AAAA,wBACzDA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C;AAAA,OAAA,EAC3D;AAAA,KAAA,EACF,CAAA;AAAA,IAED,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACrCA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,EAAA;AAAA,UACT,oCAAA;AAAA,UACA,CAAA,KAAM,KAAA,GAAQ,CAAA,GAAI,OAAA,GAAU;AAAA;AAC9B,OAAA;AAAA,MAJK;AAAA,KAMR;AAAA,GAAA,EACH,CAAA;AAEJ;AA3BgB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;ACtNhB,IAAM,aAAA,GAAyC;AAAA,EAC7C,EAAA,EAAI,uEAAA;AAAA,EACJ,EAAA,EAAI,+DAAA;AAAA,EACJ,OAAA,EAAS,mEAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,IAAI,EAAE,SAAA,EAAW,OAAO,SAAA,EAAW,GAAG,OAAM,EAAa;AAChE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,KAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6KAAA;AAAA,QACA,wJAAA;AAAA,QACA,cAAc,IAAI,CAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAbS,MAAA,CAAA,GAAA,EAAA,KAAA,CAAA;AAeT,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACtE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACxD,GAAG;AAAA;AAAA,GACN;AAEJ;AARS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;ACpBT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,0JAAA;AAAA,QACA,4BAAA;AAAA;AAAA,QAGA,iDAAA;AAAA,QACA,+CAAA;AAAA,QACA,gIAAA;AAAA,QACA,0HAAA;AAAA;AAAA,QAGA,0HAAA;AAAA;AAAA,QAGA,gLAAA;AAAA,QAEA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AA1BS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AA4BT,IAAM,uBAAA,GAA0BF,0BAAAA;AAAA,EAC9B,yPAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,cAAA,EACE,uEAAA;AAAA,QACF,YAAA,EACE,qEAAA;AAAA,QACF,aAAA,EACE,mGAAA;AAAA,QACF,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR,GAAG;AACL,CAAA,EAA+E;AAC7E,EAAA,uBACEE,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,mBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,WAAW,EAAA,CAAG,uBAAA,CAAwB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAAA,MAC3D,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,QAAA,IAAK,CAAA,CAAE,MAAA,CAAuB,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC/C,UAAA;AAAA,QACF;AACA,QAAA,CAAA,CAAE,aAAA,CAAc,aAAA,EAAe,aAAA,CAAc,OAAO,GAAG,KAAA,EAAM;AAAA,MAC/D,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AApBS,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAsBT,IAAM,wBAAA,GAA2BF,0BAAAA;AAAA,EAC/B,6CAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yGAAA;AAAA,QACJ,EAAA,EAAI,iDAAA;AAAA,QACJ,SAAA,EACE,6DAAA;AAAA,QACF,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,GAAG;AACL,CAAA,EACiD;AAC/C,EAAA,uBACEE,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,OAAA;AAAA,MACA,WAAW,EAAA,CAAG,wBAAA,CAAyB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA,GACN;AAEJ;AAjBS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAmBT,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC7E,EAAA,uBACEA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAVS,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAYT,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkC;AAChC,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAdS,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAgBT,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqC;AACnC,EAAA,uBACEA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAdS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACxIT,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,MAAA;AAAA,MACL,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACxD,GAAG;AAAA;AAAA,GACN;AAEJ;AATS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAWT,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2C;AACzC,EAAA,uBACEA,cAAAA;AAAA,IAACyC,UAAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,WAAA,EAAY,YAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC9B,GAAG;AAAA;AAAA,GACN;AAEJ;AAZS,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAcT,IAAM,YAAA,GAAe3C,0BAAAA;AAAA,EACnB,4PAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,OAAA,EAAS,eAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,YAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,SAASkJ,KAAAA,CAAK;AAAA,EACZ,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAC6D;AAC3D,EAAA,MAAM,IAAA,GAAO,UAAU/I,cAAAA,GAAO,KAAA;AAC9B,EAAA,uBACED,cAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,YAAA,CAAa,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAlBS,MAAA,CAAAgJ,KAAAA,EAAA,MAAA,CAAA;AAoBT,IAAM,iBAAA,GAAoBlJ,0BAAAA;AAAA,EACxB,oMAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM,wEAAA;AAAA,QACN,KAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACEE,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,OAAA,EAAS,SAAA,EAAW,CAAC,CAAA;AAAA,MACtD,GAAG;AAAA;AAAA,GACN;AAEJ;AAbS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAeT,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAaT,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAaT,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC3E,EAAA,uBACEA,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,oFAAA;AAAA,QACA,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAZS,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAcT,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACN;AAEJ;AARS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAUT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAaT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AClKT,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAqC;AAC3E,EAAA,uBACEA,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA;AAAA,QACA,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAZS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAcT,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAsE;AACpE,EAAA,uBACEA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA;AAAA,QACA,iCAAA;AAAA,QACA,8BAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAlBS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAoBT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wIAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAaT,IAAM,aAAA,GAAgBF,0BAAAA;AAAA,EACpB,oEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,WAAA,EAAa;AAAA,QACX,QAAA,EAAU,CAAC,2CAA2C,CAAA;AAAA,QACtD,UAAA,EAAY;AAAA,UACV,uBAAA;AAAA,UACA,uCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAA,EAAY;AAAA,UACV,8HAAA;AAAA,UACA,uDAAA;AAAA,UACA;AAAA;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAqE;AACnE,EAAA,uBACEE,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,OAAA;AAAA,MACV,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AAAA,MACtD,GAAG;AAAA;AAAA,GACN;AAEJ;AAdS,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA;AAgBT,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,+DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAaT,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuC;AACrC,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8GAAA;AAAA,QACA,iKAAA;AAAA,QACA,2HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAhBS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAkBT,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAXS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAaT,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC5E,EAAA,uBACEA,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uHAAA;AAAA,QACA,8DAAA;AAAA,QACA,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAbS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAeT,SAAS,cAAA,CAAe;AAAA,EACtB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEE,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,cAAA,EAAc,CAAC,CAAC,QAAA;AAAA,MAChB,SAAA,EAAW,EAAA;AAAA,QACT,2EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAACyC,UAAAA,EAAA,EAAU,SAAA,EAAU,0BAAA,EAA2B,CAAA;AAAA,QAC/C,4BACCzC,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uEAAA;AAAA,YACV,WAAA,EAAU,yBAAA;AAAA,YAET;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AA5BS,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AA8BT,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,OAAA,GAAUkE,gBAAQ,MAAM;AAC5B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,QAAQ,MAAA,KAAW,CAAA,IAAK,MAAA,CAAO,CAAC,GAAG,OAAA,EAAS;AAC9C,MAAA,OAAO,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA;AAAA,IACnB;AAEA,IAAA,uBACElE,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sCACX,QAAA,EAAA,MAAA,CAAO,GAAA;AAAA,MACN,CAAC,KAAA,EAAO,KAAA,KACN,KAAA,EAAO,OAAA,oBAAWA,cAAAA,CAAC,IAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,CAAM,OAAA,EAAA,EAAd,KAAsB;AAAA,KACrD,EACF,CAAA;AAAA,EAEJ,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,SAAS,CAAA;AAAA,MAC9D,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AA7CS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AC5JT,IAAM,UAAA,GAAmBiJ,kBAAA,CAAA,UAAA;AAAA,EACvB,CAAC;AAAA,IACC,KAAA;AAAA,IACA,eAAA,GAAkB,GAAA;AAAA,IAClB,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA,GAAO,MAAA;AAAA,IACP,OAAA,GAAU,OAAA;AAAA,IACV,QAAA;AAAA,IACA,aAAA,GAAgB,SAAA;AAAA,IAChB,GAAG;AAAA,KACF,GAAA,KAAQ;AACT,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAEhD,IAAA,MAAM,6BAAa,MAAA,CAAA,YAAY;AAC7B,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA,MAAA,GAAS,KAAK,CAAA;AACd,QAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,eAAe,CAAA;AAAA,MACpD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AAAA,MACtC;AAAA,IACF,CAAA,EATmB,YAAA,CAAA;AAWnB,IAAA,MAAM,QAAA,GAAW,CAAC,CAAC,QAAA;AAEnB,IAAA,uBACE/I,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAM,WAAW,IAAA,GAAO,MAAA;AAAA,QACxB,OAAA;AAAA,QACA,OAAA,EAAS,UAAA;AAAA,QACT,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QACnC,YAAA,EAAY,SAAS,QAAA,GAAW,mBAAA;AAAA,QAC/B,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA,mBACCF,cAAAA,CAACsC,iBAAAA,EAAA,EAAM,WAAW,EAAA,CAAG,aAAA,EAAe,gBAAgB,CAAA,EAAG,CAAA,mBAEvDtC,cAAAA,CAACkJ,gBAAA,EAAA,EAAK,WAAW,aAAA,EAAe,CAAA;AAAA,UAEjC,QAAA,oBAAYlJ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,SAAS,gBAAA,GAAmB,MAAA,EAAY,QAAA,EAAA,MAAA,GAAS,QAAA,GAAW,QAAA,EAAS;AAAA;AAAA;AAAA,KACrG;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAuBzB,IAAM,SAAA,GAAkBiJ,kBAAA,CAAA,UAAA;AAAA,EACtB,CAAC;AAAA,IACC,KAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA,GAAkB,GAAA;AAAA,IAClB,MAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,QAAA,GAAW,IAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,GAAG;AAAA,KACF,GAAA,KAAQ;AACT,IAAA,uBACE/I,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iEAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBACCF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAwC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,4BAE/DA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,SAAA;AAAA,kBACA,IAAA,IAAQ,WAAA;AAAA,kBACR,QAAA,IAAY,UAAA;AAAA,kBACZ,QAAA,IAAY;AAAA,iBACd;AAAA,gBACA,KAAA,EAAO,KAAA;AAAA,gBAEN,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EACF,CAAA;AAAA,0BACAA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,eAAA;AAAA,cACA;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;ACxIxB,IAAM,SAAA,GAAY,YAAA;AA4DlB,IAAM,cAAA,GAAuBmJ,kBAAA,CAAA,UAAA;AAAA,EAC3B,CACE;AAAA,IACE,GAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,UAAA,GAAa,IAAA;AAAA,IACb,gBAAA,GAAmB,GAAA;AAAA,IACnB,MAAA,GAAS,KAAA;AAAA,IACT,IAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,4BAAyB,MAAM,CAAA;AACjE,IAAA,MAAM,eAAA,GAAwBA,0BAAmC,MAAS,CAAA;AAG1E,IAAA,MAAM,CAAC,KAAK,CAAA,GAAI,eAAA,CAAwB,WAAW,EAAE,CAAA;AAGrD,IAAMA,6BAAU,MAAM;AACpB,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,UAAA,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAAA,QACtC;AAAA,MACF,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAKL,IAAA,MAAM,eAAA,2BAAmB,OAAA,KAAoC;AAC3D,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AACrD,MAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAGzB,MAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,KAAA,CAAM,8CAA8C,CAAA;AACtF,MAAA,IAAI,aAAA,IAAiB,aAAA,CAAc,CAAC,CAAA,EAAG;AACrC,QAAA,OAAO,kBAAA,CAAmB,aAAA,CAAc,CAAC,CAAC,CAAA;AAAA,MAC5C;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,EAXwB,iBAAA,CAAA;AAgBxB,IAAA,MAAM,eAAA,mBAAkB,MAAA,CAAA,CAAC,IAAA,EAAY,gBAAA,KAA6B;AAChE,MAAA,MAAMC,IAAAA,GAAM,MAAA,CAAO,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC3C,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,MAAA,CAAA,CAAE,IAAA,GAAOA,IAAAA;AACT,MAAA,CAAA,CAAE,QAAA,GAAW,gBAAA;AACb,MAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,MAAA,CAAA,CAAE,KAAA,EAAM;AACR,MAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,MAAA,MAAA,CAAO,GAAA,CAAI,gBAAgBA,IAAG,CAAA;AAAA,IAChC,CAAA,EATwB,iBAAA,CAAA;AAcxB,IAAA,MAAM,sCAAsB,MAAA,CAAA,MAAM;AAChC,MAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,QAAA,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAAA,MACtC;AACA,MAAA,eAAA,CAAgB,OAAA,GAAU,WAAW,MAAM;AACzC,QAAA,SAAA,CAAU,MAAM,CAAA;AAAA,MAClB,GAAG,gBAAgB,CAAA;AAAA,IACrB,CAAA,EAP4B,qBAAA,CAAA;AAY5B,IAAA,MAAM,oCAAoB,MAAA,CAAA,YAAY;AACpC,MAAA,IAAI;AACF,QAAA,SAAA,CAAU,aAAa,CAAA;AACvB,QAAA,eAAA,IAAkB;AAElB,QAAA,MAAM,UAAuB,EAAC;AAG9B,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAAA,QAC5C;AAEA,QAAA,MAAM,OAAA,GAAuB;AAAA,UAC3B,MAAA;AAAA,UACA;AAAA,SACF;AAEA,QAAA,IAAI,MAAA,KAAW,UAAU,IAAA,EAAM;AAC7B,UAAA,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAClC,UAAA,OAAA,CAAQ,OAAA,GAAU;AAAA,YAChB,GAAG,OAAA,CAAQ,OAAA;AAAA,YACX,cAAA,EAAgB;AAAA,WAClB;AAAA,QACF;AAEA,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAEzC,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,MAAM,IAAI,MAAM,CAAA,iBAAA,EAAoB,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,QAC9E;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAGjC,QAAA,MAAM,gBAAA,GACJ,YACA,eAAA,CAAgB,QAAA,CAAS,OAAO,CAAA,IAChC,CAAA,SAAA,EAAY,IAAA,CAAK,GAAA,EAAK,CAAA,IAAA,CAAA;AAGxB,QAAA,eAAA,CAAgB,MAAM,gBAAgB,CAAA;AAEtC,QAAA,SAAA,CAAU,SAAS,CAAA;AACnB,QAAA,kBAAA,GAAqB,gBAAgB,CAAA;AACrC,QAAA,mBAAA,EAAoB;AAAA,MACtB,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,KAAK,CAAA;AACtC,QAAA,SAAA,CAAU,OAAO,CAAA;AACjB,QAAA,eAAA,GAAkB,KAAc,CAAA;AAChC,QAAA,mBAAA,EAAoB;AAAA,MACtB;AAAA,IACF,CAAA,EAnD0B,mBAAA,CAAA;AAwD1B,IAAA,MAAM,yCAAyB,MAAA,CAAA,MAAM;AACnC,MAAA,IAAI;AACF,QAAA,SAAA,CAAU,aAAa,CAAA;AACvB,QAAA,eAAA,IAAkB;AAClB,QAAA,MAAA,CAAO,IAAA,CAAK,KAAK,QAAQ,CAAA;AAIzB,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,SAAA,CAAU,SAAS,CAAA;AACnB,UAAA,kBAAA,GAAqB,YAAY,MAAM,CAAA;AACvC,UAAA,mBAAA,EAAoB;AAAA,QACtB,GAAG,GAAG,CAAA;AAAA,MACR,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,KAAK,CAAA;AACtC,QAAA,SAAA,CAAU,OAAO,CAAA;AACjB,QAAA,eAAA,GAAkB,KAAc,CAAA;AAChC,QAAA,mBAAA,EAAoB;AAAA,MACtB;AAAA,IACF,CAAA,EAnB+B,wBAAA,CAAA;AAwB/B,IAAA,MAAM,iCAAiB,MAAA,CAAA,MAAM;AAC3B,MAAA,IAAI,WAAW,aAAA,EAAe;AAE9B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,iBAAA,EAAkB;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,sBAAA,EAAuB;AAAA,MACzB;AAAA,IACF,CAAA,EARuB,gBAAA,CAAA;AAavB,IAAA,MAAM,mCAAmB,MAAA,CAAA,MAAM;AAC7B,MAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AAExB,MAAA,QAAQ,MAAA;AAAQ,QACd,KAAK,aAAA;AACH,UAAA,uBAAOpJ,cAAAA,CAACG,mBAAAA,EAAA,EAAQ,WAAU,cAAA,EAAe,CAAA;AAAA,QAC3C,KAAK,SAAA;AACH,UAAA,uBAAOH,cAAAA,CAACqJ,wBAAA,EAAA,EAAa,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,QAClD,KAAK,OAAA;AACH,UAAA,uBAAOrJ,cAAAA,CAACsJ,uBAAA,EAAA,EAAY,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,QAC/C;AACE,UAAA,uBAAOtJ,eAACuJ,oBAAA,EAAA,EAAS,CAAA;AAAA;AACrB,IACF,CAAA,EAbyB,kBAAA,CAAA;AAezB,IAAA,uBACErJ,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAS,cAAA;AAAA,QACT,QAAA,EAAU,YAAY,MAAA,KAAW,aAAA;AAAA,QACjC,SAAA,EAAW,GAAG,SAAS,CAAA;AAAA,QACtB,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,gBAAA,EAAiB;AAAA,UACjB;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;ACpP7B,IAAM,OAAA,GAAgBsJ,kBAAA,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,MAAA,EAAQ,OAAA,EAAS,WAAW,GAAA,EAAK,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACtD,IAAA,MAAM,GAAA,GAAYA,kBAAA,CAAA,OAAA;AAAA,MAChB,MAAM,kBAAA,CAAmB,MAAA,EAAQ,OAAO,CAAA;AAAA,MACxC,CAAC,QAAQ,OAAO;AAAA,KAClB;AAEA,IAAA,uBACExJ,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA,EAAK,OAAO,MAAA,CAAO,KAAA;AAAA,QACnB,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,QAChC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;ACxCtB,IAAM,OAAA,mBAAU,MAAA,CAAA,CAAC,EAAE,GAAG,OAAM,KAAoB;AAC9C,EAAA,MAAM,QAAQ,gBAAA,EAAiB;AAE/B,EAAA,uBACEA,cAAAA;AAAA,IAACyJ,cAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAU,eAAA;AAAA,MACV,UAAA,EAAU,IAAA;AAAA,MACV,YAAA,EAAc;AAAA,QACZ,UAAA,EAAY;AAAA,UACV,KAAA,EACE,uIAAA;AAAA,UACF,WAAA,EAAa,sCAAA;AAAA,UACb,YAAA,EACE,kEAAA;AAAA,UACF,YAAA,EACE;AAAA;AACJ,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA,EAtBgB,SAAA;ACShB,IAAM,cAAA,2BAAkB,WAAA,KAAqC;AAC3D,EAAA,OAAO,WAAA,CACJ,WAAA,EAAY,CACZ,OAAA,CAAQ,IAAA,EAAM,CAAA,IAAA,KAAQ,MAAA,CAAO,aAAA,CAAc,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA;AAC5E,CAAA,EAJuB,gBAAA,CAAA;AAOvB,IAAM,cAAA,2BAAkB,WAAA,KAAqC;AAC3D,EAAA,IAAI;AACF,IAAA,MAAM,YAAA,GAAe,IAAI,IAAA,CAAK,YAAA,CAAa,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA;AACrE,IAAA,OAAO,YAAA,CAAa,EAAA,CAAG,WAAW,CAAA,IAAK,WAAA;AAAA,EACzC,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,WAAA;AAAA,EACT;AACF,CAAA,EARuB,gBAAA,CAAA;AAWvB,IAAM,kCAAkB,MAAA,CAAA,MAAM;AAC5B,EAAA,OAAOC,6BAAA,EAAa,CAAE,GAAA,CAAI,CAAA,WAAA,MAAgB;AAAA,IACxC,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,eAAe,WAAW,CAAA;AAAA,IAChC,IAAA,EAAM,eAAe,WAAW,CAAA;AAAA,IAChC,QAAA,EAAU,CAAA,CAAA,EAAIC,sCAAA,CAAsB,WAAW,CAAC,CAAA;AAAA,GAClD,CAAE,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,IAAI,CAAC,CAAA;AACjD,CAAA,EAPwB,iBAAA,CAAA;AASxB,IAAM,YAAY,eAAA,EAAgB;AAWlC,IAAM,UAAA,GAAmBC,kBAAA,CAAA,UAAA;AAAA,EACvB,CAAC;AAAA,IACC,SAAA;AAAA,IACA,KAAA,GAAQ,EAAA;AAAA,IACR,QAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,WAAA,GAAc,oBAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,GAAG;AAAA,KACF,GAAA,KAAQ;AACT,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,4BAAsB,cAAc,CAAA;AACxF,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,4BAAS,EAAE,CAAA;AACrD,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,4BAAS,KAAK,CAAA;AAChE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,4BAAS,EAAE,CAAA;AACvD,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,4BAAS,EAAE,CAAA;AAGjE,IAAA,MAAM,cAAA,GAAiB,UAAU,IAAA,CAAK,CAAA,CAAA,KAAK,EAAE,IAAA,KAAS,eAAe,CAAA,IAAK,SAAA,CAAU,CAAC,CAAA;AAGrF,IAAA,MAAM,iBAAA,GAA0BA,2BAAQ,MAAM;AAC5C,MAAA,IAAI,CAAC,WAAA,CAAY,IAAA,EAAK,EAAG,OAAO,SAAA;AAEhC,MAAA,MAAM,KAAA,GAAQ,YAAY,WAAA,EAAY;AACtC,MAAA,OAAO,SAAA,CAAU,MAAA;AAAA,QAAO,aACtB,OAAA,CAAQ,IAAA,CAAK,aAAY,CAAE,QAAA,CAAS,KAAK,CAAA,IACzC,OAAA,CAAQ,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,IAC/B,OAAA,CAAQ,KAAK,WAAA,EAAY,CAAE,SAAS,KAAK;AAAA,OAC3C;AAAA,IACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAGhB,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAcC,4CAA2B,KAAK,CAAA;AACpD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,kBAAA,CAAmB,WAAA,CAAY,WAAW,cAAc,CAAA;AACxD,YAAA,aAAA,CAAc,YAAY,cAAc,CAAA;AAAA,UAC1C,CAAA,MAAO;AACL,YAAA,aAAA,CAAc,KAAK,CAAA;AAAA,UACrB;AAAA,QACF,CAAA,CAAA,MAAQ;AACN,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,KAAA,EAAO,cAAc,CAAC,CAAA;AAG1B,IAAMD,6BAAU,MAAM;AACpB,MAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,IACxB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,IAAMA,6BAAU,MAAM;AACpB,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB;AAAA,IACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAGnB,IAAA,MAAM,mBAAA,2BAAuB,OAAA,KAAiC;AAC5D,MAAA,kBAAA,CAAmB,QAAQ,IAAI,CAAA;AAC/B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,mBAAA,CAAoB,EAAE,CAAA;AAGtB,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,SAAA,GAAY,IAAIE,0BAAA,CAAU,OAAA,CAAQ,IAAI,CAAA;AAC5C,QAAA,MAAM,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AAC5C,QAAA,aAAA,CAAc,SAAS,CAAA;AAGvB,QAAA,MAAM,WAAA,GAAc,UAAU,SAAA,EAAU;AACxC,QAAA,QAAA,GAAW,aAAa,MAAM,CAAA;AAAA,MAChC;AAAA,IACF,CAAA,EAhB4B,qBAAA,CAAA;AAmB5B,IAAA,MAAM,aAAA,2BAAiB,CAAA,KAA2B;AAChD,MAAA,IAAI,CAAC,cAAA,EAAgB;AAErB,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,WAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,mBAAA;AAAA,YAAoB,UAClB,IAAA,GAAO,iBAAA,CAAkB,MAAA,GAAS,CAAA,GAAI,OAAO,CAAA,GAAI;AAAA,WACnD;AACA,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,mBAAA;AAAA,YAAoB,UAClB,IAAA,GAAO,CAAA,GAAI,IAAA,GAAO,CAAA,GAAI,kBAAkB,MAAA,GAAS;AAAA,WACnD;AACA,UAAA;AAAA,QACF,KAAK,OAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,gBAAA,IAAoB,CAAA,IAAK,gBAAA,GAAmB,iBAAA,CAAkB,MAAA,EAAQ;AACxE,YAAA,mBAAA,CAAoB,iBAAA,CAAkB,gBAAgB,CAAE,CAAA;AAAA,UAC1D;AACA,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,UAAA;AAAA;AACJ,IACF,CAAA,EA3BsB,eAAA,CAAA;AA8BtB,IAAA,MAAM,iBAAA,2BAAqB,CAAA,KAA2C;AACpE,MAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,CAAO,KAAA;AAGvB,MAAA,MAAM,SAAA,GAAY,IAAIA,0BAAA,CAAU,eAAe,CAAA;AAC/C,MAAA,MAAM,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AAEvC,MAAA,aAAA,CAAc,SAAS,CAAA;AAGvB,MAAA,MAAM,WAAA,GAAc,UAAU,SAAA,EAAU;AACxC,MAAA,QAAA,GAAW,aAAa,MAAM,CAAA;AAAA,IAChC,CAAA,EAZ0B,mBAAA,CAAA;AAe1B,IAAA,MAAM,WAAA,2BAAe,CAAA,KAA8C;AACjE,MAAA,MAAM,UAAA,GAAa,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAEjD,MAAA,IAAI;AAEF,QAAA,MAAM,WAAA,GAAcD,4CAA2B,UAAU,CAAA;AACzD,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,kBAAA,CAAmB,WAAA,CAAY,WAAW,eAAe,CAAA;AACzD,UAAA,aAAA,CAAc,YAAY,cAAc,CAAA;AACxC,UAAA,QAAA,GAAW,YAAY,MAAM,CAAA;AAC7B,UAAA;AAAA,QACF;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA,EAhBoB,aAAA,CAAA;AAkBpB,IAAA,uBACE3J,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,eAAA,EAAiB,SAAS,CAAA,EAAG,SAAA,EAAW,aAAA,EAEzD,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,cAAc,iBAAA,EAChD,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAE,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,6DAAA;AAAA,YACV,QAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,yBAAe,IAAA,EAAK,CAAA;AAAA,8BACjDA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,yBAAe,QAAA,EAAS,CAAA;AAAA,8BAC7DA,cAAAA,CAAC+J,uBAAA,EAAA,EAAY,SAAA,EAAU,oBAAA,EAAqB;AAAA;AAAA;AAAA,SAC9C,EACF,CAAA;AAAA,wBACA7J,eAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,OAAA,EAAQ,WAAU,mBAAA,EAE3C,QAAA,EAAA;AAAA,0BAAAF,cAAAA,CAAC,SAAI,SAAA,EAAU,cAAA,EACb,0BAAAE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EACb,QAAA,EAAA;AAAA,4BAAAF,cAAAA,CAACgK,kBAAA,EAAA,EAAO,SAAA,EAAU,wEAAA,EAAyE,CAAA;AAAA,4BAC3FhK,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,WAAA,EAAY,qBAAA;AAAA,gBACZ,KAAA,EAAO,WAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,cAAA,CAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAC9C,SAAA,EAAU,UAAA;AAAA,gBACV,SAAA,EAAS;AAAA;AAAA;AACX,WAAA,EACF,CAAA,EACF,CAAA;AAAA,0BAGAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BACZ,QAAA,EAAA,iBAAA,CAAkB,MAAA,KAAW,oBAC5BA,cAAAA,CAAC,SAAI,SAAA,EAAU,+CAAA,EAAgD,gCAE/D,CAAA,GAEA,iBAAA,CAAkB,IAAI,CAAC,OAAA,EAAS,0BAC9BE,eAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEC,OAAA,EAAS,MAAM,mBAAA,CAAoB,OAAO,CAAA;AAAA,cAC1C,SAAA,EAAW,EAAA;AAAA,gBACT,kDAAA;AAAA,gBACA,UAAU,gBAAA,IAAoB;AAAA,eAChC;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,kBAAQ,IAAA,EAAK,CAAA;AAAA,gCAC1CA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,kBAAQ,IAAA,EAAK,CAAA;AAAA,gCAC/CA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,kBAAQ,QAAA,EACX;AAAA;AAAA,aAAA;AAAA,YAXK,OAAA,CAAQ;AAAA,WAahB,CAAA,EAEL;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBAGAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,UAAA;AAAA,UACP,QAAA,EAAU,iBAAA;AAAA,UACV,OAAA,EAAS,WAAA;AAAA,UACT,WAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAU,kCAAA;AAAA,UACT,GAAG;AAAA;AAAA;AACN,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;ACzQzB,IAAM,cAAA,GAAuBiK,kBAAA,CAAA,UAAA,CAG3B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC/J,eAAAA;AAAA,EAAyBgK,kCAAA,CAAA,IAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,0DAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDlK,eAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAC1B,CACD;AACD,cAAA,CAAe,cAAsCkK,kCAAA,CAAA,IAAA,CAAK,WAAA;AAE1D,IAAM,kBAAA,GAA2BD,8BAG/B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BjK,cAAAA;AAAA,EAAyBkK,kCAAA,CAAA,IAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,kBAAA,CAAmB,cAAsCA,kCAAA,CAAA,IAAA,CAAK,WAAA;AAE9D,IAAM,kBAAA,GAA6CA,kCAAA,CAAA;AAEnD,IAAM,0BAAA,GAA6BpK,0BAAAA;AAAA,EACjC;AACF;AAEA,IAAM,qBAAA,GAA8BmK,kBAAA,CAAA,UAAA,CAGlC,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC/J,eAAAA;AAAA,EAAyBgK,kCAAA,CAAA,OAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA2B,EAAG,SAAS,SAAS,CAAA;AAAA,IAC7D,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MAAU,GAAA;AAAA,sBACXlK,cAAAA;AAAA,QAAC+J,uBAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,4FAAA;AAAA,UACV,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AACF,CACD;AACD,qBAAA,CAAsB,cAAsCG,kCAAA,CAAA,OAAA,CAAQ,WAAA;AAEpE,IAAM,qBAAA,GAA8BD,8BAGlC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BjK,cAAAA;AAAA,EAAyBkK,kCAAA,CAAA,OAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,wVAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,qBAAA,CAAsB,cAAsCA,kCAAA,CAAA,OAAA,CAAQ,WAAA;AAEpE,IAAM,kBAAA,GAA2BD,8BAK/B,CAAC,EAAE,MAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACvC,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEjK,cAAAA,CAAyBkK,kCAAA,CAAA,IAAA,EAAxB,EAA6B,SAAO,IAAA,EAAC,GAAA,EAAW,GAAG,KAAA,EAClD,QAAA,kBAAAlK,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAa,UAAS,CAAA,EAC3B,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA,CAAyBkK,kCAAA,CAAA,IAAA,EAAxB,EAA6B,GAAA,EAAW,GAAG,OACzC,QAAA,EACH,CAAA;AAEJ,CAAC;AACD,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AAEjC,IAAM,sBAAA,GAA+BD,8BAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BjK,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,GAAG,uCAAuC,CAAA;AAAA,IACrD,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,IAE3B,QAAA,kBAAAA,cAAAA;AAAA,MAAyBkK,kCAAA,CAAA,QAAA;AAAA,MAAxB;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,iWAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG;AAAA;AAAA;AACN;AACF,CACD;AACD,sBAAA,CAAuB,cACGA,kCAAA,CAAA,QAAA,CAAS,WAAA;AAEnC,IAAM,uBAAA,GAAgCD,8BAGpC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BjK,cAAAA;AAAA,EAAyBkK,kCAAA,CAAA,SAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,6LAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAlK,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wEAAA,EAAyE;AAAA;AAC1F,CACD;AACD,uBAAA,CAAwB,cACEkK,kCAAA,CAAA,SAAA,CAAU,WAAA;ACpIpC,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBAAOlK,cAAAA,CAAkBmK,2BAAA,CAAA,IAAA,EAAjB,EAAuB,GAAG,KAAA,EAAO,CAAA;AAC3C;AAJS,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;AAMT,SAAS,YAAA,CAAa;AAAA,EACpB,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBAAOnK,cAAAA,CAAkBmK,2BAAA,CAAA,KAAA,EAAjB,EAAwB,GAAG,KAAA,EAAO,CAAA;AAC5C;AAJS,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AAMT,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBAAOnK,cAAAA,CAAkBmK,2BAAA,CAAA,MAAA,EAAjB,EAAyB,GAAG,KAAA,EAAO,CAAA;AAC7C;AAJS,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAMT,SAAS,iBAAA,CAAkB;AAAA,EACzB,GAAG;AACL,CAAA,EAA6D;AAC3D,EAAA,uBAAOnK,cAAAA,CAAkBmK,2BAAA,CAAA,UAAA,EAAjB,EAA6B,GAAG,KAAA,EAAO,CAAA;AACjD;AAJS,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAMT,SAAS,UAAA,CAAW;AAAA,EAClB,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBAAOnK,cAAAA,CAAkBmK,2BAAA,CAAA,GAAA,EAAjB,EAAqB,WAAA,EAAU,aAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AAClE;AAJS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAMT,IAAM,OAAA,GAAgBC,8BAGpB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpK,cAAAA;AAAA,EAAkBmK,2BAAA,CAAA,IAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,OAAA,CAAQ,cAA+BA,2BAAA,CAAA,IAAA,CAAK,WAAA;AAE5C,IAAM,cAAA,GAAuBC,8BAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpK,cAAAA;AAAA,EAAkBmK,2BAAA,CAAA,OAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;AAEtD,IAAM,iBAAA,GAA0BC,kBAAA,CAAA,UAAA,CAK9B,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3ClK,eAAAA;AAAA,EAAkBiK,2BAAA,CAAA,UAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4MAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDnK,cAAAA,CAACwI,wBAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA;AAAA;AAC5C,CACD;AACD,iBAAA,CAAkB,cAA+B2B,2BAAA,CAAA,UAAA,CAAW,WAAA;AAE5D,IAAM,iBAAA,GAA0BC,8BAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpK,cAAAA;AAAA,EAAkBmK,2BAAA,CAAA,UAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qcAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAA+BA,2BAAA,CAAA,UAAA,CAAW,WAAA;AAE5D,IAAM,cAAA,GAAuBC,kBAAA,CAAA,UAAA;AAAA,EAI3B,CACE,EAAE,SAAA,EAAW,KAAA,GAAQ,OAAA,EAAS,cAAc,EAAA,EAAI,UAAA,GAAa,CAAA,EAAG,GAAG,OAAM,EACzE,GAAA,qBAEApK,cAAAA,CAAkBmK,2BAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAnK,cAAAA;AAAA,IAAkBmK,2BAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,qaAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF;AAEJ;AACA,cAAA,CAAe,cAA+BA,2BAAA,CAAA,OAAA,CAAQ,WAAA;AAEtD,IAAM,WAAA,GAAoBC,kBAAA,CAAA,UAAA,CAOxB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACzD,EAAA,MAAM,OAAA,GAAU,EAAA;AAAA,IACd,+MAAA;AAAA,IACA,KAAA,IAAS,MAAA;AAAA,IACT;AAAA,GACF;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACEpK,cAAAA,CAAkBmK,2BAAA,CAAA,IAAA,EAAjB,EAAsB,OAAA,EAAO,MAAC,GAAA,EAAW,GAAG,KAAA,EAC3C,QAAA,kBAAAnK,eAAC,GAAA,EAAA,EAAE,IAAA,EAAY,SAAA,EAAW,OAAA,EACvB,UACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAkBmK,2BAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,WAAA,CAAY,cAA+BA,2BAAA,CAAA,IAAA,CAAK,WAAA;AAEhD,IAAM,mBAAA,GAA4BC,kBAAA,CAAA,UAAA,CAGhC,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC7ClK,eAAAA;AAAA,EAAkBiK,2BAAA,CAAA,YAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAnK,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAkBmK,2BAAA,CAAA,aAAA,EAAjB,EACC,QAAA,kBAAAnK,eAACsC,iBAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,GAC7B,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,mBAAA,CAAoB,cAA+B6H,2BAAA,CAAA,YAAA,CAAa,WAAA;AAEhE,IAAM,gBAAA,GAAyBC,kBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpClK,eAAAA;AAAA,EAAkBiK,2BAAA,CAAA,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oNAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAnK,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,0BAAAA,cAAAA,CAAkBmK,2BAAA,CAAA,aAAA,EAAjB,EACC,QAAA,kBAAAnK,eAACyI,kBAAAA,EAAA,EAAO,SAAA,EAAU,sBAAA,EAAuB,GAC3C,CAAA,EACF,CAAA;AAAA,MACC;AAAA;AAAA;AACH,CACD;AACD,gBAAA,CAAiB,cAA+B0B,2BAAA,CAAA,SAAA,CAAU,WAAA;AAE1D,IAAM,YAAA,GAAqBC,kBAAA,CAAA,UAAA,CAKzB,CAAC,EAAE,SAAA,EAAW,OAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBACjCpK,cAAAA;AAAA,EAAkBmK,2BAAA,CAAA,KAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,mCAAA;AAAA,MACA,KAAA,IAAS,MAAA;AAAA,MACT;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,YAAA,CAAa,cAA+BA,2BAAA,CAAA,KAAA,CAAM,WAAA;AAElD,IAAM,gBAAA,GAAyBC,8BAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpK,cAAAA;AAAA,EAAkBmK,2BAAA,CAAA,SAAA;AAAA,EAAjB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAA+BA,2BAAA,CAAA,SAAA,CAAU,WAAA;AAE1D,IAAM,kCAAkB,MAAA,CAAA,CAAC;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6C;AAC3C,EAAA,uBACEnK,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA,EAbwB,iBAAA;AAcxB,eAAA,CAAgB,WAAA,GAAc,iBAAA","file":"components.cjs","sourcesContent":["import { ClassValue, clsx} from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Loader2 } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../lib/utils';\n\nconst buttonVariants = cva(\n \"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-semibold transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-sm\",\n xs: \"h-7 rounded px-2 py-1 text-xs\",\n lg: \"h-11 rounded-md px-8\",\n huge: \"h-14 rounded-md px-10 text-lg\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n}\n\n// Filter out SVG icons from children when loading\nfunction filterIcons(children: React.ReactNode): React.ReactNode {\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child;\n\n const type = child.type;\n // Skip native svg or ForwardRef components (Lucide icons)\n if (type === 'svg' || (typeof type === 'object' && type !== null)) {\n return null;\n }\n\n return child;\n });\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, loading = false, onClick, children, disabled, ...props }, ref) => {\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!loading) {\n onClick?.(e);\n }\n };\n\n // When asChild is true, Slot expects exactly ONE child element\n // Don't render loading spinner with asChild to avoid \"Children.only\" error\n if (asChild) {\n return (\n <Slot\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n onClick={onClick}\n {...props}\n >\n {children}\n </Slot>\n )\n }\n\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n onClick={handleClick}\n disabled={disabled || loading}\n {...props}\n >\n {loading && <Loader2 className=\"size-4 animate-spin\" />}\n {loading ? filterIcons(children) : children}\n </button>\n )\n }\n)\nButton.displayName = \"Button\"\n\n// ButtonLink using native anchor tag (no Next.js dependency)\nexport interface ButtonLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement>,\n VariantProps<typeof buttonVariants> {\n href: string\n}\n\nconst ButtonLink = React.forwardRef<HTMLAnchorElement, ButtonLinkProps>(\n ({ className, variant, size, href, children, ...props }, ref) => {\n return (\n <a\n href={href}\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {children}\n </a>\n )\n }\n)\nButtonLink.displayName = \"ButtonLink\"\n\nexport { Button, ButtonLink, buttonVariants }\n","import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\">\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n})\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '../lib/utils';\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import { ReactNode } from 'react';\n\nimport { cn } from '../lib/utils';\n\ninterface SectionProps {\n children: ReactNode;\n className?: string;\n variant?: \"default\" | \"dark\" | \"gradient\" | \"card\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nexport const Section = ({ \n children, \n className, \n variant = \"default\",\n size = \"lg\" \n}: SectionProps) => {\n const paddingClasses = {\n sm: \"py-12\",\n md: \"py-16\", \n lg: \"py-24\",\n xl: \"py-32\"\n };\n\n const variantClasses = {\n default: \"bg-background\",\n dark: \"bg-card relative\",\n gradient: \"gradient-hero relative overflow-hidden\",\n card: \"gradient-card relative\"\n };\n\n return (\n <section className={cn('section-padding', variantClasses[variant], className)}>\n <div className=\"w-full px-4 sm:px-6 lg:px-8\">\n {children}\n </div>\n </section>\n );\n};\n\ninterface SectionHeaderProps {\n title: string;\n subtitle?: string;\n className?: string;\n}\n\nexport const SectionHeader = ({ title, subtitle, className }: SectionHeaderProps) => (\n <div className={cn(\"text-center mb-16 animate-fade-in\", className)}>\n <h2 className=\"text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-6\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-xl text-muted-foreground max-w-3xl mx-auto\">\n {subtitle}\n </p>\n )}\n </div>\n); ","/**\n * Enhanced Image Loader Hook\n * \n * Hook to check if an image is loaded successfully with callback support\n */\n\n'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface ImageLoaderState {\n isLoading: boolean;\n isLoaded: boolean;\n hasError: boolean;\n}\n\nexport interface ImageLoaderCallbacks {\n onLoadStart?: () => void;\n onLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n onError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n}\n\nexport const useImageLoader = (\n src?: string, \n callbacks?: ImageLoaderCallbacks\n): ImageLoaderState => {\n const [state, setState] = useState<ImageLoaderState>({\n isLoading: false,\n isLoaded: false,\n hasError: false,\n });\n\n const handleLoad = useCallback((event: Event) => {\n setState({\n isLoading: false,\n isLoaded: true,\n hasError: false,\n });\n \n // Call user callback if provided\n if (callbacks?.onLoad) {\n callbacks.onLoad(event as unknown as React.SyntheticEvent<HTMLImageElement>);\n }\n }, [callbacks?.onLoad]);\n\n const handleError = useCallback((event: Event) => {\n setState({\n isLoading: false,\n isLoaded: false,\n hasError: true,\n });\n \n // Call user callback if provided\n if (callbacks?.onError) {\n callbacks.onError(event as unknown as React.SyntheticEvent<HTMLImageElement>);\n }\n }, [callbacks?.onError]);\n\n useEffect(() => {\n if (!src) {\n setState({\n isLoading: false,\n isLoaded: false,\n hasError: true,\n });\n return;\n }\n\n setState({\n isLoading: true,\n isLoaded: false,\n hasError: false,\n });\n\n // Call load start callback\n if (callbacks?.onLoadStart) {\n callbacks.onLoadStart();\n }\n\n const img = new Image();\n \n img.addEventListener('load', handleLoad);\n img.addEventListener('error', handleError);\n \n img.src = src;\n\n // Cleanup function\n return () => {\n img.removeEventListener('load', handleLoad);\n img.removeEventListener('error', handleError);\n };\n }, [src, handleLoad, handleError, callbacks?.onLoadStart]);\n\n return state;\n};\n","/**\n * Enhanced Image with Fallback Component\n * \n * Advanced image component with loading states, error handling, and customizable fallbacks\n */\n\nimport { Car, ImageIcon, MapPin, Package, User } from 'lucide-react';\nimport React, { forwardRef } from 'react';\n\nimport { useImageLoader } from '../hooks/useImageLoader';\nimport { cn } from '../lib/utils';\n\nexport interface ImageWithFallbackProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'onLoad' | 'onError'> {\n src?: string;\n alt?: string;\n className?: string;\n \n // Fallback options\n fallbackIcon?: 'car' | 'image' | 'user' | 'package' | 'location';\n fallbackContent?: React.ReactNode;\n showLoadingState?: boolean;\n \n // Loading placeholder\n placeholder?: string;\n blurDataURL?: string;\n \n // Callbacks\n onLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n onError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n onLoadStart?: () => void;\n \n // Performance\n priority?: boolean;\n unoptimized?: boolean;\n}\n\nexport const ImageWithFallback = forwardRef<HTMLImageElement, ImageWithFallbackProps>(({\n src,\n alt = '',\n className,\n \n // Fallback options\n fallbackIcon = 'sparkles',\n fallbackContent,\n showLoadingState = true,\n \n // Loading placeholder\n placeholder,\n blurDataURL,\n \n // Callbacks\n onLoad,\n onError,\n onLoadStart,\n \n // Performance\n priority = false,\n unoptimized = false,\n \n // Standard img attributes\n width,\n height,\n sizes,\n loading = priority ? 'eager' : 'lazy',\n decoding = 'async',\n ...imgProps\n}, ref) => {\n const { isLoading, isLoaded, hasError } = useImageLoader(src, {\n onLoadStart,\n onLoad,\n onError,\n });\n\n // Get fallback icon\n const getFallbackIcon = () => {\n switch (fallbackIcon) {\n case 'car': return Car;\n case 'user': return User;\n case 'package': return Package;\n case 'location': return MapPin;\n case 'image':\n default: return ImageIcon;\n }\n };\n\n const FallbackIcon = getFallbackIcon();\n\n // Custom fallback content\n if (hasError || !src) {\n if (fallbackContent) {\n return (\n <div className={cn('flex items-center justify-center', className)}>\n {fallbackContent}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center bg-muted/30 text-muted-foreground/50',\n 'transition-colors duration-200',\n className\n )}\n >\n <FallbackIcon className=\"h-8 w-8\" />\n </div>\n );\n }\n\n // Loading state\n if (isLoading && showLoadingState) {\n return (\n <div className={cn('relative overflow-hidden', className)}>\n {/* Blur placeholder if available */}\n {(placeholder || blurDataURL) && (\n <img\n src={placeholder || blurDataURL}\n alt=\"\"\n className=\"absolute inset-0 w-full h-full object-cover blur-sm scale-110\"\n aria-hidden=\"true\"\n />\n )}\n \n {/* Loading overlay */}\n <div className={cn(\n 'absolute inset-0 flex items-center justify-center',\n 'bg-muted/20 text-muted-foreground/30 animate-pulse',\n 'backdrop-blur-sm'\n )}>\n <FallbackIcon className=\"h-6 w-6\" />\n </div>\n </div>\n );\n }\n\n // Successfully loaded image\n if (isLoaded) {\n return (\n <img\n ref={ref}\n src={src}\n alt={alt}\n width={width}\n height={height}\n sizes={sizes}\n loading={loading}\n decoding={decoding}\n className={cn('object-cover transition-opacity duration-300', className)}\n onLoad={onLoad}\n onError={onError}\n {...imgProps}\n />\n );\n }\n\n // Initial render fallback\n return (\n <div\n className={cn(\n 'flex items-center justify-center bg-muted/20 text-muted-foreground/30',\n 'transition-colors duration-200',\n className\n )}\n >\n <FallbackIcon className=\"h-6 w-6\" />\n </div>\n );\n});\n\nImageWithFallback.displayName = 'ImageWithFallback';\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport { DotFilledIcon } from '@radix-ui/react-icons';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '../lib/utils';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item> & { key?: React.Key }\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <DotFilledIcon className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from '@radix-ui/react-icons';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../lib/utils';\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-200 max-h-[--radix-select-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & { key?: React.Key }\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { Cross2Icon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n style={{ backgroundColor: 'rgb(0 0 0 / 0.8)', ...style }}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-200 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","\"use client\"\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport * as React from 'react';\n\nimport { DialogProps} from '@radix-ui/react-dialog';\nimport { MagnifyingGlassIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\nimport { Dialog, DialogContent } from './dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, style, ...props }, ref) => {\n const listRef = React.useRef<HTMLDivElement>(null)\n\n React.useImperativeHandle(ref, () => listRef.current as HTMLDivElement)\n\n React.useEffect(() => {\n if (listRef.current) {\n listRef.current.style.cssText += 'max-height: 300px !important; overflow-y: auto !important; overflow-x: hidden !important;'\n }\n }, [])\n\n return (\n <CommandPrimitive.List\n ref={listRef as any}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n style={{\n maxHeight: '300px',\n overflowY: 'auto',\n overflowX: 'hidden',\n ...style\n }}\n {...props}\n />\n )\n})\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '../lib/utils';\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-200 w-72 rounded-sm border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-sm outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport {\n Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList\n} from './command';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\nexport interface ComboboxOption {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport interface ComboboxProps {\n options: ComboboxOption[]\n value?: string\n onValueChange?: (value: string) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyText?: string\n className?: string\n disabled?: boolean\n renderOption?: (option: ComboboxOption) => React.ReactNode\n renderValue?: (option: ComboboxOption | undefined) => React.ReactNode\n}\n\nexport function Combobox({\n options,\n value,\n onValueChange,\n placeholder = \"Select option...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n renderOption,\n renderValue,\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false)\n const [search, setSearch] = React.useState(\"\")\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (scrollRef.current && open) {\n // Force scrollable styles with !important\n const el = scrollRef.current\n el.style.cssText = `\n max-height: 300px !important;\n overflow-y: scroll !important;\n overflow-x: hidden !important;\n -webkit-overflow-scrolling: touch !important;\n overscroll-behavior: contain !important;\n `\n }\n }, [open])\n\n const selectedOption = React.useMemo(\n () => options.find((option) => option.value === value),\n [options, value]\n )\n\n const filteredOptions = React.useMemo(() => {\n if (!search) return options\n const searchLower = search.toLowerCase()\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(searchLower) ||\n option.value.toLowerCase().includes(searchLower) ||\n option.description?.toLowerCase().includes(searchLower)\n )\n }, [options, search])\n\n return (\n <Popover\n open={open}\n onOpenChange={(isOpen) => {\n setOpen(isOpen)\n if (!isOpen) {\n setSearch(\"\")\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n \"w-full justify-between\",\n !value && \"text-muted-foreground\",\n className\n )}\n disabled={disabled}\n >\n {renderValue && selectedOption\n ? renderValue(selectedOption)\n : selectedOption\n ? selectedOption.label\n : placeholder}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\" align=\"start\">\n <Command shouldFilter={false} className=\"flex flex-col\">\n <CommandInput\n placeholder={searchPlaceholder}\n className=\"shrink-0\"\n value={search}\n onValueChange={setSearch}\n />\n <div\n ref={scrollRef}\n tabIndex={-1}\n className=\"overflow-y-scroll overflow-x-hidden\"\n style={{\n maxHeight: '300px',\n minHeight: '100px',\n }}\n onWheel={(e) => {\n e.stopPropagation()\n }}\n >\n <CommandList className=\"!max-h-none !overflow-visible\" style={{ pointerEvents: 'auto' }}>\n {filteredOptions.length === 0 ? (\n <CommandEmpty>{emptyText}</CommandEmpty>\n ) : (\n <CommandGroup className=\"!overflow-visible\" style={{ pointerEvents: 'auto' }}>\n {filteredOptions.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n if (!option.disabled) {\n onValueChange?.(currentValue === value ? \"\" : currentValue)\n setOpen(false)\n }\n }}\n disabled={option.disabled}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {renderOption ? (\n renderOption(option)\n ) : (\n <div className=\"flex flex-col flex-1 min-w-0\">\n <span className=\"truncate\">{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground truncate\">\n {option.description}\n </span>\n )}\n </div>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n </CommandList>\n </div>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Badge } from './badge';\nimport { Button } from './button';\nimport {\n Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList\n} from './command';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\nexport interface MultiSelectOption {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport interface MultiSelectProps {\n options: MultiSelectOption[]\n value?: string[]\n onChange?: (value: string[]) => void\n placeholder?: string\n searchPlaceholder?: string\n emptyText?: string\n className?: string\n disabled?: boolean\n maxDisplay?: number\n}\n\nexport function MultiSelect({\n options,\n value = [],\n onChange,\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n className,\n disabled = false,\n maxDisplay = 3,\n}: MultiSelectProps) {\n const [open, setOpen] = React.useState(false)\n const [search, setSearch] = React.useState(\"\")\n const scrollRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (scrollRef.current && open) {\n const el = scrollRef.current\n el.style.cssText = `\n max-height: 300px !important;\n overflow-y: scroll !important;\n overflow-x: hidden !important;\n -webkit-overflow-scrolling: touch !important;\n overscroll-behavior: contain !important;\n `\n }\n }, [open])\n\n const selectedOptions = React.useMemo(\n () => options.filter((option) => value.includes(option.value)),\n [options, value]\n )\n\n const filteredOptions = React.useMemo(() => {\n if (!search) return options\n const searchLower = search.toLowerCase()\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(searchLower) ||\n option.value.toLowerCase().includes(searchLower) ||\n option.description?.toLowerCase().includes(searchLower)\n )\n }, [options, search])\n\n const handleSelect = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue]\n onChange?.(newValue)\n }\n\n const handleRemove = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation()\n onChange?.(value.filter((v) => v !== optionValue))\n }\n\n const displayValue = React.useMemo(() => {\n if (selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>\n }\n\n const displayed = selectedOptions.slice(0, maxDisplay)\n const remaining = selectedOptions.length - maxDisplay\n\n return (\n <div className=\"flex flex-wrap gap-1\">\n {displayed.map((option) => (\n <Badge\n key={option.value}\n variant=\"secondary\"\n className=\"mr-1 text-xs\"\n >\n {option.label}\n <button\n className=\"ml-1 rounded-full hover:bg-muted-foreground/20\"\n onClick={(e) => handleRemove(option.value, e)}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{remaining} more\n </Badge>\n )}\n </div>\n )\n }, [selectedOptions, maxDisplay, placeholder, disabled])\n\n return (\n <Popover\n open={open}\n onOpenChange={(isOpen) => {\n setOpen(isOpen)\n if (!isOpen) {\n setSearch(\"\")\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n \"w-full justify-between min-h-10 h-auto py-2\",\n className\n )}\n disabled={disabled}\n >\n <div className=\"flex-1 text-left overflow-hidden\">\n {displayValue}\n </div>\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[var(--radix-popover-trigger-width)] p-0\" align=\"start\">\n <Command shouldFilter={false} className=\"flex flex-col\">\n <CommandInput\n placeholder={searchPlaceholder}\n className=\"shrink-0\"\n value={search}\n onValueChange={setSearch}\n />\n <div\n ref={scrollRef}\n tabIndex={-1}\n className=\"overflow-y-scroll overflow-x-hidden\"\n style={{\n maxHeight: '300px',\n minHeight: '100px',\n }}\n onWheel={(e) => {\n e.stopPropagation()\n }}\n >\n <CommandList className=\"!max-h-none !overflow-visible\" style={{ pointerEvents: 'auto' }}>\n {filteredOptions.length === 0 ? (\n <CommandEmpty>{emptyText}</CommandEmpty>\n ) : (\n <CommandGroup className=\"!overflow-visible\" style={{ pointerEvents: 'auto' }}>\n {filteredOptions.map((option) => {\n const isSelected = value.includes(option.value)\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => {\n if (!option.disabled) {\n handleSelect(option.value)\n }\n }}\n disabled={option.disabled}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n <div className=\"flex flex-col flex-1 min-w-0\">\n <span className=\"truncate\">{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground truncate\">\n {option.description}\n </span>\n )}\n </div>\n </CommandItem>\n )\n })}\n </CommandGroup>\n )}\n </CommandList>\n </div>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '../lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","/**\n * OG Image URL Generation Utilities\n *\n * Client-side utilities for generating OG image URLs.\n */\n\n/** Default OG Image API base URL */\nconst DEFAULT_OG_IMAGE_BASE_URL = 'https://djangocfg.com/api/og';\n\n/**\n * Encode string to base64 with Unicode support\n * Works in both browser and Node.js environments\n */\nfunction encodeBase64(str: string): string {\n // Node.js environment\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str, 'utf-8').toString('base64');\n }\n // Browser environment - handle Unicode via UTF-8 encoding\n const utf8Bytes = new TextEncoder().encode(str);\n const binaryString = Array.from(utf8Bytes, byte => String.fromCharCode(byte)).join('');\n return btoa(binaryString);\n}\n\n/**\n * OG Image URL parameters\n */\nexport interface OgImageUrlParams {\n /** Page title */\n title: string;\n /** Page description (optional) */\n description?: string;\n /** Site name (optional) */\n siteName?: string;\n /** Logo URL (optional) */\n logo?: string;\n /** Background type: 'gradient' or 'solid' */\n backgroundType?: 'gradient' | 'solid';\n /** Gradient start color (hex) */\n gradientStart?: string;\n /** Gradient end color (hex) */\n gradientEnd?: string;\n /** Background color (for solid type) */\n backgroundColor?: string;\n /** Title font size (px) */\n titleSize?: number;\n /** Title font weight */\n titleWeight?: number;\n /** Title text color */\n titleColor?: string;\n /** Description font size (px) */\n descriptionSize?: number;\n /** Description text color */\n descriptionColor?: string;\n /** Site name font size (px) */\n siteNameSize?: number;\n /** Site name text color */\n siteNameColor?: string;\n /** Padding (px) */\n padding?: number;\n /** Logo size (px) */\n logoSize?: number;\n /** Show logo flag */\n showLogo?: boolean;\n /** Show site name flag */\n showSiteName?: boolean;\n /** Additional custom parameters */\n [key: string]: string | number | boolean | undefined;\n}\n\n/**\n * Options for generating OG image URL\n */\nexport interface GenerateOgImageUrlOptions {\n /**\n * Base URL of the OG image API route\n * @default 'https://djangocfg.com/api/og'\n */\n baseUrl?: string;\n /**\n * If true, encode params as base64 for safer URLs\n * @default true\n */\n useBase64?: boolean;\n}\n\n/**\n * Generate OG image URL with query parameters or base64 encoding\n *\n * @example\n * ```typescript\n * // Using default baseUrl (https://djangocfg.com/api/og)\n * const url = generateOgImageUrl({ title: 'My Page Title' });\n *\n * // With custom baseUrl\n * const url = generateOgImageUrl({ title: 'My Page' }, { baseUrl: '/api/og' });\n * ```\n */\nexport function generateOgImageUrl(\n params: OgImageUrlParams,\n options: GenerateOgImageUrlOptions = {}\n): string {\n const { baseUrl = DEFAULT_OG_IMAGE_BASE_URL, useBase64 = true } = options;\n\n if (useBase64) {\n const cleanParams: Record<string, string | number | boolean> = {};\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n cleanParams[key] = value;\n }\n });\n\n const jsonString = JSON.stringify(cleanParams);\n const base64Data = encodeBase64(jsonString);\n return `${baseUrl}/${base64Data}`;\n } else {\n const searchParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null && value !== '') {\n searchParams.append(key, String(value));\n }\n });\n const query = searchParams.toString();\n return query ? `${baseUrl}?${query}` : baseUrl;\n }\n}\n\n/**\n * Get absolute OG image URL from relative path\n */\nexport function getAbsoluteOgImageUrl(relativePath: string, siteUrl: string): string {\n // If path is already an absolute URL, return as-is\n if (relativePath.startsWith('http://') || relativePath.startsWith('https://')) {\n return relativePath;\n }\n const cleanSiteUrl = siteUrl.replace(/\\/$/, '');\n const cleanPath = relativePath.startsWith('/') ? relativePath : `/${relativePath}`;\n return `${cleanSiteUrl}${cleanPath}`;\n}\n\n/**\n * Create OG image URL builder with preset configuration\n */\nexport function createOgImageUrlBuilder(\n defaults: Partial<OgImageUrlParams> = {},\n options: GenerateOgImageUrlOptions = {}\n) {\n return (params: OgImageUrlParams): string => {\n return generateOgImageUrl({ ...defaults, ...params }, options);\n };\n}\n","/**\n * Log Store\n *\n * Zustand store for log accumulation and filtering.\n * Keeps logs in memory for Console panel display.\n */\n\n'use client';\n\nimport { create } from 'zustand';\nimport type { LogStore, LogEntry, LogFilter } from './types';\n\nconst DEFAULT_FILTER: LogFilter = {\n levels: ['debug', 'info', 'warn', 'error', 'success'],\n component: undefined,\n search: undefined,\n since: undefined,\n};\n\nconst MAX_LOGS = 1000;\n\nfunction generateId(): string {\n return `log-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction matchesFilter(entry: LogEntry, filter: LogFilter): boolean {\n // Level filter\n if (!filter.levels.includes(entry.level)) {\n return false;\n }\n\n // Component filter (case-insensitive partial match)\n if (filter.component) {\n const comp = filter.component.toLowerCase();\n if (!entry.component.toLowerCase().includes(comp)) {\n return false;\n }\n }\n\n // Search filter (case-insensitive, searches message and data)\n if (filter.search) {\n const search = filter.search.toLowerCase();\n const inMessage = entry.message.toLowerCase().includes(search);\n const inData = entry.data\n ? JSON.stringify(entry.data).toLowerCase().includes(search)\n : false;\n if (!inMessage && !inData) {\n return false;\n }\n }\n\n // Time filter\n if (filter.since && entry.timestamp < filter.since) {\n return false;\n }\n\n return true;\n}\n\nexport const useLogStore = create<LogStore>((set, get) => ({\n logs: [],\n filter: DEFAULT_FILTER,\n maxLogs: MAX_LOGS,\n\n addLog: (entry) => {\n const newEntry: LogEntry = {\n ...entry,\n id: generateId(),\n timestamp: new Date(),\n };\n\n set((state) => {\n const newLogs = [...state.logs, newEntry];\n // Trim to max size\n if (newLogs.length > state.maxLogs) {\n return { logs: newLogs.slice(-state.maxLogs) };\n }\n return { logs: newLogs };\n });\n },\n\n clearLogs: () => {\n set({ logs: [] });\n },\n\n setFilter: (filter) => {\n set((state) => ({\n filter: { ...state.filter, ...filter },\n }));\n },\n\n resetFilter: () => {\n set({ filter: DEFAULT_FILTER });\n },\n\n getFilteredLogs: () => {\n const { logs, filter } = get();\n return logs.filter((entry) => matchesFilter(entry, filter));\n },\n\n exportLogs: () => {\n const { logs } = get();\n return JSON.stringify(logs, null, 2);\n },\n}));\n\n// Selector hooks for performance\nexport const useFilteredLogs = () => {\n const logs = useLogStore((state) => state.logs);\n const filter = useLogStore((state) => state.filter);\n return logs.filter((entry) => matchesFilter(entry, filter));\n};\n\nexport const useLogCount = () => {\n return useLogStore((state) => state.logs.length);\n};\n\nexport const useErrorCount = () => {\n return useLogStore((state) =>\n state.logs.filter((log) => log.level === 'error').length\n );\n};\n","/**\n * Logger\n *\n * Universal logger with consola + zustand store integration.\n * Logs are accumulated for Console panel display.\n * In production, only logs to store (no console output).\n */\n\n'use client';\n\nimport { consola, type ConsolaInstance } from 'consola';\nimport { useLogStore } from './logStore';\nimport type { Logger, LogLevel, MediaLogger } from './types';\n\n// Check environment\nconst isDev = process.env.NODE_ENV !== 'production';\nconst isBrowser = typeof window !== 'undefined';\n\n// Create base consola instance\nconst baseConsola = consola.create({\n level: isDev ? 4 : 2, // 4 = debug, 2 = warn\n});\n\n/**\n * Extract error details from unknown error type\n */\nfunction extractErrorData(data?: Record<string, unknown>): {\n cleanData: Record<string, unknown> | undefined;\n stack: string | undefined;\n} {\n if (!data) return { cleanData: undefined, stack: undefined };\n\n const cleanData = { ...data };\n let stack: string | undefined;\n\n // Extract stack from error object\n if (data.error instanceof Error) {\n stack = data.error.stack;\n cleanData.error = {\n name: data.error.name,\n message: data.error.message,\n };\n } else if (typeof data.error === 'object' && data.error !== null) {\n const errObj = data.error as Record<string, unknown>;\n if (typeof errObj.stack === 'string') {\n stack = errObj.stack;\n }\n if (typeof errObj.message === 'string') {\n cleanData.error = errObj.message;\n }\n }\n\n return { cleanData, stack };\n}\n\n/**\n * Format buffer ranges for logging\n */\nfunction formatBufferRanges(buffered: TimeRanges, duration: number): string {\n if (buffered.length === 0) return 'empty';\n\n const ranges: string[] = [];\n for (let i = 0; i < buffered.length; i++) {\n const start = buffered.start(i);\n const end = buffered.end(i);\n const percent = ((end - start) / duration * 100).toFixed(1);\n ranges.push(`${start.toFixed(1)}-${end.toFixed(1)}s (${percent}%)`);\n }\n return ranges.join(', ');\n}\n\n/**\n * Create a logger for a specific component/module\n */\nexport function createLogger(component: string): Logger {\n const consolaTagged = baseConsola.withTag(component);\n\n const log = (level: LogLevel, message: string, data?: Record<string, unknown>) => {\n const { cleanData, stack } = extractErrorData(data);\n\n // Add to store (for Console panel)\n if (isBrowser) {\n useLogStore.getState().addLog({\n level,\n component,\n message,\n data: cleanData,\n stack,\n });\n }\n\n // Log to console via consola (in dev mode)\n if (isDev) {\n const consolaMethod = level === 'success' ? 'success' : level;\n if (cleanData) {\n consolaTagged[consolaMethod](message, cleanData);\n } else {\n consolaTagged[consolaMethod](message);\n }\n }\n };\n\n return {\n debug: (message, data) => log('debug', message, data),\n info: (message, data) => log('info', message, data),\n warn: (message, data) => log('warn', message, data),\n error: (message, data) => log('error', message, data),\n success: (message, data) => log('success', message, data),\n };\n}\n\n/**\n * Create a media-specific logger with helper methods\n * for AudioPlayer, VideoPlayer, ImageViewer\n */\nexport function createMediaLogger(component: string): MediaLogger {\n const baseLogger = createLogger(component);\n\n return {\n ...baseLogger,\n\n load: (src: string, type?: string) => {\n const typeStr = type ? ` (${type})` : '';\n baseLogger.info(`LOAD: ${src}${typeStr}`);\n },\n\n state: (state: string, details?: Record<string, unknown>) => {\n baseLogger.debug(`STATE: ${state}`, details);\n },\n\n seek: (from: number, to: number, duration: number) => {\n baseLogger.debug(`SEEK: ${from.toFixed(2)}s -> ${to.toFixed(2)}s`, {\n from,\n to,\n duration,\n progress: `${((to / duration) * 100).toFixed(1)}%`,\n });\n },\n\n buffer: (buffered: TimeRanges, duration: number) => {\n if (buffered.length > 0) {\n baseLogger.debug(`BUFFER: ${formatBufferRanges(buffered, duration)}`);\n }\n },\n\n event: (name: string, data?: unknown) => {\n if (data !== undefined) {\n baseLogger.debug(`EVENT: ${name}`, { data });\n } else {\n baseLogger.debug(`EVENT: ${name}`);\n }\n },\n };\n}\n\n/**\n * Global logger for non-component code\n */\nexport const logger = createLogger('App');\n\n/**\n * Quick access for one-off logs\n */\nexport const log = {\n debug: (component: string, message: string, data?: Record<string, unknown>) =>\n createLogger(component).debug(message, data),\n info: (component: string, message: string, data?: Record<string, unknown>) =>\n createLogger(component).info(message, data),\n warn: (component: string, message: string, data?: Record<string, unknown>) =>\n createLogger(component).warn(message, data),\n error: (component: string, message: string, data?: Record<string, unknown>) =>\n createLogger(component).error(message, data),\n success: (component: string, message: string, data?: Record<string, unknown>) =>\n createLogger(component).success(message, data),\n};\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, ChevronsUpDown, X, XCircle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Badge } from '../badge';\nimport { Button } from '../button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from '../command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { Separator } from '../separator';\nimport { cn } from '../../lib';\n\n// ==================== TYPES ====================\n\nexport interface MultiSelectProOption {\n label: string\n value: string\n description?: string // Optional subtitle/description text shown below label\n icon?: React.ComponentType<{ className?: string }>\n disabled?: boolean\n style?: {\n badgeColor?: string\n iconColor?: string\n gradient?: string\n }\n}\n\nexport interface MultiSelectProGroup {\n heading: string\n options: MultiSelectProOption[]\n}\n\nexport interface AnimationConfig {\n badgeAnimation?: \"bounce\" | \"pulse\" | \"wiggle\" | \"fade\" | \"slide\" | \"none\"\n popoverAnimation?: \"scale\" | \"slide\" | \"fade\" | \"flip\" | \"none\"\n optionHoverAnimation?: \"highlight\" | \"scale\" | \"glow\" | \"none\"\n duration?: number\n delay?: number\n}\n\nexport interface ResponsiveConfig {\n mobile?: { maxDisplay?: number; compact?: boolean }\n tablet?: { maxDisplay?: number; compact?: boolean }\n desktop?: { maxDisplay?: number; compact?: boolean }\n}\n\nexport interface MultiSelectProRef {\n reset: () => void\n getSelectedValues: () => string[]\n setSelectedValues: (values: string[]) => void\n clear: () => void\n focus: () => void\n}\n\n// ==================== VARIANTS ====================\n\nconst multiSelectVariants = cva(\n \"w-full justify-between min-h-10 h-auto py-2\",\n {\n variants: {\n variant: {\n default: \"border-input bg-background hover:bg-accent/50\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n inverted: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst badgeAnimations = {\n bounce: \"animate-bounce\",\n pulse: \"animate-pulse\",\n wiggle: \"animate-wiggle\",\n fade: \"animate-fadeIn\",\n slide: \"animate-slideIn\",\n none: \"\",\n}\n\nconst popoverAnimations = {\n scale: \"data-[state=open]:animate-scaleIn data-[state=closed]:animate-scaleOut\",\n slide: \"data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp\",\n fade: \"data-[state=open]:animate-fadeIn data-[state=closed]:animate-fadeOut\",\n flip: \"data-[state=open]:animate-flipIn data-[state=closed]:animate-flipOut\",\n none: \"\",\n}\n\n// ==================== PROPS ====================\n\nexport interface MultiSelectProProps extends VariantProps<typeof multiSelectVariants> {\n options: MultiSelectProOption[] | MultiSelectProGroup[]\n onValueChange?: (value: string[]) => void\n defaultValue?: string[]\n placeholder?: string\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"inverted\"\n animation?: number\n animationConfig?: AnimationConfig\n maxCount?: number\n modalPopover?: boolean\n asChild?: boolean\n className?: string\n hideSelectAll?: boolean\n searchable?: boolean\n emptyIndicator?: React.ReactNode\n autoSize?: boolean\n singleLine?: boolean\n popoverClassName?: string\n disabled?: boolean\n responsive?: boolean | ResponsiveConfig\n minWidth?: string\n maxWidth?: string\n deduplicateOptions?: boolean\n resetOnDefaultValueChange?: boolean\n closeOnSelect?: boolean\n}\n\n// ==================== HELPERS ====================\n\nfunction isGroupedOptions(options: MultiSelectProOption[] | MultiSelectProGroup[]): options is MultiSelectProGroup[] {\n return options.length > 0 && 'heading' in options[0]\n}\n\nfunction flattenOptions(options: MultiSelectProOption[] | MultiSelectProGroup[]): MultiSelectProOption[] {\n if (isGroupedOptions(options)) {\n return options.flatMap((group) => group.options)\n }\n return options\n}\n\nfunction deduplicateOptions(options: MultiSelectProOption[]): MultiSelectProOption[] {\n const seen = new Set<string>()\n return options.filter((option) => {\n if (seen.has(option.value)) {\n return false\n }\n seen.add(option.value)\n return true\n })\n}\n\n// ==================== COMPONENT ====================\n\nexport const MultiSelectPro = React.forwardRef<MultiSelectProRef, MultiSelectProProps>(\n (\n {\n options,\n onValueChange,\n defaultValue = [],\n placeholder = \"Select options\",\n variant = \"default\",\n animation = 0,\n animationConfig,\n maxCount = 3,\n modalPopover = false,\n className,\n hideSelectAll = false,\n searchable = true,\n emptyIndicator,\n autoSize = false,\n singleLine = false,\n popoverClassName,\n disabled = false,\n responsive = false,\n minWidth,\n maxWidth,\n deduplicateOptions: shouldDeduplicate = false,\n resetOnDefaultValueChange = true,\n closeOnSelect = false,\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n const [selectedValues, setSelectedValues] = React.useState<string[]>(defaultValue)\n const [search, setSearch] = React.useState(\"\")\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const [announcements, setAnnouncements] = React.useState<string>(\"\")\n // Cache selected options to persist them when they disappear from current options\n const [selectedOptionsCache, setSelectedOptionsCache] = React.useState<Map<string, MultiSelectProOption>>(new Map())\n\n // Process options\n const flatOptions = React.useMemo(() => {\n const flat = flattenOptions(options)\n return shouldDeduplicate ? deduplicateOptions(flat) : flat\n }, [options, shouldDeduplicate])\n\n // Update cache whenever new options appear\n React.useEffect(() => {\n setSelectedOptionsCache(prev => {\n const updated = new Map(prev)\n flatOptions.forEach(option => {\n if (selectedValues.includes(option.value)) {\n updated.set(option.value, option)\n }\n })\n return updated\n })\n }, [flatOptions, selectedValues])\n\n // Responsive configuration\n const responsiveConfig = React.useMemo((): ResponsiveConfig => {\n if (typeof responsive === 'boolean') {\n return responsive\n ? {\n mobile: { maxDisplay: 2, compact: true },\n tablet: { maxDisplay: 4, compact: false },\n desktop: { maxDisplay: 6, compact: false },\n }\n : {}\n }\n return responsive || {}\n }, [responsive])\n\n // Animation configuration\n const animConfig = React.useMemo(\n (): AnimationConfig => ({\n badgeAnimation: animationConfig?.badgeAnimation || (animation > 0 ? \"bounce\" : \"none\"),\n popoverAnimation: animationConfig?.popoverAnimation || \"scale\",\n optionHoverAnimation: animationConfig?.optionHoverAnimation || \"highlight\",\n duration: animationConfig?.duration || animation || 0.3,\n delay: animationConfig?.delay || 0,\n }),\n [animation, animationConfig]\n )\n\n // Reset on defaultValue change\n React.useEffect(() => {\n if (resetOnDefaultValueChange) {\n setSelectedValues(defaultValue)\n }\n }, [defaultValue, resetOnDefaultValueChange])\n\n // Announce changes for screen readers\n const announce = React.useCallback((message: string) => {\n setAnnouncements(message)\n setTimeout(() => setAnnouncements(\"\"), 1000)\n }, [])\n\n // Toggle selection\n const toggleOption = React.useCallback(\n (value: string) => {\n const isRemoving = selectedValues.includes(value)\n const newValues = isRemoving\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value]\n\n setSelectedValues(newValues)\n onValueChange?.(newValues)\n\n const option = flatOptions.find((o) => o.value === value)\n if (option) {\n // Add to cache when selecting\n if (!isRemoving) {\n setSelectedOptionsCache(prev => new Map(prev).set(value, option))\n }\n\n announce(\n isRemoving\n ? `Removed ${option.label}`\n : `Added ${option.label}`\n )\n }\n\n if (closeOnSelect) {\n setOpen(false)\n }\n },\n [selectedValues, onValueChange, flatOptions, announce, closeOnSelect]\n )\n\n // Select all\n const handleSelectAll = React.useCallback(() => {\n const allValues = flatOptions.filter((o) => !o.disabled).map((o) => o.value)\n setSelectedValues(allValues)\n onValueChange?.(allValues)\n\n // Cache all selected options\n setSelectedOptionsCache(prev => {\n const updated = new Map(prev)\n flatOptions.forEach(option => {\n if (!option.disabled) {\n updated.set(option.value, option)\n }\n })\n return updated\n })\n\n announce(`Selected all ${allValues.length} options`)\n }, [flatOptions, onValueChange, announce])\n\n // Clear all\n const handleClearAll = React.useCallback(() => {\n setSelectedValues([])\n onValueChange?.([])\n announce(\"Cleared all selections\")\n }, [onValueChange, announce])\n\n // Imperative methods\n React.useImperativeHandle(ref, () => ({\n reset: () => {\n setSelectedValues(defaultValue)\n announce(\"Reset to default values\")\n },\n getSelectedValues: () => selectedValues,\n setSelectedValues: (values: string[]) => {\n setSelectedValues(values)\n onValueChange?.(values)\n },\n clear: handleClearAll,\n focus: () => buttonRef.current?.focus(),\n }))\n\n // Filter options\n const filteredOptions = React.useMemo(() => {\n if (!search) return options\n const searchLower = search.toLowerCase()\n\n if (isGroupedOptions(options)) {\n return options\n .map((group) => ({\n ...group,\n options: group.options.filter(\n (option) =>\n option.label.toLowerCase().includes(searchLower) ||\n option.value.toLowerCase().includes(searchLower)\n ),\n }))\n .filter((group) => group.options.length > 0)\n }\n\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(searchLower) ||\n option.value.toLowerCase().includes(searchLower)\n )\n }, [options, search])\n\n // Selected options for display - use cache as fallback\n const selectedOptions = React.useMemo(\n () => selectedValues.map(value => {\n // First try to find in current options\n const option = flatOptions.find(o => o.value === value)\n // If not found, fallback to cache\n return option || selectedOptionsCache.get(value)\n }).filter((option): option is MultiSelectProOption => option !== undefined),\n [flatOptions, selectedValues, selectedOptionsCache]\n )\n\n // Render badge with custom styles\n const renderBadge = (option: MultiSelectProOption, index: number) => {\n const { style, icon: Icon } = option\n const badgeStyle: React.CSSProperties = {}\n\n if (style?.gradient) {\n badgeStyle.background = style.gradient\n badgeStyle.color = style.iconColor || \"white\"\n } else if (style?.badgeColor) {\n badgeStyle.backgroundColor = style.badgeColor\n badgeStyle.color = style.iconColor || \"white\"\n }\n\n const animationClass = animConfig.badgeAnimation\n ? badgeAnimations[animConfig.badgeAnimation]\n : \"\"\n\n return (\n <Badge\n key={option.value}\n variant={variant === \"default\" ? \"secondary\" : \"outline\"}\n className={cn(\n \"mr-1 mb-1 text-xs gap-1 flex items-center\",\n animationClass\n )}\n style={{\n ...badgeStyle,\n animationDelay: `${(animConfig.delay || 0) * index}s`,\n animationDuration: `${animConfig.duration}s`,\n }}\n >\n {Icon && <Icon className=\"h-3 w-3\" />}\n <span>{option.label}</span>\n {!disabled && (\n <button\n className=\"ml-1 rounded-full hover:bg-muted-foreground/20 focus:outline-none focus:ring-2 focus:ring-ring\"\n onClick={(e) => {\n e.stopPropagation()\n toggleOption(option.value)\n }}\n aria-label={`Remove ${option.label}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n )\n }\n\n // Display value\n const displayValue = React.useMemo(() => {\n if (selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>\n }\n\n const displayed = selectedOptions.slice(0, maxCount)\n const remaining = selectedOptions.length - maxCount\n\n return (\n <div className={cn(\"flex gap-1\", singleLine ? \"flex-nowrap overflow-x-auto\" : \"flex-wrap\")}>\n {displayed.map((option, index) => renderBadge(option, index))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{remaining} more\n </Badge>\n )}\n </div>\n )\n }, [selectedOptions, maxCount, placeholder, singleLine, variant, disabled, animConfig])\n\n // Render options\n const renderOptions = () => {\n if (isGroupedOptions(filteredOptions)) {\n return filteredOptions.map((group, groupIndex) => (\n <React.Fragment key={group.heading}>\n {groupIndex > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading}>\n {group.options.map((option) => {\n const isSelected = selectedValues.includes(option.value)\n const Icon = option.icon\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => !option.disabled && toggleOption(option.value)}\n disabled={option.disabled}\n className={cn(\n \"cursor-pointer\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n <span>{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n )}\n </div>\n </CommandItem>\n )\n })}\n </CommandGroup>\n </React.Fragment>\n ))\n }\n\n return (\n <CommandGroup>\n {(filteredOptions as MultiSelectProOption[]).map((option) => {\n const isSelected = selectedValues.includes(option.value)\n const Icon = option.icon\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => !option.disabled && toggleOption(option.value)}\n disabled={option.disabled}\n className={cn(\n \"cursor-pointer\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n <span>{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n )}\n </div>\n </CommandItem>\n )\n })}\n </CommandGroup>\n )\n }\n\n const containerStyle: React.CSSProperties = {}\n if (minWidth) containerStyle.minWidth = minWidth\n if (maxWidth) containerStyle.maxWidth = maxWidth\n\n return (\n <div style={containerStyle} className=\"relative\">\n {/* ARIA Live Region for announcements */}\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {announcements}\n </div>\n\n <Popover\n open={open}\n onOpenChange={(isOpen) => {\n if (!disabled) {\n setOpen(isOpen)\n if (isOpen) {\n announce(`Dropdown opened. ${flatOptions.length} options available`)\n } else {\n setSearch(\"\")\n announce(\"Dropdown closed\")\n }\n }\n }}\n modal={modalPopover}\n >\n <PopoverTrigger asChild>\n <Button\n ref={buttonRef}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={placeholder}\n className={cn(multiSelectVariants({ variant }), className)}\n disabled={disabled}\n >\n <div className={cn(\"flex-1 text-left\", autoSize ? \"\" : \"overflow-hidden\")}>\n {displayValue}\n </div>\n <div className=\"flex items-center gap-1 ml-2\">\n {selectedValues.length > 0 && !disabled && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n handleClearAll()\n }}\n className=\"rounded-full hover:bg-muted-foreground/20 focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Clear all selections\"\n >\n <XCircle className=\"h-4 w-4 shrink-0 opacity-50\" />\n </button>\n )}\n <ChevronsUpDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"w-[var(--radix-popover-trigger-width)] p-0\",\n animConfig.popoverAnimation ? popoverAnimations[animConfig.popoverAnimation] : \"\",\n popoverClassName\n )}\n align=\"start\"\n style={{\n animationDuration: `${animConfig.duration}s`,\n }}\n >\n <Command shouldFilter={false}>\n {searchable && (\n <CommandInput\n placeholder=\"Search...\"\n value={search}\n onValueChange={setSearch}\n />\n )}\n <CommandList>\n {!hideSelectAll && !isGroupedOptions(options) && (\n <>\n <CommandGroup>\n <CommandItem\n onSelect={handleSelectAll}\n className=\"cursor-pointer justify-center font-medium\"\n >\n Select All\n </CommandItem>\n </CommandGroup>\n <Separator />\n </>\n )}\n\n {filteredOptions.length === 0 ? (\n <CommandEmpty>\n {emptyIndicator || \"No results found.\"}\n </CommandEmpty>\n ) : (\n renderOptions()\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n }\n)\n\nMultiSelectPro.displayName = \"MultiSelectPro\"\n","/**\n * MultiSelectProAsync - Extended MultiSelectPro with async search support\n *\n * Based on MultiSelectPro with added features:\n * - Async search through external API\n * - Debounced search queries\n * - Loading states\n * - Controlled search value from parent\n *\n * All original MultiSelectPro features preserved:\n * - Animations, variants, responsive, groups, etc.\n */\n\n\"use client\"\n\nimport { cva } from 'class-variance-authority';\nimport { Check, ChevronsUpDown, Loader2, X, XCircle } from 'lucide-react';\nimport * as React from 'react';\n\n\nimport { Badge } from '../badge';\nimport { Button } from '../button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from '../command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { Separator } from '../separator';\nimport { cn } from '../../lib';\n\n// ==================== TYPES ====================\n\nexport interface MultiSelectProAsyncOption {\n label: string\n value: string\n description?: string // Optional subtitle/description text shown below label\n icon?: React.ComponentType<{ className?: string }>\n disabled?: boolean\n style?: {\n badgeColor?: string\n iconColor?: string\n gradient?: string\n }\n}\n\nexport interface MultiSelectProAsyncGroup {\n heading: string\n options: MultiSelectProAsyncOption[]\n}\n\nexport interface AnimationConfig {\n badgeAnimation?: \"bounce\" | \"pulse\" | \"wiggle\" | \"fade\" | \"slide\" | \"none\"\n popoverAnimation?: \"scale\" | \"slide\" | \"fade\" | \"flip\" | \"none\"\n optionHoverAnimation?: \"highlight\" | \"scale\" | \"glow\" | \"none\"\n duration?: number\n delay?: number\n}\n\nexport interface MultiSelectProAsyncRef {\n reset: () => void\n getSelectedValues: () => string[]\n setSelectedValues: (values: string[]) => void\n clear: () => void\n focus: () => void\n}\n\nexport interface MultiSelectProAsyncProps {\n // Options from API\n options: MultiSelectProAsyncOption[] | MultiSelectProAsyncGroup[]\n\n // Selection\n onValueChange?: (value: string[]) => void\n defaultValue?: string[]\n\n // Async Search\n searchValue: string\n onSearchChange: (value: string) => void\n isLoading?: boolean\n\n // UI\n placeholder?: string\n searchPlaceholder?: string\n emptyText?: string\n loadingText?: string\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"inverted\"\n animation?: number\n animationConfig?: AnimationConfig\n maxCount?: number\n modalPopover?: boolean\n className?: string\n popoverClassName?: string\n disabled?: boolean\n\n // Behavior\n hideSelectAll?: boolean\n searchable?: boolean\n closeOnSelect?: boolean\n resetOnDefaultValueChange?: boolean\n\n // Advanced\n autoSize?: boolean\n singleLine?: boolean\n minWidth?: string\n maxWidth?: string\n deduplicateOptions?: boolean\n}\n\n// ==================== VARIANTS ====================\n\nconst multiSelectVariants = cva(\n \"w-full justify-between min-h-10 h-auto py-2\",\n {\n variants: {\n variant: {\n default: \"border-input bg-background hover:bg-accent/50\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n inverted: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst badgeAnimations = {\n bounce: \"animate-bounce\",\n pulse: \"animate-pulse\",\n wiggle: \"animate-wiggle\",\n fade: \"animate-fadeIn\",\n slide: \"animate-slideIn\",\n none: \"\",\n}\n\nconst popoverAnimations = {\n scale: \"data-[state=open]:animate-scaleIn data-[state=closed]:animate-scaleOut\",\n slide: \"data-[state=open]:animate-slideDown data-[state=closed]:animate-slideUp\",\n fade: \"data-[state=open]:animate-fadeIn data-[state=closed]:animate-fadeOut\",\n flip: \"data-[state=open]:animate-flipIn data-[state=closed]:animate-flipOut\",\n none: \"\",\n}\n\n// ==================== HELPERS ====================\n\nfunction isGroupedOptions(options: MultiSelectProAsyncOption[] | MultiSelectProAsyncGroup[]): options is MultiSelectProAsyncGroup[] {\n return options.length > 0 && 'heading' in options[0]\n}\n\nfunction flattenOptions(options: MultiSelectProAsyncOption[] | MultiSelectProAsyncGroup[]): MultiSelectProAsyncOption[] {\n if (isGroupedOptions(options)) {\n return options.flatMap((group) => group.options)\n }\n return options\n}\n\nfunction deduplicateOptions(options: MultiSelectProAsyncOption[]): MultiSelectProAsyncOption[] {\n const seen = new Set<string>()\n return options.filter((option) => {\n if (seen.has(option.value)) {\n return false\n }\n seen.add(option.value)\n return true\n })\n}\n\n// ==================== COMPONENT ====================\n\nexport const MultiSelectProAsync = React.forwardRef<MultiSelectProAsyncRef, MultiSelectProAsyncProps>(\n (\n {\n options,\n onValueChange,\n defaultValue = [],\n searchValue,\n onSearchChange,\n isLoading = false,\n placeholder = \"Select options\",\n searchPlaceholder = \"Search...\",\n emptyText = \"No results found.\",\n loadingText = \"Loading...\",\n variant = \"default\",\n animation = 0,\n animationConfig,\n maxCount = 3,\n modalPopover = false,\n className,\n popoverClassName,\n disabled = false,\n hideSelectAll = false,\n searchable = true,\n closeOnSelect = false,\n resetOnDefaultValueChange = true,\n autoSize = false,\n singleLine = false,\n minWidth,\n maxWidth,\n deduplicateOptions: shouldDeduplicate = false,\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n const [selectedValues, setSelectedValues] = React.useState<string[]>(defaultValue)\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const [announcements, setAnnouncements] = React.useState<string>(\"\")\n // Cache selected options to persist them when they disappear from current options\n const [selectedOptionsCache, setSelectedOptionsCache] = React.useState<Map<string, MultiSelectProAsyncOption>>(new Map())\n\n // Process options\n const flatOptions = React.useMemo(() => {\n const flat = flattenOptions(options)\n return shouldDeduplicate ? deduplicateOptions(flat) : flat\n }, [options, shouldDeduplicate])\n\n // Update cache whenever new options appear\n React.useEffect(() => {\n setSelectedOptionsCache(prev => {\n const updated = new Map(prev)\n flatOptions.forEach(option => {\n if (selectedValues.includes(option.value)) {\n updated.set(option.value, option)\n }\n })\n return updated\n })\n }, [flatOptions, selectedValues])\n\n // Animation configuration\n const animConfig = React.useMemo(\n (): AnimationConfig => ({\n badgeAnimation: animationConfig?.badgeAnimation || (animation > 0 ? \"bounce\" : \"none\"),\n popoverAnimation: animationConfig?.popoverAnimation || \"scale\",\n optionHoverAnimation: animationConfig?.optionHoverAnimation || \"highlight\",\n duration: animationConfig?.duration || animation || 0.3,\n delay: animationConfig?.delay || 0,\n }),\n [animation, animationConfig]\n )\n\n // Reset on defaultValue change\n React.useEffect(() => {\n if (resetOnDefaultValueChange) {\n setSelectedValues(defaultValue)\n }\n }, [JSON.stringify(defaultValue), resetOnDefaultValueChange])\n\n // Announce changes for screen readers\n const announce = React.useCallback((message: string) => {\n setAnnouncements(message)\n setTimeout(() => setAnnouncements(\"\"), 1000)\n }, [])\n\n // Toggle selection\n const toggleOption = React.useCallback(\n (value: string) => {\n const isRemoving = selectedValues.includes(value)\n const newValues = isRemoving\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value]\n\n setSelectedValues(newValues)\n onValueChange?.(newValues)\n\n const option = flatOptions.find((o) => o.value === value)\n if (option) {\n // Add to cache when selecting\n if (!isRemoving) {\n setSelectedOptionsCache(prev => new Map(prev).set(value, option))\n }\n\n announce(\n isRemoving\n ? `Removed ${option.label}`\n : `Added ${option.label}`\n )\n }\n\n if (closeOnSelect) {\n setOpen(false)\n }\n },\n [selectedValues, onValueChange, flatOptions, announce, closeOnSelect]\n )\n\n // Select all\n const handleSelectAll = React.useCallback(() => {\n const allValues = flatOptions.filter((o) => !o.disabled).map((o) => o.value)\n setSelectedValues(allValues)\n onValueChange?.(allValues)\n\n // Cache all selected options\n setSelectedOptionsCache(prev => {\n const updated = new Map(prev)\n flatOptions.forEach(option => {\n if (!option.disabled) {\n updated.set(option.value, option)\n }\n })\n return updated\n })\n\n announce(`Selected all ${allValues.length} options`)\n }, [flatOptions, onValueChange, announce])\n\n // Clear all\n const handleClearAll = React.useCallback(() => {\n setSelectedValues([])\n onValueChange?.([])\n announce(\"Cleared all selections\")\n }, [onValueChange, announce])\n\n // Imperative methods\n React.useImperativeHandle(ref, () => ({\n reset: () => {\n setSelectedValues(defaultValue)\n announce(\"Reset to default values\")\n },\n getSelectedValues: () => selectedValues,\n setSelectedValues: (values: string[]) => {\n setSelectedValues(values)\n onValueChange?.(values)\n },\n clear: handleClearAll,\n focus: () => buttonRef.current?.focus(),\n }))\n\n // Selected options for display - use cache as fallback\n const selectedOptions = React.useMemo(\n () => selectedValues.map(value => {\n // First try to find in current options\n const option = flatOptions.find(o => o.value === value)\n // If not found, fallback to cache\n return option || selectedOptionsCache.get(value)\n }).filter((option): option is MultiSelectProAsyncOption => option !== undefined),\n [flatOptions, selectedValues, selectedOptionsCache]\n )\n\n // Render badge with custom styles\n const renderBadge = (option: MultiSelectProAsyncOption, index: number) => {\n const { style, icon: Icon } = option\n const badgeStyle: React.CSSProperties = {}\n\n if (style?.gradient) {\n badgeStyle.background = style.gradient\n badgeStyle.color = style.iconColor || \"white\"\n } else if (style?.badgeColor) {\n badgeStyle.backgroundColor = style.badgeColor\n badgeStyle.color = style.iconColor || \"white\"\n }\n\n const animationClass = animConfig.badgeAnimation\n ? badgeAnimations[animConfig.badgeAnimation]\n : \"\"\n\n return (\n <Badge\n key={option.value}\n variant={variant === \"default\" ? \"secondary\" : \"outline\"}\n className={cn(\n \"mr-1 mb-1 text-xs gap-1 flex items-center\",\n animationClass\n )}\n style={{\n ...badgeStyle,\n animationDelay: `${(animConfig.delay || 0) * index}s`,\n animationDuration: `${animConfig.duration}s`,\n }}\n >\n {Icon && <Icon className=\"h-3 w-3\" />}\n <span>{option.label}</span>\n {!disabled && (\n <button\n className=\"ml-1 rounded-full hover:bg-muted-foreground/20 focus:outline-none focus:ring-2 focus:ring-ring\"\n onClick={(e) => {\n e.stopPropagation()\n toggleOption(option.value)\n }}\n aria-label={`Remove ${option.label}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </Badge>\n )\n }\n\n // Display value\n const displayValue = React.useMemo(() => {\n if (selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>\n }\n\n const displayed = selectedOptions.slice(0, maxCount)\n const remaining = selectedOptions.length - maxCount\n\n return (\n <div className={cn(\"flex gap-1\", singleLine ? \"flex-nowrap overflow-x-auto\" : \"flex-wrap\")}>\n {displayed.map((option, index) => renderBadge(option, index))}\n {remaining > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{remaining} more\n </Badge>\n )}\n </div>\n )\n }, [selectedOptions, maxCount, placeholder, singleLine, variant, disabled, animConfig])\n\n // Render options\n const renderOptions = () => {\n if (isGroupedOptions(options)) {\n return options.map((group, groupIndex) => (\n <React.Fragment key={group.heading}>\n {groupIndex > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading}>\n {group.options.map((option) => {\n const isSelected = selectedValues.includes(option.value)\n const Icon = option.icon\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => !option.disabled && toggleOption(option.value)}\n disabled={option.disabled}\n className={cn(\n \"cursor-pointer\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n <span>{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n )}\n </div>\n </CommandItem>\n )\n })}\n </CommandGroup>\n </React.Fragment>\n ))\n }\n\n return (\n <CommandGroup>\n {(options as MultiSelectProAsyncOption[]).map((option) => {\n const isSelected = selectedValues.includes(option.value)\n const Icon = option.icon\n\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => !option.disabled && toggleOption(option.value)}\n disabled={option.disabled}\n className={cn(\n \"cursor-pointer\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4 shrink-0\",\n isSelected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {Icon && <Icon className=\"mr-2 h-4 w-4\" />}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n <span>{option.label}</span>\n {option.description && (\n <span className=\"text-xs text-muted-foreground\">{option.description}</span>\n )}\n </div>\n </CommandItem>\n )\n })}\n </CommandGroup>\n )\n }\n\n const containerStyle: React.CSSProperties = {}\n if (minWidth) containerStyle.minWidth = minWidth\n if (maxWidth) containerStyle.maxWidth = maxWidth\n\n return (\n <div style={containerStyle} className=\"relative\">\n {/* ARIA Live Region for announcements */}\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n >\n {announcements}\n </div>\n\n <Popover\n open={open}\n onOpenChange={(isOpen) => {\n if (!disabled) {\n setOpen(isOpen)\n if (isOpen) {\n announce(`Dropdown opened. ${flatOptions.length} options available`)\n } else {\n onSearchChange(\"\") // Clear search when closing\n announce(\"Dropdown closed\")\n }\n }\n }}\n modal={modalPopover}\n >\n <PopoverTrigger asChild>\n <Button\n ref={buttonRef}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={placeholder}\n className={cn(multiSelectVariants({ variant }), className)}\n disabled={disabled}\n >\n <div className={cn(\"flex-1 text-left\", autoSize ? \"\" : \"overflow-hidden\")}>\n {displayValue}\n </div>\n <div className=\"flex items-center gap-1 ml-2\">\n {selectedValues.length > 0 && !disabled && (\n <button\n onClick={(e) => {\n e.stopPropagation()\n handleClearAll()\n }}\n className=\"rounded-full hover:bg-muted-foreground/20 focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Clear all selections\"\n >\n <XCircle className=\"h-4 w-4 shrink-0 opacity-50\" />\n </button>\n )}\n <ChevronsUpDown className=\"h-4 w-4 shrink-0 opacity-50\" />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\n \"w-[var(--radix-popover-trigger-width)] p-0\",\n animConfig.popoverAnimation ? popoverAnimations[animConfig.popoverAnimation] : \"\",\n popoverClassName\n )}\n align=\"start\"\n style={{\n animationDuration: `${animConfig.duration}s`,\n }}\n >\n <Command shouldFilter={false}>\n {searchable && (\n <CommandInput\n placeholder={searchPlaceholder}\n value={searchValue}\n onValueChange={onSearchChange}\n />\n )}\n <CommandList>\n {!hideSelectAll && !isGroupedOptions(options) && (\n <>\n <CommandGroup>\n <CommandItem\n onSelect={handleSelectAll}\n className=\"cursor-pointer justify-center font-medium\"\n >\n Select All\n </CommandItem>\n </CommandGroup>\n <Separator />\n </>\n )}\n\n {isLoading ? (\n <div className=\"py-6 text-center text-sm\">\n <Loader2 className=\"h-4 w-4 animate-spin mx-auto mb-2\" />\n {loadingText}\n </div>\n ) : options.length === 0 ? (\n <CommandEmpty>{emptyText}</CommandEmpty>\n ) : (\n renderOptions()\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n )\n }\n)\n\nMultiSelectProAsync.displayName = \"MultiSelectProAsync\"\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '../lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","\"use client\"\n\nimport { OTPInput, OTPInputContext, OTPInputProps as BaseOTPInputProps} from 'input-otp';\nimport * as React from 'react';\n\nimport { MinusIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\ntype ChildrenBranch = Extract<BaseOTPInputProps, { render?: never }>;\ntype InputOTPProps = Omit<ChildrenBranch, 'className' | 'containerClassName'> & {\n className?: string;\n containerClassName?: string;\n} & {\n children: React.ReactNode;\n}\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n InputOTPProps\n>(({ className, containerClassName, children, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n >\n {children}\n </OTPInput>\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const slot = inputOTPContext.slots[index]\n if (!slot) return null\n const { char, hasFakeCaret, isActive } = slot\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-1 ring-ring\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","'use client'\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type {\n SmartOTPProps,\n UseSmartOTPReturn,\n OTPValidationMode,\n OTPPasteBehavior,\n OTPValidator,\n} from './types'\n\n/**\n * Validation patterns for different modes\n */\nconst VALIDATION_PATTERNS: Record<Exclude<OTPValidationMode, 'custom'>, RegExp> = {\n numeric: /^\\d+$/,\n alphanumeric: /^[a-zA-Z0-9]+$/,\n alpha: /^[a-zA-Z]+$/,\n}\n\n/**\n * Clean input based on validation mode\n */\nfunction cleanInput(\n input: string,\n validationMode: OTPValidationMode,\n customValidator?: OTPValidator\n): string {\n if (!input) return ''\n\n // Remove all whitespace and convert to uppercase for consistency\n let cleaned = input.replace(/\\s+/g, '').trim()\n\n if (validationMode === 'custom' && customValidator) {\n // For custom validation, filter character by character\n return cleaned\n .split('')\n .filter((char) => customValidator(char))\n .join('')\n }\n\n // For built-in modes, use regex patterns\n const pattern = VALIDATION_PATTERNS[validationMode as keyof typeof VALIDATION_PATTERNS]\n if (!pattern) return cleaned\n\n return cleaned\n .split('')\n .filter((char) => pattern.test(char))\n .join('')\n}\n\n/**\n * Validate entire value\n */\nfunction validateValue(\n value: string,\n validationMode: OTPValidationMode,\n customValidator?: OTPValidator\n): boolean {\n if (!value) return true // Empty is valid\n\n if (validationMode === 'custom' && customValidator) {\n return customValidator(value)\n }\n\n const pattern = VALIDATION_PATTERNS[validationMode as keyof typeof VALIDATION_PATTERNS]\n return pattern ? pattern.test(value) : true\n}\n\n/**\n * Process pasted content based on paste behavior\n */\nfunction processPaste(\n pastedText: string,\n validationMode: OTPValidationMode,\n pasteBehavior: OTPPasteBehavior,\n length: number,\n customValidator?: OTPValidator\n): string | null {\n const cleaned = cleanInput(pastedText, validationMode, customValidator)\n\n switch (pasteBehavior) {\n case 'strict':\n // Only accept if the cleaned version matches the original (no invalid chars)\n if (cleaned.length !== pastedText.replace(/\\s+/g, '').length) {\n return null // Reject paste\n }\n return cleaned.slice(0, length)\n\n case 'lenient':\n // Accept and use only valid characters\n return cleaned.slice(0, length)\n\n case 'clean':\n default:\n // Clean and use valid characters\n return cleaned.slice(0, length)\n }\n}\n\n/**\n * Smart OTP Input Hook\n * Handles validation, paste behavior, and state management\n */\nexport function useSmartOTP({\n length = 6,\n value: controlledValue,\n onChange,\n onComplete,\n validationMode = 'numeric',\n customValidator,\n autoSubmit = false,\n}: Pick<\n SmartOTPProps,\n | 'length'\n | 'value'\n | 'onChange'\n | 'onComplete'\n | 'validationMode'\n | 'customValidator'\n | 'autoSubmit'\n>): UseSmartOTPReturn {\n const [internalValue, setInternalValue] = useState('')\n\n // Use controlled value if provided, otherwise use internal state\n const value = controlledValue !== undefined ? controlledValue : internalValue\n\n const isComplete = useMemo(() => value.length === length, [value, length])\n\n const isValid = useMemo(\n () => validateValue(value, validationMode, customValidator),\n [value, validationMode, customValidator]\n )\n\n /**\n * Handle value change with validation\n */\n const handleChange = useCallback(\n (newValue: string) => {\n // Clean the input\n const cleaned = cleanInput(newValue, validationMode, customValidator)\n\n // Limit to max length\n const limited = cleaned.slice(0, length)\n\n // Update state\n if (controlledValue === undefined) {\n setInternalValue(limited)\n }\n\n // Call onChange callback\n onChange?.(limited)\n },\n [validationMode, customValidator, length, onChange, controlledValue]\n )\n\n /**\n * Handle completion\n */\n const handleComplete = useCallback(\n (completedValue: string) => {\n if (completedValue.length === length && isValid) {\n onComplete?.(completedValue)\n }\n },\n [length, isValid, onComplete]\n )\n\n /**\n * Clear value\n */\n const clear = useCallback(() => {\n if (controlledValue === undefined) {\n setInternalValue('')\n }\n onChange?.('')\n }, [onChange, controlledValue])\n\n /**\n * Auto-submit when complete\n */\n useEffect(() => {\n if (autoSubmit && isComplete && isValid) {\n handleComplete(value)\n }\n }, [autoSubmit, isComplete, isValid, value, handleComplete])\n\n return {\n value,\n handleChange,\n handleComplete,\n isComplete,\n isValid,\n clear,\n }\n}\n\n/**\n * Create a paste handler for OTP input\n */\nexport function createPasteHandler(\n length: number,\n validationMode: OTPValidationMode,\n pasteBehavior: OTPPasteBehavior,\n onChange: (value: string) => void,\n customValidator?: OTPValidator\n) {\n return (e: React.ClipboardEvent) => {\n e.preventDefault()\n const pastedText = e.clipboardData.getData('text')\n\n const processed = processPaste(\n pastedText,\n validationMode,\n pasteBehavior,\n length,\n customValidator\n )\n\n if (processed !== null) {\n onChange(processed)\n }\n }\n}\n","'use client'\n\nimport { MinusIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from '../input-otp';\nimport { cn } from '../../lib';\n\nimport { createPasteHandler, useSmartOTP } from './use-otp-input';\n\nimport type { SmartOTPProps } from './types'\n\n/**\n * Size variants for OTP slots\n */\nconst sizeVariants = {\n sm: 'h-8 w-8 text-sm',\n default: 'h-10 w-10 text-base',\n lg: 'h-14 w-14 text-2xl',\n}\n\n/**\n * OTP Separator Component\n */\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(({ className, ...props }, ref) => (\n <div ref={ref} role=\"separator\" className={cn('flex items-center', className)} {...props}>\n <MinusIcon />\n </div>\n))\nInputOTPSeparator.displayName = 'InputOTPSeparator'\n\n/**\n * Smart OTP Input Component\n *\n * Features:\n * - Automatic paste handling with cleaning\n * - Validation (numeric, alphanumeric, alpha, custom)\n * - Auto-submit on completion\n * - Customizable appearance\n * - Error/success states\n * - Optional separator\n *\n * @example\n * ```tsx\n * <OTPInput\n * length={6}\n * value={code}\n * onChange={setCode}\n * onComplete={(value) => console.log('Complete:', value)}\n * />\n * ```\n *\n * @example With custom validation\n * ```tsx\n * <OTPInput\n * length={4}\n * validationMode=\"custom\"\n * customValidator={(char) => /[A-F0-9]/i.test(char)}\n * value={hexCode}\n * onChange={setHexCode}\n * />\n * ```\n */\nexport const OTPInput = React.forwardRef<\n React.ComponentRef<typeof InputOTP>,\n SmartOTPProps\n>(\n (\n {\n length = 6,\n value,\n onChange,\n onComplete,\n validationMode = 'numeric',\n customValidator,\n pasteBehavior = 'clean',\n autoSubmit = false,\n disabled = false,\n showSeparator = false,\n separatorIndex,\n containerClassName,\n slotClassName,\n separatorClassName,\n autoFocus = true,\n size = 'default',\n error = false,\n success = false,\n ...props\n },\n ref\n ) => {\n const {\n value: otpValue,\n handleChange,\n handleComplete,\n } = useSmartOTP({\n length,\n value,\n onChange,\n onComplete,\n validationMode,\n customValidator,\n autoSubmit,\n })\n\n // Create paste handler\n const pasteHandler = React.useMemo(\n () =>\n createPasteHandler(\n length,\n validationMode,\n pasteBehavior,\n handleChange,\n customValidator\n ),\n [length, validationMode, pasteBehavior, handleChange, customValidator]\n )\n\n // Calculate separator position (default to middle)\n const separatorPosition = separatorIndex ?? Math.floor(length / 2)\n\n // Render slots\n const slots = React.useMemo(() => {\n const slotElements: React.ReactNode[] = []\n\n for (let i = 0; i < length; i++) {\n // Add separator if needed\n if (showSeparator && i === separatorPosition && i !== 0) {\n slotElements.push(\n <InputOTPSeparator\n key={`separator-${i}`}\n className={cn('mx-1', separatorClassName)}\n />\n )\n }\n\n // Add slot\n slotElements.push(\n <InputOTPSlot\n key={i}\n index={i}\n className={cn(\n sizeVariants[size],\n error && 'border-destructive ring-destructive/20',\n success && 'border-green-500 ring-green-500/20',\n slotClassName\n )}\n />\n )\n }\n\n return slotElements\n }, [length, showSeparator, separatorPosition, separatorClassName, size, error, success, slotClassName])\n\n return (\n <InputOTP\n ref={ref}\n maxLength={length}\n value={otpValue}\n onChange={handleChange}\n onComplete={handleComplete}\n disabled={disabled}\n containerClassName={cn('gap-2', containerClassName)}\n autoFocus={autoFocus}\n onPaste={pasteHandler}\n {...props}\n >\n <InputOTPGroup>{slots}</InputOTPGroup>\n </InputOTP>\n )\n }\n)\n\nOTPInput.displayName = 'OTPInput'\n\n/**\n * Re-export base components for advanced usage\n */\nexport { InputOTPGroup, InputOTPSlot } from '../input-otp'\nexport { InputOTPSeparator }\n\n/**\n * Re-export types\n */\nexport type {\n SmartOTPProps as OTPInputProps,\n OTPValidationMode,\n OTPPasteBehavior,\n OTPValidator,\n} from './types'\n\n/**\n * Re-export hook for advanced usage\n */\nexport { useSmartOTP } from './use-otp-input'\n","import { cn } from '../lib/utils';\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-primary/10\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '../lib/utils';\n\n/**\n * ScrollArea imperative handle for programmatic control\n */\nexport interface ScrollAreaHandle {\n /** Scroll to bottom of the content */\n scrollToBottom: (behavior?: ScrollBehavior) => void;\n /** Scroll to top of the content */\n scrollToTop: (behavior?: ScrollBehavior) => void;\n /** Scroll to a specific position */\n scrollTo: (options: ScrollToOptions) => void;\n /** Get the viewport element */\n getViewport: () => HTMLDivElement | null;\n}\n\nexport interface ScrollAreaProps\n extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n /** Ref to access the viewport element directly */\n viewportRef?: React.RefObject<HTMLDivElement>;\n /** Additional className for the viewport */\n viewportClassName?: string;\n}\n\nconst ScrollArea = React.forwardRef<ScrollAreaHandle, ScrollAreaProps>(\n ({ className, children, viewportRef, viewportClassName, ...props }, ref) => {\n const internalViewportRef = React.useRef<HTMLDivElement>(null);\n const actualViewportRef = viewportRef || internalViewportRef;\n\n // Expose imperative methods\n React.useImperativeHandle(ref, () => ({\n scrollToBottom: (behavior: ScrollBehavior = 'smooth') => {\n const viewport = actualViewportRef.current;\n if (viewport) {\n viewport.scrollTo({\n top: viewport.scrollHeight,\n behavior,\n });\n }\n },\n scrollToTop: (behavior: ScrollBehavior = 'smooth') => {\n const viewport = actualViewportRef.current;\n if (viewport) {\n viewport.scrollTo({\n top: 0,\n behavior,\n });\n }\n },\n scrollTo: (options: ScrollToOptions) => {\n actualViewportRef.current?.scrollTo(options);\n },\n getViewport: () => actualViewportRef.current,\n }), [actualViewportRef]);\n\n return (\n <ScrollAreaPrimitive.Root\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={actualViewportRef as React.RefObject<HTMLDivElement>}\n className={cn(\"h-full w-full rounded-[inherit]\", viewportClassName)}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n }\n);\nScrollArea.displayName = \"ScrollArea\"\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\nimport * as React from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { DragHandleDots2Icon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\n// Context to share dragging state across panel group\nconst ResizableDraggingContext = React.createContext<{\n isDragging: boolean\n setIsDragging: (value: boolean) => void\n}>({ isDragging: false, setIsDragging: () => {} })\n\n// Hook to check if panel group is being resized\nexport const useResizableDragging = () => React.useContext(ResizableDraggingContext)\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => {\n const [mounted, setMounted] = React.useState(false)\n const [isDragging, setIsDragging] = React.useState(false)\n\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n // SSR fallback - render static flex container\n if (!mounted) {\n return (\n <div\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n >\n {props.children}\n </div>\n )\n }\n\n return (\n <ResizableDraggingContext.Provider value={{ isDragging, setIsDragging }}>\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n data-dragging={isDragging ? \"true\" : undefined}\n {...props}\n />\n </ResizableDraggingContext.Provider>\n )\n}\n\nconst ResizablePanel = React.forwardRef<\n React.ElementRef<typeof ResizablePrimitive.Panel>,\n React.ComponentPropsWithoutRef<typeof ResizablePrimitive.Panel>\n>(({ className, defaultSize, minSize, maxSize, children, ...props }, ref) => {\n const [mounted, setMounted] = React.useState(false)\n\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n // SSR fallback - render static div with default size\n if (!mounted) {\n const direction = (props as any)['data-panel-group-direction']\n const sizeStyle = defaultSize\n ? direction === 'vertical'\n ? { height: `${defaultSize}%` }\n : { width: `${defaultSize}%` }\n : { flex: 1 }\n\n return (\n <div className={cn(\"overflow-hidden\", className)} style={sizeStyle}>\n {children}\n </div>\n )\n }\n\n return (\n <ResizablePrimitive.Panel\n ref={ref}\n className={cn(\"overflow-hidden\", className)}\n defaultSize={defaultSize}\n minSize={minSize}\n maxSize={maxSize}\n {...props}\n >\n {children}\n </ResizablePrimitive.Panel>\n )\n})\nResizablePanel.displayName = \"ResizablePanel\"\n\nexport interface ResizableHandleProps extends React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> {\n withHandle?: boolean;\n size?: 'sm' | 'md' | 'lg';\n showIndicator?: boolean;\n indicatorHeight?: number;\n}\n\nconst ResizableHandle = ({\n withHandle,\n className,\n size = 'md',\n showIndicator = false,\n indicatorHeight = 32,\n onDragging,\n ...props\n}: ResizableHandleProps) => {\n const [mounted, setMounted] = React.useState(false)\n const { setIsDragging } = React.useContext(ResizableDraggingContext)\n\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n // Handle drag state change - update context and call user callback\n const handleDragging = React.useCallback((isDragging: boolean) => {\n setIsDragging(isDragging)\n onDragging?.(isDragging)\n }, [setIsDragging, onDragging])\n\n // Size variants for hit area\n const sizeClasses = {\n sm: 'after:w-0.5',\n md: 'after:w-1',\n lg: 'after:w-1.5',\n }\n\n // SSR fallback - render static border\n if (!mounted) {\n return (\n <div\n className={cn(\n \"bg-border w-px\",\n \"data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full\",\n className\n )}\n />\n )\n }\n\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex items-center justify-center bg-border\",\n \"w-px h-full\",\n \"hover:bg-primary/20 active:bg-primary/30\",\n \"transition-colors\",\n // Touch handling for better drag performance\n \"touch-none select-none\",\n // Invisible hit area for easier dragging\n \"after:absolute after:inset-y-0 after:left-1/2 after:-translate-x-1/2\",\n sizeClasses[size],\n \"data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:h-px\",\n \"data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:inset-x-0\",\n \"data-[panel-group-direction=vertical]:after:top-1/2 data-[panel-group-direction=vertical]:after:-translate-y-1/2\",\n \"data-[panel-group-direction=vertical]:after:h-0.5 data-[panel-group-direction=vertical]:after:w-full\",\n \"data-[panel-group-direction=vertical]:after:translate-x-0\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n className\n )}\n style={{ touchAction: 'none' }}\n onDragging={handleDragging}\n {...props}\n >\n {/* Optional pill indicator */}\n {showIndicator && (\n <div\n className={cn(\n \"absolute z-10 rounded-full bg-border opacity-0 hover:opacity-100 transition-opacity\",\n \"w-1 data-[panel-group-direction=vertical]:w-auto data-[panel-group-direction=vertical]:h-1\"\n )}\n style={{\n height: `${indicatorHeight}px`,\n width: '4px',\n }}\n />\n )}\n\n {/* Optional dots handle */}\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <DragHandleDots2Icon className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n\n// Re-export types from react-resizable-panels for imperative panel control\nexport type { ImperativePanelHandle } from 'react-resizable-panels'\n","'use client';\n\nimport * as React from 'react';\n\n// Увеличил breakpoint до 1024px чтобы включить планшеты\nconst MOBILE_BREAKPOINT = 1024\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\n/*\n * Sticky Component - react-sticky-box wrapper\n *\n * COMMON ISSUES & SOLUTIONS:\n *\n * 1. STICKY NOT WORKING\n * Required structure:\n * - Outer div: h-full overflow-y-auto (scrollable container)\n * - Inner div: flex items-start min-h-full (flex container)\n * - Main content: flex-1\n * - Sticky: direct child of flex container\n *\n * 2. PAGE DOESN'T SCROLL\n * Add \"h-full overflow-y-auto\" to outer container.\n * Scrollable container must have defined height.\n *\n * 3. INSIDE ResizablePanel\n * ResizablePanel has overflow-hidden. Add scrollable wrapper inside:\n * <ResizablePanel>\n * <div className=\"h-full overflow-y-auto\">...</div>\n * </ResizablePanel>\n *\n * 4. FLEX CONTAINER REQUIREMENTS\n * - Use items-start (NOT items-stretch)\n * - Sticky must be direct child of flex container\n * - Main content should be flex-1\n *\n * 5. useNativeSticky vs react-sticky-box\n * - useNativeSticky: CSS position:sticky, simpler but limited\n * - Default: react-sticky-box, better for sidebars, handles tall content\n */\n\nimport * as React from 'react';\nimport StickyBox from 'react-sticky-box';\n\nimport { useIsMobile } from '../hooks/useMobile';\n\nexport interface StickyProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stick to bottom instead of top */\n bottom?: boolean;\n /** Top offset in pixels */\n offsetTop?: number;\n /** Bottom offset in pixels */\n offsetBottom?: number;\n /** Disable sticking */\n disabled?: boolean;\n /** Disable sticky on mobile devices (default: true) */\n disableOnMobile?: boolean;\n /** Use native CSS sticky instead of react-sticky-box */\n useNativeSticky?: boolean;\n /** Enable debug logging (default: false) */\n debug?: boolean;\n /** Z-index value (default: 10) */\n zIndex?: number;\n}\n\nconst Sticky: React.FC<StickyProps> = ({\n className,\n bottom = false,\n offsetTop = 0,\n offsetBottom = 0,\n disabled = false,\n disableOnMobile = true,\n useNativeSticky = false,\n debug = false,\n zIndex = 10,\n children,\n style,\n ...props\n}) => {\n const isMobile = useIsMobile();\n \n // Automatically disable sticky on mobile if disableOnMobile is true\n const isDisabled = disabled || (disableOnMobile && isMobile);\n \n // Debug logging (only when debug is enabled)\n React.useEffect(() => {\n if (debug) {\n console.log('Sticky Debug:', {\n isMobile,\n disabled,\n disableOnMobile,\n isDisabled,\n offsetTop,\n offsetBottom,\n useNativeSticky\n });\n \n if (!useNativeSticky) {\n console.warn('⚠️ Make sure the parent container has position: relative for react-sticky-box to work properly');\n }\n }\n }, [debug, isMobile, disabled, disableOnMobile, isDisabled, offsetTop, offsetBottom, useNativeSticky]);\n \n // If disabled, render as regular div\n if (isDisabled) {\n return (\n <div className={className} style={style} {...props}>\n {children}\n </div>\n );\n }\n\n // Use native CSS sticky\n if (useNativeSticky) {\n const nativeStickyStyle: React.CSSProperties = {\n position: 'sticky',\n top: bottom ? 'auto' : `${offsetTop}px`,\n bottom: bottom ? `${offsetBottom}px` : 'auto',\n zIndex,\n ...style,\n };\n\n return (\n <div\n className={className}\n style={nativeStickyStyle}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n // Use react-sticky-box\n const stickyBoxStyle: React.CSSProperties = {\n zIndex,\n ...style,\n };\n\n return (\n <StickyBox\n bottom={bottom}\n offsetTop={offsetTop}\n offsetBottom={offsetBottom}\n className={className}\n style={stickyBoxStyle}\n {...props}\n >\n {children}\n </StickyBox>\n );\n};\n\nSticky.displayName = \"Sticky\";\n\nexport { Sticky };\n","'use client';\n\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n /**\n * The content to be rendered inside the portal.\n */\n children: React.ReactNode;\n /**\n * The container element to render the portal into.\n * Defaults to document.body.\n * Can be a DOM element, a function returning a DOM element, or a ref.\n */\n container?: Element | (() => Element | null) | React.RefObject<Element | null> | null;\n /**\n * Disable the portal behavior.\n * The children stay within the normal DOM hierarchy.\n * @default false\n */\n disablePortal?: boolean;\n}\n\n/**\n * Portal component renders children into a different part of the DOM.\n * Similar to MUI Portal - useful for modals, tooltips, floating elements.\n *\n * @example\n * ```tsx\n * // Render to document.body (default)\n * <Portal>\n * <div className=\"fixed inset-0 z-50\">Modal content</div>\n * </Portal>\n *\n * // Render to custom container\n * <Portal container={document.getElementById('modal-root')}>\n * <div>Custom container content</div>\n * </Portal>\n *\n * // Disable portal (render in place)\n * <Portal disablePortal>\n * <div>Rendered normally</div>\n * </Portal>\n *\n * // With ref container\n * const containerRef = useRef<HTMLDivElement>(null);\n * <div ref={containerRef} />\n * <Portal container={containerRef}>\n * <div>Content in ref container</div>\n * </Portal>\n * ```\n */\nexport const Portal = React.forwardRef<HTMLDivElement, PortalProps>(\n function Portal(props, ref) {\n const { children, container, disablePortal = false } = props;\n const [mountNode, setMountNode] = React.useState<Element | null>(null);\n\n React.useEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n\n if (disablePortal) {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ ref?: React.Ref<HTMLDivElement> }>, {\n ref: ref,\n });\n }\n return <>{children}</>;\n }\n\n if (mountNode) {\n return createPortal(children, mountNode);\n }\n\n // SSR: return null until mounted\n return null;\n }\n);\n\nPortal.displayName = 'Portal';\n\n/**\n * Resolves the container from various input types\n */\nfunction getContainer(\n container: PortalProps['container']\n): Element | null {\n if (container === null || container === undefined) {\n return null;\n }\n\n if (typeof container === 'function') {\n return container();\n }\n\n if ('current' in container) {\n return container.current;\n }\n\n return container;\n}\n\nexport type { PortalProps as PortalPropsType };\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\n\nimport { cn } from '../lib/utils';\nimport { buttonVariants } from './button';\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n style={{ backgroundColor: 'rgb(0 0 0 / 0.8)', ...style }}\n {...props}\n ref={ref}\n />\n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-1/2 top-1/2 z-200 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold\", className)}\n {...props}\n />\n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n className={cn(buttonVariants(), className)}\n {...props}\n />\n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n className={cn(\n buttonVariants({ variant: \"outline\" }),\n \"mt-2 sm:mt-0\",\n className\n )}\n {...props}\n />\n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { Cross2Icon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n style={{ backgroundColor: 'rgb(0 0 0 / 0.8)', ...style }}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-200 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","\"use client\"\n\nimport * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { cn } from '../lib/utils';\n\nconst Drawer = ({\n shouldScaleBackground = true,\n direction,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root> & { direction?: 'bottom' | 'right' | 'left' | 'top' }) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n direction={direction}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, style, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-500 transition-opacity duration-200\", className)}\n style={{ backgroundColor: 'rgb(0 0 0 / 0.8)', ...style }}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst directionStyles = {\n bottom: \"inset-x-0 bottom-0 mt-24 h-auto rounded-t-lg border-t\",\n top: \"inset-x-0 top-0 mb-24 h-auto rounded-b-lg border-b\",\n right: \"inset-y-0 right-0 h-full w-[280px] border-l\",\n left: \"inset-y-0 left-0 h-full w-[280px] border-r\",\n} as const;\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> & { direction?: 'bottom' | 'right' | 'left' | 'top' }\n>(({ className, children, direction = 'bottom', style, ...props }, ref) => {\n const isVertical = direction === 'bottom' || direction === 'top';\n\n return (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed z-500 flex flex-col bg-background\",\n directionStyles[direction],\n className\n )}\n style={{\n transition: 'transform 300ms cubic-bezier(0.32, 0.72, 0, 1)',\n ...style,\n }}\n {...props}\n >\n {isVertical && <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n})\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\n\nimport { cn } from '../lib/utils';\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-150 w-64 rounded-sm border bg-popover backdrop-blur-xl p-4 text-popover-foreground shadow-sm outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '../lib/utils';\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-150 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nexport type FormEvent<T extends string = string, P = any> = {\n type: T;\n payload?: P;\n timestamp?: number;\n};\n\ntype EventListener<T extends FormEvent> = (event: T) => void;\n\nclass EventBus {\n private listeners: Set<EventListener<any>> = new Set();\n\n publish<T extends FormEvent>(event: T) {\n this.listeners.forEach(listener => listener({\n ...event,\n timestamp: event.timestamp || Date.now(),\n }));\n }\n\n subscribe<T extends FormEvent>(listener: EventListener<T>) {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n}\n\nexport const events = new EventBus();\n\nexport function useEventListener<T extends string, P>(\n eventType: T,\n handler: (payload: P) => void\n) {\n const savedHandler = useRef(handler);\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const listener = (event: FormEvent) => {\n if (event.type === eventType) {\n savedHandler.current(event.payload);\n }\n };\n\n const unsubscribe = events.subscribe(listener);\n return () => unsubscribe();\n }, [eventType]);\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport type ResolvedTheme = 'light' | 'dark';\n\n/**\n * Hook to detect the current resolved theme (light or dark)\n *\n * Standalone hook - doesn't require ThemeProvider.\n * Detects theme from:\n * 1. 'dark' class on html element\n * 2. System preference (prefers-color-scheme)\n *\n * For full theme control (setTheme, toggleTheme), use useThemeContext instead.\n *\n * @example\n * ```tsx\n * const theme = useResolvedTheme(); // 'light' | 'dark'\n * ```\n */\nexport const useResolvedTheme = (): ResolvedTheme => {\n const [theme, setTheme] = useState<ResolvedTheme>('light');\n\n useEffect(() => {\n const checkTheme = (): ResolvedTheme => {\n // Check if dark class is applied to html element\n if (document.documentElement.classList.contains('dark')) {\n return 'dark';\n }\n\n // Check system preference\n if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n return 'light';\n };\n\n // Set initial theme\n setTheme(checkTheme());\n\n // Listen for class changes on html element\n const observer = new MutationObserver(() => {\n setTheme(checkTheme());\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class']\n });\n\n // Listen for system theme changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleMediaChange = () => {\n setTheme(checkTheme());\n };\n\n mediaQuery.addEventListener('change', handleMediaChange);\n\n return () => {\n observer.disconnect();\n mediaQuery.removeEventListener('change', handleMediaChange);\n };\n }, []);\n\n return theme;\n};\n","'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\n/**\n * Storage wrapper format with metadata\n * Used when TTL is specified\n */\ninterface StorageWrapper<T> {\n _meta: {\n createdAt: number;\n ttl: number;\n };\n _value: T;\n}\n\n/**\n * Options for useLocalStorage hook\n */\nexport interface UseLocalStorageOptions {\n /**\n * Time-to-live in milliseconds.\n * After this time, value is considered expired and initialValue is returned.\n * Data is automatically cleaned up on next read.\n * @example 24 * 60 * 60 * 1000 // 24 hours\n */\n ttl?: number;\n}\n\n/**\n * Check if data is in new wrapped format with _meta\n */\nfunction isWrappedFormat<T>(data: unknown): data is StorageWrapper<T> {\n return (\n data !== null &&\n typeof data === 'object' &&\n '_meta' in data &&\n '_value' in data &&\n typeof (data as StorageWrapper<T>)._meta === 'object' &&\n typeof (data as StorageWrapper<T>)._meta.createdAt === 'number'\n );\n}\n\n/**\n * Check if wrapped data is expired\n */\nfunction isExpired<T>(wrapped: StorageWrapper<T>): boolean {\n if (!wrapped._meta.ttl) return false;\n const age = Date.now() - wrapped._meta.createdAt;\n return age > wrapped._meta.ttl;\n}\n\n/**\n * Simple localStorage hook with better error handling and optional TTL support\n *\n * IMPORTANT: To prevent hydration mismatch, this hook:\n * - Always returns initialValue on first render (same as SSR)\n * - Reads from localStorage only after component mounts\n *\n * @param key - Storage key\n * @param initialValue - Default value if key doesn't exist\n * @param options - Optional configuration (ttl for auto-expiration)\n * @returns [value, setValue, removeValue] - Current value, setter function, and remove function\n *\n * @example\n * // Without TTL (backwards compatible)\n * const [value, setValue] = useLocalStorage('key', 'default');\n *\n * @example\n * // With TTL (24 hours)\n * const [value, setValue] = useLocalStorage('key', 'default', {\n * ttl: 24 * 60 * 60 * 1000\n * });\n */\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options?: UseLocalStorageOptions\n) {\n const ttl = options?.ttl;\n // Always start with initialValue to match SSR\n const [storedValue, setStoredValue] = useState<T>(initialValue);\n const [isHydrated, setIsHydrated] = useState(false);\n const isInitialized = useRef(false);\n\n // Read from localStorage after mount (avoids hydration mismatch)\n useEffect(() => {\n if (isInitialized.current) return;\n isInitialized.current = true;\n\n try {\n const item = window.localStorage.getItem(key);\n if (item !== null) {\n // Try to parse as JSON first, fallback to string\n try {\n const parsed = JSON.parse(item);\n\n // Check if new format with _meta\n if (isWrappedFormat<T>(parsed)) {\n // Check TTL expiration\n if (isExpired(parsed)) {\n // Expired! Clean up and use initial value\n window.localStorage.removeItem(key);\n // Keep initialValue (already set)\n } else {\n // Not expired, extract value\n setStoredValue(parsed._value);\n }\n } else {\n // Old format (backwards compatible)\n setStoredValue(parsed as T);\n }\n } catch {\n // If JSON.parse fails, return as string\n setStoredValue(item as T);\n }\n }\n } catch (error) {\n console.error(`Error reading localStorage key \"${key}\":`, error);\n }\n\n setIsHydrated(true);\n }, [key]);\n\n // Check data size and limit\n const checkDataSize = (data: any): boolean => {\n try {\n const jsonString = JSON.stringify(data);\n const sizeInBytes = new Blob([jsonString]).size;\n const sizeInKB = sizeInBytes / 1024;\n \n // Limit to 1MB per item\n if (sizeInKB > 1024) {\n console.warn(`Data size (${sizeInKB.toFixed(2)}KB) exceeds 1MB limit for key \"${key}\"`);\n return false;\n }\n \n return true;\n } catch (error) {\n console.error(`Error checking data size for key \"${key}\":`, error);\n return false;\n }\n };\n\n // Clear old data when localStorage is full\n const clearOldData = () => {\n try {\n const keys = Object.keys(localStorage).filter(key => key && typeof key === 'string');\n // Remove oldest items if we have more than 50 items\n if (keys.length > 50) {\n const itemsToRemove = Math.ceil(keys.length * 0.2);\n for (let i = 0; i < itemsToRemove; i++) {\n try {\n const key = keys[i];\n if (key) {\n localStorage.removeItem(key);\n }\n } catch {\n // Ignore errors when removing items\n }\n }\n }\n } catch (error) {\n console.error('Error clearing old localStorage data:', error);\n }\n };\n\n // Force clear all data if quota is exceeded\n const forceClearAll = () => {\n try {\n const keys = Object.keys(localStorage);\n for (const key of keys) {\n try {\n localStorage.removeItem(key);\n } catch {\n // Ignore errors when removing items\n }\n }\n } catch (error) {\n console.error('Error force clearing localStorage:', error);\n }\n };\n\n // Prepare data for storage (with or without TTL wrapper)\n const prepareForStorage = (value: T): string => {\n if (ttl) {\n // Wrap with _meta for TTL support\n const wrapped: StorageWrapper<T> = {\n _meta: {\n createdAt: Date.now(),\n ttl,\n },\n _value: value,\n };\n return JSON.stringify(wrapped);\n }\n // Old format (no wrapper) - for strings, store directly\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n };\n\n // Update localStorage when value changes\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n\n // Check data size before attempting to save\n if (!checkDataSize(valueToStore)) {\n console.warn(`Data size too large for key \"${key}\", removing key`);\n // Remove the key if data is too large\n try {\n window.localStorage.removeItem(key);\n } catch {\n // Ignore errors when removing\n }\n // Still update the state\n setStoredValue(valueToStore);\n return;\n }\n\n setStoredValue(valueToStore);\n\n if (typeof window !== 'undefined') {\n const dataToStore = prepareForStorage(valueToStore);\n\n // Try to set the value\n try {\n window.localStorage.setItem(key, dataToStore);\n } catch (storageError: any) {\n // If quota exceeded, clear old data and try again\n if (storageError.name === 'QuotaExceededError' ||\n storageError.code === 22 ||\n storageError.message?.includes('quota')) {\n console.warn('localStorage quota exceeded, clearing old data...');\n clearOldData();\n\n // Try again after clearing\n try {\n window.localStorage.setItem(key, dataToStore);\n } catch (retryError) {\n console.error(`Failed to set localStorage key \"${key}\" after clearing old data:`, retryError);\n // If still fails, force clear all and try one more time\n try {\n forceClearAll();\n window.localStorage.setItem(key, dataToStore);\n } catch (finalError) {\n console.error(`Failed to set localStorage key \"${key}\" after force clearing:`, finalError);\n // If still fails, just update the state without localStorage\n setStoredValue(valueToStore);\n }\n }\n } else {\n throw storageError;\n }\n }\n }\n } catch (error) {\n console.error(`Error setting localStorage key \"${key}\":`, error);\n // Still update the state even if localStorage fails\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n }\n };\n\n // Remove value from localStorage\n const removeValue = () => {\n try {\n setStoredValue(initialValue);\n if (typeof window !== 'undefined') {\n try {\n window.localStorage.removeItem(key);\n } catch (removeError: any) {\n // If removal fails due to quota, try to clear some data first\n if (removeError.name === 'QuotaExceededError' || \n removeError.code === 22 || \n removeError.message?.includes('quota')) {\n console.warn('localStorage quota exceeded during removal, clearing old data...');\n clearOldData();\n\n try {\n window.localStorage.removeItem(key);\n } catch (retryError) {\n console.error(`Failed to remove localStorage key \"${key}\" after clearing:`, retryError);\n // If still fails, force clear all\n forceClearAll();\n }\n } else {\n throw removeError;\n }\n }\n }\n } catch (error) {\n console.error(`Error removing localStorage key \"${key}\":`, error);\n }\n };\n\n return [storedValue, setValue, removeValue] as const;\n}\n","\"use client\"\n\nimport { Menu } from 'lucide-react';\nimport * as React from 'react';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { useIsMobile } from '../hooks';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { ScrollArea, ScrollBar } from './scroll-area';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './sheet';\n\n// ─────────────────────────────────────────────────────────────────────────\n// Tabs Root with Mobile Sheet Support\n// ─────────────────────────────────────────────────────────────────────────\n\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /**\n * Enable mobile sheet mode (automatically shows Sheet on mobile devices)\n * @default false\n */\n mobileSheet?: boolean\n /**\n * Title for mobile sheet header\n * @default \"Navigation\"\n */\n mobileSheetTitle?: string\n /**\n * Title to display next to burger menu on mobile\n */\n mobileTitleText?: string\n /**\n * Enable sticky positioning (stays at top on scroll)\n * @default false\n */\n sticky?: boolean\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ mobileSheet = false, mobileSheetTitle = \"Navigation\", mobileTitleText, sticky = false, children, ...props }, ref) => {\n const isMobile = useIsMobile()\n const [open, setOpen] = React.useState(false)\n\n // If mobile sheet mode is disabled, render normal tabs\n if (!mobileSheet || !isMobile) {\n // If sticky is enabled for desktop, wrap TabsList in sticky container\n if (sticky) {\n const childrenArray = React.Children.toArray(children)\n const tabsList = childrenArray.find(\n (child) => React.isValidElement(child) && child.type === TabsList\n )\n const tabsContent = childrenArray.filter(\n (child) => React.isValidElement(child) && child.type === TabsContent\n )\n\n return (\n <TabsPrimitive.Root ref={ref} {...props}>\n <div className=\"sticky top-0 z-40 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60 mb-4\">\n {tabsList}\n </div>\n {tabsContent}\n </TabsPrimitive.Root>\n )\n }\n\n return (\n <TabsPrimitive.Root ref={ref} {...props}>\n {children}\n </TabsPrimitive.Root>\n )\n }\n\n // Extract TabsList and TabsContent from children\n const childrenArray = React.Children.toArray(children)\n const tabsList = childrenArray.find(\n (child) => React.isValidElement(child) && child.type === TabsList\n )\n const tabsContent = childrenArray.filter(\n (child) => React.isValidElement(child) && child.type === TabsContent\n )\n\n // Extract triggers from TabsList children\n const triggers = React.isValidElement(tabsList)\n ? React.Children.toArray((tabsList.props as any).children)\n : []\n\n // Mobile Sheet Navigation\n return (\n <TabsPrimitive.Root ref={ref} {...props}>\n <div className={cn(\n \"w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60 mb-4\",\n sticky && \"sticky top-0 z-40\"\n )}>\n <div className=\"container mx-auto flex items-center justify-between h-14 px-4\">\n {/* Title */}\n {mobileTitleText && (\n <h1 className=\"text-lg font-semibold\">{mobileTitleText}</h1>\n )}\n\n {/* Menu Button */}\n <Sheet open={open} onOpenChange={setOpen}>\n <SheetTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className={mobileTitleText ? \"\" : \"ml-auto\"}>\n <Menu className=\"h-5 w-5\" />\n </Button>\n </SheetTrigger>\n <SheetContent side=\"right\" className=\"w-[280px] sm:w-[350px]\">\n <SheetHeader>\n <SheetTitle>{mobileSheetTitle}</SheetTitle>\n </SheetHeader>\n <nav className=\"flex flex-col gap-2 mt-6\">\n <TabsPrimitive.List className=\"flex flex-col gap-2\">\n {triggers.map((trigger, index) => {\n if (!React.isValidElement(trigger)) return null\n\n // Clone trigger and wrap in mobile-friendly container\n const triggerProps = (trigger as any).props || {};\n return React.cloneElement(trigger as React.ReactElement, {\n key: index,\n onClick: (e: React.MouseEvent) => {\n setOpen(false)\n triggerProps.onClick?.(e)\n },\n className: cn(\n \"flex items-center gap-3 px-3 py-2 rounded-md transition-colors justify-start w-full\",\n \"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground\",\n \"hover:bg-muted\",\n triggerProps.className\n ),\n } as any)\n })}\n </TabsPrimitive.List>\n </nav>\n </SheetContent>\n </Sheet>\n </div>\n </div>\n {tabsContent}\n </TabsPrimitive.Root>\n )\n})\nTabs.displayName = \"Tabs\"\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & {\n /**\n * Full width mode - tabs will stretch equally to fill the container\n * @default false\n */\n fullWidth?: boolean\n /**\n * Enable horizontal scrolling when tabs overflow\n * @default false\n */\n scrollable?: boolean\n }\n>(({ className, fullWidth = false, scrollable = false, ...props }, ref) => {\n // If scrollable mode is enabled, wrap in ScrollArea\n if (scrollable) {\n return (\n <ScrollArea className=\"w-full whitespace-nowrap rounded-lg\">\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n fullWidth && \"w-full flex\",\n className\n )}\n {...props}\n />\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n )\n }\n\n // Default mode without scrolling\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n fullWidth && \"w-full flex\",\n className\n )}\n {...props}\n />\n )\n})\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & {\n /**\n * Makes the trigger take equal space (use with fullWidth TabsList)\n * @default false\n */\n flexEqual?: boolean\n key?: React.Key\n }\n>(({ className, flexEqual = false, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n flexEqual && \"flex-1\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> & { key?: React.Key }\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","\"use client\"\n\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as ProgressPrimitive from '@radix-ui/react-progress';\n\nimport { cn } from '../lib/utils';\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\n\nimport { cn } from '../lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","\"use client\"\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { DayButton, DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { Button, buttonVariants } from '../button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full min-w-[calc(var(--cell-size)*7)] flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"bg-popover absolute inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-[--cell-size] select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-muted-foreground select-none text-[0.8rem]\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"bg-accent rounded-l-md\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"bg-accent rounded-r-md\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-[--cell-size] items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","'use client'\n\nimport { format } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\nimport { Button } from '../button';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { Calendar } from './calendar';\n\nimport type { SelectSingleEventHandler, DateRange as RDPDateRange } from 'react-day-picker'\n\n// =============================================================================\n// DatePicker - Single date selection with popover\n// =============================================================================\n\nexport interface DatePickerProps {\n /** Selected date */\n value?: Date\n /** Callback when date changes */\n onChange?: (date: Date | undefined) => void\n /** Placeholder text when no date selected */\n placeholder?: string\n /** Date format string (date-fns format) */\n dateFormat?: string\n /** Disable the picker */\n disabled?: boolean\n /** Minimum selectable date */\n fromDate?: Date\n /** Maximum selectable date */\n toDate?: Date\n /** Additional class names for the trigger button */\n className?: string\n /** Button variant */\n variant?: 'default' | 'outline' | 'ghost'\n /** Align popover */\n align?: 'start' | 'center' | 'end'\n}\n\nconst DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Pick a date',\n dateFormat = 'PPP',\n disabled = false,\n fromDate,\n toDate,\n className,\n variant = 'outline',\n align = 'start',\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n\n const handleSelect: SelectSingleEventHandler = (date) => {\n onChange?.(date)\n setOpen(false)\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={variant}\n disabled={disabled}\n className={cn(\n 'w-full justify-start text-left font-normal',\n !value && 'text-muted-foreground',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {value ? format(value, dateFormat) : placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align={align}>\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleSelect}\n disabled={disabled}\n fromDate={fromDate}\n toDate={toDate}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n }\n)\nDatePicker.displayName = 'DatePicker'\n\n// =============================================================================\n// DateRangePicker - Date range selection with popover\n// =============================================================================\n\n/** Date range type - re-exported from react-day-picker for convenience */\nexport type DateRange = RDPDateRange\n\nexport interface DateRangePickerProps {\n /** Selected date range */\n value?: DateRange\n /** Callback when range changes */\n onChange?: (range: DateRange | undefined) => void\n /** Placeholder text when no range selected */\n placeholder?: string\n /** Date format string (date-fns format) */\n dateFormat?: string\n /** Disable the picker */\n disabled?: boolean\n /** Minimum selectable date */\n fromDate?: Date\n /** Maximum selectable date */\n toDate?: Date\n /** Number of months to display */\n numberOfMonths?: number\n /** Additional class names for the trigger button */\n className?: string\n /** Button variant */\n variant?: 'default' | 'outline' | 'ghost'\n /** Align popover */\n align?: 'start' | 'center' | 'end'\n}\n\nconst DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Pick a date range',\n dateFormat = 'LLL dd, y',\n disabled = false,\n fromDate,\n toDate,\n numberOfMonths = 2,\n className,\n variant = 'outline',\n align = 'start',\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false)\n\n const formatRange = () => {\n if (!value?.from) return placeholder\n if (!value.to) return format(value.from, dateFormat)\n return `${format(value.from, dateFormat)} - ${format(value.to, dateFormat)}`\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={variant}\n disabled={disabled}\n className={cn(\n 'w-full justify-start text-left font-normal',\n !value?.from && 'text-muted-foreground',\n className\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {formatRange()}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align={align}>\n <Calendar\n mode=\"range\"\n selected={value}\n onSelect={onChange}\n disabled={disabled}\n fromDate={fromDate}\n toDate={toDate}\n numberOfMonths={numberOfMonths}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n }\n)\nDateRangePicker.displayName = 'DateRangePicker'\n\nexport { DatePicker, DateRangePicker }\n","\"use client\"\n\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport * as React from 'react';\n\nimport { ArrowLeftIcon, ArrowRightIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: \"horizontal\" | \"vertical\"\n setApi?: (api: CarouselApi) => void\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselProps\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\")\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on(\"reInit\", onSelect)\n api.on(\"select\", onSelect)\n\n return () => {\n api?.off(\"select\", onSelect)\n }\n }, [api, onSelect])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = \"Carousel\"\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = \"CarouselContent\"\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = \"CarouselItem\"\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeftIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = \"CarouselPrevious\"\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute h-8 w-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRightIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n})\nCarouselNext.displayName = \"CarouselNext\"\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n","\"use client\"\n\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nexport interface TokenIconProps extends React.HTMLAttributes<HTMLDivElement> {\n symbol: string\n variant?: 'branded' | 'mono'\n size?: number\n network?: string\n address?: string\n}\n\n/**\n * Get all available token symbols from @web3icons/react\n * Uses dynamic import to avoid bundling all icons\n */\nexport async function getAllTokenSymbols(): Promise<string[]> {\n try {\n const { tokenIcons } = await import('@web3icons/react')\n return Object.keys(tokenIcons).map(key => \n key.replace(/^Token/, '').replace(/_/g, '-')\n ).sort()\n } catch {\n return []\n }\n}\n\n/**\n * Search tokens by symbol\n */\nexport async function searchTokens(query: string): Promise<string[]> {\n const allTokens = await getAllTokenSymbols()\n const lowerQuery = query.toLowerCase()\n return allTokens.filter(symbol => \n symbol.toLowerCase().includes(lowerQuery)\n )\n}\n\n/**\n * Get popular tokens grouped by category\n */\nexport interface TokenCategory {\n name: string\n tokens: string[]\n}\n\nexport async function getTokensByCategory(): Promise<TokenCategory[]> {\n const allTokens = await getAllTokenSymbols()\n \n // Top tokens by market cap\n const topTokens = ['BTC', 'ETH', 'USDT', 'BNB', 'SOL', 'USDC', 'XRP', 'DOGE', 'ADA', 'TRX']\n .filter(t => allTokens.includes(t))\n \n const stablecoins = ['USDT', 'USDC', 'BUSD', 'DAI', 'TUSD', 'USDP', 'GUSD', 'FRAX']\n .filter(t => allTokens.includes(t))\n \n const defi = ['UNI', 'AAVE', 'MKR', 'CRV', 'CAKE', 'SUSHI', 'BAL', 'COMP', 'YFI', 'SNX', 'LINK']\n .filter(t => allTokens.includes(t))\n \n const layer1 = ['ETH', 'BNB', 'SOL', 'ADA', 'AVAX', 'DOT', 'ATOM', 'NEAR', 'ALGO', 'FTM']\n .filter(t => allTokens.includes(t))\n \n const layer2 = ['MATIC', 'OP', 'ARB', 'IMX', 'LRC', 'METIS']\n .filter(t => allTokens.includes(t))\n \n const memeCoins = ['DOGE', 'SHIB', 'PEPE', 'FLOKI', 'ELON', 'BONK']\n .filter(t => allTokens.includes(t))\n \n return [\n { name: 'Top 10', tokens: topTokens },\n { name: 'Stablecoins', tokens: stablecoins },\n { name: 'DeFi', tokens: defi },\n { name: 'Layer 1', tokens: layer1 },\n { name: 'Layer 2', tokens: layer2 },\n { name: 'Meme Coins', tokens: memeCoins },\n ].filter(cat => cat.tokens.length > 0)\n}\n\nexport type TokenSymbol = string\n\n// Dynamic import for @web3icons/react tokens\nconst tokenIconCache = new Map<string, React.ComponentType<any>>()\n\nasync function getTokenIcon(symbol: string): Promise<React.ComponentType<any> | null> {\n const normalizedSymbol = symbol.toUpperCase().replace(/[^A-Z0-9]/g, '_')\n const componentName = `Token${normalizedSymbol}`\n\n if (tokenIconCache.has(componentName)) {\n return tokenIconCache.get(componentName)!\n }\n\n try {\n const module = await import('@web3icons/react')\n const Component = (module as any)[componentName]\n if (Component) {\n tokenIconCache.set(componentName, Component)\n return Component\n }\n } catch (e) {\n // Token not found\n }\n\n return null\n}\n\nexport function TokenIcon({\n symbol,\n variant = 'branded',\n size = 24,\n className,\n network,\n address,\n ...props\n}: TokenIconProps) {\n const [IconComponent, setIconComponent] = React.useState<React.ComponentType<any> | null>(null)\n const [loading, setLoading] = React.useState(true)\n\n React.useEffect(() => {\n let mounted = true\n\n getTokenIcon(symbol).then((component) => {\n if (mounted) {\n setIconComponent(() => component)\n setLoading(false)\n }\n })\n\n return () => {\n mounted = false\n }\n }, [symbol])\n\n // Pre-compute fallback values\n const fallbackFontSize = Math.max(8, size * 0.4)\n const truncatedSymbol = symbol?.slice(0, 3) || '?'\n\n return (\n <div\n className={cn(\"inline-flex items-center justify-center flex-shrink-0\", className)}\n style={{ width: size, height: size }}\n {...props}\n >\n {IconComponent ? (\n <IconComponent\n variant={variant}\n size={size}\n />\n ) : (\n // Fallback: show symbol as text\n <span\n className=\"text-muted-foreground font-medium uppercase\"\n style={{ fontSize: fallbackFontSize }}\n >\n {truncatedSymbol}\n </span>\n )}\n </div>\n )\n}\n","\"use client\"\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '../lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n}\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId()\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n})\nChartContainer.displayName = \"Chart\"\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color || item.payload.fill || item.color\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n)\nChartTooltipContent.displayName = \"ChartTooltip\"\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean\n nameKey?: string\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n }\n)\nChartLegendContent.displayName = \"ChartLegend\"\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\n\nimport { cn } from '../lib/utils';\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-2 min-w-9\",\n sm: \"h-8 px-1.5 min-w-8\",\n lg: \"h-10 px-2.5 min-w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n","\"use client\"\n\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\n\nimport { cn } from '../lib/utils';\nimport { toggleVariants } from './toggle';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\"flex items-center justify-center gap-1\", className)}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n))\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants> & { key?: React.Key }\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n","\"use client\"\n\nimport * as React from 'react';\n\nimport * as ContextMenuPrimitive from '@radix-ui/react-context-menu';\nimport { CheckIcon, ChevronRightIcon, DotFilledIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '../lib/utils';\n\nconst ContextMenu = ContextMenuPrimitive.Root\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <ContextMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n))\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-150 min-w-32 overflow-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"z-150 max-h-[--radix-context-menu-content-available-height] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n))\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n key?: React.Key\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem> & { key?: React.Key }\n>(({ className, children, checked, ...props }, ref) => (\n <ContextMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n))\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem> & { key?: React.Key }\n>(({ className, children, ...props }, ref) => (\n <ContextMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <DotFilledIcon className=\"h-4 w-4 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n))\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <ContextMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef<typeof ContextMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <ContextMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n))\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n","\"use client\"\n\nimport { Check, ChevronRight, Circle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-600 min-w-32 overflow-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-600 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-32 overflow-y-auto overflow-x-hidden rounded-sm border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n href?: string\n key?: React.Key\n }\n>(({ className, inset, href, children, ...props }, ref) => {\n const classes = cn(\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )\n\n if (href) {\n return (\n <DropdownMenuPrimitive.Item asChild ref={ref} {...props}>\n <a href={href} className={classes}>\n {children}\n </a>\n </DropdownMenuPrimitive.Item>\n )\n }\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={classes}\n {...props}\n >\n {children}\n </DropdownMenuPrimitive.Item>\n )\n})\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> & { key?: React.Key }\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & { key?: React.Key }\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\"\n\nimport * as React from 'react';\nimport {\n Controller, ControllerProps, FieldPath, FieldValues, FormProvider, useFormContext\n} from 'react-hook-form';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../lib/utils';\nimport { Label } from './label';\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../lib/utils';\nimport { Separator } from './separator';\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../lib/utils';\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center gap-2 text-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","import { Loader2Icon } from 'lucide-react';\n\nimport { cn } from '../lib/utils';\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n )\n}\n\nexport { Spinner }\n","/**\n * Preloader Component\n *\n * Universal loading indicator component with multiple variants\n * Supports inline, fullscreen, and custom layouts\n */\n\n'use client';\n\nimport { Loader2 } from 'lucide-react';\nimport React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Spinner } from './spinner';\n\nexport interface PreloaderProps {\n /**\n * Loading text to display\n * @default undefined (no text)\n */\n text?: string;\n\n /**\n * Additional description/subtitle text\n */\n description?: string;\n\n /**\n * Size variant\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n\n /**\n * Variant: inline (fits container) or fullscreen (fixed overlay)\n * @default 'inline'\n */\n variant?: 'inline' | 'fullscreen';\n\n /**\n * Show backdrop (only for fullscreen variant)\n * @default true\n */\n backdrop?: boolean;\n\n /**\n * Backdrop opacity (0-100, only for fullscreen with backdrop)\n * @default 80\n */\n backdropOpacity?: number;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Spinner className override\n */\n spinnerClassName?: string;\n}\n\nconst sizeMap = {\n sm: 'h-4 w-4',\n md: 'h-6 w-6',\n lg: 'h-8 w-8',\n xl: 'h-12 w-12',\n};\n\n/**\n * Preloader - Universal loading indicator\n *\n * Features:\n * - Multiple size variants (sm, md, lg, xl)\n * - Inline or fullscreen variants\n * - Optional text and description\n * - Optional backdrop for fullscreen\n * - Accessible (ARIA labels)\n *\n * @example\n * ```tsx\n * // Inline loading\n * <Preloader text=\"Loading...\" />\n *\n * // Fullscreen with backdrop\n * <Preloader variant=\"fullscreen\" text=\"Loading data...\" />\n *\n * // Custom size\n * <Preloader size=\"lg\" text=\"Processing...\" />\n *\n * // Without text\n * <Preloader />\n * ```\n */\nexport function Preloader({\n text,\n description,\n size = 'md',\n variant = 'inline',\n backdrop = true,\n backdropOpacity = 80,\n className,\n spinnerClassName,\n}: PreloaderProps) {\n const spinnerSize = sizeMap[size];\n\n // Fullscreen variant\n if (variant === 'fullscreen') {\n const backdropClasses = backdrop\n ? backdropOpacity >= 90\n ? 'bg-background/95'\n : backdropOpacity >= 70\n ? 'bg-background/90'\n : backdropOpacity >= 50\n ? 'bg-background/80'\n : 'bg-background/60'\n : 'bg-transparent';\n\n return (\n <div\n className={cn(\n 'fixed inset-0 z-50 flex items-center justify-center',\n backdropClasses,\n className\n )}\n role=\"status\"\n aria-label={text || 'Loading'}\n aria-live=\"polite\"\n >\n <div className=\"flex flex-col items-center gap-4 animate-in fade-in duration-300\">\n {/* Spinner */}\n <Loader2\n className={cn('animate-spin text-primary', spinnerSize, spinnerClassName)}\n aria-hidden=\"true\"\n />\n\n {/* Text content */}\n {(text || description) && (\n <div className=\"flex flex-col items-center gap-2 text-center\">\n {text && (\n <p className=\"text-base font-medium text-foreground\">{text}</p>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n {/* Animated dots */}\n {text && (\n <div className=\"flex gap-1 mt-1\">\n <span\n className=\"h-1.5 w-1.5 animate-bounce rounded-full bg-primary\"\n style={{ animationDelay: '0ms' }}\n />\n <span\n className=\"h-1.5 w-1.5 animate-bounce rounded-full bg-primary\"\n style={{ animationDelay: '150ms' }}\n />\n <span\n className=\"h-1.5 w-1.5 animate-bounce rounded-full bg-primary\"\n style={{ animationDelay: '300ms' }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Inline variant\n return (\n <div\n className={cn(\n 'flex items-center justify-center',\n text || description ? 'gap-3' : '',\n className\n )}\n role=\"status\"\n aria-label={text || 'Loading'}\n aria-live=\"polite\"\n >\n <Loader2\n className={cn('animate-spin text-primary', spinnerSize, spinnerClassName)}\n aria-hidden=\"true\"\n />\n {(text || description) && (\n <div className=\"flex flex-col gap-1\">\n {text && (\n <p className=\"text-sm font-medium text-foreground\">{text}</p>\n )}\n {description && (\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * PreloaderSkeleton - Loading skeleton variant\n * Useful for content placeholders\n */\nexport interface PreloaderSkeletonProps {\n /**\n * Number of skeleton lines\n * @default 3\n */\n lines?: number;\n\n /**\n * Show avatar skeleton\n * @default false\n */\n showAvatar?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport function PreloaderSkeleton({\n lines = 3,\n showAvatar = false,\n className,\n}: PreloaderSkeletonProps) {\n return (\n <div className={cn('space-y-3', className)}>\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <div className=\"h-10 w-10 rounded-full bg-muted animate-pulse\" />\n <div className=\"space-y-2 flex-1\">\n <div className=\"h-4 w-24 rounded bg-muted animate-pulse\" />\n <div className=\"h-3 w-32 rounded bg-muted animate-pulse\" />\n </div>\n </div>\n )}\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={cn(\n 'h-4 rounded bg-muted animate-pulse',\n i === lines - 1 ? 'w-3/4' : 'w-full'\n )}\n />\n ))}\n </div>\n );\n}\n\n","import { cn } from '../lib/utils';\n\ntype KbdSize = \"xs\" | \"sm\" | \"default\" | \"lg\";\n\ninterface KbdProps extends React.ComponentProps<\"kbd\"> {\n size?: KbdSize;\n}\n\nconst kbdSizeStyles: Record<KbdSize, string> = {\n xs: \"h-4 min-w-4 px-0.5 text-[10px] [&_svg:not([class*='size-'])]:size-2.5\",\n sm: \"h-5 min-w-5 px-1 text-xs [&_svg:not([class*='size-'])]:size-3\",\n default: \"h-6 min-w-6 px-1.5 text-xs [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-7 min-w-7 px-2 text-sm [&_svg:not([class*='size-'])]:size-4\",\n};\n\nfunction Kbd({ className, size = \"default\", ...props }: KbdProps) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"bg-muted text-muted-foreground pointer-events-none inline-flex w-fit select-none items-center justify-center gap-1 rounded-sm font-mono font-medium border border-border/50\",\n \"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\",\n kbdSizeStyles[size],\n className\n )}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup }\nexport type { KbdProps, KbdSize }\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]\",\n \"h-9 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../lib/utils';\nimport { Separator } from './separator';\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n )\n}\n\nconst itemVariants = cva(\n \"group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 [a]:transition-colors flex flex-wrap items-center rounded-md border border-transparent text-sm outline-none transition-colors duration-100 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50\",\n },\n size: {\n default: \"gap-4 p-4 \",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Item({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\"\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted size-8 rounded-sm border [&_svg:not([class*='size-'])]:size-4\",\n image:\n \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction ItemMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"text-muted-foreground line-clamp-2 text-balance text-sm font-normal leading-normal\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n \"flex basis-full items-center justify-between gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n}\n","\"use client\"\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useMemo } from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Label } from './label';\nimport { Separator } from './separator';\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field data-[invalid=true]:text-destructive flex w-full gap-3\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\",\n ],\n responsive: [\n \"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors) {\n return null\n }\n\n if (errors?.length === 1 && errors[0]?.message) {\n return errors[0].message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {errors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","'use client'\n\nimport { Check, Copy } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\n\n// =============================================================================\n// CopyButton - Copy button with icon feedback\n// =============================================================================\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onCopy'> {\n /** Text to copy to clipboard */\n value: string\n /** Duration in ms to show success state (default: 2000) */\n successDuration?: number\n /** Callback after successful copy */\n onCopy?: (value: string) => void\n /** Button size variant */\n size?: 'default' | 'sm' | 'icon'\n /** Button style variant */\n variant?: 'default' | 'ghost' | 'outline'\n /** Optional label text (if provided, shows text next to icon) */\n children?: React.ReactNode\n /** Icon size class (default: \"h-4 w-4\") */\n iconClassName?: string\n}\n\nconst CopyButton = React.forwardRef<HTMLButtonElement, CopyButtonProps>(\n ({\n value,\n successDuration = 2000,\n onCopy,\n className,\n size = 'icon',\n variant = 'ghost',\n children,\n iconClassName = 'h-4 w-4',\n ...props\n }, ref) => {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value)\n setCopied(true)\n onCopy?.(value)\n setTimeout(() => setCopied(false), successDuration)\n } catch (err) {\n console.error('Failed to copy:', err)\n }\n }\n\n const hasLabel = !!children\n\n return (\n <Button\n ref={ref}\n type=\"button\"\n size={hasLabel ? size : 'icon'}\n variant={variant}\n onClick={handleCopy}\n className={cn('shrink-0', className)}\n aria-label={copied ? 'Copied' : 'Copy to clipboard'}\n {...props}\n >\n {copied ? (\n <Check className={cn(iconClassName, 'text-green-500')} />\n ) : (\n <Copy className={iconClassName} />\n )}\n {hasLabel && <span className={copied ? 'text-green-500' : undefined}>{copied ? 'Copied' : children}</span>}\n </Button>\n )\n }\n)\nCopyButton.displayName = 'CopyButton'\n\n// =============================================================================\n// CopyField - Field with label, text display, and copy button\n// =============================================================================\n\nexport interface CopyFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onCopy'> {\n /** Label text (optional) */\n label?: string\n /** Text to display and copy */\n value: string\n /** Duration in ms to show success state */\n successDuration?: number\n /** Callback after successful copy */\n onCopy?: (value: string) => void\n /** Show as monospace font */\n mono?: boolean\n /** Truncate long text (default: true). Set to false to allow wrapping */\n truncate?: boolean\n /** Break long words to prevent overflow (use with truncate={false}) */\n breakAll?: boolean\n}\n\nconst CopyField = React.forwardRef<HTMLDivElement, CopyFieldProps>(\n ({\n label,\n value,\n successDuration = 2000,\n onCopy,\n className,\n mono = true,\n truncate = true,\n breakAll = false,\n ...props\n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-between gap-2 p-3 rounded-lg bg-muted',\n className\n )}\n {...props}\n >\n <div className=\"min-w-0 flex-1\">\n {label && (\n <div className=\"text-xs text-muted-foreground mb-0.5\">{label}</div>\n )}\n <div\n className={cn(\n 'text-sm',\n mono && 'font-mono',\n truncate && 'truncate',\n breakAll && 'break-all'\n )}\n title={value}\n >\n {value}\n </div>\n </div>\n <CopyButton\n value={value}\n successDuration={successDuration}\n onCopy={onCopy}\n />\n </div>\n )\n }\n)\nCopyField.displayName = 'CopyField'\n\nexport { CopyButton, CopyField }\n","\"use client\"\n\nimport { AlertCircle, CheckCircle2, Download, Loader2 } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button, type ButtonProps } from './button';\nimport { cn } from '../lib';\nimport { useLocalStorage } from '../hooks/useLocalStorage';\n\n// Token key used by the API client\nconst TOKEN_KEY = \"auth_token\"\n\nexport interface DownloadButtonProps extends Omit<ButtonProps, 'onClick'> {\n /**\n * URL to download from\n */\n url: string\n\n /**\n * Optional filename override. If not provided, will try to extract from Content-Disposition header\n */\n filename?: string\n\n /**\n * Optional callback when download starts\n */\n onDownloadStart?: () => void\n\n /**\n * Optional callback when download completes\n */\n onDownloadComplete?: (filename: string) => void\n\n /**\n * Optional callback when download fails\n */\n onDownloadError?: (error: Error) => void\n\n /**\n * Use fetch API for download (allows progress tracking and auth headers)\n * Default: true\n */\n useFetch?: boolean\n\n /**\n * Show download status icons (loading, success, error)\n * Default: true\n */\n showStatus?: boolean\n\n /**\n * Auto-reset status after success/error (in ms)\n * Default: 2000\n */\n statusResetDelay?: number\n\n /**\n * Method for download (GET or POST)\n * Default: GET\n */\n method?: 'GET' | 'POST'\n\n /**\n * Optional request body for POST requests\n */\n body?: any\n}\n\ntype DownloadStatus = 'idle' | 'downloading' | 'success' | 'error'\n\nconst DownloadButton = React.forwardRef<HTMLButtonElement, DownloadButtonProps>(\n (\n {\n url,\n filename,\n onDownloadStart,\n onDownloadComplete,\n onDownloadError,\n useFetch = true,\n showStatus = true,\n statusResetDelay = 2000,\n method = 'GET',\n body,\n children,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const [status, setStatus] = React.useState<DownloadStatus>('idle')\n const resetTimeoutRef = React.useRef<NodeJS.Timeout | undefined>(undefined)\n\n // Get auth token from localStorage\n const [token] = useLocalStorage<string>(TOKEN_KEY, '')\n\n // Clean up timeout on unmount\n React.useEffect(() => {\n return () => {\n if (resetTimeoutRef.current) {\n clearTimeout(resetTimeoutRef.current)\n }\n }\n }, [])\n\n /**\n * Extract filename from Content-Disposition header\n */\n const extractFilename = (headers: Headers): string | null => {\n const disposition = headers.get('Content-Disposition')\n if (!disposition) return null\n\n // Try to match: filename*=UTF-8''example.txt or filename=\"example.txt\"\n const filenameMatch = disposition.match(/filename\\*?=(?:UTF-8'')?[\"']?([^\"';]+)[\"']?/i)\n if (filenameMatch && filenameMatch[1]) {\n return decodeURIComponent(filenameMatch[1])\n }\n\n return null\n }\n\n /**\n * Trigger browser download for blob\n */\n const triggerDownload = (blob: Blob, downloadFilename: string) => {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = downloadFilename\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n window.URL.revokeObjectURL(url)\n }\n\n /**\n * Reset status after delay\n */\n const scheduleStatusReset = () => {\n if (resetTimeoutRef.current) {\n clearTimeout(resetTimeoutRef.current)\n }\n resetTimeoutRef.current = setTimeout(() => {\n setStatus('idle')\n }, statusResetDelay)\n }\n\n /**\n * Download using fetch API (supports auth, progress, error handling)\n */\n const downloadWithFetch = async () => {\n try {\n setStatus('downloading')\n onDownloadStart?.()\n\n const headers: HeadersInit = {}\n\n // Add authorization header if token is available\n if (token) {\n headers['Authorization'] = `Bearer ${token}`\n }\n\n const options: RequestInit = {\n method,\n headers,\n }\n\n if (method === 'POST' && body) {\n options.body = JSON.stringify(body)\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/json',\n }\n }\n\n const response = await fetch(url, options)\n\n if (!response.ok) {\n throw new Error(`Download failed: ${response.status} ${response.statusText}`)\n }\n\n const blob = await response.blob()\n\n // Determine filename\n const downloadFilename =\n filename ||\n extractFilename(response.headers) ||\n `download-${Date.now()}.bin`\n\n // Trigger download\n triggerDownload(blob, downloadFilename)\n\n setStatus('success')\n onDownloadComplete?.(downloadFilename)\n scheduleStatusReset()\n } catch (error) {\n console.error('Download error:', error)\n setStatus('error')\n onDownloadError?.(error as Error)\n scheduleStatusReset()\n }\n }\n\n /**\n * Simple download using window.open (fallback)\n */\n const downloadWithWindowOpen = () => {\n try {\n setStatus('downloading')\n onDownloadStart?.()\n window.open(url, '_blank')\n\n // We can't really track success/failure with window.open\n // So just assume success after a short delay\n setTimeout(() => {\n setStatus('success')\n onDownloadComplete?.(filename || 'file')\n scheduleStatusReset()\n }, 500)\n } catch (error) {\n console.error('Download error:', error)\n setStatus('error')\n onDownloadError?.(error as Error)\n scheduleStatusReset()\n }\n }\n\n /**\n * Handle download click\n */\n const handleDownload = () => {\n if (status === 'downloading') return\n\n if (useFetch) {\n downloadWithFetch()\n } else {\n downloadWithWindowOpen()\n }\n }\n\n /**\n * Render status icon\n */\n const renderStatusIcon = () => {\n if (!showStatus) return null\n\n switch (status) {\n case 'downloading':\n return <Loader2 className=\"animate-spin\" />\n case 'success':\n return <CheckCircle2 className=\"text-green-600\" />\n case 'error':\n return <AlertCircle className=\"text-red-600\" />\n default:\n return <Download />\n }\n }\n\n return (\n <Button\n ref={ref}\n onClick={handleDownload}\n disabled={disabled || status === 'downloading'}\n className={cn(className)}\n {...props}\n >\n {renderStatusIcon()}\n {children}\n </Button>\n )\n }\n)\n\nDownloadButton.displayName = \"DownloadButton\"\n\nexport { DownloadButton }\n","'use client'\n\nimport * as React from 'react';\n\nimport {\n generateOgImageUrl, type GenerateOgImageUrlOptions, type OgImageUrlParams\n} from '../lib/og-image';\nimport { cn } from '../lib/utils';\n\nexport interface OgImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n /** OG Image parameters */\n params: OgImageUrlParams\n /** Generation options (baseUrl, useBase64) */\n options?: GenerateOgImageUrlOptions\n}\n\n/**\n * OgImage Component\n *\n * Renders an image using the OG Image API with auto-generated URL.\n *\n * @example\n * ```tsx\n * <OgImage\n * params={{ title: 'My Page', description: 'Description' }}\n * className=\"rounded-lg\"\n * />\n * ```\n */\nconst OgImage = React.forwardRef<HTMLImageElement, OgImageProps>(\n ({ params, options, className, alt, ...props }, ref) => {\n const src = React.useMemo(\n () => generateOgImageUrl(params, options),\n [params, options]\n )\n\n return (\n <img\n ref={ref}\n src={src}\n alt={alt || params.title}\n className={cn('w-full', className)}\n {...props}\n />\n )\n }\n)\nOgImage.displayName = 'OgImage'\n\nexport { OgImage }\n","\"use client\"\n\nimport { Toaster as Sonner } from 'sonner';\nimport { useResolvedTheme } from '../hooks/useResolvedTheme';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const theme = useResolvedTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n richColors\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","\"use client\"\n\nimport {\n AsYouType, CountryCode, getCountries, getCountryCallingCode, parsePhoneNumberFromString\n} from 'libphonenumber-js';\nimport { ChevronDown, Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from './button';\nimport { Input } from './input';\nimport { cn } from '../lib';\nimport {\n DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger\n} from './dropdown-menu';\n\n// Generate country flag emoji from country code\nconst getCountryFlag = (countryCode: CountryCode): string => {\n return countryCode\n .toUpperCase()\n .replace(/./g, char => String.fromCodePoint(char.charCodeAt(0) + 127397))\n}\n\n// Get country name from country code using browser's built-in Intl.DisplayNames\nconst getCountryName = (countryCode: CountryCode): string => {\n try {\n const displayNames = new Intl.DisplayNames(['en'], { type: 'region' })\n return displayNames.of(countryCode) || countryCode\n } catch {\n // Fallback for unsupported country codes\n return countryCode\n }\n}\n\n// Generate all countries from libphonenumber-js\nconst getAllCountries = () => {\n return getCountries().map(countryCode => ({\n code: countryCode,\n name: getCountryName(countryCode),\n flag: getCountryFlag(countryCode),\n dialCode: `+${getCountryCallingCode(countryCode)}`\n })).sort((a, b) => a.name.localeCompare(b.name))\n}\n\nconst COUNTRIES = getAllCountries()\n\nexport interface PhoneInputProps {\n value?: string\n onChange?: (value: string | undefined) => void\n defaultCountry?: CountryCode\n className?: string\n placeholder?: string\n disabled?: boolean\n}\n\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({\n className,\n value = '',\n onChange,\n defaultCountry = 'US',\n placeholder = \"Enter phone number\",\n disabled = false,\n ...props\n }, ref) => {\n const [selectedCountry, setSelectedCountry] = React.useState<CountryCode>(defaultCountry)\n const [inputValue, setInputValue] = React.useState('')\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false)\n const [searchQuery, setSearchQuery] = React.useState('')\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n\n // Find country data\n const currentCountry = COUNTRIES.find(c => c.code === selectedCountry) || COUNTRIES[0]!\n\n // Filter countries based on search query\n const filteredCountries = React.useMemo(() => {\n if (!searchQuery.trim()) return COUNTRIES\n\n const query = searchQuery.toLowerCase()\n return COUNTRIES.filter(country =>\n country.name.toLowerCase().includes(query) ||\n country.dialCode.includes(query) ||\n country.code.toLowerCase().includes(query)\n )\n }, [searchQuery])\n\n // Initialize input value from props\n React.useEffect(() => {\n if (value) {\n try {\n const phoneNumber = parsePhoneNumberFromString(value)\n if (phoneNumber) {\n setSelectedCountry(phoneNumber.country || defaultCountry)\n setInputValue(phoneNumber.nationalNumber)\n } else {\n setInputValue(value)\n }\n } catch {\n setInputValue(value)\n }\n }\n }, [value, defaultCountry])\n\n // Reset highlighted index when filtered countries change\n React.useEffect(() => {\n setHighlightedIndex(-1)\n }, [filteredCountries])\n\n // Reset search when dropdown closes\n React.useEffect(() => {\n if (!isDropdownOpen) {\n setSearchQuery('')\n setHighlightedIndex(-1)\n }\n }, [isDropdownOpen])\n\n // Handle country selection\n const handleCountrySelect = (country: typeof COUNTRIES[0]) => {\n setSelectedCountry(country.code)\n setIsDropdownOpen(false)\n setSearchQuery('')\n setHighlightedIndex(-1)\n\n // Format existing number for new country\n if (inputValue) {\n const formatter = new AsYouType(country.code)\n const formatted = formatter.input(inputValue)\n setInputValue(formatted)\n\n // Get E.164 format for onChange\n const phoneNumber = formatter.getNumber()\n onChange?.(phoneNumber?.number)\n }\n }\n\n // Handle keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!isDropdownOpen) return\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault()\n setHighlightedIndex(prev =>\n prev < filteredCountries.length - 1 ? prev + 1 : 0\n )\n break\n case 'ArrowUp':\n e.preventDefault()\n setHighlightedIndex(prev =>\n prev > 0 ? prev - 1 : filteredCountries.length - 1\n )\n break\n case 'Enter':\n e.preventDefault()\n if (highlightedIndex >= 0 && highlightedIndex < filteredCountries.length) {\n handleCountrySelect(filteredCountries[highlightedIndex]!)\n }\n break\n case 'Escape':\n e.preventDefault()\n setIsDropdownOpen(false)\n break\n }\n }\n\n // Handle input change\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target.value\n\n // Use AsYouType formatter for real-time formatting\n const formatter = new AsYouType(selectedCountry)\n const formatted = formatter.input(input)\n\n setInputValue(formatted)\n\n // Get the parsed phone number for validation and E.164 format\n const phoneNumber = formatter.getNumber()\n onChange?.(phoneNumber?.number)\n }\n\n // Handle paste events to extract phone numbers\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData('text')\n\n try {\n // Try to parse as international number first\n const phoneNumber = parsePhoneNumberFromString(pastedText)\n if (phoneNumber) {\n e.preventDefault()\n setSelectedCountry(phoneNumber.country || selectedCountry)\n setInputValue(phoneNumber.nationalNumber)\n onChange?.(phoneNumber.number)\n return\n }\n } catch {\n // Let default paste behavior handle it\n }\n }\n\n return (\n <div className={cn(\"relative flex\", className)} onKeyDown={handleKeyDown}>\n {/* Country Dropdown */}\n <DropdownMenu open={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-10 px-3 rounded-r-none border-r-0 flex items-center gap-2\"\n disabled={disabled}\n >\n <span className=\"text-base\">{currentCountry.flag}</span>\n <span className=\"text-sm font-mono\">{currentCountry.dialCode}</span>\n <ChevronDown className=\"h-3 w-3 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-80 max-h-80 p-0\">\n {/* Search Input */}\n <div className=\"p-2 border-b\">\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder=\"Search countries...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-8 h-8\"\n autoFocus\n />\n </div>\n </div>\n\n {/* Countries List */}\n <div className=\"max-h-60 overflow-y-auto\">\n {filteredCountries.length === 0 ? (\n <div className=\"p-4 text-sm text-muted-foreground text-center\">\n No countries found\n </div>\n ) : (\n filteredCountries.map((country, index) => (\n <DropdownMenuItem\n key={country.code}\n onClick={() => handleCountrySelect(country)}\n className={cn(\n \"flex items-center gap-3 px-3 py-2 cursor-pointer\",\n index === highlightedIndex && \"bg-accent\"\n )}\n >\n <span className=\"text-base\">{country.flag}</span>\n <span className=\"flex-1 text-sm\">{country.name}</span>\n <span className=\"text-sm font-mono text-muted-foreground\">\n {country.dialCode}\n </span>\n </DropdownMenuItem>\n ))\n )}\n </div>\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Phone Input */}\n <Input\n ref={ref}\n type=\"tel\"\n value={inputValue}\n onChange={handleInputChange}\n onPaste={handlePaste}\n placeholder={placeholder}\n disabled={disabled}\n className=\"rounded-l-none border-l-0 flex-1\"\n {...props}\n />\n </div>\n )\n }\n)\n\nPhoneInput.displayName = \"PhoneInput\"\n\nexport { PhoneInput }\n","\"use client\"\n\nimport { cva } from 'class-variance-authority';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib';\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className\n )}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \",\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Link>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Link> & {\n href?: string\n }\n>(({ href, children, ...props }, ref) => {\n if (href) {\n return (\n <NavigationMenuPrimitive.Link asChild ref={ref} {...props}>\n <a href={href}>{children}</a>\n </NavigationMenuPrimitive.Link>\n )\n }\n\n return (\n <NavigationMenuPrimitive.Link ref={ref} {...props}>\n {children}\n </NavigationMenuPrimitive.Link>\n )\n})\nNavigationMenuLink.displayName = \"NavigationMenuLink\"\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\"absolute top-full flex justify-center\")}\n style={{ left: 0, right: 0 }}\n >\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] overflow-hidden rounded-md border backdrop-blur-xl bg-popover/80 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-10 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n","\"use client\"\n\nimport { Check, ChevronRight, Circle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../lib';\nimport * as MenubarPrimitive from '@radix-ui/react-menubar';\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {\n return <MenubarPrimitive.Menu {...props} />\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group>) {\n return <MenubarPrimitive.Group {...props} />\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {\n return <MenubarPrimitive.Portal {...props} />\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {\n return <MenubarPrimitive.RadioGroup {...props} />\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {\n return <MenubarPrimitive.Sub data-slot=\"menubar-sub\" {...props} />\n}\n\nconst Menubar = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Root\n ref={ref}\n className={cn(\n \"flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm\",\n className\n )}\n {...props}\n />\n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n className\n )}\n {...props}\n />\n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenubarPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </MenubarPrimitive.SubTrigger>\n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-150 min-w-32 overflow-hidden rounded-md border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n <MenubarPrimitive.Portal>\n <MenubarPrimitive.Content\n ref={ref}\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n \"z-150 min-w-48 overflow-hidden rounded-md border bg-popover backdrop-blur-xl p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </MenubarPrimitive.Portal>\n )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {\n inset?: boolean\n href?: string\n key?: React.Key\n }\n>(({ className, inset, href, children, ...props }, ref) => {\n const classes = cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )\n\n if (href) {\n return (\n <MenubarPrimitive.Item asChild ref={ref} {...props}>\n <a href={href} className={classes}>\n {children}\n </a>\n </MenubarPrimitive.Item>\n )\n }\n\n return (\n <MenubarPrimitive.Item\n ref={ref}\n className={classes}\n {...props}\n >\n {children}\n </MenubarPrimitive.Item>\n )\n})\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem> & { key?: React.Key }\n>(({ className, children, checked, ...props }, ref) => (\n <MenubarPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem> & { key?: React.Key }\n>(({ className, children, ...props }, ref) => (\n <MenubarPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <Circle className=\"h-4 w-4 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <MenubarPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef<typeof MenubarPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <MenubarPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n}\n"]}
|