oraculo-ui 0.1.49 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/atoms/OraculoButton/OraculoButton.tsx","../src/atoms/OraculoSectionTitle/OraculoSectionTitle.tsx","../src/atoms/OraculoCarouselDots/OraculoCarouselDots.tsx","../src/atoms/OraculoGridGroup/OraculoGridGroup.tsx","../src/atoms/OraculoLogo/OraculoLogoMediosPago.tsx","../src/atoms/OraculoEvent/OraculoEventTitle.tsx","../src/atoms/OraculoEvent/OraculoEventStatusBadge.tsx","../src/atoms/OraculoEvent/OraculoEventStatus.tsx","../src/atoms/OraculoEvent/OraculoEventHeader.tsx","../src/atoms/OraculoEvent/OraculoEventLabel.tsx","../src/atoms/OraculoEvent/OraculoEventLeague.tsx","../src/atoms/OraculoEvent/OraculoEventScore.tsx","../src/atoms/OraculoEvent/OraculoEventTeamInfo.tsx","../src/molecules/OraculoCarousel/OraculoCarousel.tsx","../src/molecules/OraculoGameCard/OraculoGameCard.tsx","../src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx","../src/molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard.tsx","../src/molecules/OraculoGameSlide/OraculoGameSlide.tsx","../src/molecules/OraculoWelcomeBanner/OraculoWelcomeBanner.tsx","../src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx","../src/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx","../src/organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo.tsx","../src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx","../src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx","../src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx","../src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx","../src/organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas.tsx","../src/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.tsx","../src/organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana.tsx","../src/organisms/OraculoSeccionBanners/OraculoSeccionBanners.tsx","../src/organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago.tsx","../src/templates/landingRegistry.ts","../src/templates/OraculoPageLandingPreview.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./OraculoButton.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButton({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n \"orc-btn\",\r\n variant === \"secondary\"\r\n ? \"orc-btn--secondary\"\r\n : variant === \"tertiary\"\r\n ? \"orc-btn--tertiary\"\r\n : \"orc-btn--primary\",\r\n size ? `orc-btn--${size}` : \"\",\r\n fullWidth ? \"orc-btn--full\" : \"\",\r\n fullHeight ? \"orc-btn--fullHeight\" : \"\",\r\n isIconOnly ? \"orc-btn--iconOnly\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className=\"orc-btn__icon\">{leftIcon}</span>}\r\n {!isIconOnly && <span className=\"orc-btn__label\">{children}</span>}\r\n {rightIcon && <span className=\"orc-btn__icon\">{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoSectionTitle.css\";\r\n\r\nexport interface OraculoSectionTitleProps {\r\n title: string;\r\n iconUrl?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nexport default function OraculoSectionTitle({\r\n title,\r\n iconUrl,\r\n size = \"md\",\r\n className = \"\",\r\n}: OraculoSectionTitleProps) {\r\n const sizeClass = size ? `orc-section-title--${size}` : \"\";\r\n\r\n const wrapperClass = [\r\n \"orc-section-title\",\r\n sizeClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {iconUrl && (\r\n <img\r\n src={iconUrl}\r\n alt=\"\"\r\n className=\"orc-section-title__icon\"\r\n />\r\n )}\r\n <h2 className=\"orc-section-title__title\">{title}</h2>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoCarouselDots.css\";\r\n\r\nexport interface OraculoCarouselDotsProps {\r\n total: number;\r\n active: number;\r\n onSelect?: (index: number) => void;\r\n className?: string;\r\n}\r\n\r\nconst OraculoCarouselDots: React.FC<OraculoCarouselDotsProps> = ({\r\n total,\r\n active,\r\n onSelect,\r\n className = \"\",\r\n}) => {\r\n if (total <= 1) return null;\r\n\r\n const rootClass = [\"orc-dots\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={rootClass} role=\"tablist\">\r\n {Array.from({ length: total }).map((_, i) => (\r\n <span key={i} className=\"orc-dots__cell\">\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={i === active}\r\n aria-label={`Ir al slide ${i + 1}`}\r\n className={\r\n \"orc-dots__dot\" +\r\n (i === active ? \" orc-dots__dot--active\" : \"\")\r\n }\r\n onClick={() => onSelect?.(i)}\r\n />\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default OraculoCarouselDots;\r\n","import React, { ReactNode } from \"react\";\r\n\r\nexport interface OraculoGridGroupProps {\r\n /** Children inside the grid */\r\n children: ReactNode;\r\n\r\n /** Minimum width (in px) for auto-fit columns */\r\n minWidth?: number;\r\n\r\n /** Gap spacing: number → multiplier of 8px, or string → custom CSS value */\r\n spacing?: number | string;\r\n\r\n /** Horizontal alignment of grid items */\r\n justify?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n\r\n /** Custom grid template definition (overrides auto-fit/minmax behavior) */\r\n columns?: string | null;\r\n}\r\n\r\nexport default function OraculoGridGroup({\r\n children,\r\n minWidth = 32,\r\n spacing = 2,\r\n justify = \"stretch\",\r\n columns = null,\r\n}: OraculoGridGroupProps) {\r\n const gridTemplate = columns\r\n ? columns\r\n : `repeat(auto-fit, minmax(${minWidth}px, 1fr))`;\r\n\r\n const gap = typeof spacing === \"number\" ? `${spacing * 8}px` : spacing;\r\n\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplate,\r\n justifyItems: justify,\r\n gap,\r\n height: \"inherit\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\n\r\nexport type Logo = { src: string; alt: string };\r\n\r\nexport default function OraculoLogoMediosPago({ src, alt }: Logo) {\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: { xs: 80, md: 160 }, // 80 en móvil, 160 en desktop\r\n height: { xs: 48, md: 96 }, // 48 en móvil, 96 en desktop\r\n display: \"inline-block\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={src}\r\n alt={alt}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\ninterface OraculoEventTitleProps {\r\n title: string;\r\n subtitle?: string;\r\n}\r\n\r\nexport default function OraculoEventTitle({ title, subtitle }: OraculoEventTitleProps) {\r\n return (\r\n <div\r\n className=\"oli-font\"\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n color: \"#fff\",\r\n }}\r\n >\r\n <span\r\n style={{\r\n fontWeight: 700,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {title}\r\n </span>\r\n\r\n {subtitle && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"6px\",\r\n }}\r\n >\r\n <svg width=\"4\"height=\"4\"viewBox=\"0 0 5 5\"xmlns=\"http://www.w3.org/2000/svg\"style={{ flexShrink: 0 }}> <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"white\" /> </svg>\r\n <span\r\n style={{\r\n fontWeight: 400,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {subtitle}\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\nexport interface OraculoEventStatusBadgeProps {\r\n /** Text inside the badge */\r\n text: string;\r\n\r\n /** Background color of the badge */\r\n color?: string;\r\n\r\n /** Text color */\r\n textColor?: string;\r\n}\r\n\r\nexport default function OraculoEventStatusBadge({ text, color = \"#ff3b3b\", textColor = \"#fff\" } : OraculoEventStatusBadgeProps) {\r\n return (\r\n <span\r\n className=\"oli-font\"\r\n style={{\r\n backgroundColor: color,\r\n color: textColor,\r\n borderRadius: \"8px\",\r\n padding: \"4px 8px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n fontWeight: 700,\r\n width : '41px',\r\n height : '16px',\r\n textAlign: 'center',\r\n }}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventStatusBadge from \"./OraculoEventStatusBadge\";\r\n\r\nexport interface OraculoEventStatusProps {\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoEventStatus({ live, time } : OraculoEventStatusProps) {\r\n return (\r\n <div className=\"oli-font\" style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\r\n {live && <OraculoEventStatusBadge text=\"En vivo\" />}\r\n {time && <span style={{ fontSize: \"14px\", fontWeight: 400, lineHeight: '18px', paddingTop: '4px' }}>{time}</span>}\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventTitle from \"./OraculoEventTitle\";\r\nimport OraculoEventStatus from \"./OraculoEventStatus\";\r\n\r\nexport interface OraculoMatchHeaderProps {\r\n title: string;\r\n subtitle?: string;\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoMatchHeader({ title, subtitle, live = false, time = \"\" } : OraculoMatchHeaderProps) {\r\n return (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n color: '#FFFFFF'\r\n }}\r\n >\r\n <OraculoEventTitle title={title} subtitle={subtitle} />\r\n <OraculoEventStatus live={live} time={time} />\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLabel.module.css\";\r\ninterface OraculoEventLabelProps {\r\n text: string;\r\n}\r\nexport default function OraculoEventLabel({ text } : OraculoEventLabelProps) {\r\n return <span className={styles.label}>{text}</span>;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLeague.module.css\";\r\ninterface EventLeague {\r\n title: string;\r\n}\r\nexport default function OraculoEventLeague({ title } : EventLeague) {\r\n return (\r\n <div className={styles.container}>\r\n {title.toUpperCase()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventScore.module.css\";\r\n\r\nexport interface OraculoEventScoreProps {\r\n text: string | number;\r\n\r\n name?: string;\r\n\r\n size?: \"normal\" | \"small\";\r\n}\r\n\r\nexport default function OraculoEventScore({ text, name, size = \"normal\" } : OraculoEventScoreProps) {\r\n return (\r\n <div\r\n className={`${styles.scoreWrapper} ${styles[size]}`}\r\n >\r\n <div className={`${styles.score} ${styles[size]}`}>{text}</div>\r\n {name && <span className={`${styles.name} ${styles[size]}`}>{name}</span>}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTeamInfo.module.css\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n logo: string;\r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, logo, size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n <img src={logo} alt={name} className={styles.logo} />\r\n <span className={styles.name}>{name}</span>\r\n </div>\r\n );\r\n}","// src/molecules/OraculoCarousel/OraculoCarousel.tsx\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useImperativeHandle,\r\n useRef,\r\n ReactNode,\r\n} from \"react\";\r\nimport {\r\n Splide as SplideRaw,\r\n SplideSlide as SplideSlideRaw,\r\n} from \"@splidejs/react-splide\";\r\n\r\nexport interface OraculoCarouselOptions {\r\n type?: string;\r\n perPage?: number;\r\n gap?: string;\r\n pagination?: boolean;\r\n arrows?: boolean;\r\n drag?: boolean;\r\n focus?: string | \"center\";\r\n autoWidth?: boolean;\r\n trimSpace?: boolean;\r\n rewind?: boolean;\r\n padding?: { left?: string; right?: string };\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface OraculoCarouselRef {\r\n next: () => void;\r\n prev: () => void;\r\n go: (index: number | string) => void;\r\n}\r\n\r\nexport interface OraculoCarouselProps<T = any> {\r\n items: T[];\r\n renderItem: (item: T, index: number) => ReactNode;\r\n perPage?: number;\r\n gap?: string;\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n options?: OraculoCarouselOptions;\r\n className?: string;\r\n useIndexAsKey?: boolean;\r\n onMove?: (info: {\r\n index: number;\r\n isStart: boolean;\r\n isEnd: boolean;\r\n total: number;\r\n }) => void;\r\n}\r\n\r\n// 👇 Aislamos tipos de Splide: internamente es any, hacia afuera tu API está tipada\r\nconst Splide: any = SplideRaw;\r\nconst SplideSlide: any = SplideSlideRaw;\r\n\r\nconst OraculoCarousel = forwardRef<OraculoCarouselRef, OraculoCarouselProps<any>>(\r\n (\r\n {\r\n items = [],\r\n renderItem,\r\n perPage = 1,\r\n gap = \"0px\",\r\n breakpoints,\r\n options = {},\r\n className = \"\",\r\n onMove,\r\n useIndexAsKey = false,\r\n },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\r\n\r\n useImperativeHandle(ref, () => ({\r\n next: () => splideRef.current?.go(\">\"),\r\n prev: () => splideRef.current?.go(\"<\"),\r\n go: (index) => splideRef.current?.go(index),\r\n }));\r\n\r\n const handleMove = useCallback(\r\n (splide: any) => {\r\n const index = splide.index;\r\n const total = splide.length;\r\n const currentPerPage = splide.options.perPage || 1;\r\n const isStart = index === 0;\r\n const isEnd = index >= total - currentPerPage;\r\n\r\n onMove?.({ index, isStart, isEnd, total });\r\n },\r\n [onMove]\r\n );\r\n\r\n const handleMounted = useCallback(\r\n (splide: any) => {\r\n handleMove(splide);\r\n },\r\n [handleMove]\r\n );\r\n\r\n const mergedOptions: OraculoCarouselOptions = {\r\n type: \"slide\",\r\n trimSpace: false,\r\n drag: true,\r\n pagination: false,\r\n arrows: false,\r\n rewind: false,\r\n focus: \"start\",\r\n autoWidth: false,\r\n perPage,\r\n gap,\r\n breakpoints,\r\n ...options,\r\n };\r\n\r\n return (\r\n <div className={className} style={{ width: \"100%\" }}>\r\n <Splide\r\n ref={splideRef}\r\n options={mergedOptions}\r\n onMove={handleMove}\r\n onMounted={handleMounted}\r\n >\r\n {items.map((item, index) => (\r\n <SplideSlide key={useIndexAsKey ? index : (item as any).id ?? index}>\r\n {renderItem(item, index)}\r\n </SplideSlide>\r\n ))}\r\n </Splide>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport default OraculoCarousel;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { OraculoButton } from \"../..\";\r\n\r\nexport interface OraculoGameCardProps {\r\n imageUrl: string;\r\n onClick?: () => void;\r\n size?: \"lg\" | \"sm\";\r\n fillParent?: boolean;\r\n}\r\n\r\nconst OraculoGameCard: React.FC<OraculoGameCardProps> = ({\r\n imageUrl,\r\n onClick,\r\n size = \"sm\",\r\n fillParent = false,\r\n}) => {\r\n const dim =\r\n size === \"lg\"\r\n ? { w: 280, h: 352 }\r\n : { w: 152, h: 168 };\r\n\r\n const handleButtonClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.stopPropagation();\r\n onClick?.();\r\n };\r\n\r\n const sizeStyles = fillParent\r\n ? { width: \"100%\", height: \"100%\" }\r\n : { width: `${dim.w}px`, height: `${dim.h}px` };\r\n\r\n return (\r\n <Box\r\n onClick={onClick}\r\n role=\"button\"\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"12px\",\r\n overflow: \"hidden\",\r\n boxSizing: \"border-box\",\r\n transition: \"transform .15s ease, box-shadow .15s ease\",\r\n ...sizeStyles,\r\n \"&:hover\": {\r\n transform: \"translateY(-2px)\",\r\n boxShadow: 8,\r\n cursor: \"pointer\",\r\n },\r\n \"&:hover .oraculo-game-card-overlay\": {\r\n opacity: 1,\r\n },\r\n \"&:hover .oraculo-game-card-btn\": {\r\n opacity: 1,\r\n transform: \"translate(-50%, -50%) scale(1)\",\r\n pointerEvents: \"auto\",\r\n },\r\n }}\r\n >\r\n <img\r\n src={imageUrl}\r\n alt=\"Juego de casino\"\r\n loading=\"lazy\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n borderRadius: \"inherit\",\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-overlay\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.45)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease\",\r\n pointerEvents: \"none\",\r\n zIndex: 1,\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-btn\"\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n zIndex: 2,\r\n transform: \"translate(-50%, -50%) scale(0.95)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease, transform .15s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <OraculoButton variant=\"primary\" size=\"md\" onClick={handleButtonClick}>\r\n JUGAR\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\ntype SizeOpt = { w: number; h: number; r?: number; font?: number };\r\n\r\nexport interface OraculoGameRankCardSizes {\r\n xs: SizeOpt;\r\n md: SizeOpt;\r\n}\r\n\r\nexport interface OraculoGameRankCardProps {\r\n imageUrl: string;\r\n orden?: number;\r\n onClick?: () => void;\r\n sizes?: OraculoGameRankCardSizes;\r\n}\r\n\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\r\n sizes = {\r\n xs: { w: 104, h: 112, r: 18, font: 48 },\r\n md: { w: 186, h: 264, r: 22.6, font: 64 },\r\n },\r\n}: OraculoGameRankCardProps) {\r\n const getVal = <K extends keyof SizeOpt>(k: K, def: number) => ({\r\n xs: sizes.xs?.[k] ?? def,\r\n md: sizes.md?.[k] ?? def,\r\n });\r\n\r\n const W = getVal(\"w\", 186);\r\n const H = getVal(\"h\", 264);\r\n const R = getVal(\"r\", 22.6);\r\n const F = getVal(\"font\", 64);\r\n\r\n const hang = {\r\n xs: Math.round((sizes.xs?.font ?? 64) * 0.28),\r\n md: Math.round((sizes.md?.font ?? 64) * 0.28),\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },\r\n aspectRatio: {\r\n xs: `${W.xs}/${H.xs}`,\r\n md: `${W.md}/${H.md}`,\r\n },\r\n borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },\r\n boxSizing: \"border-box\",\r\n overflow: \"visible\",\r\n pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\r\n />\r\n </Box>\r\n\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n position: \"absolute\",\r\n left: 8,\r\n bottom: {\r\n xs: `-${hang.xs}px`,\r\n md: `-${hang.md}px`,\r\n },\r\n fontFamily: \"secondary\",\r\n fontSize: {\r\n xs: `${F.xs}px`,\r\n md: `${F.md}px`,\r\n },\r\n lineHeight: 1,\r\n color: \"#3CC666\",\r\n WebkitTextStroke: \"1px #9ee86e\",\r\n zIndex: 3,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {orden}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\n\r\nexport interface OraculoLiveCasinoCardProps {\r\n logo: string;\r\n provider?: string;\r\n providerName?: string;\r\n machine?: number | string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst OraculoLiveCasinoCard: React.FC<OraculoLiveCasinoCardProps> = ({\r\n logo,\r\n provider,\r\n providerName,\r\n machine,\r\n onClick,\r\n}) => {\r\n return (\r\n <Box\r\n onClick={onClick}\r\n sx={{\r\n flex: \"0 0 auto\",\r\n position: \"relative\",\r\n borderRadius: \"20px\",\r\n overflow: \"hidden\",\r\n width: { xs: 100, md: 180 },\r\n height: { xs: 200, md: 380 },\r\n transition: \"width .50s ease, transform .28s ease\",\r\n willChange: \"width, transform\",\r\n cursor: \"pointer\",\r\n zIndex: 0,\r\n \"&:hover\": {\r\n zIndex: 2,\r\n width: { md: 260, xs: 110 },\r\n },\r\n \"&:hover .orc-live-provider-label\": {\r\n opacity: 1,\r\n },\r\n }}\r\n >\r\n {/* Imagen de fondo */}\r\n <Box\r\n component=\"img\"\r\n src={logo}\r\n alt={`Juego ${machine ?? \"\"}`}\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n\r\n {/* Label del provider */}\r\n <Box\r\n className=\"orc-live-provider-label\"\r\n sx={{\r\n position: \"absolute\",\r\n left: \"50%\",\r\n top: { xs: \"75%\", md: \"80%\" },\r\n transform: \"translate(-50%, -50%)\",\r\n zIndex: 3,\r\n opacity: 0,\r\n transition: \"opacity .25s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#fff\",\r\n fontWeight: 700,\r\n fontSize: { xs: 11, md: 14 },\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n {provider ?? providerName ?? \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoLiveCasinoCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: string;\r\n}\r\n\r\nexport interface OraculoGameSlideProps {\r\n items: OraculoGameSlideItem[];\r\n layout?: \"mosaic\" | \"grid\";\r\n onClick?: (item: OraculoGameSlideItem, index: number) => void;\r\n}\r\n\r\nconst GAP = 12; // px\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n}) => {\r\n // layout especial: 1 grande + hasta 4 pequeños\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\r\n const smalls = items.slice(1, 5);\r\n\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gridTemplateColumns: {\r\n xs: `184px`,\r\n md: `280px`,\r\n },\r\n gridAutoFlow: \"column\",\r\n gridAutoColumns: {\r\n xs: `104px`,\r\n md: `152px`,\r\n },\r\n columnGap: `${GAP}px`,\r\n rowGap: `${GAP}px`,\r\n alignItems: \"stretch\",\r\n justifyItems: \"stretch\",\r\n }}\r\n >\r\n {big && (\r\n <Box\r\n sx={{\r\n width: { xs: 184, md: 280 },\r\n height: { xs: 234, md: 352 },\r\n gridRow: \"1 / span 2\",\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n </Box>\r\n )}\r\n\r\n {smalls.map((it, index) => (\r\n <Box\r\n key={it.id}\r\n sx={{\r\n width: { xs: 104, md: 152 },\r\n height: { xs: 112, md: 168 },\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // layout grid 2x2\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: `repeat(2, 104px)`,\r\n md: `repeat(2, 152px)`,\r\n },\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gap: `${GAP}px`,\r\n gridAutoFlow: \"column\",\r\n }}\r\n >\r\n {items.map((it, index) => (\r\n <Box\r\n key={it.id ?? index}\r\n sx={{\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n );\r\n};\r\n\r\nexport default OraculoGameSlide;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoWelcomeBannerProps {\r\n title?: string;\r\n amount?: string; // ej: \"S/40\"\r\n subtitle?: string;\r\n buttonText?: string;\r\n onButtonClick?: () => void;\r\n backgroundImage?: string;\r\n alt?: string;\r\n className?: string;\r\n /** Tamaño en desktop: \"small\" (456x272) o \"large\" (618x346) */\r\n variant?: \"small\" | \"large\";\r\n}\r\n\r\nconst OraculoWelcomeBanner: React.FC<OraculoWelcomeBannerProps> = ({\r\n title,\r\n amount,\r\n subtitle,\r\n buttonText,\r\n onButtonClick,\r\n backgroundImage,\r\n alt,\r\n className = \"\",\r\n variant = \"small\",\r\n}) => {\r\n const symbol = amount ? amount.slice(0, 2) : \"\";\r\n const value = amount ? amount.slice(2) : \"\";\r\n const isLarge = variant === \"large\";\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: {\r\n xs: 328,\r\n lg: isLarge ? 618 : 456,\r\n },\r\n mx: \"auto\",\r\n }}\r\n >\r\n {backgroundImage && (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n aspectRatio: {\r\n xs: \"328 / 188\",\r\n lg: isLarge ? \"618 / 346\" : \"456 / 272\",\r\n },\r\n borderRadius: \"14px\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={backgroundImage}\r\n alt={alt ?? \"Fondo promocional\"}\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n objectPosition: {\r\n xs: \"50% 0%\",\r\n lg: \"45% 0%\",\r\n },\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n {/* Capa de contenido */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n color: \"#e7f8ff\",\r\n textAlign: \"center\",\r\n pl: \"14%\",\r\n pr: { xs: \"14%\", lg: \"15%\" },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxWidth: \"60%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* Título superior */}\r\n {title && (\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 12, lg: 20 },\r\n fontWeight: 400,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n )}\r\n\r\n {/* Monto */}\r\n {amount && (\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n fontFamily: '\"secondary\", sans-serif',\r\n lineHeight: { xs: 0.9, lg: 0.87 },\r\n m: \"4px 0\",\r\n background:\r\n \"linear-gradient(175deg, #EDC421 -12.56%, #FFFABF 17.99%, #EDC421 49.74%)\",\r\n WebkitBackgroundClip: \"text\",\r\n WebkitTextFillColor: \"transparent\",\r\n WebkitTextStroke: \"0.5px #fff8c1\",\r\n filter:\r\n \"drop-shadow(0px 4px 0px #8D4406) drop-shadow(0px 4px 4px rgba(28, 28, 28, 0.4))\",\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 35, lg: 48 }, mr: 0.5 }}\r\n >\r\n {symbol}\r\n </Box>\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 52, lg: 77 } }}\r\n >\r\n {value}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Subtítulo */}\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n pb: \"20px\",\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n\r\n {/* Botón */}\r\n {buttonText && (\r\n <OraculoButton onClick={onButtonClick}>\r\n {buttonText}\r\n </OraculoButton>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoWelcomeBanner;\r\n","import React from \"react\";\r\nimport \"../../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.css\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoClubOlimpoVisualProps {\r\n text: string;\r\n buttonLabel?: string;\r\n onClick?: () => void;\r\n\r\n // MOBILE\r\n imgAlt?: string;\r\n imgSrcMobile: string;\r\n\r\n // DESKTOP\r\n imgSrcDesktopBg?: string;\r\n imgSrcDesktopLogo?: string;\r\n}\r\n\r\nconst OraculoClubOlimpoVisual: React.FC<OraculoClubOlimpoVisualProps> = ({\r\n text,\r\n buttonLabel = \"Conoce más\",\r\n onClick,\r\n imgAlt = \"Club Olimpo\",\r\n imgSrcMobile,\r\n imgSrcDesktopBg,\r\n imgSrcDesktopLogo,\r\n}) => {\r\n return (\r\n <>\r\n {/* MOBILE */}\r\n <div className=\"orc-co-bgMobile\">\r\n <img\r\n src={imgSrcMobile}\r\n alt={imgAlt}\r\n className=\"orc-co-bgMobileImg\"\r\n />\r\n </div>\r\n\r\n {/* DESKTOP */}\r\n <div className=\"orc-co-bgDesktop\">\r\n {imgSrcDesktopBg && (\r\n <div className=\"orc-co-fillHost\">\r\n <img\r\n src={imgSrcDesktopBg}\r\n alt={`${imgAlt} fondo`}\r\n className=\"orc-co-bgDesktopImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n {imgSrcDesktopLogo && (\r\n <div className=\"orc-co-logo\">\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"orc-co-desktopContent\">\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </div>\r\n\r\n {/* MOBILE: barra inferior */}\r\n <div className=\"orc-co-bottom\">\r\n <p className=\"orc-co-caption\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default OraculoClubOlimpoVisual;\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventCombinadasCard.module.css\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { CombinadoEventProps, BetOffer} from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\n\r\nfunction processOutcome(event : any) {\r\n const apuestas = event.betoffers ?? [];\r\n const homeName = event.homeName;\r\n const awayName = event.awayName;\r\n\r\n const outcomes = apuestas.map((a : any) => {\r\n let best = a.outcomes[0];\r\n let value = \"\";\r\n\r\n let line = best?.line ? best.line / 1000 : \"\";\r\n \r\n if ([\"Más de\", \"Mas de\", \"Over\"].includes(best?.label)) {\r\n value = `Más de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n else if ([\"Menos de\", \"Menos\"].includes(best?.label)) {\r\n value = `Menos de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n \r\nelse if ([\"Sí\", \"No\"].includes(best?.label) ) {\r\n value = best?.label;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n}\r\n\r\n// ----- PRIORITY 3: DOUBLE CHANCE (1X, 12, X2) -----\r\nelse if ([\"1X\", \"12\", \"X2\"].includes(best?.label)) {\r\n \r\n if (best.label === \"1X\") {\r\n value = `${homeName} o Empate`;//event.participants?.[0]?.name || \r\n } else if (best.label === \"12\") {\r\n value = `${homeName} o ${awayName}`;\r\n } else if (best.label === \"X2\") {\r\n value = `${awayName} o Empate`;\r\n }\r\n\r\n}\r\n // ----- DEFAULT LOGIC -----\r\n else {\r\n if (best?.participant) value = best.participant;\r\n else value = best?.label ?? \"\";\r\n\r\n if (line !== \"\" && value === best.label) {\r\n value = `${best.label} ${line}`;\r\n }\r\n }\r\n\r\n return {\r\n id : best?.id ?? 0,\r\n value,\r\n label: a.criterion.label,\r\n odds: best?.odds ?? 0,\r\n bl: best?.label ?? 0,\r\n };\r\n });\r\n\r\n const total = outcomes.reduce((acc: any, o:any) => acc + o.odds, 0) / 1000;\r\n\r\n return {\r\n outcomes,\r\n total: total.toFixed(2),\r\n };\r\n}\r\nconst eventOutcomes = processOutcome(event)\r\n\r\n return (\r\n <div className={styles.card}>\r\n <div className={styles.combinadas}>\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n <OraculoSectionTitle \r\n title={event.name}\r\n iconUrl=\"/assets/img/home/Combinadas/pelota.png\"\r\n size=\"xs\" \r\n />\r\n <img src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].map((a :any, i : number) => {\r\n\r\n return (\r\n <div className={styles.apuestaItem} key={i}>\r\n <div className={styles.lineContainer}>\r\n <div className={styles.circle} />\r\n {i < eventOutcomes.outcomes.length - 1 && <div className={styles.line} />}\r\n </div>\r\n\r\n <div className={styles.apuestaText}>\r\n <strong>\r\n {a['value']}\r\n </strong>{\" \"}\r\n | {a['label']}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n <button onClick={() => console.log(eventOutcomes?.outcomes?.map((o : any) => o?.id) ?? []) } className={styles.cuotaTotal}>\r\n <span>\r\n Cuota total: <strong>{(((event as any)['combinadoTotal'] ?? 0 ) / 1000).toFixed(2)}</strong>\r\n </span>\r\n <img src=\"/assets/img/home/Combinadas/cuotaTotal.svg\" alt=\"cuota total\" />\r\n</button>\r\n </div>\r\n );\r\n}\r\n\r\n","import React from \"react\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\n\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,fondo = \"/assets/img/home/EnVivo/fondo.png\" } : EnVivoEventProps) {\r\n return (\r\n <div style={{\r\n backgroundImage: `url(${fondo})`,\r\n backgroundSize: \"cover\",\r\n height: '160px',\r\n width: '296px',\r\n padding: \"12px 16px\",\r\n borderRadius: \"16px\",\r\n }}>\r\n \r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoEventHeader\r\n title={event.path[0].name ?? ''}\r\n subtitle={event.group}\r\n live={true}\r\n time={liveData?.matchClock?.minute ?? ''}\r\n />\r\n\r\n <div style={{ padding: \"0 4px\" }}>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo\r\n name={event.homeName}\r\n logo=\"/assets/img/home/EnVivo/Juventus.png\"\r\n />\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EnVivo/Racing.png\" />\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1}>\r\n {(betOffers?.[0]?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n\r\n <OraculoGridGroup spacing={2}>\r\n {(betOffers?.[0]?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButton key={index} variant=\"primary\" disabled={item.odds == undefined} onClick={()=>{console.log(item.id);}} >\r\n {item.odds === undefined ? \"X\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButton>\r\n ))}\r\n </OraculoGridGroup>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventDate.module.css\";\r\n\r\ninterface OraculoEventDateProps {\r\n text: string;\r\n}\r\n\r\nexport default function OraculoEventDate({ text }: OraculoEventDateProps) {\r\n return <div className={`oli-font ${styles.date}`}>{text}</div>;\r\n}","import React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\nimport OraculoEventDate from \"../../atoms/OraculoEvent/OraculoEventDate\";\r\n\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\n\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventSemanaCard({event} : SemanaEventProps ) {\r\nfunction formatDate(dateString : string): string {\r\n const date = new Date(dateString);\r\n\r\n const dayShort = date.toLocaleDateString(\"es-ES\", {\r\n weekday: \"short\"\r\n }).toUpperCase();\r\n\r\n const day = date.getDate().toString().padStart(2, \"0\");\r\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n let time = date.toLocaleTimeString(\"es-PE\", {\r\n hour: \"numeric\",\r\n minute: \"2-digit\",\r\n hour12: true\r\n }).toUpperCase();\r\n\r\n // Remove dots from A. M. / P. M.\r\n time = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n return `${dayShort} ${day}/${month} | ${time}`;\r\n}\r\n\r\n return (\r\n <div className={styles.cardContainer}>\r\n <OraculoEventLeague title={event.group ?? ''} />\r\n <div className={styles.cardBackground} >\r\n \r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap> \r\n \r\n <OraculoGridGroup spacing={1} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EventoSemana/Flamengo.png\" size=\"compact\"\r\n />\r\n <OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n <OraculoEventTeamInfo name={event.homeName} logo=\"/assets/img/home/EventoSemana/RealMadrid.png\" size=\"compact\" />\r\n </OraculoGridGroup>\r\n\r\n <OraculoEventDate text={formatDate(event.start)} />\r\n\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n \r\n <div className={styles.jugadas}>\r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{console.log(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n ))}\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n \r\n );\r\n}","import { useRef, useState } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionDestacados({\r\n items,\r\n title = \"Destacados\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: OraculoSeccionDestacadosProps) {\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/promociones\";\r\n };\r\n\r\n const redirectToPromotion = (promotion?: string) => {\r\n if (!promotion) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const slug = encodeURIComponent(promotion);\r\n const url = `https://www.olimpo.bet/promociones/${slug}`;\r\n\r\n window.location.href = url;\r\n };\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <header\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 12,\r\n rowGap: 8,\r\n marginBottom: 16,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </header>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={3}\r\n gap=\"16px\"\r\n options={{ autoWidth: false }}\r\n breakpoints={{\r\n 768: { perPage: 1.15, focus: \"start\" },\r\n 1024: { perPage: 2.5, focus: \"start\" },\r\n }}\r\n renderItem={(item: OraculoSeccionDestacadosItem) => (\r\n <div\r\n key={`${item.title}-${item.image}`}\r\n style={{\r\n textAlign: \"center\",\r\n marginTop: 16,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => redirectToPromotion(item.promotion)} \r\n >\r\n <img\r\n // src={item.image}\r\n src={`https://olimpo.bet${item.image !== \"\" ? item.image : item.summary_image}`}\r\n alt={item.title}\r\n style={{\r\n width: \"100%\",\r\n // minHeight: \"150px\",\r\n // maxHeight: \"150px\",\r\n height: \"150px\",\r\n borderRadius: 8,\r\n display: \"block\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoGameRankCard from \"../../molecules/OraculoGameRankCard/OraculoGameRankCard\";\r\nimport { OraculoSeccionTopJuegosProps } from \"../../interfaces/oraculo/InterfaceTopJuegos\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nexport default function OraculoSeccionTopJuegos({\r\n items,\r\n title = \"Top Juegos\",\r\n iconUrl,\r\n onCardClick,\r\n}: OraculoSeccionTopJuegosProps) {\r\n\r\n const normalizedItems = useMemo(\r\n () =>\r\n items\r\n .map((item, index) => ({\r\n ...item,\r\n // si no viene orden, usamos el índice (1-based)\r\n orden: item.orden ?? index + 1,\r\n _originalIndex: index,\r\n }))\r\n .sort((a, b) => {\r\n if (a.orden != null && b.orden != null) return a.orden - b.orden;\r\n return a._originalIndex - b._originalIndex;\r\n }),\r\n [items]\r\n );\r\n\r\n return (\r\n <section style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: \"repeat(3, minmax(0, 1fr))\",\r\n md: \"repeat(6, minmax(0, 1fr))\",\r\n },\r\n gap: { xs: 1.5, md: 2 },\r\n justifyItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {normalizedItems.slice(0, 6).map((juego) => (\r\n <OraculoGameRankCard\r\n key={juego.machine}\r\n imageUrl={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={juego.orden}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego);\r\n } else {\r\n redirectToGameFromItem(juego);\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoLiveCasinoCard from \"../../molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard\";\r\nimport { OraculoSeccionCasinoEnVivoProps } from \"../../interfaces/oraculo/InterfaceCasinoEnVivo\";\r\nimport { OraculoGameItem } from \"../..\";\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Live\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino-en-vivo?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps> = ({\r\n items,\r\n title = \"Casino en vivo\",\r\n subtitle = \"Disfruta la emoción en tus juegos favoritos y gana en tiempo real.\",\r\n backgroundMobileUrl = \"\",\r\n backgroundDesktopUrl = \"\",\r\n onCardClick,\r\n onViewMore,\r\n className,\r\n}) => {\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n color: \"white\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Fondo */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundImage: {\r\n xs: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundMobileUrl}')\r\n `,\r\n md: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundDesktopUrl}')\r\n `,\r\n },\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n zIndex: 0,\r\n }}\r\n />\r\n\r\n {/* Contenido */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n zIndex: 1,\r\n maxWidth: 1200,\r\n height: { xs: \"450px\", md: \"550px\" },\r\n mx: \"auto\",\r\n px: { xs: 2.5, md: 6 },\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: { xs: \"center\", md: \"center\" },\r\n justifyContent: \"center\",\r\n gap: { xs: 0, md: 15 },\r\n textAlign: { xs: \"center\", md: \"left\" },\r\n }}\r\n >\r\n {/* Columna izquierda */}\r\n <Stack spacing={3} sx={{ maxWidth: { md: 280 } }}>\r\n <Typography\r\n variant=\"h4\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 24, md: 40 },\r\n WebkitTextStroke: \"0.5px rgba(255, 255, 255, .5)\",\r\n textShadow:\r\n \"0 0 2px rgba(255, 255, 255, .95),\" +\r\n \"0 0 4px rgba(255, 255, 255, .6),\" +\r\n \"0 1px 0 #898989\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 14, md: 18 },\r\n color: \"rgba(255,255,255,0.9)\",\r\n marginX: { xs: 4, md: 0 },\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n\r\n <Box sx={{ display: { xs: \"none\", md: \"block\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"md\"\r\n onClick={() => onViewMore?.()}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Stack>\r\n\r\n {/* Lista de tarjetas */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: { xs: 2, md: 3 },\r\n justifyContent: \"center\",\r\n overflowX: { xs: \"auto\", md: \"visible\" },\r\n py: { xs: 3, md: 0 },\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {(items ?? []).slice(0, 3).map((juego, idx) => (\r\n <OraculoLiveCasinoCard\r\n key={getGameId(juego, idx)}\r\n logo={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego, idx); // usa handler del host\r\n } else {\r\n redirectToGameFromItem(juego); // fallback: redirigir\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {/* Botón mobile */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"lg\"\r\n onClick={() => onViewMore?.()}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasinoEnVivo;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\n\r\ninterface CasinoSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Casino\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst buildCasinoSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): CasinoSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: CasinoSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps> = ({\r\n items,\r\n title = \"Casino\",\r\n iconUrl = \"/assets/img/home/Casino/diamante.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const slides = buildCasinoSlides(items, mosaicFirst, gridSize);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/casino\";\r\n };\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header tipo GridGroup 1fr auto auto */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0px\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasino;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\n\r\ninterface VirtualSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Virtuales\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/juegos-virtuales?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst buildVirtualSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): VirtualSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: VirtualSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps> = ({\r\n items,\r\n title = \"Virtuales\",\r\n iconUrl = \"/assets/img/home/Virtuales/virtuales.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const slides = buildVirtualSlides(items, mosaicFirst, gridSize);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/virtuales\";\r\n };\r\n\r\n return (\r\n <section >\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header (equivalente a tu GridGroup 1fr auto auto) */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n perMove: 1,\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) =>\r\n setNavState({ isStart, isEnd })\r\n }\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\n\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner, {\r\n // OraculoWelcomeBannerProps,\r\n} from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n // width: \"100vw\",\r\n position: \"relative\" as const,\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // marginLeft: \"-50vw\",\r\n // marginRight: \"-50vw\",\r\n py: 8,\r\n color: \"#fff\",\r\n backgroundImage: `\r\n linear-gradient(to bottom,#121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to left, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to right, #121212 0%, rgba(18,18,18,0) 10%),\r\n url(\"${bgUrl}\")\r\n `,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n});\r\n\r\nconst headlineBaseSx = {\r\n textAlign: \"center\" as const,\r\n lineHeight: 1.1,\r\n mb: 1.5,\r\n};\r\n\r\nconst hlTopSx = {\r\n display: \"inline-block\",\r\n fontWeight: 600,\r\n fontSize: 24,\r\n};\r\n\r\nconst hlBottomSx = {\r\n display: \"inline-block\",\r\n fontSize: 24,\r\n lineHeight: 1.1,\r\n WebkitTextStroke: \"0.3px rgba(255, 255, 255, .5)\",\r\n textShadow: `\r\n 0 0 2px rgba(255, 255, 255, .95),\r\n 0 0 6px rgba(255, 255, 255, .6),\r\n 0 1px 0 rgba(137, 137, 137, .85)\r\n `,\r\n};\r\n\r\nconst OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps> = ({\r\n headline,\r\n headline2,\r\n items,\r\n backgroundImageUrl,\r\n}) => {\r\n\r\n const hl1 = headline\r\n const hl2 = headline2\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n\r\n const bgUrl =\r\n backgroundImageUrl ?? \"\";\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n // --- MOBILE: Carrusel con dots ---\r\n if (isMobile) {\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n ...sectionSx,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box sx={headlineBaseSx}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box>\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap=\"12px\"\r\n breakpoints={{\r\n 480: {\r\n perPage: 1,\r\n gap: \"8px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n 768: {\r\n perPage: 1,\r\n gap: \"12px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n }}\r\n options={{\r\n autoWidth: false,\r\n }}\r\n renderItem={(it) => <OraculoWelcomeBanner {...it} onButtonClick={items[0].onButtonClick} />}\r\n onMove={({ index, isStart, isEnd }) => {\r\n setNavState({ isStart, isEnd });\r\n setActiveIndex(index);\r\n }}\r\n />\r\n\r\n {showDots && (\r\n <OraculoCarouselDots\r\n total={items.length}\r\n active={activeIndex}\r\n onSelect={(i) => {\r\n setActiveIndex(i);\r\n carouselRef.current?.go(i);\r\n }}\r\n />\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n }\r\n\r\n // --- DESKTOP ---\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: 5,\r\n px: 2,\r\n display: \"grid\",\r\n gridTemplateColumns: \"200px auto\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n minHeight: \"100%\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n ...headlineBaseSx,\r\n textAlign: \"left\",\r\n mb: 0,\r\n }}\r\n >\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n gap: 4,\r\n }}\r\n >\r\n {items.map((it, idx) => (\r\n <OraculoWelcomeBanner\r\n key={idx}\r\n onButtonClick={it.onButtonClick}\r\n {...it}\r\n />\r\n ))}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionBonoBienvenida;\r\n","import React, { useLayoutEffect, useRef } from \"react\";\r\nimport \"./OraculoSeccionClubOlimpo.css\";\r\nimport OraculoClubOlimpoVisual from \"../../molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual\";\r\nimport { OraculoSeccionClubOlimpoItem } from \"../../interfaces/oraculo/InterfaceClubOlimpo\";\r\n\r\nexport interface OraculoSeccionClubOlimpoItems {\r\n className?: string;\r\n /** Si true, hace el efecto full-bleed (100vw centrado) */\r\n fullBleed?: boolean;\r\n /** Lista de variantes (puedes pasar 1 o varias). */\r\n items: OraculoSeccionClubOlimpoItem;\r\n /** Índice del item a mostrar si pasas varios. */\r\n selectedIndex?: number;\r\n /** aria-label de la sección (fallback al imgAlt del item seleccionado). */\r\n ariaLabel?: string;\r\n}\r\n\r\nconst OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems> = ({\r\n className = \"\",\r\n fullBleed = true,\r\n items,\r\n selectedIndex = 0,\r\n ariaLabel,\r\n}) => {\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const bottomRef = useRef<HTMLDivElement | null>(null);\r\n\r\n if (!items ) return null;\r\n\r\n const onClick = () => {\r\n window.location.href = \"https://www.olimpo.bet/conoce-club-olimpo\";\r\n };\r\n\r\n const item = Array.isArray(items) \r\n ? items[selectedIndex]\r\n : items;\r\n\r\n useLayoutEffect(() => {\r\n if (!rootRef.current || !bottomRef.current) return;\r\n if (typeof ResizeObserver === \"undefined\") return;\r\n\r\n const root = rootRef.current;\r\n const bottom = bottomRef.current;\r\n\r\n const update = () => {\r\n root.style.setProperty(\r\n \"--orc-co-bottomH\",\r\n `${bottom.offsetHeight + 16}px`\r\n );\r\n };\r\n\r\n const ro = new ResizeObserver(update);\r\n ro.observe(bottom);\r\n update();\r\n\r\n return () => ro.disconnect();\r\n }, []);\r\n\r\n const rootClass = [\r\n \"orc-co-wrap\",\r\n fullBleed ? \"orc-co-fullBleed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <section\r\n ref={rootRef}\r\n className={rootClass}\r\n aria-label={ariaLabel || item.imgAlt || \"Club Olimpo\"}\r\n >\r\n <div ref={bottomRef}>\r\n <OraculoClubOlimpoVisual\r\n text={item.text}\r\n // onClick={item.onClick}\r\n onClick={onClick}\r\n imgAlt={item.imgAlt}\r\n imgSrcMobile={item.imgMobile}\r\n imgSrcDesktopBg={item.imgDesktopBg}\r\n imgSrcDesktopLogo={item.imgDesktopLogo}\r\n />\r\n </div>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionClubOlimpo;\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventCombinadasCard from \"../../molecules/OraculoEventCard/OraculoEventCombinadasCard\";\r\nimport styles from \"./OraculoSeccionEventoCombinadas.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\nconst [events, setEvents] = useState([]);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n function mergeEventOffers(eventos:any, apuestas : any, prePackCoupons : any) {\r\n const results : any = [] ;\r\n\r\n for (const coupon of prePackCoupons) {\r\n // Build outcome set only for this coupon\r\n const usedOutcomeIds = getUsedOutcomeIds([coupon]);\r\n\r\n // Filter apuestas only using this coupon’s outcomes\r\n const apuestasByEvent = apuestas.reduce((acc:any, a:any) => {\r\n if (!acc[a.eventId]) acc[a.eventId] = [];\r\n\r\n const filteredOutcomes = a.outcomes.filter((o:any) =>\r\n usedOutcomeIds.has(o.id)\r\n );\r\n\r\n if (filteredOutcomes.length > 0) {\r\n acc[a.eventId].push({\r\n ...a,\r\n outcomes: filteredOutcomes\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n const reqs = extractRequirements(coupon);\r\n\r\n // Now create duplicated event\r\n eventos.forEach((evento : any) => {\r\n if (evento.id !== coupon.prePackCouponRows[0].eventId) return;\r\n\r\n const eventOutcomeSet = usedOutcomeIds;\r\n\r\n let combinadoTotal = null;\r\n for (const r of reqs) {\r\n const fullMatch =\r\n [...r.requiredOutcomeIds].every(id => eventOutcomeSet.has(id));\r\n\r\n if (fullMatch) {\r\n combinadoTotal = r.decimal;\r\n break;\r\n }\r\n }\r\n\r\n results.push({\r\n ...evento,\r\n combinadoTotal,\r\n betoffers: apuestasByEvent[evento.id] || [],\r\n couponId: coupon.id // optional for tracking\r\n });\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nfunction extractRequirements(coupon : any) {\r\n const reqs = [];\r\n\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n const requiredOutcomeIds = new Set();\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => requiredOutcomeIds.add(o.id));\r\n });\r\n\r\n reqs.push({\r\n requiredOutcomeIds,\r\n decimal: row.odds.decimal\r\n });\r\n }\r\n }\r\n\r\n return reqs;\r\n}\r\n\r\nfunction getUsedOutcomeIds(prePackCoupons : any) {\r\n const allIds = new Set();\r\n\r\n for (const coupon of prePackCoupons) {\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n // Extract outcomes inside nested groups\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => allIds.add(o.id));\r\n });\r\n }\r\n\r\n if (row.type === \"SIMPLE\" && row.outcome) {\r\n allIds.add(row.outcome.id);\r\n }\r\n }\r\n }\r\n return allIds;\r\n}\r\n\r\nasync function loadDataEventSpecial() {\r\n try {\r\n\r\n const groupId = items?.group?.groups?.[0]?.id;\r\n if (!groupId) {\r\n console.error(\"Could not extract group ID\");\r\n return;\r\n }\r\n\r\n const SPECIALS_URL = `https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/prepackcoupon/eventgroup/${groupId}.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764283566783&prePackCouponTags=CUSTOM`;\r\n\r\n const response = await fetch(SPECIALS_URL);\r\n const data = await response.json();\r\n setEvents(\r\n mergeEventOffers(data.events, data.betOffers, data.prePackCoupons )\r\n );\r\n } catch (e) {\r\n console.error(\"loadDataEventSpecial error:\", e);\r\n }\r\n}\r\n useEffect(() => {\r\n if (items ) {\r\n loadDataEventSpecial();\r\n }\r\n}, [items]);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto auto\" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div className={styles.controls}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events}\r\n perPage={3.72}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n useIndexAsKey\r\n breakpoints={{\r\n 768: { perPage: 1.2, gap: \"12px\", padding: { left: \"0px\", right: \"0px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventCombinadasCard event={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventEnVivoCard from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCard\";\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n console.log('wefwef', items)\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto auto\" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items?.events?.filter((ev:any) => ev.event.sport === \"FOOTBALL\").sort((a:any, b:any) => new Date(b.event.start).getTime() - new Date(a.event.start).getTime()) ?? []}\r\n perPage={3.395}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 768: { perPage: 1, gap: \"8px\", focus: \"center\", padding: { left: \"16px\", right: \"16px\" }, }, \r\n 1024: { perPage: 2.5, gap: \"10px\", padding: { right: \"16px\" } },\r\n }}\r\n renderItem={(p) => <OraculoEventEnVivoCard {...p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoSemana({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n const now = new Date(); // current date/time\r\n const startTime = now.toISOString(); // now → ISO format\r\n\r\n const end = new Date(now);\r\n end.setDate(end.getDate() + 7); // add 7 days\r\n const endTime = end.toISOString();\r\n const WEEK_EVENTS_URL = `https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1763653337357&startTime=${startTime}&endTime=${endTime}&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions`\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\nconst [events, setEvents] = useState([]);\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadDataWeekEvent() {\r\n try {\r\n const eventIds = items.events.map((event: any) => event.event?.id);\r\n const idsQuery = eventIds.map((id:number) => `id=${id}`).join(\"&\");\r\n const baseUrl = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/betoffer/selected/combined_layout/event\";\r\n const finalUrl = `${baseUrl}/${eventIds[0]}?${idsQuery}&lang=es_PE&market=PE`;\r\n loadDataEvent(finalUrl)\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n async function loadDataEvent(url : string) {\r\n try {\r\n const response = await fetch(url);\r\n const data = await response.json();\r\n const eventsOnly = data.events.map((item:any) => item.event);\r\n const betOffersOnly = data.events.flatMap((item:any) => item.betOffers || []);\r\n setEvents(mergeEventOffersOutcome(eventsOnly, betOffersOnly)); \r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n \r\n function mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n const filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n const apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n if (!acc[b.eventId]) acc[b.eventId] = [];\r\n acc[b.eventId].push(b);\r\n return acc;\r\n }, {});\r\n\r\n return eventos\r\n .filter((evento : any) => apuestasByEvent[evento.id]) \r\n .map((evento: any) => ({\r\n ...evento,\r\n outcome: apuestasByEvent[evento.id],\r\n }));\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.events.length > 0) {\r\n loadDataWeekEvent();\r\n }\r\n}, [items]);\r\n\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <div className={styles.wrapper}>\r\n\r\n <div className={styles.container}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoSectionTitle title=\"Eventos de la semana\" />\r\n <div className={styles.buttonWrapper}>\r\n <OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n </div>\r\n </Stack>\r\n </div>\r\n\r\n <div style={{ minWidth: 0 }}>\r\n\r\n \r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events}\r\n perPage={3.5}\r\n gap=\"16px\"\r\n options={{ autoWidth: true }}\r\n breakpoints={{\r\n 1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventSemanaCard event ={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nconst DEFAULT_BACKGROUNDS = [\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n];\r\n\r\nconst redirectUrl = (url: String) => `${window.location.origin}${url}`;\r\n\r\nconst DEFAULT_ITEMS: OraculoBannerItem[] = [\r\n {\r\n id: 1,\r\n label: \"APUESTAS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon1.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/#home\"),\r\n },\r\n {\r\n id: 2,\r\n label: \"EXPLORAR\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon2.svg\",\r\n onclick: () => console.log(\"EXPLORAR\"),\r\n },\r\n {\r\n id: 3,\r\n label: \"TOP JUEGOS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon3.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/casino\"),\r\n },\r\n {\r\n id: 4,\r\n label: \"MISIONES\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon4.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/misiones\"),\r\n },\r\n];\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds = DEFAULT_BACKGROUNDS,\r\n items = DEFAULT_ITEMS,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n\r\n const totalDots = backgrounds.length || 1;\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n overflow: \"visible\",\r\n // pb: { xs: 7, sm: 8 },\r\n }}\r\n >\r\n {/* Carrusel de backgrounds */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n borderRadius: 0,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoCarousel\r\n items={backgrounds}\r\n perPage={1}\r\n gap=\"0px\"\r\n options={{\r\n type: \"loop\",\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n }}\r\n onMove={({ index }) => setActiveDot(index)}\r\n renderItem={(bg) => (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n }}\r\n >\r\n <Box\r\n component=\"picture\"\r\n sx={{ position: \"absolute\", inset: 0, lineHeight: 0 }}\r\n >\r\n <source\r\n srcSet={bg.desktopSrc}\r\n media=\"(min-width:800px)\"\r\n />\r\n <source\r\n srcSet={bg.mobileSrc}\r\n media=\"(max-width:799px)\"\r\n />\r\n <Box\r\n component=\"img\"\r\n src={bg.fallbackSrc ?? bg.desktopSrc}\r\n alt=\"\"\r\n aria-hidden\r\n loading=\"lazy\"\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n pointerEvents: \"none\",\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n top: \"40%\",\r\n background:\r\n \"linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(18,18,18,0.85) 80%, #121212 100%)\",\r\n },\r\n }}\r\n />\r\n\r\n </Box>\r\n )}\r\n />\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 72,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n zIndex: 2,\r\n }}\r\n >\r\n <OraculoCarouselDots total={totalDots} active={activeDot} />\r\n </Box>\r\n </Box>\r\n\r\n {/* Dock de items */}\r\n {/* Dock de items */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n bottom: { xs: 10, sm: 10 },\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: { xs: \"92%\", sm: \"88%\", md: \"80%\" },\r\n maxWidth: 900,\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n py: { xs: 0.8, md: 1.2 },\r\n px: { xs: 1.5, md: 2 },\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n boxShadow: \"0 10px 24px rgba(0,0,0,.35)\",\r\n zIndex: 3,\r\n }}\r\n >\r\n {items.map((item: OraculoBannerItem) => (\r\n <Box\r\n key={item.id}\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" }, // 👈 icono arriba en mobile, en fila en desktop\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: { xs: 0.5, md: 1 }, // espacio icono-texto\r\n color: \"#FFFFFF\",\r\n minWidth: 0,\r\n cursor: item.onclick ? \"pointer\" : \"default\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n onClick={() => item.onclick?.()}\r\n >\r\n {item.icon && (\r\n <Box\r\n component=\"img\"\r\n src={item.icon}\r\n alt={item.label || `icon-${item.id}`}\r\n sx={{\r\n width: { xs: 20, sm: 22, md: 24 },\r\n height: { xs: 20, sm: 22, md: 24 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 10, sm: 11, md: 12 },\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: \"center\", // en mobile queda centrado bajo el icono\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoLogoMediosPago from \"../../atoms/OraculoLogo/OraculoLogoMediosPago\";\r\n\r\ntype LogoType = {\r\n src: string;\r\n alt: string;\r\n};\r\n\r\ntype Props = {\r\n title?: string;\r\n rows?: LogoType[][];\r\n};\r\n\r\nconst DEFAULT_ROWS: LogoType[][] = [\r\n [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/IBK.svg\", alt: \"Interbank\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/Yape.svg\", alt: \"Yape\" },\r\n ],\r\n [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/tupay.svg\", alt: \"Tupay\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/monnet.svg\", alt: \"Monnet\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/niubiz.svg\", alt: \"Niubiz\" },\r\n ],\r\n];\r\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n rows = DEFAULT_ROWS,\r\n}: Props) {\r\n // aplanado para la grilla\r\n const flat = rows.flat();\r\n\r\n return (\r\n <Box component=\"section\" aria-labelledby=\"mp-title\" sx={{ color: \"#fff\" }}>\r\n <Typography\r\n id=\"mp-title\"\r\n variant=\"h6\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 20, md: 32 },\r\n textAlign: \"center\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n {/* underbar con gradiente, sin CSS */}\r\n <Box\r\n sx={{\r\n width: \"288px\",\r\n height: \"2px\",\r\n mx: \"auto\",\r\n mb: 3,\r\n opacity: 0.95,\r\n filter: \"blur(0.2px)\",\r\n background:\r\n \"linear-gradient(90deg, rgba(0,0,0,0) 0%, #1dd75b 18%, #23d46b 50%, #1dd75b 82%, rgba(0,0,0,0) 100%)\",\r\n }}\r\n />\r\n\r\n {/* móvil: usa tus filas originales */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n {rows.map((r, i) => (\r\n <Stack\r\n key={i}\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={2.5} // ~20px\r\n flexWrap=\"wrap\"\r\n >\r\n {r.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Stack>\r\n ))}\r\n </Box>\r\n\r\n {/* desktop: grilla auto-fit */}\r\n <Box\r\n sx={{\r\n mt: 3,\r\n display: { xs: \"none\", md: \"grid\" },\r\n gap: { xs: 2.5, md: 2.75 },\r\n justifyItems: \"center\",\r\n alignItems: \"center\",\r\n gridTemplateColumns: { md: \"repeat(auto-fit, 160px)\"},\r\n justifyContent: { md: \"center\" },\r\n }}\r\n >\r\n {flat.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Box>\r\n\r\n </Box>\r\n );\r\n}\r\n","import OraculoSeccionBonoBienvenida from \"../organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida\";\r\nimport OraculoSeccionTopJuegos from \"../organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos\";\r\nimport OraculoSeccionCasino from \"../organisms/OraculoSeccionCasino/OraculoSeccionCasino\";\r\nimport OraculoSeccionCasinoEnVivo from \"../organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo\";\r\nimport OraculoSeccionVirtuales from \"../organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales\";\r\nimport OraculoSeccionClubOlimpo from \"../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo\";\r\nimport OraculoSeccionDestacados from \"../organisms/OraculoSeccionDestacados/OraculoSeccionDestacados\";\r\nimport OraculoSeccionBanners from \"../organisms/OraculoSeccionBanners/OraculoSeccionBanners\";\r\nimport OraculoSeccionMediosPago from \"../organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago\";\r\nimport OraculoSeccionEventoCombinadas from \"../organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas\";\r\nimport OraculoSeccionEventoEnVivo from \"../organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo\";\r\nimport OraculoSeccionEventoSemana from \"../organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana\";\r\n\r\nimport React from \"react\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\nexport const Landing: LandingComponentMap = {\r\n OraculoSeccionDestacados,\r\n OraculoSeccionTopJuegos,\r\n OraculoSeccionCasinoEnVivo,\r\n OraculoSeccionCasino,\r\n OraculoSeccionVirtuales,\r\n OraculoSeccionClubOlimpo,\r\n OraculoSeccionBonoBienvenida,\r\n OraculoSeccionBanners,\r\n OraculoSeccionMediosPago,\r\n OraculoSeccionEventoEnVivo,\r\n OraculoSeccionEventoSemana,\r\n OraculoSeccionEventoCombinadas,\r\n};","\"use client\";\r\nimport React, { useEffect, useState, useMemo } from \"react\";\r\nimport { Container, Stack } from \"@mui/material\";\r\nimport { doc, onSnapshot, Firestore } from \"firebase/firestore\";\r\n// import \"@splidejs/react-splide/css\";\r\n\r\nimport { Landing } from \"./landingRegistry\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\n// Es componente React si es función o componente objeto (MUI, etc.)\r\nconst isComponent = (val: any) =>\r\n typeof val === \"function\" ||\r\n (val && typeof val === \"object\" && \"$$typeof\" in val);\r\n\r\n// En oraculo-ui los organismos de landing se llaman OraculoSeccionXXX\r\nconst isSectionName = (key: string) => /^OraculoSeccion[A-Z]/.test(key);\r\n\r\nexport const LandingComponents: LandingComponentMap = Object.fromEntries(\r\n Object.entries(Landing).filter(\r\n ([key, val]) => isSectionName(key) && isComponent(val)\r\n )\r\n) as LandingComponentMap;\r\n\r\n// Section item model mirrors Firestore persisted structure\r\nexport type OraculoPageLandingPreviewSection = {\r\n id: number;\r\n title: string;\r\n componentKey: string;\r\n visible: boolean;\r\n order: number;\r\n props?: Record<string, unknown>;\r\n apiUrl?: string;\r\n dataMode?: \"url\" | \"manual\";\r\n variableName?: string;\r\n manualItems?: { fields: { name: string; type: string; value: string }[] }[];\r\n variableName2?: string;\r\n manualItems2?: { fields: { name: string; type: string; value: string }[] }[];\r\n manualScalarFields?: { name: string; type: string; value: string }[];\r\n apiMethod?: \"GET\" | \"POST\";\r\n apiParams?: { id: string; key: string; value: string }[];\r\n};\r\n\r\n/** Payload bruto obtenido por fetch o construido manualmente */\r\ntype SectionPayload =\r\n | Record<string, unknown>\r\n | Array<unknown>\r\n | null\r\n | undefined;\r\n\r\nexport interface OraculoPageLandingPreviewProps {\r\n /** Optional override: if provided, renders these sections instead of fetching Firestore */\r\n sectionsOverride?: OraculoPageLandingPreviewSection[];\r\n /** Firestore document id (default 'home') */\r\n docId?: string;\r\n /** Instancia de Firestore proporcionada por la app que consume el paquete */\r\n db: Firestore;\r\n}\r\n\r\nclass HttpError extends Error {\r\n constructor(\r\n public status: number,\r\n public url: string,\r\n public statusText: string\r\n ) {\r\n super(`HTTP ${status} ${statusText}`);\r\n this.name = \"HttpError\";\r\n }\r\n}\r\n\r\ntype ComponentMap = Record<\r\n string,\r\n React.ComponentType<Record<string, unknown>>\r\n>;\r\n\r\nconst OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n}) => {\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>(\r\n []\r\n );\r\n const [loading, setLoading] = useState(false);\r\n const [sectionDataMap, setSectionDataMap] = useState<\r\n Record<number, SectionPayload>\r\n >({});\r\n const [sectionLoadingMap, setSectionLoadingMap] = useState<\r\n Record<number, boolean>\r\n >({});\r\n const [sectionErrorMap, setSectionErrorMap] = useState<\r\n Record<number, string>\r\n >({});\r\n\r\n // Fetch sections from Firestore unless override provided\r\n useEffect(() => {\r\n if (sectionsOverride) return;\r\n if (!db) return; // seguridad extra por si alguien no pasa db\r\n\r\n setLoading(true);\r\n\r\n const arraydemo = [\r\n {\r\n apiMethod: \"GET\",\r\n order: 11,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoEnVivo\",\r\n id: 11,\r\n title: \"Envivo\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football/all/all/all/in-play.json?channel_id=3&channel_id=3&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n {\r\n apiMethod: \"GET\",\r\n order: 12,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoSemana\",\r\n id: 12,\r\n title: \"Evento semana\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764401676636&startTime=2025-11-29T06:00:00.000Z&endTime=2026-06-25T15:00:00.000Z&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n ];\r\n const unsubscribe = onSnapshot(\r\n doc(db, \"landings\", docId),\r\n (snap) => {\r\n try {\r\n let fetched: OraculoPageLandingPreviewSection[] = snap.exists()\r\n ? (snap.data()?.sections as OraculoPageLandingPreviewSection[]) ||\r\n []\r\n : [];\r\n fetched = fetched\r\n .slice()\r\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n .map((s, i) => ({ ...s, order: i + 1 }));\r\n // setSections([...new Set([...fetched, ...arraydemo])]);\r\n setSections(fetched);\r\n console.log(\"fetched: \", fetched);\r\n } catch (e) {\r\n console.error(\"Error procesando landings/\" + docId, e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n (error) => {\r\n console.error(\"Error escuchando landings/\" + docId, error);\r\n setLoading(false);\r\n }\r\n );\r\n\r\n return () => unsubscribe();\r\n }, [sectionsOverride, docId, db]);\r\n\r\n useEffect(() => {\r\n // preload all components used in sections\r\n const effectiveSections = sectionsOverride\r\n ? sectionsOverride.slice()\r\n : sections.slice();\r\n const toLoad = effectiveSections\r\n .map((s) => s.componentKey)\r\n .filter((key) => !!key);\r\n\r\n if (toLoad.length === 0) return;\r\n\r\n }, [sectionsOverride, sections]);\r\n\r\n const fetchSectionData = async (\r\n section: OraculoPageLandingPreviewSection\r\n ): Promise<SectionPayload> => {\r\n const rawUrl = (section.apiUrl || \"\").trim();\r\n if (!rawUrl) return undefined;\r\n\r\n const method = section.apiMethod || \"GET\";\r\n const params = section.apiParams || [];\r\n\r\n let url = rawUrl;\r\n let body: BodyInit | undefined;\r\n let headers: HeadersInit | undefined;\r\n\r\n if (method === \"GET\") {\r\n const u = new URL(\r\n rawUrl,\r\n typeof window == \"undefined\"\r\n ? \"http://localhost\"\r\n : window.location.origin\r\n );\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n u.searchParams.append(p.key, p.value);\r\n }\r\n url = u.toString();\r\n } else {\r\n // application/x-www-form-urlencoded\r\n const encoded = new URLSearchParams();\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n // el value se manda tal cual; URLSearchParams se encarga del %7B%22...%7D\r\n encoded.append(p.key, p.value);\r\n }\r\n body = encoded.toString();\r\n headers = {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n };\r\n }\r\n\r\n const res = await fetch(url, {\r\n method,\r\n headers,\r\n body,\r\n });\r\n\r\n if (!res.ok) throw new HttpError(res.status, url, res.statusText);\r\n return res.json();\r\n };\r\n\r\n // Use override if provided\r\n const effectiveSections = useMemo(\r\n () => (sectionsOverride ? sectionsOverride.slice() : sections.slice()),\r\n [sectionsOverride, sections]\r\n );\r\n\r\n const fetchedKeysRef = React.useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n const fetchables = effectiveSections\r\n .map((s) => ({ s, url: (s.apiUrl || \"\").trim() }))\r\n .filter(({ url }) => !!url);\r\n\r\n if (!fetchables.length) return;\r\n\r\n for (const { s, url } of fetchables) {\r\n const key = `${s.id}|${url}`;\r\n if (fetchedKeysRef.current.has(key)) continue;\r\n fetchedKeysRef.current.add(key);\r\n\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: true }));\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: \"\" }));\r\n\r\n (async () => {\r\n try {\r\n const json = await fetchSectionData(s);\r\n setSectionDataMap((prev) => ({ ...prev, [s.id]: json }));\r\n } catch (err: unknown) {\r\n let message = \"Error desconocido\";\r\n if (err instanceof HttpError) {\r\n message = `Error HTTP ${err.status} (${err.statusText}) en ${err.url}`;\r\n } else if (err instanceof SyntaxError) {\r\n message = \"Respuesta no es JSON válido\";\r\n } else if (err instanceof TypeError) {\r\n message = \"Fallo de red / CORS / conexión\";\r\n } else if (typeof err === \"string\") {\r\n message = err.toString();\r\n }\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: message }));\r\n } finally {\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: false }));\r\n }\r\n })();\r\n }\r\n }, [effectiveSections]);\r\n\r\n const orderedVisible = useMemo(\r\n () =>\r\n effectiveSections\r\n .filter((s) => s.visible)\r\n .sort((a, b) => a.order - b.order),\r\n [effectiveSections]\r\n );\r\n\r\n const toManualArray = (\r\n items:\r\n | { fields: { name: string; type: string; value: string }[] }[]\r\n | undefined\r\n ): Array<Record<string, unknown>> => {\r\n if (!Array.isArray(items)) return [];\r\n return items.map((it) => {\r\n const obj: Record<string, unknown> = {};\r\n for (const f of it.fields || []) {\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n obj[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n obj[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n obj[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else obj[f.name] = f.value;\r\n }\r\n return obj;\r\n });\r\n };\r\n\r\n const toManualScalars = (\r\n fields: { name: string; type: string; value: string }[] | undefined\r\n ): Record<string, unknown> => {\r\n const out: Record<string, unknown> = {};\r\n if (!Array.isArray(fields)) return out;\r\n for (const f of fields) {\r\n if (!f.name) continue;\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n // Si el valor está vacío o es inválido, NO agregar el prop (usar default del componente)\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n out[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n out[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n out[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else out[f.name] = f.value;\r\n }\r\n return out;\r\n };\r\n\r\n const mapPayloadToProps = (\r\n payload: SectionPayload,\r\n manual: { arr?: unknown[]; variableName?: string } | null,\r\n base?: Record<string, unknown>\r\n ): Record<string, unknown> => {\r\n const merged: Record<string, unknown> = base ? { ...base } : {};\r\n if (manual) {\r\n const name = (manual.variableName || \"items\").trim() || \"items\";\r\n merged[name] = manual.arr || [];\r\n return merged;\r\n }\r\n const pl = payload;\r\n const isArr = Array.isArray(pl);\r\n const obj =\r\n !isArr && typeof pl === \"object\" && pl !== null ? pl : undefined;\r\n const arrData =\r\n obj && Array.isArray((obj as any).lobby || (obj as any).items)\r\n ? (((obj as any).lobby || (obj as any).items) as unknown[])\r\n : undefined;\r\n const choose = (fallback: unknown[]) => (isArr ? pl : arrData || fallback);\r\n merged.items = choose(arrData || []);\r\n return merged;\r\n };\r\n\r\n const buildCompProps = (\r\n s: OraculoPageLandingPreviewSection\r\n ): Record<string, unknown> => {\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload: SectionPayload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n let compProps: Record<string, unknown> = s.props ? { ...s.props } : {};\r\n const scalars = toManualScalars(s.manualScalarFields);\r\n if (\r\n [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n ].includes(s.componentKey)\r\n ) {\r\n console.log(payload);\r\n return { items: payload, ...compProps, ...scalars };\r\n }\r\n\r\n compProps = { ...compProps, ...scalars };\r\n if (hasUrl) compProps = mapPayloadToProps(payload, null, compProps);\r\n else if (s.dataMode === \"manual\") {\r\n const arr = toManualArray(s.manualItems);\r\n compProps = mapPayloadToProps(\r\n null,\r\n { arr, variableName: s.variableName },\r\n compProps\r\n );\r\n\r\n // Si existe variableName2 y manualItems2, agregar también ese prop\r\n if (s.variableName2 && s.manualItems2) {\r\n const arr2 = toManualArray(s.manualItems2);\r\n const varName2 = (s.variableName2 || \"items2\").trim() || \"items2\";\r\n compProps[varName2] = arr2;\r\n }\r\n }\r\n\r\n return compProps;\r\n };\r\n\r\n const renderStatusBox = (\r\n key: number,\r\n type: \"loading\" | \"error\" | \"component\",\r\n message: string\r\n ) => {\r\n const colorMap: Record<string, string> = {\r\n loading: \"bg-blue-100 text-blue-800\",\r\n error: \"bg-red-100 text-red-800\",\r\n component: \"bg-yellow-100 text-yellow-800\",\r\n };\r\n return (\r\n <div key={key} className={`mx-4 p-4 rounded ${colorMap[type]}`}>\r\n {message}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSingleSection = (s: OraculoPageLandingPreviewSection) => {\r\n const rawKey = s.componentKey;\r\n\r\n // primero revisamos el mapa estático\r\n const Comp = LandingComponents[rawKey];\r\n\r\n if (!Comp) {\r\n console.warn(`No hay componente registrado para \"${rawKey}\"`);\r\n return renderStatusBox(\r\n s.id,\r\n \"component\",\r\n `Componente \"${rawKey}\" no encontrado`\r\n );\r\n }\r\n\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n const loadingSec = hasUrl ? !!sectionLoadingMap[s.id] : false;\r\n const errorSec = hasUrl ? sectionErrorMap[s.id] : \"\";\r\n\r\n if (hasUrl) {\r\n if (loadingSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"loading\",\r\n `Cargando datos desde ${s.apiUrl}...`\r\n );\r\n if (errorSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"error\",\r\n `Error cargando ${s.apiUrl}: ${errorSec}`\r\n );\r\n }\r\n\r\n const compProps = buildCompProps(s);\r\n\r\n return (\r\n <div\r\n key={s.id}\r\n style={{\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }}\r\n >\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return <div className=\"text-xs text-gray-400\">Cargando preview...</div>;\r\n if (!loading && !sectionsOverride && sections.length === 0)\r\n return (\r\n <div className=\"text-xs text-gray-500\">Sin secciones (Firestore)</div>\r\n );\r\n\r\n return (\r\n <Container\r\n className=\"oli-font\"\r\n maxWidth={false}\r\n disableGutters\r\n sx={{\r\n backgroundColor: \"#121212\",\r\n position: \"relative\",\r\n pb: 5,\r\n pt: 5,\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n <Stack direction=\"column\" spacing={8} useFlexGap>\r\n {orderedVisible.map(renderSingleSection)}\r\n </Stack>\r\n </Container>\r\n );\r\n};\r\n\r\nexport default OraculoPageLandingPreview;\r\n"],"names":["OraculoButton","children","onClick","href","target","rel","type","disabled","variant","size","fullWidth","fullHeight","className","ariaLabel","leftIcon","rightIcon","iconOnly","hasText","onlyOneIcon","isIconOnly","cls","content","jsxs","Fragment","jsx","ariaDisabled","MuiLink","e","OraculoSectionTitle","title","iconUrl","wrapperClass","OraculoCarouselDots","total","active","onSelect","rootClass","_","i","OraculoGridGroup","minWidth","spacing","justify","columns","gridTemplate","gap","OraculoLogoMediosPago","src","alt","Box","OraculoEventTitle","subtitle","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","styles","OraculoEventLeague","OraculoEventScore","name","OraculoEventTeamInfo","logo","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","ref","splideRef","useRef","useImperativeHandle","_a","index","handleMove","useCallback","splide","currentPerPage","isStart","isEnd","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","sizes","getVal","k","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","provider","providerName","machine","Typography","GAP","OraculoGameSlide","layout","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","outcomes","a","best","line","acc","o","eventOutcomes","Stack","OraculoEventEnVivoCard","liveData","betOffers","fondo","OraculoEventHeader","_e","_g","_f","_i","_h","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","useState","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","redirectToGameFromItem","game","machine_name","external_id","providerCode","machineCode","gameName","externalId","typeParam","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","b","juego","getGameId","g","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","end","OraculoSeccionCasino","onItemClick","slide","itm","buildVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","hl1","hl2","isMobile","useMediaQuery","showDots","sectionSx","activeIndex","setActiveIndex","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","apuestasByEvent","filteredOutcomes","reqs","extractRequirements","evento","eventOutcomeSet","combinadoTotal","r","id","row","requiredOutcomeIds","allIds","loadDataEventSpecial","groupId","SPECIALS_URL","data","useEffect","p","OraculoEventCombinadasCard","OraculoSeccionEventoEnVivo","ev","OraculoSeccionEventoSemana","now","loadDataWeekEvent","eventIds","idsQuery","finalUrl","loadDataEvent","eventsOnly","betOffersOnly","mergeEventOffersOutcome","DEFAULT_BACKGROUNDS","redirectUrl","DEFAULT_ITEMS","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","bg","DEFAULT_ROWS","OraculoSeccionMediosPago","rows","flat","l","Landing","isComponent","val","isSectionName","key","LandingComponents","HttpError","status","statusText","OraculoPageLandingPreview","sectionsOverride","docId","db","sections","setSections","loading","setLoading","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","unsubscribe","onSnapshot","doc","snap","fetched","s","error","fetchSectionData","section","rawUrl","method","params","body","headers","u","encoded","res","effectiveSections","fetchedKeysRef","React","fetchables","prev","json","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","base","merged","pl","isArr","arrData","choose","fallback","buildCompProps","hasUrl","compProps","scalars","arr","arr2","varName2","renderStatusBox","renderSingleSection","rawKey","Comp","loadingSec","errorSec","Container"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/atoms/OraculoButton/OraculoButton.tsx","../src/atoms/OraculoSectionTitle/OraculoSectionTitle.tsx","../src/atoms/OraculoCarouselDots/OraculoCarouselDots.tsx","../src/atoms/OraculoGridGroup/OraculoGridGroup.tsx","../src/atoms/OraculoLogo/OraculoLogoMediosPago.tsx","../src/atoms/OraculoEvent/OraculoEventTitle.tsx","../src/atoms/OraculoEvent/OraculoEventStatusBadge.tsx","../src/atoms/OraculoEvent/OraculoEventStatus.tsx","../src/atoms/OraculoEvent/OraculoEventHeader.tsx","../src/atoms/OraculoEvent/OraculoEventLabel.tsx","../src/atoms/OraculoEvent/OraculoEventLeague.tsx","../src/atoms/OraculoEvent/OraculoEventScore.tsx","../src/atoms/OraculoEvent/OraculoEventTeamInfo.tsx","../src/molecules/OraculoCarousel/OraculoCarousel.tsx","../src/molecules/OraculoGameCard/OraculoGameCard.tsx","../src/molecules/OraculoGameRankCard/OraculoGameRankCard.tsx","../src/molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard.tsx","../src/molecules/OraculoGameSlide/OraculoGameSlide.tsx","../src/molecules/OraculoWelcomeBanner/OraculoWelcomeBanner.tsx","../src/molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual.tsx","../src/atoms/OraculoEvent/KambiOpenBet.tsx","../src/molecules/OraculoEventCard/OraculoEventCombinadasCard.tsx","../src/atoms/OraculoButtonBet/OraculoButtonBet.tsx","../src/molecules/OraculoEventCard/OraculoEventEnVivoCard.tsx","../src/atoms/OraculoEvent/OraculoEventDate.tsx","../src/molecules/OraculoEventCard/OraculoEventSemanaCard.tsx","../src/organisms/OraculoSeccionDestacados/OraculoSeccionDestacados.tsx","../src/organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos.tsx","../src/organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo.tsx","../src/organisms/OraculoSeccionCasino/OraculoSeccionCasino.tsx","../src/organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales.tsx","../src/organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida.tsx","../src/organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.tsx","../src/organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas.tsx","../src/organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo.tsx","../src/organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana.tsx","../src/organisms/OraculoSeccionBanners/OraculoSeccionBanners.tsx","../src/organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago.tsx","../src/templates/landingRegistry.ts","../src/templates/OraculoPageLandingPreview.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./OraculoButton.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButton({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n \"orc-btn\",\r\n variant === \"secondary\"\r\n ? \"orc-btn--secondary\"\r\n : variant === \"tertiary\"\r\n ? \"orc-btn--tertiary\"\r\n : \"orc-btn--primary\",\r\n size ? `orc-btn--${size}` : \"\",\r\n fullWidth ? \"orc-btn--full\" : \"\",\r\n fullHeight ? \"orc-btn--fullHeight\" : \"\",\r\n isIconOnly ? \"orc-btn--iconOnly\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className=\"orc-btn__icon\">{leftIcon}</span>}\r\n {!isIconOnly && <span className=\"orc-btn__label\">{children}</span>}\r\n {rightIcon && <span className=\"orc-btn__icon\">{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoSectionTitle.css\";\r\n\r\nexport interface OraculoSectionTitleProps {\r\n title: string;\r\n iconUrl?: string;\r\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nexport default function OraculoSectionTitle({\r\n title,\r\n iconUrl,\r\n size = \"md\",\r\n className = \"\",\r\n}: OraculoSectionTitleProps) {\r\n const sizeClass = size ? `orc-section-title--${size}` : \"\";\r\n\r\n const wrapperClass = [\r\n \"orc-section-title\",\r\n sizeClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <div className={wrapperClass}>\r\n {iconUrl && (\r\n <img\r\n src={iconUrl}\r\n alt=\"\"\r\n className=\"orc-section-title__icon\"\r\n />\r\n )}\r\n <h2 className=\"orc-section-title__title\">{title}</h2>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"./OraculoCarouselDots.css\";\r\n\r\nexport interface OraculoCarouselDotsProps {\r\n total: number;\r\n active: number;\r\n onSelect?: (index: number) => void;\r\n className?: string;\r\n}\r\n\r\nconst OraculoCarouselDots: React.FC<OraculoCarouselDotsProps> = ({\r\n total,\r\n active,\r\n onSelect,\r\n className = \"\",\r\n}) => {\r\n if (total <= 1) return null;\r\n\r\n const rootClass = [\"orc-dots\", className].filter(Boolean).join(\" \");\r\n\r\n return (\r\n <div className={rootClass} role=\"tablist\">\r\n {Array.from({ length: total }).map((_, i) => (\r\n <span key={i} className=\"orc-dots__cell\">\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={i === active}\r\n aria-label={`Ir al slide ${i + 1}`}\r\n className={\r\n \"orc-dots__dot\" +\r\n (i === active ? \" orc-dots__dot--active\" : \"\")\r\n }\r\n onClick={() => onSelect?.(i)}\r\n />\r\n </span>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default OraculoCarouselDots;\r\n","import React, { ReactNode } from \"react\";\r\n\r\nexport interface OraculoGridGroupProps {\r\n /** Children inside the grid */\r\n children: ReactNode;\r\n\r\n /** Minimum width (in px) for auto-fit columns */\r\n minWidth?: number;\r\n\r\n /** Gap spacing: number → multiplier of 8px, or string → custom CSS value */\r\n spacing?: number | string;\r\n\r\n /** Horizontal alignment of grid items */\r\n justify?: \"start\" | \"center\" | \"end\" | \"stretch\";\r\n\r\n /** Custom grid template definition (overrides auto-fit/minmax behavior) */\r\n columns?: string | null;\r\n}\r\n\r\nexport default function OraculoGridGroup({\r\n children,\r\n minWidth = 32,\r\n spacing = 2,\r\n justify = \"stretch\",\r\n columns = null,\r\n}: OraculoGridGroupProps) {\r\n const gridTemplate = columns\r\n ? columns\r\n : `repeat(auto-fit, minmax(${minWidth}px, 1fr))`;\r\n\r\n const gap = typeof spacing === \"number\" ? `${spacing * 8}px` : spacing;\r\n\r\n return (\r\n <div\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: gridTemplate,\r\n justifyItems: justify,\r\n gap,\r\n height: \"inherit\",\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import { Box } from \"@mui/material\";\r\nimport React from \"react\";\r\n\r\n\r\nexport type Logo = { src: string; alt: string };\r\n\r\nexport default function OraculoLogoMediosPago({ src, alt }: Logo) {\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: { xs: 80, md: 160 }, // 80 en móvil, 160 en desktop\r\n height: { xs: 48, md: 96 }, // 48 en móvil, 96 en desktop\r\n display: \"inline-block\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={src}\r\n alt={alt}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTitle.module.css\";\r\n\r\ninterface OraculoEventTitleProps {\r\n title: string;\r\n subtitle?: string;\r\n}\r\n\r\nexport default function OraculoEventTitle({ title, subtitle }: OraculoEventTitleProps) {\r\n return (\r\n <div\r\n className={styles.contenedor}\r\n >\r\n <span\r\n style={{\r\n fontWeight: 700,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n }}\r\n >\r\n {title}\r\n </span>\r\n\r\n {subtitle && (\r\n <div\r\n className={styles.flexGroup}\r\n >\r\n <svg width=\"4\"height=\"4\"viewBox=\"0 0 5 5\"xmlns=\"http://www.w3.org/2000/svg\"style={{ flexShrink: 0 }}> <circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\" fill=\"white\" /> </svg>\r\n <span className={styles.subtitle}>\r\n {subtitle}\r\n </span>\r\n <div></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","import React from \"react\";\r\n\r\nexport interface OraculoEventStatusBadgeProps {\r\n /** Text inside the badge */\r\n text: string;\r\n\r\n /** Background color of the badge */\r\n color?: string;\r\n\r\n /** Text color */\r\n textColor?: string;\r\n}\r\n\r\nexport default function OraculoEventStatusBadge({ text, color = \"#ff3b3b\", textColor = \"#fff\" } : OraculoEventStatusBadgeProps) {\r\n return (\r\n <span\r\n className=\"oli-font\"\r\n style={{\r\n backgroundColor: color,\r\n color: textColor,\r\n borderRadius: \"8px\",\r\n padding: \"4px 8px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n fontWeight: 700,\r\n width : '41px',\r\n height : '16px',\r\n textAlign: 'center',\r\n }}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventStatusBadge from \"./OraculoEventStatusBadge\";\r\n\r\nexport interface OraculoEventStatusProps {\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoEventStatus({ live, time } : OraculoEventStatusProps) {\r\n return (\r\n <div className=\"oli-font\" style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\r\n {live && <OraculoEventStatusBadge text=\"En vivo\" />}\r\n {time && <span style={{ fontSize: \"14px\", fontWeight: 400, lineHeight: '18px', paddingTop: '4px' }}>{time}</span>}\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport OraculoEventTitle from \"./OraculoEventTitle\";\r\nimport OraculoEventStatus from \"./OraculoEventStatus\";\r\n\r\nexport interface OraculoMatchHeaderProps {\r\n title: string;\r\n subtitle?: string;\r\n live?: boolean;\r\n time?: string;\r\n}\r\n\r\nexport default function OraculoMatchHeader({ title, subtitle, live = false, time = \"\" } : OraculoMatchHeaderProps) {\r\n return (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n color: '#FFFFFF'\r\n }}\r\n >\r\n <OraculoEventTitle title={title} subtitle={subtitle} />\r\n <OraculoEventStatus live={live} time={time} />\r\n </div>\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLabel.module.css\";\r\ninterface OraculoEventLabelProps {\r\n text: string;\r\n}\r\nexport default function OraculoEventLabel({ text } : OraculoEventLabelProps) {\r\n return <span className={styles.label}>{text}</span>;\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventLeague.module.css\";\r\ninterface EventLeague {\r\n title: string;\r\n}\r\nexport default function OraculoEventLeague({ title } : EventLeague) {\r\n return (\r\n <div className={styles.container}>\r\n {title.toUpperCase()}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventScore.module.css\";\r\n\r\nexport interface OraculoEventScoreProps {\r\n text: string | number;\r\n\r\n name?: string;\r\n\r\n size?: \"normal\" | \"small\";\r\n}\r\n\r\nexport default function OraculoEventScore({ text, name, size = \"normal\" } : OraculoEventScoreProps) {\r\n return (\r\n <div\r\n className={`${styles.scoreWrapper} ${styles[size]}`}\r\n >\r\n <div className={`${styles.score} ${styles[size]}`}>{text}</div>\r\n {name && <span className={`${styles.name} ${styles[size]}`}>{name}</span>}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventTeamInfo.module.css\";\r\n\r\nexport interface OraculoEventTeamInfoProps {\r\n name: string;\r\n logo: string;\r\n size?: \"regular\" | \"compact\";\r\n}\r\n\r\n\r\nexport default function OraculoEventTeamInfo({ name, logo, size = \"regular\" } : OraculoEventTeamInfoProps) {\r\n return (\r\n <div className={`oli-font ${styles.team} ${styles[size]}`}>\r\n <img src={logo} alt={name} className={styles.logo} />\r\n <span className={styles.name}>{name}</span>\r\n </div>\r\n );\r\n}","// src/molecules/OraculoCarousel/OraculoCarousel.tsx\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useImperativeHandle,\r\n useRef,\r\n ReactNode,\r\n} from \"react\";\r\nimport {\r\n Splide as SplideRaw,\r\n SplideSlide as SplideSlideRaw,\r\n} from \"@splidejs/react-splide\";\r\n\r\nexport interface OraculoCarouselOptions {\r\n type?: string;\r\n perPage?: number;\r\n gap?: string;\r\n pagination?: boolean;\r\n arrows?: boolean;\r\n drag?: boolean;\r\n focus?: string | \"center\";\r\n autoWidth?: boolean;\r\n trimSpace?: any;\r\n rewind?: boolean;\r\n padding?: { left?: string; right?: string };\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface OraculoCarouselRef {\r\n next: () => void;\r\n prev: () => void;\r\n go: (index: number | string) => void;\r\n}\r\n\r\nexport interface OraculoCarouselProps<T = any> {\r\n items: T[];\r\n renderItem: (item: T, index: number) => ReactNode;\r\n perPage?: number;\r\n gap?: string;\r\n breakpoints?: Record<string | number, OraculoCarouselOptions>;\r\n options?: OraculoCarouselOptions;\r\n className?: string;\r\n useIndexAsKey?: boolean;\r\n onMove?: (info: {\r\n index: number;\r\n isStart: boolean;\r\n isEnd: boolean;\r\n total: number;\r\n }) => void;\r\n}\r\n\r\n// 👇 Aislamos tipos de Splide: internamente es any, hacia afuera tu API está tipada\r\nconst Splide: any = SplideRaw;\r\nconst SplideSlide: any = SplideSlideRaw;\r\n\r\nconst OraculoCarousel = forwardRef<OraculoCarouselRef, OraculoCarouselProps<any>>(\r\n (\r\n {\r\n items = [],\r\n renderItem,\r\n perPage = 1,\r\n gap = \"0px\",\r\n breakpoints,\r\n options = {},\r\n className = \"\",\r\n onMove,\r\n useIndexAsKey = false,\r\n },\r\n ref\r\n ) => {\r\n const splideRef = useRef<any>(null);\r\n\r\n useImperativeHandle(ref, () => ({\r\n next: () => splideRef.current?.go(\">\"),\r\n prev: () => splideRef.current?.go(\"<\"),\r\n go: (index) => splideRef.current?.go(index),\r\n }));\r\n\r\nconst handleMove = useCallback((splide: any) => {\r\n const controller = splide.Components.Controller;\r\n\r\n const index = controller.getIndex(); // real current index\r\n const end = controller.getEnd(); // real max reachable index\r\n\r\n const isStart = index === 0;\r\n const isEnd = index >= end;\r\n\r\n const total = splide.Components.Slides.getLength(); // real total slides\r\n\r\n onMove?.({ index, isStart, isEnd, total });\r\n}, [onMove]);\r\n\r\n const handleMounted = useCallback(\r\n (splide: any) => {\r\n handleMove(splide);\r\n },\r\n [handleMove]\r\n );\r\n\r\n const mergedOptions: OraculoCarouselOptions = {\r\n type: \"slide\",\r\n trimSpace: false,\r\n drag: true,\r\n pagination: false,\r\n arrows: false,\r\n rewind: false,\r\n focus: \"start\",\r\n autoWidth: false,\r\n perPage,\r\n gap,\r\n breakpoints,\r\n ...options,\r\n };\r\n\r\n return (\r\n <div className={className} style={{ width: \"100%\" }}>\r\n <Splide\r\n ref={splideRef}\r\n options={mergedOptions}\r\n onMove={handleMove}\r\n onMounted={handleMounted}\r\n >\r\n {items.map((item, index) => (\r\n <SplideSlide key={useIndexAsKey ? index : (item as any).id ?? index}>\r\n {renderItem(item, index)}\r\n </SplideSlide>\r\n ))}\r\n </Splide>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nexport default OraculoCarousel;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { OraculoButton } from \"../..\";\r\n\r\nexport interface OraculoGameCardProps {\r\n imageUrl: string;\r\n onClick?: () => void;\r\n size?: \"lg\" | \"sm\";\r\n fillParent?: boolean;\r\n}\r\n\r\nconst OraculoGameCard: React.FC<OraculoGameCardProps> = ({\r\n imageUrl,\r\n onClick,\r\n size = \"sm\",\r\n fillParent = false,\r\n}) => {\r\n const dim =\r\n size === \"lg\"\r\n ? { w: 280, h: 352 }\r\n : { w: 152, h: 168 };\r\n\r\n const handleButtonClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.stopPropagation();\r\n onClick?.();\r\n };\r\n\r\n const sizeStyles = fillParent\r\n ? { width: \"100%\", height: \"100%\" }\r\n : { width: `${dim.w}px`, height: `${dim.h}px` };\r\n\r\n return (\r\n <Box\r\n onClick={onClick}\r\n role=\"button\"\r\n sx={{\r\n position: \"relative\",\r\n borderRadius: \"12px\",\r\n overflow: \"hidden\",\r\n boxSizing: \"border-box\",\r\n transition: \"transform .15s ease, box-shadow .15s ease\",\r\n ...sizeStyles,\r\n \"&:hover\": {\r\n transform: \"translateY(-2px)\",\r\n boxShadow: 8,\r\n cursor: \"pointer\",\r\n },\r\n \"&:hover .oraculo-game-card-overlay\": {\r\n opacity: 1,\r\n },\r\n \"&:hover .oraculo-game-card-btn\": {\r\n opacity: 1,\r\n transform: \"translate(-50%, -50%) scale(1)\",\r\n pointerEvents: \"auto\",\r\n },\r\n }}\r\n >\r\n <img\r\n src={imageUrl}\r\n alt=\"Juego de casino\"\r\n loading=\"lazy\"\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n borderRadius: \"inherit\",\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-overlay\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.45)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease\",\r\n pointerEvents: \"none\",\r\n zIndex: 1,\r\n }}\r\n />\r\n\r\n <Box\r\n className=\"oraculo-game-card-btn\"\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n zIndex: 2,\r\n transform: \"translate(-50%, -50%) scale(0.95)\",\r\n opacity: 0,\r\n transition: \"opacity .15s ease, transform .15s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <OraculoButton variant=\"primary\" size=\"md\" onClick={handleButtonClick}>\r\n JUGAR\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoGameCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\ntype SizeOpt = { w: number; h: number; r?: number; font?: number };\r\n\r\nexport interface OraculoGameRankCardSizes {\r\n xs: SizeOpt;\r\n md: SizeOpt;\r\n}\r\n\r\nexport interface OraculoGameRankCardProps {\r\n imageUrl: string;\r\n orden?: number;\r\n onClick?: () => void;\r\n sizes?: OraculoGameRankCardSizes;\r\n}\r\n\r\nexport default function OraculoGameRankCard({\r\n imageUrl,\r\n orden = 1,\r\n onClick,\r\n sizes = {\r\n xs: { w: 104, h: 112, r: 18, font: 48 },\r\n md: { w: 186, h: 264, r: 22.6, font: 64 },\r\n },\r\n}: OraculoGameRankCardProps) {\r\n const getVal = <K extends keyof SizeOpt>(k: K, def: number) => ({\r\n xs: sizes.xs?.[k] ?? def,\r\n md: sizes.md?.[k] ?? def,\r\n });\r\n\r\n const W = getVal(\"w\", 186);\r\n const H = getVal(\"h\", 264);\r\n const R = getVal(\"r\", 22.6);\r\n const F = getVal(\"font\", 64);\r\n\r\n const hang = {\r\n xs: Math.round((sizes.xs?.font ?? 64) * 0.28),\r\n md: Math.round((sizes.md?.font ?? 64) * 0.28),\r\n };\r\n\r\n return (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: { xs: `${W.xs}px`, md: `${W.md}px` },\r\n aspectRatio: {\r\n xs: `${W.xs}/${H.xs}`,\r\n md: `${W.md}/${H.md}`,\r\n },\r\n borderRadius: { xs: `${R.xs}px`, md: `${R.md}px` },\r\n boxSizing: \"border-box\",\r\n overflow: \"visible\",\r\n pb: { xs: `${hang.xs}px`, md: `${hang.md}px` },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n borderRadius: \"inherit\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={imageUrl}\r\n onClick={onClick}\r\n size=\"lg\"\r\n fillParent\r\n />\r\n </Box>\r\n\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n position: \"absolute\",\r\n left: 8,\r\n bottom: {\r\n xs: `-${hang.xs}px`,\r\n md: `-${hang.md}px`,\r\n },\r\n fontFamily: \"secondary\",\r\n fontSize: {\r\n xs: `${F.xs}px`,\r\n md: `${F.md}px`,\r\n },\r\n lineHeight: 1,\r\n color: \"#3CC666\",\r\n WebkitTextStroke: \"1px #9ee86e\",\r\n zIndex: 3,\r\n userSelect: \"none\",\r\n }}\r\n >\r\n {orden}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\n\r\nexport interface OraculoLiveCasinoCardProps {\r\n logo: string;\r\n provider?: string;\r\n providerName?: string;\r\n machine?: number | string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst OraculoLiveCasinoCard: React.FC<OraculoLiveCasinoCardProps> = ({\r\n logo,\r\n provider,\r\n providerName,\r\n machine,\r\n onClick,\r\n}) => {\r\n return (\r\n <Box\r\n onClick={onClick}\r\n sx={{\r\n flex: \"0 0 auto\",\r\n position: \"relative\",\r\n borderRadius: \"20px\",\r\n overflow: \"hidden\",\r\n width: { xs: 100, md: 180 },\r\n height: { xs: 200, md: 380 },\r\n transition: \"width .50s ease, transform .28s ease\",\r\n willChange: \"width, transform\",\r\n cursor: \"pointer\",\r\n zIndex: 0,\r\n \"&:hover\": {\r\n zIndex: 2,\r\n width: { md: 260, xs: 110 },\r\n },\r\n \"&:hover .orc-live-provider-label\": {\r\n opacity: 1,\r\n },\r\n }}\r\n >\r\n {/* Imagen de fondo */}\r\n <Box\r\n component=\"img\"\r\n src={logo}\r\n alt={`Juego ${machine ?? \"\"}`}\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n\r\n {/* Label del provider */}\r\n <Box\r\n className=\"orc-live-provider-label\"\r\n sx={{\r\n position: \"absolute\",\r\n left: \"50%\",\r\n top: { xs: \"75%\", md: \"80%\" },\r\n transform: \"translate(-50%, -50%)\",\r\n zIndex: 3,\r\n opacity: 0,\r\n transition: \"opacity .25s ease\",\r\n pointerEvents: \"none\",\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n color: \"#fff\",\r\n fontWeight: 700,\r\n fontSize: { xs: 11, md: 14 },\r\n textTransform: \"capitalize\",\r\n }}\r\n >\r\n {provider ?? providerName ?? \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoLiveCasinoCard;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoGameCard from \"../OraculoGameCard/OraculoGameCard\";\r\n\r\nexport interface OraculoGameSlideItem {\r\n id: string | number;\r\n imageUrl: string;\r\n}\r\n\r\nexport interface OraculoGameSlideProps {\r\n items: OraculoGameSlideItem[];\r\n layout?: \"mosaic\" | \"grid\";\r\n onClick?: (item: OraculoGameSlideItem, index: number) => void;\r\n}\r\n\r\nconst GAP = 12; // px\r\n\r\nconst OraculoGameSlide: React.FC<OraculoGameSlideProps> = ({\r\n items,\r\n layout = \"grid\",\r\n onClick,\r\n}) => {\r\n // layout especial: 1 grande + hasta 4 pequeños\r\n if (layout === \"mosaic\") {\r\n const big = items[0];\r\n const smalls = items.slice(1, 5);\r\n\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gridTemplateColumns: {\r\n xs: `184px`,\r\n md: `280px`,\r\n },\r\n gridAutoFlow: \"column\",\r\n gridAutoColumns: {\r\n xs: `104px`,\r\n md: `152px`,\r\n },\r\n columnGap: `${GAP}px`,\r\n rowGap: `${GAP}px`,\r\n alignItems: \"stretch\",\r\n justifyItems: \"stretch\",\r\n }}\r\n >\r\n {big && (\r\n <Box\r\n sx={{\r\n width: { xs: 184, md: 280 },\r\n height: { xs: 234, md: 352 },\r\n gridRow: \"1 / span 2\",\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${big.imageUrl ?? \"\"}`}\r\n size=\"lg\"\r\n fillParent\r\n onClick={() => onClick?.(big, 0)}\r\n />\r\n </Box>\r\n )}\r\n\r\n {smalls.map((it, index) => (\r\n <Box\r\n key={it.id}\r\n sx={{\r\n width: { xs: 104, md: 152 },\r\n height: { xs: 112, md: 168 },\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index + 1)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n );\r\n }\r\n\r\n // layout grid 2x2\r\n return (\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: `repeat(2, 104px)`,\r\n md: `repeat(2, 152px)`,\r\n },\r\n gridTemplateRows: {\r\n xs: `repeat(2, 112px)`,\r\n md: `repeat(2, 168px)`,\r\n },\r\n gap: `${GAP}px`,\r\n gridAutoFlow: \"column\",\r\n }}\r\n >\r\n {items.map((it, index) => (\r\n <Box\r\n key={it.id ?? index}\r\n sx={{\r\n overflow: \"hidden\",\r\n borderRadius: 2,\r\n }}\r\n >\r\n <OraculoGameCard\r\n imageUrl={`https://olimpo.bet${it.imageUrl ?? \"\"}`}\r\n size=\"sm\"\r\n fillParent\r\n onClick={() => onClick?.(it, index)}\r\n />\r\n </Box>\r\n ))}\r\n </Box>\r\n\r\n );\r\n};\r\n\r\nexport default OraculoGameSlide;\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoWelcomeBannerProps {\r\n title?: string;\r\n amount?: string; // ej: \"S/40\"\r\n subtitle?: string;\r\n buttonText?: string;\r\n onButtonClick?: () => void;\r\n backgroundImage?: string;\r\n alt?: string;\r\n className?: string;\r\n /** Tamaño en desktop: \"small\" (456x272) o \"large\" (618x346) */\r\n variant?: \"small\" | \"large\";\r\n}\r\n\r\nconst OraculoWelcomeBanner: React.FC<OraculoWelcomeBannerProps> = ({\r\n title,\r\n amount,\r\n subtitle,\r\n buttonText,\r\n onButtonClick,\r\n backgroundImage,\r\n alt,\r\n className = \"\",\r\n variant = \"small\",\r\n}) => {\r\n const symbol = amount ? amount.slice(0, 2) : \"\";\r\n const value = amount ? amount.slice(2) : \"\";\r\n const isLarge = variant === \"large\";\r\n\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n maxWidth: {\r\n xs: 328,\r\n md: isLarge ? 618 : 456,\r\n },\r\n mx: \"auto\",\r\n }}\r\n >\r\n {backgroundImage && (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n aspectRatio: {\r\n xs: \"328 / 188\",\r\n md: isLarge ? \"618 / 346\" : \"456 / 272\",\r\n },\r\n borderRadius: \"14px\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Box\r\n component=\"img\"\r\n src={backgroundImage}\r\n alt={alt ?? \"Fondo promocional\"}\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n objectPosition: {\r\n xs: \"50% 0%\",\r\n md: \"45% 0%\",\r\n },\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n )}\r\n\r\n {/* Capa de contenido */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n color: \"#e7f8ff\",\r\n textAlign: \"center\",\r\n pl: \"14%\",\r\n pr: { xs: \"14%\", lg: \"15%\" },\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n maxWidth: \"60%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* Título superior */}\r\n {title && (\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 12, md: 20 },\r\n fontWeight: 400,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n )}\r\n\r\n {/* Monto */}\r\n {amount && (\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n fontFamily: '\"secondary\", sans-serif',\r\n lineHeight: { xs: 0.9, lg: 0.87 },\r\n m: \"4px 0\",\r\n background:\r\n \"linear-gradient(175deg, #EDC421 -12.56%, #FFFABF 17.99%, #EDC421 49.74%)\",\r\n WebkitBackgroundClip: \"text\",\r\n WebkitTextFillColor: \"transparent\",\r\n WebkitTextStroke: \"0.5px #fff8c1\",\r\n filter:\r\n \"drop-shadow(0px 4px 0px #8D4406) drop-shadow(0px 4px 4px rgba(28, 28, 28, 0.4))\",\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 35, md: 48 }, mr: 0.5 }}\r\n >\r\n {symbol}\r\n </Box>\r\n <Box\r\n component=\"span\"\r\n sx={{ fontSize: { xs: 52, md: 77 } }}\r\n >\r\n {value}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Subtítulo */}\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n pb: \"20px\",\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: \"#e7f8ff\",\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n\r\n {/* Botón */}\r\n {buttonText && (\r\n <OraculoButton onClick={onButtonClick}>\r\n {buttonText}\r\n </OraculoButton>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoWelcomeBanner;\r\n","import React from \"react\";\r\nimport \"../../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo.css\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\n\r\nexport interface OraculoClubOlimpoVisualProps {\r\n text: string;\r\n buttonLabel?: string;\r\n onClick?: () => void;\r\n\r\n // MOBILE\r\n imgAlt?: string;\r\n imgSrcMobile: string;\r\n\r\n // DESKTOP\r\n imgSrcDesktopBg?: string;\r\n imgSrcDesktopLogo?: string;\r\n}\r\n\r\nconst OraculoClubOlimpoVisual: React.FC<OraculoClubOlimpoVisualProps> = ({\r\n text,\r\n buttonLabel = \"Conoce más\",\r\n onClick,\r\n imgAlt = \"Club Olimpo\",\r\n imgSrcMobile,\r\n imgSrcDesktopBg,\r\n imgSrcDesktopLogo,\r\n}) => {\r\n return (\r\n <>\r\n {/* MOBILE */}\r\n <div className=\"orc-co-bgMobile\">\r\n <img\r\n src={imgSrcMobile}\r\n alt={imgAlt}\r\n className=\"orc-co-bgMobileImg\"\r\n />\r\n </div>\r\n\r\n {/* DESKTOP */}\r\n <div className=\"orc-co-bgDesktop\">\r\n {imgSrcDesktopBg && (\r\n <div className=\"orc-co-fillHost\">\r\n <img\r\n src={imgSrcDesktopBg}\r\n alt={`${imgAlt} fondo`}\r\n className=\"orc-co-bgDesktopImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n {imgSrcDesktopLogo && (\r\n <div className=\"orc-co-logo\">\r\n <img\r\n src={imgSrcDesktopLogo}\r\n alt={`${imgAlt} logo`}\r\n className=\"orc-co-logoImg\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"orc-co-desktopContent\">\r\n <p className=\"orc-co-captionDesktop\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </div>\r\n\r\n {/* MOBILE: barra inferior */}\r\n <div className=\"orc-co-bottom\">\r\n <p className=\"orc-co-caption\">{text}</p>\r\n <OraculoButton onClick={onClick} variant=\"primary\" size=\"md\">\r\n {buttonLabel}\r\n </OraculoButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default OraculoClubOlimpoVisual;\r\n","export function redirectHomeWithOutcomes(outcomes: number | number[]) {\r\n const arr = Array.isArray(outcomes) ? outcomes : [outcomes];\r\n sessionStorage.setItem(\"landingOutcomes\", JSON.stringify(arr));\r\n window.location.href = \"/#home\";\r\n}\r\n","import React from \"react\";\r\nimport styles from \"./OraculoEventCombinadasCard.module.css\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport Stack from '@mui/material/Stack';\r\nimport { CombinadoEventProps, BetOffer} from \"../../interfaces/oraculo/InterfaceKambi\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nexport default function OraculoEventCombinadosCard({event}: CombinadoEventProps) {\r\nfunction processOutcome(event : any) {\r\n const apuestas = event.betoffers ?? [];\r\n const homeName = event.homeName;\r\n const awayName = event.awayName;\r\n\r\n const outcomes = apuestas.map((a : any) => {\r\n let best = a.outcomes[0];\r\n let value = \"\";\r\n\r\n let line = best?.line ? best.line / 1000 : \"\";\r\n \r\n if ([\"Más de\", \"Mas de\", \"Over\"].includes(best?.label)) {\r\n value = `Más de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n else if ([\"Menos de\", \"Menos\"].includes(best?.label)) {\r\n value = `Menos de ${line}`;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n }\r\n \r\nelse if ([\"Sí\", \"No\"].includes(best?.label) ) {\r\n value = best?.label;\r\n if (best?.participant) {\r\n value = `${best.participant} - ${value}`;\r\n }\r\n}\r\n\r\n// ----- PRIORITY 3: DOUBLE CHANCE (1X, 12, X2) -----\r\nelse if ([\"1X\", \"12\", \"X2\"].includes(best?.label)) {\r\n \r\n if (best.label === \"1X\") {\r\n value = `${homeName} o Empate`;//event.participants?.[0]?.name || \r\n } else if (best.label === \"12\") {\r\n value = `${homeName} o ${awayName}`;\r\n } else if (best.label === \"X2\") {\r\n value = `${awayName} o Empate`;\r\n }\r\n\r\n}\r\n // ----- DEFAULT LOGIC -----\r\n else {\r\n if (best?.participant) value = best.participant;\r\n else value = best?.label ?? \"\";\r\n\r\n if (line !== \"\" && value === best.label) {\r\n value = `${best.label} ${line}`;\r\n }\r\n }\r\n\r\n return {\r\n id : best?.id ?? 0,\r\n value,\r\n label: a.criterion.label,\r\n odds: best?.odds ?? 0,\r\n bl: best?.label ?? 0,\r\n position: best?.position ?? 0,\r\n\r\n };\r\n });\r\n\r\n const total = outcomes.reduce((acc: any, o:any) => acc + o.odds, 0) / 1000;\r\n\r\n return {\r\n outcomes,\r\n total: total.toFixed(2),\r\n };\r\n}\r\nconst eventOutcomes = processOutcome(event)\r\n\r\n\r\n return (\r\n <div className={styles.card}>\r\n <div className={styles.combinadas}>\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n <OraculoSectionTitle \r\n title={event.name}\r\n iconUrl=\"/assets/img/home/Combinadas/pelota.png\"\r\n size=\"xs\" \r\n />\r\n <img src=\"/assets/img/home/Combinadas/line.png\" />\r\n\r\n <Stack direction=\"column\" spacing={0.5} useFlexGap>\r\n {eventOutcomes['outcomes'].sort((a: any, b: any) => a.position - b.position).map((a :any, i : number) => {\r\n\r\n return (\r\n <div className={styles.apuestaItem} key={i}>\r\n <div className={styles.lineContainer}>\r\n <div className={styles.circle} />\r\n {i < eventOutcomes.outcomes.length - 1 && <div className={styles.line} />}\r\n </div>\r\n\r\n <div className={styles.apuestaText}>\r\n <strong>\r\n {a['value']}\r\n </strong>{\" \"}\r\n | {a['label']}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n <button onClick={() => redirectHomeWithOutcomes(eventOutcomes?.outcomes?.map((o : any) => o?.id) ?? []) } className={styles.cuotaTotal}>\r\n <span>\r\n Cuota total: <strong>{(((event as any)['combinadoTotal'] ?? 0 ) / 1000).toFixed(2)}</strong>\r\n </span>\r\n <img src=\"/assets/img/home/Combinadas/cuotaTotal.svg\" alt=\"cuota total\" />\r\n</button>\r\n </div>\r\n );\r\n}\r\n\r\n","import React from \"react\";\r\nimport styles from \"./OraculoButtonBet.module.css\";\r\nimport { Link as MuiLink } from \"@mui/material\";\r\n\r\nexport interface OraculoButtonProps {\r\n children?: React.ReactNode;\r\n onClick?: any;\r\n href?: string;\r\n target?: React.HTMLAttributeAnchorTarget;\r\n rel?: string;\r\n type?: \"button\" | \"submit\" | \"reset\";\r\n disabled?: boolean;\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n ariaLabel?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n iconOnly?: boolean;\r\n}\r\n\r\nexport default function OraculoButtonBet({\r\n children,\r\n onClick,\r\n href,\r\n target,\r\n rel,\r\n type = \"button\",\r\n disabled = false,\r\n variant = \"primary\",\r\n size,\r\n fullWidth = false,\r\n fullHeight = false,\r\n className = \"\",\r\n ariaLabel,\r\n leftIcon,\r\n rightIcon,\r\n iconOnly,\r\n}: OraculoButtonProps) {\r\n const hasText = !!children && children !== true;\r\n const hasLeft = !!leftIcon;\r\n const hasRight = !!rightIcon;\r\n const onlyOneIcon = (hasLeft ? 1 : 0) + (hasRight ? 1 : 0) === 1;\r\n const isIconOnly = iconOnly ?? (onlyOneIcon && !hasText);\r\n\r\n const cls = [\r\n styles[\"orc-btn\"], // base\r\n styles[`orc-btn--${variant}`], // variant primary/secondary/tertiary\r\n size ? styles[`orc-btn--${size}`] : \"\", // sm / md / lg\r\n fullWidth ? styles[\"orc-btn--full\"] : \"\",\r\n fullHeight ? styles[\"orc-btn--fullHeight\"] : \"\",\r\n isIconOnly ? styles[\"orc-btn--iconOnly\"] : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const content = (\r\n <>\r\n {leftIcon && <span className={styles[\"orc-btn__icon\"]}>{leftIcon}</span>}\r\n {!isIconOnly && (\r\n <span className={styles[\"orc-btn__label\"]}>{children}</span>\r\n )}\r\n {rightIcon && <span className={styles[\"orc-btn__icon\"]}>{rightIcon}</span>}\r\n </>\r\n );\r\n\r\n const ariaDisabled = disabled ? true : undefined;\r\n\r\n if (href) {\r\n return (\r\n <MuiLink\r\n href={href}\r\n target={target}\r\n rel={rel}\r\n aria-label={ariaLabel}\r\n aria-disabled={ariaDisabled}\r\n tabIndex={ariaDisabled ? -1 : undefined}\r\n className={cls}\r\n onClick={ariaDisabled ? (e) => e.preventDefault() : onClick}\r\n >\r\n {content}\r\n </MuiLink>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n onClick={onClick}\r\n disabled={!!ariaDisabled}\r\n aria-label={ariaLabel}\r\n className={cls}\r\n >\r\n {content}\r\n </button>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport OraculoButtonBet from \"../../atoms/OraculoButtonBet/OraculoButtonBet\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventHeader from \"../../atoms/OraculoEvent/OraculoEventHeader\";\r\nimport Stack from '@mui/material/Stack';\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\nimport { EnVivoEventProps, Outcome } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventEnVivoCard({ event, liveData , betOffers ,fondo = \"/assets/img/home/EnVivo/fondo.png\" } : EnVivoEventProps) {\r\n\r\n const selectedOffer = betOffers?.find(\r\n (offer) => offer.betOfferType?.id === 2\r\n); \r\n\r\n return (\r\n <div style={{\r\n backgroundImage: `url(${fondo})`,\r\n backgroundSize: \"cover\",\r\n minHeight: '160px',\r\n width: '296px',\r\n padding: \"12px 16px\",\r\n borderRadius: \"16px\",\r\n }}>\r\n \r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoEventHeader\r\n title={event.path[0].name ?? ''}\r\n subtitle={event.group}\r\n live={true}\r\n time={liveData?.matchClock?.minute != null ? `${liveData.matchClock.minute}'` : ''}\r\n />\r\n\r\n <div style={{ padding: \"0 4px\" }}>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto 1fr\">\r\n <OraculoEventTeamInfo\r\n name={event.homeName}\r\n logo=\"/assets/img/home/EnVivo/Juventus.png\"\r\n />\r\n <OraculoEventScore text={(liveData?.score?.home ?? 0) + \":\"+ (liveData?.score?.away ?? 0)} name=\"En vivo\" />\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EnVivo/Racing.png\" />\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n\r\n <OraculoGridGroup spacing={2}>\r\n {(selectedOffer?.outcomes ?? []).map((item : Outcome, index : number) => (\r\n <OraculoButtonBet key={index} variant=\"primary\" disabled={item.odds == undefined || selectedOffer?.cashOutStatus == 'SUSPENDED'} onClick={()=>{redirectHomeWithOutcomes(item.id);}} >\r\n {item.odds === undefined ? \"\" : (item.odds / 1000).toFixed(2)}\r\n </OraculoButtonBet>\r\n ))}\r\n </OraculoGridGroup>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n\r\n );\r\n}","import React from \"react\";\r\nimport styles from \"./OraculoEventDate.module.css\";\r\n\r\ninterface OraculoEventDateProps {\r\n text: string;\r\n}\r\n\r\nexport default function OraculoEventDate({ text }: OraculoEventDateProps) {\r\n return <div className={`oli-font ${styles.date}`}>{text}</div>;\r\n}","import React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventLabel from \"../../atoms/OraculoEvent/OraculoEventLabel\";\r\nimport OraculoEventTeamInfo from \"../../atoms/OraculoEvent/OraculoEventTeamInfo\";\r\nimport OraculoEventScore from \"../../atoms/OraculoEvent/OraculoEventScore\";\r\nimport OraculoEventLeague from \"../../atoms/OraculoEvent/OraculoEventLeague\";\r\nimport OraculoEventDate from \"../../atoms/OraculoEvent/OraculoEventDate\";\r\nimport {redirectHomeWithOutcomes} from \"../../atoms/OraculoEvent/KambiOpenBet\";\r\n\r\nimport styles from \"./OraculoEventSemanaCard.module.css\";\r\n\r\nimport { SemanaEventProps } from \"../../interfaces/oraculo/InterfaceKambi\";\r\n\r\nexport default function OraculoEventSemanaCard({event} : SemanaEventProps ) {\r\nfunction formatDate(dateString : string): string {\r\n const date = new Date(dateString);\r\n\r\n const dayShort = date.toLocaleDateString(\"es-ES\", {\r\n weekday: \"short\"\r\n }).toUpperCase();\r\n\r\n const day = date.getDate().toString().padStart(2, \"0\");\r\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n let time = date.toLocaleTimeString(\"es-PE\", {\r\n hour: \"numeric\",\r\n minute: \"2-digit\",\r\n hour12: true\r\n }).toUpperCase();\r\n\r\n // Remove dots from A. M. / P. M.\r\n time = time.replace(/\\./g, \"\").replace(/A\\s*M/i, \"AM\").replace(/P\\s*M/i, \"PM\");\r\n\r\n return `${dayShort} ${day}/${month} | ${time}`;\r\n}\r\n\r\n return (\r\n <div className={styles.cardContainer}>\r\n <OraculoEventLeague title={event.group ?? ''} />\r\n <div className={styles.cardBackground} >\r\n \r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap>\r\n\r\n <Stack direction=\"column\" spacing={1} useFlexGap> \r\n \r\n <div className={styles.equipos}>\r\n <OraculoEventTeamInfo name={event.awayName} logo=\"/assets/img/home/EventoSemana/Flamengo.png\" size=\"compact\"\r\n />\r\n <OraculoEventScore text={'vs.'} name=\"\" size=\"small\"/>\r\n <OraculoEventTeamInfo name={event.homeName} logo=\"/assets/img/home/EventoSemana/RealMadrid.png\" size=\"compact\" />\r\n </div>\r\n\r\n <OraculoEventDate text={formatDate(event.start)} />\r\n\r\n </Stack>\r\n\r\n <Stack direction=\"column\" spacing={{ xs: 0.5, md: 1 }} useFlexGap> \r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoEventLabel key={index} text={item.label.toUpperCase()} />\r\n ))}\r\n </OraculoGridGroup>\r\n \r\n <div className={styles.jugadas}>\r\n <OraculoGridGroup spacing={1}>\r\n {(event?.outcome?.[0]?.outcomes ?? []).map((item, index) => (\r\n <OraculoButton key={index} variant=\"primary\" fullHeight onClick={()=>{redirectHomeWithOutcomes(item.id);}} >{(item.odds / 1000).toFixed(2)}</OraculoButton>\r\n ))}\r\n </OraculoGridGroup>\r\n </div>\r\n </Stack>\r\n </Stack>\r\n </div>\r\n </div>\r\n \r\n );\r\n}","import { useRef, useState } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionDestacados({\r\n items,\r\n title = \"Destacados\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: OraculoSeccionDestacadosProps) {\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n console.log(\"items: \", items);\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/promociones\";\r\n };\r\n\r\n const redirectToPromotion = (promotion?: string) => {\r\n if (!promotion) return;\r\n if (typeof window === \"undefined\") return;\r\n\r\n const slug = encodeURIComponent(promotion);\r\n const url = `https://www.olimpo.bet/promociones/${slug}`;\r\n\r\n window.location.href = url;\r\n };\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <header\r\n style={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 12,\r\n rowGap: 8,\r\n marginBottom: 16,\r\n }}\r\n >\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </div>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </header>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={3}\r\n gap=\"16px\"\r\n options={{ autoWidth: false }}\r\n breakpoints={{\r\n 768: { perPage: 1.15, focus: \"start\" },\r\n 1024: { perPage: 2.5, focus: \"start\" },\r\n }}\r\n renderItem={(item: OraculoSeccionDestacadosItem) => (\r\n <div\r\n key={`${item.title}-${item.image}`}\r\n style={{\r\n textAlign: \"center\",\r\n marginTop: 16,\r\n cursor: \"pointer\",\r\n }}\r\n onClick={() => redirectToPromotion(item.promotion)} \r\n >\r\n <img\r\n // src={item.image}\r\n src={`https://olimpo.bet${item.image !== \"\" ? item.image : item.summary_image}`}\r\n alt={item.title}\r\n style={{\r\n width: \"100%\",\r\n // minHeight: \"150px\",\r\n // maxHeight: \"150px\",\r\n height: \"150px\",\r\n borderRadius: 8,\r\n display: \"block\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </section>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoGameRankCard from \"../../molecules/OraculoGameRankCard/OraculoGameRankCard\";\r\nimport { OraculoSeccionTopJuegosProps } from \"../../interfaces/oraculo/InterfaceTopJuegos\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nexport default function OraculoSeccionTopJuegos({\r\n items,\r\n title = \"Top Juegos\",\r\n iconUrl,\r\n onCardClick,\r\n}: OraculoSeccionTopJuegosProps) {\r\n\r\n const normalizedItems = useMemo(\r\n () =>\r\n items\r\n .map((item, index) => ({\r\n ...item,\r\n // si no viene orden, usamos el índice (1-based)\r\n orden: item.orden ?? index + 1,\r\n _originalIndex: index,\r\n }))\r\n .sort((a, b) => {\r\n if (a.orden != null && b.orden != null) return a.orden - b.orden;\r\n return a._originalIndex - b._originalIndex;\r\n }),\r\n [items]\r\n );\r\n\r\n return (\r\n <section style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: {\r\n xs: \"repeat(3, minmax(0, 1fr))\",\r\n md: \"repeat(6, minmax(0, 1fr))\",\r\n },\r\n gap: { xs: 1.5, md: 2 },\r\n justifyItems: \"center\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {normalizedItems.slice(0, 6).map((juego) => (\r\n <OraculoGameRankCard\r\n key={juego.machine}\r\n imageUrl={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n orden={juego.orden}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego);\r\n } else {\r\n redirectToGameFromItem(juego);\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoLiveCasinoCard from \"../../molecules/OraculoLiveCasinoCard/OraculoLiveCasinoCard\";\r\nimport { OraculoSeccionCasinoEnVivoProps } from \"../../interfaces/oraculo/InterfaceCasinoEnVivo\";\r\nimport { OraculoGameItem } from \"../..\";\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? game.web_name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Live\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino-en-vivo?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst OraculoSeccionCasinoEnVivo: React.FC<OraculoSeccionCasinoEnVivoProps> = ({\r\n items,\r\n title = \"Casino en vivo\",\r\n subtitle = \"Disfruta la emoción en tus juegos favoritos y gana en tiempo real.\",\r\n backgroundMobileUrl = \"\",\r\n backgroundDesktopUrl = \"\",\r\n onCardClick,\r\n onViewMore,\r\n className,\r\n}) => {\r\n return (\r\n <Box\r\n className={className}\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n color: \"white\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {/* Fondo */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundImage: {\r\n xs: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundMobileUrl}')\r\n `,\r\n md: `\r\n linear-gradient(to bottom, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n url('${backgroundDesktopUrl}')\r\n `,\r\n },\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\",\r\n zIndex: 0,\r\n }}\r\n />\r\n\r\n {/* Contenido */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n zIndex: 1,\r\n maxWidth: 1200,\r\n height: { xs: \"450px\", md: \"550px\" },\r\n mx: \"auto\",\r\n px: { xs: 2.5, md: 6 },\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" },\r\n alignItems: { xs: \"center\", md: \"center\" },\r\n justifyContent: \"center\",\r\n gap: { xs: 0, md: 15 },\r\n textAlign: { xs: \"center\", md: \"left\" },\r\n }}\r\n >\r\n {/* Columna izquierda */}\r\n <Stack spacing={3} sx={{ maxWidth: { md: 280 } }}>\r\n <Typography\r\n variant=\"h4\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 24, md: 40 },\r\n WebkitTextStroke: \"0.5px rgba(255, 255, 255, .5)\",\r\n textShadow:\r\n \"0 0 2px rgba(255, 255, 255, .95),\" +\r\n \"0 0 4px rgba(255, 255, 255, .6),\" +\r\n \"0 1px 0 #898989\",\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 14, md: 18 },\r\n color: \"rgba(255,255,255,0.9)\",\r\n marginX: { xs: 4, md: 0 },\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n\r\n <Box sx={{ display: { xs: \"none\", md: \"block\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"md\"\r\n onClick={() => onViewMore?.()}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Stack>\r\n\r\n {/* Lista de tarjetas */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: { xs: 2, md: 3 },\r\n justifyContent: \"center\",\r\n overflowX: { xs: \"auto\", md: \"visible\" },\r\n py: { xs: 3, md: 0 },\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {(items ?? []).slice(0, 3).map((juego, idx) => (\r\n <OraculoLiveCasinoCard\r\n key={getGameId(juego, idx)}\r\n logo={`https://olimpo.bet${juego.logo ?? \"\"}`}\r\n provider={juego.provider}\r\n providerName={juego.web_name}\r\n machine={juego.machine}\r\n onClick={() => {\r\n if (onCardClick) {\r\n onCardClick(juego, idx); // usa handler del host\r\n } else {\r\n redirectToGameFromItem(juego); // fallback: redirigir\r\n }\r\n }}\r\n />\r\n ))}\r\n </Box>\r\n\r\n {/* Botón mobile */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n <OraculoButton\r\n variant=\"primary\"\r\n size=\"lg\"\r\n onClick={() => onViewMore?.()}\r\n >\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasinoEnVivo;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionCasinoProps } from \"../../interfaces/oraculo/InterfaceCasino\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\n\r\ninterface CasinoSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Casino\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/casino?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst buildCasinoSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): CasinoSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: CasinoSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionCasino: React.FC<OraculoSeccionCasinoProps> = ({\r\n items,\r\n title = \"Casino\",\r\n iconUrl = \"/assets/img/home/Casino/diamante.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const slides = buildCasinoSlides(items, mosaicFirst, gridSize);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/casino\";\r\n };\r\n\r\n return (\r\n <section>\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header tipo GridGroup 1fr auto auto */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0px\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionCasino;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Stack from \"@mui/material/Stack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport ChevronLeftRounded from \"@mui/icons-material/ChevronLeftRounded\";\r\nimport ChevronRightRounded from \"@mui/icons-material/ChevronRightRounded\";\r\n\r\nimport OraculoSectionTitle from \"../../atoms/OraculoSectionTitle/OraculoSectionTitle\";\r\nimport OraculoButton from \"../../atoms/OraculoButton/OraculoButton\";\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoGameSlide, {\r\n OraculoGameSlideItem,\r\n} from \"../../molecules/OraculoGameSlide/OraculoGameSlide\";\r\nimport { OraculoGameItem } from \"../../interfaces/oraculo/InterfaceGameItem\";\r\nimport { OraculoSeccionVirtualesProps } from \"../../interfaces/oraculo/InterfaceVirtuales\";\r\n\r\ntype SlideKind = \"mosaic\" | \"grid\";\r\n\r\ninterface VirtualSlide {\r\n id: string;\r\n kind: SlideKind;\r\n items: OraculoGameSlideItem[];\r\n}\r\n\r\nconst getGameId = (g: OraculoGameItem, idx: number) =>\r\n g.orden ?? g.machine ?? idx;\r\n\r\nconst redirectToGameFromItem = (game: OraculoGameItem) => {\r\n if (typeof window === \"undefined\") return;\r\n\r\n const machine_name = game.name ?? \"\";\r\n const provider = game.provider ?? \"\";\r\n const machine = game.machine ?? \"\";\r\n const external_id = game.external_id ?? \"\";\r\n const type = game.type ?? \"Virtuales\";\r\n\r\n const providerCode = encodeURIComponent(String(provider));\r\n const machineCode = encodeURIComponent(String(machine));\r\n const gameName = encodeURIComponent(String(machine_name));\r\n const externalId = encodeURIComponent(String(external_id));\r\n const typeParam = encodeURIComponent(String(type));\r\n\r\n const url =\r\n `https://www.olimpo.bet/juegos-virtuales?${machineCode}?` +\r\n `provider=${providerCode}&` +\r\n `name=${gameName}&` +\r\n `external_id=${externalId}&` +\r\n `type=${typeParam}`;\r\n\r\n window.location.href = url;\r\n};\r\n\r\nconst buildVirtualSlides = (\r\n games: OraculoGameItem[],\r\n mosaicFirst = true,\r\n gridSize = 4\r\n): VirtualSlide[] => {\r\n const baseItems: OraculoGameSlideItem[] = games.map((g, idx) => ({\r\n id: getGameId(g, idx),\r\n imageUrl: g.logo ?? \"\",\r\n }));\r\n\r\n if (!baseItems.length) return [];\r\n\r\n const slides: VirtualSlide[] = [];\r\n let start = 0;\r\n\r\n if (mosaicFirst) {\r\n const take = Math.min(baseItems.length, 5);\r\n slides.push({\r\n id: \"mosaic-0\",\r\n kind: \"mosaic\",\r\n items: baseItems.slice(0, take),\r\n });\r\n start = take;\r\n }\r\n\r\n while (start < baseItems.length) {\r\n const end = Math.min(start + gridSize, baseItems.length);\r\n slides.push({\r\n id: `grid-${start}`,\r\n kind: \"grid\",\r\n items: baseItems.slice(start, end),\r\n });\r\n start = end;\r\n }\r\n\r\n return slides;\r\n};\r\n\r\nconst OraculoSeccionVirtuales: React.FC<OraculoSeccionVirtualesProps> = ({\r\n items,\r\n title = \"Virtuales\",\r\n iconUrl = \"/assets/img/home/Virtuales/virtuales.svg\",\r\n onItemClick,\r\n onViewMore,\r\n mosaicFirst = true,\r\n gridSize = 4,\r\n}) => {\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n\r\n const slides = buildVirtualSlides(items, mosaicFirst, gridSize);\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n // onViewMore?.();\r\n window.location.href = \"https://www.olimpo.bet/virtuales\";\r\n };\r\n\r\n return (\r\n <section >\r\n <Stack direction=\"column\" spacing={2} useFlexGap>\r\n {/* Header (equivalente a tu GridGroup 1fr auto auto) */}\r\n <Box\r\n sx={{\r\n display: \"grid\",\r\n gridTemplateColumns: \"1fr auto auto\",\r\n alignItems: \"center\",\r\n columnGap: 1.5,\r\n rowGap: 1,\r\n }}\r\n >\r\n <OraculoSectionTitle\r\n title={title}\r\n iconUrl={iconUrl}\r\n size=\"md\"\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 1,\r\n justifyContent: \"flex-end\",\r\n }}\r\n >\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </Box>\r\n\r\n <Box sx={{ justifySelf: \"end\" }}>\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </Box>\r\n </Box>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={slides}\r\n perPage={1}\r\n gap=\"0\"\r\n options={{\r\n autoWidth: true,\r\n gap: \"12px\",\r\n trimSpace: false,\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"start\",\r\n perMove: 1,\r\n }}\r\n renderItem={(slide) => (\r\n <div style={{ alignSelf: \"start\" }}>\r\n <OraculoGameSlide\r\n items={slide.items}\r\n layout={slide.kind === \"mosaic\" ? \"mosaic\" : \"grid\"}\r\n onClick={(itm) => {\r\n const game = items.find((g, idx) =>\r\n getGameId(g, idx) === itm.id\r\n );\r\n\r\n if (!game) return;\r\n\r\n if (onItemClick) {\r\n onItemClick(game);\r\n } else {\r\n redirectToGameFromItem(game);\r\n }\r\n }}\r\n />\r\n </div>\r\n )}\r\n onMove={({ isStart, isEnd }) =>\r\n setNavState({ isStart, isEnd })\r\n }\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionVirtuales;\r\n","import React, { useRef, useState } from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\n\r\nimport OraculoCarousel, {\r\n OraculoCarouselRef,\r\n} from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport OraculoWelcomeBanner, {\r\n // OraculoWelcomeBannerProps,\r\n} from \"../../molecules/OraculoWelcomeBanner/OraculoWelcomeBanner\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport { OraculoSeccionBonoProps } from \"../../interfaces/oraculo/InterfaceBonos\";\r\n\r\nconst buildSectionSx = (bgUrl: string) => ({\r\n // width: \"100vw\",\r\n position: \"relative\" as const,\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // marginLeft: \"-50vw\",\r\n // marginRight: \"-50vw\",\r\n py: 8,\r\n color: \"#fff\",\r\n backgroundImage: `\r\n linear-gradient(to bottom,#121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to top, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to left, #121212 0%, rgba(18,18,18,0) 10%),\r\n linear-gradient(to right, #121212 0%, rgba(18,18,18,0) 10%),\r\n url(\"${bgUrl}\")\r\n `,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"cover\",\r\n});\r\n\r\nconst headlineBaseSx = {\r\n textAlign: \"center\" as const,\r\n lineHeight: 1.1,\r\n mb: 1.5,\r\n};\r\n\r\nconst hlTopSx = {\r\n display: \"inline-block\",\r\n fontWeight: 600,\r\n fontSize: 24,\r\n};\r\n\r\nconst hlBottomSx = {\r\n display: \"inline-block\",\r\n fontSize: 24,\r\n lineHeight: 1.1,\r\n WebkitTextStroke: \"0.3px rgba(255, 255, 255, .5)\",\r\n textShadow: `\r\n 0 0 2px rgba(255, 255, 255, .95),\r\n 0 0 6px rgba(255, 255, 255, .6),\r\n 0 1px 0 rgba(137, 137, 137, .85)\r\n `,\r\n};\r\n\r\nconst OraculoSeccionBonoBienvenida: React.FC<OraculoSeccionBonoProps> = ({\r\n headline,\r\n headline2,\r\n items,\r\n backgroundImageUrl,\r\n}) => {\r\n const hl1 = headline;\r\n const hl2 = headline2;\r\n\r\n const isMobile = useMediaQuery(\"(max-width: 767px)\");\r\n const showDots = items.length > 1;\r\n\r\n const bgUrl = backgroundImageUrl ?? \"\";\r\n const sectionSx = buildSectionSx(bgUrl);\r\n\r\n const carouselRef = useRef<OraculoCarouselRef | null>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n\r\n const renderCarousel = (desktop: boolean) => (\r\n <Box\r\n sx={{\r\n width: \"100%\",\r\n maxWidth: desktop ? 600 : \"100%\",\r\n mx: desktop ? \"auto\" : 0,\r\n }}\r\n >\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={items}\r\n perPage={1}\r\n gap={desktop ? \"24px\" : \"12px\"}\r\n breakpoints={\r\n desktop\r\n ? undefined\r\n : {\r\n 480: {\r\n perPage: 1,\r\n gap: \"8px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n 768: {\r\n perPage: 1,\r\n gap: \"12px\",\r\n padding: { left: \"8px\", right: \"8px\" },\r\n },\r\n }\r\n }\r\n options={{ autoWidth: false }}\r\n renderItem={(it) => (\r\n <OraculoWelcomeBanner\r\n {...it}\r\n onButtonClick={it.onButtonClick}\r\n isDesktop={desktop}\r\n />\r\n )}\r\n onMove={({ index, isStart, isEnd }) => {\r\n setNavState({ isStart, isEnd });\r\n setActiveIndex(index);\r\n }}\r\n />\r\n\r\n {showDots && (\r\n <Box\r\n sx={{\r\n mt: 2,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <OraculoCarouselDots\r\n total={items.length}\r\n active={activeIndex}\r\n onSelect={(i) => {\r\n setActiveIndex(i);\r\n carouselRef.current?.go(i);\r\n }}\r\n />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n\r\n // --- MOBILE: igual que antes, carrusel centrado ---\r\n if (isMobile) {\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n ...sectionSx,\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box sx={headlineBaseSx}>\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {renderCarousel(false)}\r\n </Box>\r\n );\r\n }\r\n\r\n // --- DESKTOP: bloque centrado + dots centrados bajo la tarjeta ---\r\n return (\r\n <Box component=\"section\" sx={sectionSx}>\r\n <Box\r\n sx={{\r\n maxWidth: 1200,\r\n mx: \"auto\",\r\n px: 4,\r\n display: \"grid\",\r\n gridTemplateColumns: \"260px minmax(0, 1fr)\",\r\n alignItems: \"center\",\r\n columnGap: 6,\r\n }}\r\n >\r\n {(hl1 || hl2) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n minHeight: \"100%\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n ...headlineBaseSx,\r\n textAlign: \"left\",\r\n mb: 0,\r\n }}\r\n >\r\n {hl1 && (\r\n <Typography component=\"span\" sx={hlTopSx}>\r\n {hl1}\r\n </Typography>\r\n )}\r\n {hl2 && (\r\n <>\r\n <br />\r\n <Typography component=\"span\" sx={hlBottomSx}>\r\n {hl2}\r\n </Typography>\r\n </>\r\n )}\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {/* Columna derecha: carrusel centrado con dots debajo */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {renderCarousel(true)}\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionBonoBienvenida;\r\n","import React, { useLayoutEffect, useRef } from \"react\";\r\nimport \"./OraculoSeccionClubOlimpo.css\";\r\nimport OraculoClubOlimpoVisual from \"../../molecules/OraculoClubOlimpoVisual/OraculoClubOlimpoVisual\";\r\nimport { OraculoSeccionClubOlimpoItem } from \"../../interfaces/oraculo/InterfaceClubOlimpo\";\r\n\r\nexport interface OraculoSeccionClubOlimpoItems {\r\n className?: string;\r\n /** Si true, hace el efecto full-bleed (100vw centrado) */\r\n fullBleed?: boolean;\r\n /** Lista de variantes (puedes pasar 1 o varias). */\r\n items: OraculoSeccionClubOlimpoItem;\r\n /** Índice del item a mostrar si pasas varios. */\r\n selectedIndex?: number;\r\n /** aria-label de la sección (fallback al imgAlt del item seleccionado). */\r\n ariaLabel?: string;\r\n}\r\n\r\nconst OraculoSeccionClubOlimpo: React.FC<OraculoSeccionClubOlimpoItems> = ({\r\n className = \"\",\r\n fullBleed = true,\r\n items,\r\n selectedIndex = 0,\r\n ariaLabel,\r\n}) => {\r\n const rootRef = useRef<HTMLDivElement | null>(null);\r\n const bottomRef = useRef<HTMLDivElement | null>(null);\r\n\r\n if (!items ) return null;\r\n\r\n const onClick = () => {\r\n window.location.href = \"https://www.olimpo.bet/conoce-club-olimpo\";\r\n };\r\n\r\n const item = Array.isArray(items) \r\n ? items[selectedIndex]\r\n : items;\r\n\r\n useLayoutEffect(() => {\r\n if (!rootRef.current || !bottomRef.current) return;\r\n if (typeof ResizeObserver === \"undefined\") return;\r\n\r\n const root = rootRef.current;\r\n const bottom = bottomRef.current;\r\n\r\n const update = () => {\r\n root.style.setProperty(\r\n \"--orc-co-bottomH\",\r\n `${bottom.offsetHeight + 16}px`\r\n );\r\n };\r\n\r\n const ro = new ResizeObserver(update);\r\n ro.observe(bottom);\r\n update();\r\n\r\n return () => ro.disconnect();\r\n }, []);\r\n\r\n const rootClass = [\r\n \"orc-co-wrap\",\r\n fullBleed ? \"orc-co-fullBleed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <section\r\n ref={rootRef}\r\n className={rootClass}\r\n aria-label={ariaLabel || item.imgAlt || \"Club Olimpo\"}\r\n >\r\n <div ref={bottomRef}>\r\n <OraculoClubOlimpoVisual\r\n text={item.text}\r\n // onClick={item.onClick}\r\n onClick={onClick}\r\n imgAlt={item.imgAlt}\r\n imgSrcMobile={item.imgMobile}\r\n imgSrcDesktopBg={item.imgDesktopBg}\r\n imgSrcDesktopLogo={item.imgDesktopLogo}\r\n />\r\n </div>\r\n </section>\r\n );\r\n};\r\n\r\nexport default OraculoSeccionClubOlimpo;\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventCombinadasCard from \"../../molecules/OraculoEventCard/OraculoEventCombinadasCard\";\r\nimport styles from \"./OraculoSeccionEventoCombinadas.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoCombinadas({\r\n items,\r\n title = \"Combinadas del Olimpo\",\r\n iconUrl = \"https://stg-www.contodobet.com/static/img/landing/EventoCombinada/rayoIcon.svg\",\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState([]);\r\n const SPECIALS_GROUPS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group/prepackcoupon.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764284658793&prePackCouponTags=CUSTOM'\r\n\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n \r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadDataEventSpecial() {\r\n try {\r\n const listRes = await fetch(SPECIALS_GROUPS_URL);\r\n const listData = await listRes.json();\r\n\r\n const groupId = listData?.group?.groups?.[0]?.id;\r\n\r\n if (!groupId) {\r\n console.error(\"Could not extract group ID\");\r\n return;\r\n }\r\n\r\n const SPECIALS_URL = `https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/prepackcoupon/eventgroup/${groupId}.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764283566783&prePackCouponTags=CUSTOM`;\r\n\r\n const response = await fetch(SPECIALS_URL);\r\n const data = await response.json();\r\n\r\n setEvents(\r\n mergeEventOffers(data.events, data.betOffers, data.prePackCoupons)\r\n );\r\n } catch (e) {\r\n console.error(\"loadDataEventSpecial error:\", e);\r\n }\r\n}\r\n\r\n function mergeEventOffers(eventos:any, apuestas : any, prePackCoupons : any) {\r\n const results : any = [] ;\r\n\r\n for (const coupon of prePackCoupons) {\r\n // Build outcome set only for this coupon\r\n const usedOutcomeIds = getUsedOutcomeIds([coupon]);\r\n const reqs = extractRequirements(coupon);\r\n\r\n // Filter apuestas only using this coupon’s outcomes\r\n const apuestasByEvent = apuestas.reduce((acc:any, a:any) => {\r\n if (!acc[a.eventId]) acc[a.eventId] = [];\r\n\r\n const filteredOutcomes = a.outcomes.filter((o:any) =>\r\n usedOutcomeIds.has(o.id)\r\n );\r\n\r\n if (filteredOutcomes.length > 0) {\r\n const requiredIds = Array.from(\r\n reqs?.[0]?.requiredOutcomeIds ?? []\r\n );\r\n const outcomesWithPosition = filteredOutcomes.map((o: any) => ({\r\n ...o,\r\n position: requiredIds.indexOf(o.id)\r\n }))\r\n \r\n acc[a.eventId].push({\r\n ...a,\r\n outcomes: outcomesWithPosition\r\n });\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n // Extract required outcomes of THIS coupon\r\n\r\n // Now create duplicated event\r\n eventos.forEach((evento : any) => {\r\n if (evento.id !== coupon.prePackCouponRows[0].eventId) return;\r\n\r\n const eventOutcomeSet = usedOutcomeIds;\r\n\r\n let combinadoTotal = null;\r\n for (const r of reqs) {\r\n const fullMatch =\r\n [...r.requiredOutcomeIds].every(id => eventOutcomeSet.has(id));\r\n\r\n if (fullMatch) {\r\n combinadoTotal = r.decimal;\r\n break;\r\n }\r\n }\r\n\r\n results.push({\r\n ...evento,\r\n combinadoTotal,\r\n betoffers: apuestasByEvent[evento.id] || [],\r\n couponId: coupon.id // optional for tracking\r\n });\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nfunction extractRequirements(coupon : any) {\r\n const reqs = [];\r\n\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n const requiredOutcomeIds = new Set();\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => requiredOutcomeIds.add(o.id));\r\n });\r\n\r\n reqs.push({\r\n requiredOutcomeIds,\r\n decimal: row.odds.decimal\r\n });\r\n }\r\n }\r\n\r\n return reqs;\r\n}\r\n\r\nfunction getUsedOutcomeIds(prePackCoupons : any) {\r\n const allIds = new Set();\r\n\r\n for (const coupon of prePackCoupons) {\r\n for (const row of coupon.prePackCouponRows) {\r\n if (row.type === \"BET_BUILDER\" && row.group?.groups) {\r\n // Extract outcomes inside nested groups\r\n row.group.groups.forEach((g:any) => {\r\n g.outcomes?.forEach((o:any) => allIds.add(o.id));\r\n });\r\n }\r\n\r\n if (row.type === \"SIMPLE\" && row.outcome) {\r\n allIds.add(row.outcome.id);\r\n }\r\n }\r\n }\r\n return allIds;\r\n}\r\n\r\n useEffect(() => {\r\n loadDataEventSpecial();\r\n}, []);\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n if (!events || events.length === 0) {\r\n return null; \r\n}\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n\r\n <div className={styles.controls}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n\r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events.filter(event => event['combinadoTotal'] !== null)}\r\n perPage={undefined}\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move'}}\r\n useIndexAsKey\r\n breakpoints={{\r\n 768: { perPage: 1.2, gap: \"12px\", padding: { left: \"0px\", right: \"0px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventCombinadasCard event={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventEnVivoCard from \"../../molecules/OraculoEventCard/OraculoEventEnVivoCard\";\r\nimport React from \"react\";\r\nimport Stack from '@mui/material/Stack';\r\n\r\nexport default function OraculoSeccionEventoEnVivo({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl = 'https://stg-www.contodobet.com/static/img/landing/EventoEnVivo/icon.svg',\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n\r\n const LIVE_EVENTS_URL = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football/all/all/all/in-play.json?channel_id=3&channel_id=3&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true\"; //cada 20s\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState([]);\r\n const handlePrev = () => {\r\n carouselRef.current?.prev();\r\n };\r\n\r\n const handleNext = () => {\r\n carouselRef.current?.next();\r\n };\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadData() {\r\n try {\r\n const response = await fetch(LIVE_EVENTS_URL);\r\n const data = await response.json();\r\n setEvents(data.events); \r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n\r\nuseEffect(() => {\r\n loadData(); \r\n\r\n const interval = setInterval(() => {\r\n loadData();\r\n }, 20000); \r\n\r\n return () => clearInterval(interval);\r\n}, []);\r\n \r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n\r\n <OraculoGridGroup spacing={1.5} columns=\"1fr auto \" justify=\"start\">\r\n <OraculoSectionTitle title={title} iconUrl={iconUrl} size=\"md\" />\r\n \r\n <div style={{ display: \"flex\", gap: 8 , alignItems:'center'}}>\r\n <OraculoGridGroup spacing={1} columns=\"auto auto\">\r\n <OraculoButton\r\n ariaLabel=\"Anterior\"\r\n variant=\"secondary\"\r\n iconOnly\r\n leftIcon={<ChevronLeftRounded />}\r\n onClick={handlePrev}\r\n disabled={navState.isStart}\r\n />\r\n <OraculoButton\r\n ariaLabel=\"Siguiente\"\r\n variant=\"secondary\"\r\n iconOnly\r\n rightIcon={<ChevronRightRounded />}\r\n onClick={handleNext}\r\n disabled={navState.isEnd}\r\n />\r\n </OraculoGridGroup>\r\n \r\n <OraculoButton variant=\"secondary\" onClick={handleViewMore}>\r\n Ver más\r\n </OraculoButton>\r\n </div>\r\n </OraculoGridGroup>\r\n\r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events?.filter((ev:any) => ev.event.sport === \"FOOTBALL\").sort((a:any, b:any) => new Date(b.event.start).getTime() - new Date(a.event.start).getTime()) ?? []}\r\n perPage={undefined}\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: 'move'}}\r\n breakpoints={{\r\n 768: { gap: \"8px\", focus: \"center\" }, \r\n 1024: { gap: \"10px\" , focus: \"center\" },\r\n }}\r\n renderItem={(p) => <OraculoEventEnVivoCard {...p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </Stack>\r\n </section>\r\n );\r\n}\r\n","import { useRef, useState, useEffect } from \"react\";\r\nimport { ChevronLeftRounded, ChevronRightRounded } from \"@mui/icons-material\";\r\nimport { OraculoSectionTitle, OraculoButton, OraculoCarousel } from \"../..\";\r\nimport { OraculoSeccionDestacadosItem, OraculoSeccionDestacadosProps } from \"../../interfaces/oraculo/InterfaceDestacados\";\r\nimport OraculoGridGroup from \"../../atoms/OraculoGridGroup/OraculoGridGroup\";\r\nimport OraculoEventSemanaCard from \"../../molecules/OraculoEventCard/OraculoEventSemanaCard\";\r\nimport styles from \"./OraculoSeccionEventoSemana.module.css\";\r\nimport Stack from '@mui/material/Stack';\r\nimport React from \"react\";\r\n\r\nexport default function OraculoSeccionEventoSemana({\r\n items,\r\n title = \"En vivo\",\r\n iconUrl,\r\n onViewMore,\r\n className = \"\",\r\n}: any) {\r\n \r\n const WEEK_EVENTS_URL = 'https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/group.json?channel_id=1&client_id=200&lang=es_PE&market=PE'\r\n const carouselRef = useRef<any>(null);\r\n const [navState, setNavState] = useState({ isStart: true, isEnd: false });\r\n const [events, setEvents] = useState<any[]>([]);\r\n\r\n function sortEvents(evs: any[]) {\r\n return [...evs].sort(\r\n (a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()\r\n );\r\n }\r\n\r\n function filterEventsWithinOneWeek(events: any[]) {\r\n const now = new Date();\r\n const oneWeekLater = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); // 7 days\r\n\r\n return events.filter((event: any) => {\r\n if (!event.start) return false;\r\n\r\n const eventDate = new Date(event.start);\r\n return eventDate >= now && eventDate <= oneWeekLater;\r\n });\r\n }\r\n\r\n const handleViewMore = () => {\r\n onViewMore?.();\r\n };\r\n\r\n async function loadDataWeekEvent() {\r\n try {\r\n const response = await fetch(WEEK_EVENTS_URL);\r\n const data = await response.json();\r\n const football = data.group.groups.find(\r\n (g : any) => g.englishName === \"Football\"\r\n );\r\n\r\n if (!football || !Array.isArray(football.groups)) {\r\n console.error(\"Football groups not found\");\r\n return;\r\n }\r\n\r\n const N = 4; \r\n\r\n const firstGroups = football.groups.slice(0, N);\r\n\r\n\r\n const buildUrls = (group : any) => {\r\n const base = \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football\";\r\n\r\n if (group.groups && group.groups.length > 0) {\r\n const sub = group.groups[0]; // ONLY FIRST child\r\n return [\r\n `${base}/${group.termKey}/${sub.termKey}/all/matches.json?channel_id=1&channel_id=1&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true`\r\n ];\r\n }\r\n\r\n return [\r\n `${base}/${group.termKey}/all/all/matches.json?channel_id=1&channel_id=1&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true`\r\n ];\r\n };\r\n\r\n const urls = firstGroups.flatMap(buildUrls);\r\n\r\n loadAllGroupEvents(urls)\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\n async function loadAllGroupEvents(urls : any) {\r\n try {\r\n const responses = await Promise.all(\r\n urls.map((url: any) => fetch(url).then(res => res.json()))\r\n );\r\n\r\n let allEvents : any = [];\r\n let allBetOffers : any = [];\r\n\r\n responses.forEach(data => {\r\n if (!data.events) return;\r\n\r\n allEvents.push(...data.events.map((item: any) => item.event));\r\n allBetOffers.push(...data.events.flatMap((item:any) => item.betOffers || []));\r\n });\r\n\r\n // Final merged list\r\n const merged = mergeEventOffersOutcome(allEvents, allBetOffers);\r\n\r\n setEvents(sortEvents(filterEventsWithinOneWeek(merged)));\r\n\r\n } catch (error) {\r\n console.error(\"Error loading events:\", error);\r\n }\r\n}\r\n\r\n function mergeEventOffersOutcome(eventos : any, apuestas : any) {\r\n const filtered = apuestas.filter((b:any) => b.betOfferType?.id === 2);\r\n\r\n const apuestasByEvent = filtered.reduce((acc : any, b : any) => {\r\n if (!acc[b.eventId]) acc[b.eventId] = [];\r\n acc[b.eventId].push(b);\r\n return acc;\r\n }, {});\r\n\r\n return eventos\r\n .filter((evento : any) => apuestasByEvent[evento.id]) \r\n .map((evento: any) => ({\r\n ...evento,\r\n outcome: apuestasByEvent[evento.id],\r\n }));\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.events.length > 0) {\r\n loadDataWeekEvent();\r\n }\r\n}, [items]);\r\n\r\n\r\n const sectionClassName = className || undefined;\r\n\r\n return (\r\n <section className={sectionClassName} style={{ width: \"100%\" }}>\r\n <div className={styles.wrapper}>\r\n\r\n <div className={styles.container}>\r\n <Stack direction=\"column\" spacing={1.5} useFlexGap>\r\n <OraculoSectionTitle title=\"Eventos de la semana\" />\r\n <div className={styles.buttonWrapper}>\r\n <OraculoButton variant=\"secondary\" size=\"lg\" fullWidth onClick={() => {handleViewMore() }} >Ver más</OraculoButton>\r\n </div>\r\n </Stack>\r\n </div>\r\n\r\n <div style={{ minWidth: 0 }}>\r\n\r\n \r\n <OraculoCarousel\r\n ref={carouselRef}\r\n items={events}\r\n perPage={3.5}\r\n gap=\"16px\"\r\n options={{ autoWidth: true, trimSpace: true }}\r\n breakpoints={{\r\n 1024:{ perPage: 1.4, gap: \"8px\", focus: \"center\", padding: { left: \"8px\", right: \"8px\" }, }, \r\n }}\r\n renderItem={(p) => <OraculoEventSemanaCard event ={p} />}\r\n onMove={({ isStart, isEnd }) => setNavState({ isStart, isEnd })}\r\n />\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n}\r\n","import { useState } from \"react\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoCarouselDots from \"../../atoms/OraculoCarouselDots/OraculoCarouselDots\";\r\nimport OraculoCarousel from \"../../molecules/OraculoCarousel/OraculoCarousel\";\r\nimport {\r\n OraculoBannerItem,\r\n OraculoSeccionBannersProps,\r\n} from \"../../interfaces/oraculo/InterfaceBanner\";\r\n\r\nconst DEFAULT_BACKGROUNDS = [\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n {\r\n desktopSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoDesktop.png\",\r\n mobileSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.png\",\r\n fallbackSrc:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/FondoMisiones.jpg\",\r\n },\r\n];\r\n\r\nconst redirectUrl = (url: String) => `${window.location.origin}${url}`;\r\n\r\nconst DEFAULT_ITEMS: OraculoBannerItem[] = [\r\n {\r\n id: 1,\r\n label: \"APUESTAS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon1.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/#home\"),\r\n },\r\n {\r\n id: 2,\r\n label: \"EXPLORAR\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon2.svg\",\r\n onclick: () => console.log(\"EXPLORAR\"),\r\n },\r\n {\r\n id: 3,\r\n label: \"TOP JUEGOS\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon3.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/casino\"),\r\n },\r\n {\r\n id: 4,\r\n label: \"MISIONES\",\r\n icon:\r\n \"https://stg-www.contodobet.com/static/img/landing/Banner/icon4.svg\",\r\n onclick: () => redirectUrl(\"https://www.olimpo.bet/misiones\"),\r\n },\r\n];\r\n\r\nexport default function OraculoSeccionBanners({\r\n backgrounds = DEFAULT_BACKGROUNDS,\r\n items = DEFAULT_ITEMS,\r\n}: OraculoSeccionBannersProps) {\r\n const [activeDot, setActiveDot] = useState(0);\r\n\r\n const totalDots = backgrounds?.length || 1;\r\n\r\n return (\r\n <Box\r\n component=\"section\"\r\n sx={{\r\n position: \"relative\",\r\n // width: \"100vw\",\r\n // left: \"50%\",\r\n // right: \"50%\",\r\n // transform: \"translateX(-50%)\",\r\n \r\n overflow: \"visible\",\r\n // pb: { xs: 7, sm: 8 },\r\n }}\r\n >\r\n {/* Carrusel de backgrounds */}\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n borderRadius: 0,\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <OraculoCarousel\r\n items={backgrounds}\r\n perPage={0}\r\n gap=\"0px\"\r\n options={{\r\n type: \"loop\",\r\n pagination: false,\r\n arrows: false,\r\n drag: true,\r\n focus: \"center\",\r\n // left: 0,\r\n // right: 0,\r\n }}\r\n onMove={({ index }) => setActiveDot(index)}\r\n renderItem={(bg) => (\r\n <Box\r\n sx={{\r\n position: \"relative\",\r\n height: { xs: 300, sm: 360, md: 420 },\r\n }}\r\n >\r\n <Box\r\n component=\"picture\"\r\n sx={{ position: \"absolute\", inset: 0, lineHeight: 0 }}\r\n >\r\n <source\r\n srcSet={bg.desktopSrc}\r\n media=\"(min-width:800px)\"\r\n />\r\n <source\r\n srcSet={bg.mobileSrc}\r\n media=\"(max-width:799px)\"\r\n />\r\n <Box\r\n component=\"img\"\r\n src={bg.fallbackSrc ?? bg.desktopSrc}\r\n alt=\"\"\r\n aria-hidden\r\n loading=\"lazy\"\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n objectFit: \"cover\",\r\n display: \"block\",\r\n }}\r\n />\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n pointerEvents: \"none\",\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n top: \"40%\",\r\n background:\r\n \"linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(18,18,18,0.85) 80%, #121212 100%)\",\r\n },\r\n }}\r\n />\r\n\r\n </Box>\r\n )}\r\n />\r\n\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n bottom: 72,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n zIndex: 2,\r\n }}\r\n >\r\n <OraculoCarouselDots total={totalDots} active={activeDot} />\r\n </Box>\r\n </Box>\r\n\r\n {/* Dock de items */}\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n bottom: { xs: 10, sm: 10 },\r\n left: \"50%\",\r\n transform: \"translateX(-50%)\",\r\n width: { xs: \"92%\", sm: \"88%\", md: \"80%\" },\r\n maxWidth: 900,\r\n backgroundColor: \"#363636\",\r\n borderRadius: 2,\r\n py: { xs: 0.8, md: 1.2 },\r\n px: { xs: 1.5, md: 2 },\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n alignItems: \"center\",\r\n boxShadow: \"0 10px 24px rgba(0,0,0,.35)\",\r\n zIndex: 3,\r\n }}\r\n >\r\n {items?.map((item: OraculoBannerItem) => (\r\n <Box\r\n key={item.id}\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", md: \"row\" }, // 👈 icono arriba en mobile, en fila en desktop\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: { xs: 0.5, md: 1 }, // espacio icono-texto\r\n color: \"#FFFFFF\",\r\n minWidth: 0,\r\n cursor: item.onclick ? \"pointer\" : \"default\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n onClick={() => item.onclick?.()}\r\n >\r\n {item.icon && (\r\n <Box\r\n component=\"img\"\r\n src={item.icon}\r\n alt={item.label || `icon-${item.id}`}\r\n sx={{\r\n width: { xs: 20, sm: 22, md: 24 },\r\n height: { xs: 20, sm: 22, md: 24 },\r\n objectFit: \"contain\",\r\n }}\r\n />\r\n )}\r\n <Typography\r\n sx={{\r\n fontSize: { xs: 10, sm: 11, md: 12 },\r\n fontWeight: 600,\r\n color: \"#E0E0E0\",\r\n textAlign: \"center\", // en mobile queda centrado bajo el icono\r\n }}\r\n >\r\n {item.label}\r\n </Typography>\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n","import { Box, Stack, Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport OraculoLogoMediosPago from \"../../atoms/OraculoLogo/OraculoLogoMediosPago\";\r\n\r\ntype LogoType = {\r\n src: string;\r\n alt: string;\r\n};\r\n\r\ntype Props = {\r\n title?: string;\r\n rows?: LogoType[][];\r\n};\r\n\r\nconst DEFAULT_ROWS: LogoType[][] = [\r\n [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/IBK.svg\", alt: \"Interbank\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/Yape.svg\", alt: \"Yape\" },\r\n ],\r\n [\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/tupay.svg\", alt: \"Tupay\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/monnet.svg\", alt: \"Monnet\" },\r\n { src: \"https://stg-www.contodobet.com/static/img/landing/MediosPago/niubiz.svg\", alt: \"Niubiz\" },\r\n ],\r\n];\r\n\r\nexport default function OraculoSeccionMediosPago({\r\n title = \"Medios de pago\",\r\n rows = DEFAULT_ROWS,\r\n}: Props) {\r\n // aplanado para la grilla\r\n const flat = rows.flat();\r\n\r\n return (\r\n <Box component=\"section\" aria-labelledby=\"mp-title\" sx={{ color: \"#fff\" }}>\r\n <Typography\r\n id=\"mp-title\"\r\n variant=\"h6\"\r\n sx={{\r\n fontWeight: 800,\r\n fontSize: { xs: 20, md: 32 },\r\n textAlign: \"center\",\r\n mb: 1.5,\r\n }}\r\n >\r\n {title}\r\n </Typography>\r\n\r\n {/* underbar con gradiente, sin CSS */}\r\n <Box\r\n sx={{\r\n width: \"288px\",\r\n height: \"2px\",\r\n mx: \"auto\",\r\n mb: 3,\r\n opacity: 0.95,\r\n filter: \"blur(0.2px)\",\r\n background:\r\n \"linear-gradient(90deg, rgba(0,0,0,0) 0%, #1dd75b 18%, #23d46b 50%, #1dd75b 82%, rgba(0,0,0,0) 100%)\",\r\n }}\r\n />\r\n\r\n {/* móvil: usa tus filas originales */}\r\n <Box sx={{ display: { xs: \"block\", md: \"none\" } }}>\r\n {rows.map((r, i) => (\r\n <Stack\r\n key={i}\r\n direction=\"row\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n gap={2.5} // ~20px\r\n flexWrap=\"wrap\"\r\n >\r\n {r.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Stack>\r\n ))}\r\n </Box>\r\n\r\n {/* desktop: grilla auto-fit */}\r\n <Box\r\n sx={{\r\n mt: 3,\r\n display: { xs: \"none\", md: \"grid\" },\r\n gap: { xs: 2.5, md: 2.75 },\r\n justifyItems: \"center\",\r\n alignItems: \"center\",\r\n gridTemplateColumns: { md: \"repeat(auto-fit, 160px)\"},\r\n justifyContent: { md: \"center\" },\r\n }}\r\n >\r\n {flat.map((l) => (\r\n <OraculoLogoMediosPago key={`${l.src}-${l.alt}`} {...l} />\r\n ))}\r\n </Box>\r\n\r\n </Box>\r\n );\r\n}\r\n","import OraculoSeccionBonoBienvenida from \"../organisms/OraculoSeccionBonoBienvenida/OraculoSeccionBonoBienvenida\";\r\nimport OraculoSeccionTopJuegos from \"../organisms/OraculoSeccionTopJuegos/OraculoSeccionTopJuegos\";\r\nimport OraculoSeccionCasino from \"../organisms/OraculoSeccionCasino/OraculoSeccionCasino\";\r\nimport OraculoSeccionCasinoEnVivo from \"../organisms/OraculoSeccionCasinoEnVivo/OraculoSeccionCasinoEnVivo\";\r\nimport OraculoSeccionVirtuales from \"../organisms/OraculoSeccionVirtuales/OraculoSeccionVirtuales\";\r\nimport OraculoSeccionClubOlimpo from \"../organisms/OraculoSeccionClubOlimpo/OraculoSeccionClubOlimpo\";\r\nimport OraculoSeccionDestacados from \"../organisms/OraculoSeccionDestacados/OraculoSeccionDestacados\";\r\nimport OraculoSeccionBanners from \"../organisms/OraculoSeccionBanners/OraculoSeccionBanners\";\r\nimport OraculoSeccionMediosPago from \"../organisms/OraculoSeccionMediosPago/OraculoSeccionMediosPago\";\r\nimport OraculoSeccionEventoCombinadas from \"../organisms/OraculoSeccionEventoCombinadas/OraculoSeccionEventoCombinadas\";\r\nimport OraculoSeccionEventoEnVivo from \"../organisms/OraculoSeccionEventoEnVivo/OraculoSeccionEventoEnVivo\";\r\nimport OraculoSeccionEventoSemana from \"../organisms/OraculoSeccionEventoSemana/OraculoSeccionEventoSemana\";\r\n\r\nimport React from \"react\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\nexport const Landing: LandingComponentMap = {\r\n OraculoSeccionDestacados,\r\n OraculoSeccionTopJuegos,\r\n OraculoSeccionCasinoEnVivo,\r\n OraculoSeccionCasino,\r\n OraculoSeccionVirtuales,\r\n OraculoSeccionClubOlimpo,\r\n OraculoSeccionBonoBienvenida,\r\n OraculoSeccionBanners,\r\n OraculoSeccionMediosPago,\r\n OraculoSeccionEventoEnVivo,\r\n OraculoSeccionEventoSemana,\r\n OraculoSeccionEventoCombinadas,\r\n};","\"use client\";\r\nimport React, { useEffect, useState, useMemo } from \"react\";\r\nimport { Container, Stack } from \"@mui/material\";\r\nimport { doc, onSnapshot, Firestore } from \"firebase/firestore\";\r\n// import \"@splidejs/react-splide/css\";\r\n\r\nimport { Landing } from \"./landingRegistry\";\r\n\r\nexport type LandingComponentMap = Record<string, React.ComponentType<any>>;\r\n\r\n// Es componente React si es función o componente objeto (MUI, etc.)\r\nconst isComponent = (val: any) =>\r\n typeof val === \"function\" ||\r\n (val && typeof val === \"object\" && \"$$typeof\" in val);\r\n\r\n// En oraculo-ui los organismos de landing se llaman OraculoSeccionXXX\r\nconst isSectionName = (key: string) => /^OraculoSeccion[A-Z]/.test(key);\r\n\r\nexport const LandingComponents: LandingComponentMap = Object.fromEntries(\r\n Object.entries(Landing).filter(\r\n ([key, val]) => isSectionName(key) && isComponent(val)\r\n )\r\n) as LandingComponentMap;\r\n\r\n// Section item model mirrors Firestore persisted structure\r\nexport type OraculoPageLandingPreviewSection = {\r\n id: number;\r\n title: string;\r\n componentKey: string;\r\n visible: boolean;\r\n order: number;\r\n props?: Record<string, unknown>;\r\n apiUrl?: string;\r\n dataMode?: \"url\" | \"manual\";\r\n variableName?: string;\r\n manualItems?: { fields: { name: string; type: string; value: string }[] }[];\r\n variableName2?: string;\r\n manualItems2?: { fields: { name: string; type: string; value: string }[] }[];\r\n manualScalarFields?: { name: string; type: string; value: string }[];\r\n apiMethod?: \"GET\" | \"POST\";\r\n apiParams?: { id: string; key: string; value: string }[];\r\n};\r\n\r\n/** Payload bruto obtenido por fetch o construido manualmente */\r\ntype SectionPayload =\r\n | Record<string, unknown>\r\n | Array<unknown>\r\n | null\r\n | undefined;\r\n\r\nexport interface OraculoPageLandingPreviewProps {\r\n /** Optional override: if provided, renders these sections instead of fetching Firestore */\r\n sectionsOverride?: OraculoPageLandingPreviewSection[];\r\n /** Firestore document id (default 'home') */\r\n docId?: string;\r\n /** Instancia de Firestore proporcionada por la app que consume el paquete */\r\n db: Firestore;\r\n}\r\n\r\nclass HttpError extends Error {\r\n constructor(\r\n public status: number,\r\n public url: string,\r\n public statusText: string\r\n ) {\r\n super(`HTTP ${status} ${statusText}`);\r\n this.name = \"HttpError\";\r\n }\r\n}\r\n\r\ntype ComponentMap = Record<\r\n string,\r\n React.ComponentType<Record<string, unknown>>\r\n>;\r\n\r\nconst OraculoPageLandingPreview: React.FC<OraculoPageLandingPreviewProps> = ({\r\n sectionsOverride,\r\n docId = \"home\",\r\n db,\r\n}) => {\r\n const [sections, setSections] = useState<OraculoPageLandingPreviewSection[]>(\r\n []\r\n );\r\n const [loading, setLoading] = useState(false);\r\n const [sectionDataMap, setSectionDataMap] = useState<\r\n Record<number, SectionPayload>\r\n >({});\r\n const [sectionLoadingMap, setSectionLoadingMap] = useState<\r\n Record<number, boolean>\r\n >({});\r\n const [sectionErrorMap, setSectionErrorMap] = useState<\r\n Record<number, string>\r\n >({});\r\n\r\n // Fetch sections from Firestore unless override provided\r\n useEffect(() => {\r\n if (sectionsOverride) return;\r\n if (!db) return; // seguridad extra por si alguien no pasa db\r\n\r\n setLoading(true);\r\n\r\n const arraydemo = [\r\n {\r\n apiMethod: \"GET\",\r\n order: 11,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoEnVivo\",\r\n id: 11,\r\n title: \"Envivo\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/offering/v2018/nexuspe/listView/football/all/all/all/in-play.json?channel_id=3&channel_id=3&client_id=200&client_id=200&competitionId=undefined&lang=es_PE&lang=es_PE&market=PE&market=PE&useCombined=true&useCombinedLive=true\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n {\r\n apiMethod: \"GET\",\r\n order: 12,\r\n dataMode: \"url\",\r\n componentKey: \"OraculoSeccionEventoSemana\",\r\n id: 12,\r\n title: \"Evento semana\",\r\n apiUrl:\r\n \"https://us1.offering-api.kambicdn.com/coupon/v2018/nexuspe/coupon/3935.json?lang=es_PE&market=PE&client_id=200&channel_id=1&ncid=1764401676636&startTime=2025-11-29T06:00:00.000Z&endTime=2026-06-25T15:00:00.000Z&minNoOfEvents=0&maxNoOfEvents=25&categoryGroup=list_view_competitions\",\r\n visible: true,\r\n apiParams: [],\r\n },\r\n ];\r\n const unsubscribe = onSnapshot(\r\n doc(db, \"landings\", docId),\r\n (snap) => {\r\n try {\r\n let fetched: OraculoPageLandingPreviewSection[] = snap.exists()\r\n ? (snap.data()?.sections as OraculoPageLandingPreviewSection[]) ||\r\n []\r\n : [];\r\n fetched = fetched\r\n .slice()\r\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n .map((s, i) => ({ ...s, order: i + 1 }));\r\n // setSections([...new Set([...fetched, ...arraydemo])]);\r\n setSections(fetched);\r\n console.log(\"fetched: \", fetched);\r\n } catch (e) {\r\n console.error(\"Error procesando landings/\" + docId, e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n (error) => {\r\n console.error(\"Error escuchando landings/\" + docId, error);\r\n setLoading(false);\r\n }\r\n );\r\n\r\n return () => unsubscribe();\r\n }, [sectionsOverride, docId, db]);\r\n\r\n useEffect(() => {\r\n // preload all components used in sections\r\n const effectiveSections = sectionsOverride\r\n ? sectionsOverride.slice()\r\n : sections.slice();\r\n const toLoad = effectiveSections\r\n .map((s) => s.componentKey)\r\n .filter((key) => !!key);\r\n\r\n if (toLoad.length === 0) return;\r\n\r\n }, [sectionsOverride, sections]);\r\n\r\n const fetchSectionData = async (\r\n section: OraculoPageLandingPreviewSection\r\n ): Promise<SectionPayload> => {\r\n const rawUrl = (section.apiUrl || \"\").trim();\r\n if (!rawUrl) return undefined;\r\n\r\n const method = section.apiMethod || \"GET\";\r\n const params = section.apiParams || [];\r\n\r\n let url = rawUrl;\r\n let body: BodyInit | undefined;\r\n let headers: HeadersInit | undefined;\r\n\r\n if (method === \"GET\") {\r\n const u = new URL(\r\n rawUrl,\r\n typeof window == \"undefined\"\r\n ? \"http://localhost\"\r\n : window.location.origin\r\n );\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n u.searchParams.append(p.key, p.value);\r\n }\r\n url = u.toString();\r\n } else {\r\n // application/x-www-form-urlencoded\r\n const encoded = new URLSearchParams();\r\n for (const p of params) {\r\n if (!p.key) continue;\r\n // el value se manda tal cual; URLSearchParams se encarga del %7B%22...%7D\r\n encoded.append(p.key, p.value);\r\n }\r\n body = encoded.toString();\r\n headers = {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n };\r\n }\r\n\r\n const res = await fetch(url, {\r\n method,\r\n headers,\r\n body,\r\n });\r\n\r\n if (!res.ok) throw new HttpError(res.status, url, res.statusText);\r\n return res.json();\r\n };\r\n\r\n // Use override if provided\r\n const effectiveSections = useMemo(\r\n () => (sectionsOverride ? sectionsOverride.slice() : sections.slice()),\r\n [sectionsOverride, sections]\r\n );\r\n\r\n const fetchedKeysRef = React.useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n const fetchables = effectiveSections\r\n .map((s) => ({ s, url: (s.apiUrl || \"\").trim() }))\r\n .filter(({ url }) => !!url);\r\n\r\n if (!fetchables.length) return;\r\n\r\n for (const { s, url } of fetchables) {\r\n const key = `${s.id}|${url}`;\r\n if (fetchedKeysRef.current.has(key)) continue;\r\n fetchedKeysRef.current.add(key);\r\n\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: true }));\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: \"\" }));\r\n\r\n (async () => {\r\n try {\r\n const json = await fetchSectionData(s);\r\n setSectionDataMap((prev) => ({ ...prev, [s.id]: json }));\r\n } catch (err: unknown) {\r\n let message = \"Error desconocido\";\r\n if (err instanceof HttpError) {\r\n message = `Error HTTP ${err.status} (${err.statusText}) en ${err.url}`;\r\n } else if (err instanceof SyntaxError) {\r\n message = \"Respuesta no es JSON válido\";\r\n } else if (err instanceof TypeError) {\r\n message = \"Fallo de red / CORS / conexión\";\r\n } else if (typeof err === \"string\") {\r\n message = err.toString();\r\n }\r\n setSectionErrorMap((prev) => ({ ...prev, [s.id]: message }));\r\n } finally {\r\n setSectionLoadingMap((prev) => ({ ...prev, [s.id]: false }));\r\n }\r\n })();\r\n }\r\n }, [effectiveSections]);\r\n\r\n const orderedVisible = useMemo(\r\n () =>\r\n effectiveSections\r\n .filter((s) => s.visible)\r\n .sort((a, b) => a.order - b.order),\r\n [effectiveSections]\r\n );\r\n\r\n const toManualArray = (\r\n items:\r\n | { fields: { name: string; type: string; value: string }[] }[]\r\n | undefined\r\n ): Array<Record<string, unknown>> => {\r\n if (!Array.isArray(items)) return [];\r\n return items.map((it) => {\r\n const obj: Record<string, unknown> = {};\r\n for (const f of it.fields || []) {\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n obj[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n obj[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n obj[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else obj[f.name] = f.value;\r\n }\r\n return obj;\r\n });\r\n };\r\n\r\n const toManualScalars = (\r\n fields: { name: string; type: string; value: string }[] | undefined\r\n ): Record<string, unknown> => {\r\n const out: Record<string, unknown> = {};\r\n if (!Array.isArray(fields)) return out;\r\n for (const f of fields) {\r\n if (!f.name) continue;\r\n const t = (f.type || \"string\").toLowerCase();\r\n if (t === \"number\") {\r\n // Si el valor está vacío o es inválido, NO agregar el prop (usar default del componente)\r\n const val = String(f.value || \"\").trim();\r\n if (val !== \"\") {\r\n const num = Number(val);\r\n if (!Number.isNaN(num)) {\r\n out[f.name] = num;\r\n }\r\n }\r\n } else if (t === \"boolean\")\r\n out[f.name] = String(f.value).toLowerCase() === \"true\";\r\n else if (t === \"function\") {\r\n const body = String(f.value || \"\").trim();\r\n if (body) {\r\n try {\r\n // ✅ Explicit function type\r\n const fn = new Function(body) as () => unknown;\r\n out[f.name] = fn;\r\n } catch (e) {\r\n console.error(`❌ Error creando función en item '${f.name}':`, e);\r\n }\r\n }\r\n } else out[f.name] = f.value;\r\n }\r\n return out;\r\n };\r\n\r\n const mapPayloadToProps = (\r\n payload: SectionPayload,\r\n manual: { arr?: unknown[]; variableName?: string } | null,\r\n base?: Record<string, unknown>\r\n ): Record<string, unknown> => {\r\n const merged: Record<string, unknown> = base ? { ...base } : {};\r\n if (manual) {\r\n const name = (manual.variableName || \"items\").trim() || \"items\";\r\n merged[name] = manual.arr || [];\r\n return merged;\r\n }\r\n const pl = payload;\r\n const isArr = Array.isArray(pl);\r\n const obj =\r\n !isArr && typeof pl === \"object\" && pl !== null ? pl : undefined;\r\n const arrData =\r\n obj && Array.isArray((obj as any).lobby || (obj as any).items)\r\n ? (((obj as any).lobby || (obj as any).items) as unknown[])\r\n : undefined;\r\n const choose = (fallback: unknown[]) => (isArr ? pl : arrData || fallback);\r\n merged.items = choose(arrData || []);\r\n return merged;\r\n };\r\n\r\n const buildCompProps = (\r\n s: OraculoPageLandingPreviewSection\r\n ): Record<string, unknown> => {\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload: SectionPayload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n let compProps: Record<string, unknown> = s.props ? { ...s.props } : {};\r\n const scalars = toManualScalars(s.manualScalarFields);\r\n if (\r\n [\r\n \"OraculoSeccionEventoEnVivo\",\r\n \"OraculoSeccionEventoSemana\",\r\n \"OraculoSeccionEventoCombinadas\",\r\n ].includes(s.componentKey)\r\n ) {\r\n console.log(payload);\r\n return { items: payload, ...compProps, ...scalars };\r\n }\r\n\r\n compProps = { ...compProps, ...scalars };\r\n if (hasUrl) compProps = mapPayloadToProps(payload, null, compProps);\r\n else if (s.dataMode === \"manual\") {\r\n const arr = toManualArray(s.manualItems);\r\n compProps = mapPayloadToProps(\r\n null,\r\n { arr, variableName: s.variableName },\r\n compProps\r\n );\r\n\r\n // Si existe variableName2 y manualItems2, agregar también ese prop\r\n if (s.variableName2 && s.manualItems2) {\r\n const arr2 = toManualArray(s.manualItems2);\r\n const varName2 = (s.variableName2 || \"items2\").trim() || \"items2\";\r\n compProps[varName2] = arr2;\r\n }\r\n }\r\n\r\n return compProps;\r\n };\r\n\r\n const renderStatusBox = (\r\n key: number,\r\n type: \"loading\" | \"error\" | \"component\",\r\n message: string\r\n ) => {\r\n const colorMap: Record<string, string> = {\r\n loading: \"bg-blue-100 text-blue-800\",\r\n error: \"bg-red-100 text-red-800\",\r\n component: \"bg-yellow-100 text-yellow-800\",\r\n };\r\n return (\r\n <div key={key} className={`mx-4 p-4 rounded ${colorMap[type]}`}>\r\n {message}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSingleSection = (s: OraculoPageLandingPreviewSection) => {\r\n const rawKey = s.componentKey;\r\n\r\n const Comp = LandingComponents[rawKey];\r\n\r\n if (!Comp) {\r\n console.warn(`No hay componente registrado para \"${rawKey}\"`);\r\n return renderStatusBox(\r\n s.id,\r\n \"component\",\r\n `Componente \"${rawKey}\" no encontrado`\r\n );\r\n }\r\n\r\n const hasUrl = !!s.apiUrl?.trim();\r\n const payload = hasUrl ? sectionDataMap[s.id] : undefined;\r\n const loadingSec = hasUrl ? !!sectionLoadingMap[s.id] : false;\r\n const errorSec = hasUrl ? sectionErrorMap[s.id] : \"\";\r\n\r\n if (hasUrl) {\r\n if (loadingSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"loading\",\r\n `Cargando datos desde ${s.apiUrl}...`\r\n );\r\n if (errorSec && !payload)\r\n return renderStatusBox(\r\n s.id,\r\n \"error\",\r\n `Error cargando ${s.apiUrl}: ${errorSec}`\r\n );\r\n }\r\n\r\n const compProps = buildCompProps(s);\r\n\r\n const fullBleedComponents = new Set([\r\n \"OraculoSeccionBanners\",\r\n \"OraculoSeccionBonoBienvenida\",\r\n ]);\r\n const isFullBleed = fullBleedComponents.has(s.componentKey);\r\n\r\n const wrapperStyle: React.CSSProperties = isFullBleed\r\n ? {\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n }\r\n : {\r\n paddingLeft: 16,\r\n paddingRight: 16,\r\n width: \"100%\",\r\n boxSizing: \"border-box\",\r\n };\r\n\r\n return (\r\n <div key={s.id} style={wrapperStyle}>\r\n <Comp {...compProps} />\r\n </div>\r\n );\r\n };\r\n\r\n if (loading && !sectionsOverride)\r\n return <div className=\"text-xs text-gray-400\">Cargando preview...</div>;\r\n if (!loading && !sectionsOverride && sections.length === 0)\r\n return (\r\n <div className=\"text-xs text-gray-500\">Sin secciones (Firestore)</div>\r\n );\r\n\r\n return (\r\n <Container\r\n className=\"oli-font\"\r\n maxWidth={false}\r\n disableGutters\r\n sx={{\r\n backgroundColor: \"#121212\",\r\n position: \"relative\",\r\n // pb: 5,\r\n // pt: 5,\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n overflowX: \"hidden\",\r\n }}\r\n >\r\n <Stack direction=\"column\" spacing={8} useFlexGap>\r\n {orderedVisible.map(renderSingleSection)}\r\n </Stack>\r\n </Container>\r\n );\r\n};\r\n\r\nexport default OraculoPageLandingPreview;\r\n"],"names":["OraculoButton","children","onClick","href","target","rel","type","disabled","variant","size","fullWidth","fullHeight","className","ariaLabel","leftIcon","rightIcon","iconOnly","hasText","onlyOneIcon","isIconOnly","cls","content","jsxs","Fragment","jsx","ariaDisabled","MuiLink","e","OraculoSectionTitle","title","iconUrl","wrapperClass","OraculoCarouselDots","total","active","onSelect","rootClass","_","i","OraculoGridGroup","minWidth","spacing","justify","columns","gridTemplate","gap","OraculoLogoMediosPago","src","alt","Box","OraculoEventTitle","subtitle","styles","OraculoEventStatusBadge","text","color","textColor","OraculoEventStatus","live","time","OraculoMatchHeader","OraculoEventLabel","OraculoEventLeague","OraculoEventScore","name","OraculoEventTeamInfo","logo","Splide","SplideRaw","SplideSlide","SplideSlideRaw","OraculoCarousel","forwardRef","items","renderItem","perPage","breakpoints","options","onMove","useIndexAsKey","ref","splideRef","useRef","useImperativeHandle","_a","index","handleMove","useCallback","splide","controller","end","isStart","isEnd","handleMounted","mergedOptions","item","OraculoGameCard","imageUrl","fillParent","dim","handleButtonClick","sizeStyles","OraculoGameRankCard","orden","sizes","getVal","k","def","_b","_d","_c","W","H","R","F","hang","OraculoLiveCasinoCard","provider","providerName","machine","Typography","GAP","OraculoGameSlide","layout","big","smalls","it","OraculoWelcomeBanner","amount","buttonText","onButtonClick","backgroundImage","symbol","value","isLarge","OraculoClubOlimpoVisual","buttonLabel","imgAlt","imgSrcMobile","imgSrcDesktopBg","imgSrcDesktopLogo","redirectHomeWithOutcomes","outcomes","arr","OraculoEventCombinadosCard","event","processOutcome","apuestas","homeName","awayName","a","best","line","_e","acc","o","eventOutcomes","Stack","b","OraculoButtonBet","OraculoEventEnVivoCard","liveData","betOffers","fondo","selectedOffer","offer","OraculoEventHeader","_f","_g","_h","OraculoEventDate","OraculoEventSemanaCard","formatDate","dateString","date","dayShort","day","month","OraculoSeccionDestacados","onViewMore","carouselRef","navState","setNavState","useState","handlePrev","handleNext","handleViewMore","redirectToPromotion","promotion","url","ChevronLeftRounded","ChevronRightRounded","redirectToGameFromItem","game","machine_name","external_id","providerCode","machineCode","gameName","externalId","typeParam","OraculoSeccionTopJuegos","onCardClick","normalizedItems","useMemo","juego","getGameId","g","idx","OraculoSeccionCasinoEnVivo","backgroundMobileUrl","backgroundDesktopUrl","buildCasinoSlides","games","mosaicFirst","gridSize","baseItems","slides","start","take","OraculoSeccionCasino","onItemClick","slide","itm","buildVirtualSlides","OraculoSeccionVirtuales","buildSectionSx","bgUrl","headlineBaseSx","hlTopSx","hlBottomSx","OraculoSeccionBonoBienvenida","headline","headline2","backgroundImageUrl","hl1","hl2","isMobile","useMediaQuery","showDots","sectionSx","activeIndex","setActiveIndex","renderCarousel","desktop","OraculoSeccionClubOlimpo","fullBleed","selectedIndex","rootRef","bottomRef","useLayoutEffect","root","bottom","update","ro","OraculoSeccionEventoCombinadas","events","setEvents","SPECIALS_GROUPS_URL","loadDataEventSpecial","listData","groupId","SPECIALS_URL","data","mergeEventOffers","eventos","prePackCoupons","results","coupon","usedOutcomeIds","getUsedOutcomeIds","reqs","extractRequirements","apuestasByEvent","filteredOutcomes","requiredIds","outcomesWithPosition","evento","eventOutcomeSet","combinadoTotal","r","id","row","requiredOutcomeIds","allIds","useEffect","sectionClassName","p","OraculoEventCombinadasCard","OraculoSeccionEventoEnVivo","LIVE_EVENTS_URL","loadData","interval","ev","OraculoSeccionEventoSemana","WEEK_EVENTS_URL","sortEvents","evs","filterEventsWithinOneWeek","now","oneWeekLater","eventDate","loadDataWeekEvent","football","firstGroups","buildUrls","group","base","sub","urls","loadAllGroupEvents","responses","res","allEvents","allBetOffers","merged","mergeEventOffersOutcome","error","DEFAULT_BACKGROUNDS","redirectUrl","DEFAULT_ITEMS","OraculoSeccionBanners","backgrounds","activeDot","setActiveDot","totalDots","bg","DEFAULT_ROWS","OraculoSeccionMediosPago","rows","flat","l","Landing","isComponent","val","isSectionName","key","LandingComponents","HttpError","status","statusText","OraculoPageLandingPreview","sectionsOverride","docId","db","sections","setSections","loading","setLoading","sectionDataMap","setSectionDataMap","sectionLoadingMap","setSectionLoadingMap","sectionErrorMap","setSectionErrorMap","unsubscribe","onSnapshot","doc","snap","fetched","s","fetchSectionData","section","rawUrl","method","params","body","headers","u","encoded","effectiveSections","fetchedKeysRef","React","fetchables","prev","json","err","message","orderedVisible","toManualArray","obj","f","t","num","fn","toManualScalars","fields","out","mapPayloadToProps","payload","manual","pl","isArr","arrData","choose","fallback","buildCompProps","hasUrl","compProps","scalars","arr2","varName2","renderStatusBox","renderSingleSection","rawKey","Comp","loadingSec","errorSec","wrapperStyle","Container"],"mappings":";;;;;;;;;;;;AAuBA,SAAwBA,EAAc;AAAA,EACpC,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,MAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,GAAuB;AACrB,QAAMC,IAAU,CAAC,CAAChB,KAAYA,MAAa,IAGrCiB,KAFU,CAAC,CAACJ,IAEa,IAAI,MADlB,CAAC,CAACC,IACiC,IAAI,MAAO,GACzDI,IAAaH,KAAA,OAAAA,IAAaE,KAAe,CAACD,GAE1CG,IAAM;AAAA,IACV;AAAA,IACAZ,MAAY,cACR,uBACAA,MAAY,aACV,sBACA;AAAA,IACNC,IAAO,YAAYA,CAAI,KAAK;AAAA,IAC5BC,IAAY,kBAAkB;AAAA,IAC9BC,IAAa,wBAAwB;AAAA,IACrCQ,IAAa,sBAAsB;AAAA,IACnCP;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELS,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAT,KAAY,gBAAAU,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAV,GAAS;AAAA,IACtD,CAACK,KAAc,gBAAAK,EAAC,QAAA,EAAK,WAAU,kBAAkB,UAAAvB,GAAS;AAAA,IAC1Dc,KAAa,gBAAAS,EAAC,QAAA,EAAK,WAAU,iBAAiB,UAAAT,EAAA,CAAU;AAAA,EAAA,GAC3D,GAGIU,IAAelB,IAAW,KAAO;AAEvC,SAAIJ,IAEA,gBAAAqB;AAAA,IAACE;AAAAA,IAAA;AAAA,MACC,MAAAvB;AAAA,MACA,QAAAC;AAAA,MACA,KAAAC;AAAA,MACA,cAAYQ;AAAA,MACZ,iBAAeY;AAAA,MACf,UAAUA,IAAe,KAAK;AAAA,MAC9B,WAAWL;AAAA,MACX,SAASK,IAAe,CAACE,MAAMA,EAAE,mBAAmBzB;AAAA,MAEnD,UAAAmB;AAAA,IAAA;AAAA,EAAA,IAML,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAlB;AAAA,MACA,SAAAJ;AAAA,MACA,UAAU,CAAC,CAACuB;AAAA,MACZ,cAAYZ;AAAA,MACZ,WAAWO;AAAA,MAEV,UAAAC;AAAA,IAAA;AAAA,EAAA;AAGP;AC3FA,SAAwBO,EAAoB;AAAA,EAC1C,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAArB,IAAO;AAAA,EACP,WAAAG,IAAY;AACd,GAA6B;AAG3B,QAAMmB,IAAe;AAAA,IACnB;AAAA,IAHgBtB,IAAO,sBAAsBA,CAAI,KAAK;AAAA,IAKtDG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAU,EAAC,OAAA,EAAI,WAAWS,GACb,UAAA;AAAA,IAAAD,KACC,gBAAAN;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKM;AAAA,QACL,KAAI;AAAA,QACJ,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGd,gBAAAN,EAAC,MAAA,EAAG,WAAU,4BAA4B,UAAAK,EAAA,CAAM;AAAA,EAAA,GAClD;AAEJ;AC5BA,MAAMG,KAA0D,CAAC;AAAA,EAC/D,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAvB,IAAY;AACd,MAAM;AACJ,MAAIqB,KAAS,EAAG,QAAO;AAEvB,QAAMG,IAAY,CAAC,YAAYxB,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAElE,SACE,gBAAAY,EAAC,SAAI,WAAWY,GAAW,MAAK,WAC7B,UAAA,MAAM,KAAK,EAAE,QAAQH,GAAO,EAAE,IAAI,CAACI,GAAGC,MACrC,gBAAAd,EAAC,QAAA,EAAa,WAAU,kBACtB,UAAA,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,iBAAec,MAAMJ;AAAA,MACrB,cAAY,eAAeI,IAAI,CAAC;AAAA,MAChC,WACE,mBACCA,MAAMJ,IAAS,2BAA2B;AAAA,MAE7C,SAAS,MAAMC,KAAA,gBAAAA,EAAWG;AAAA,IAAC;AAAA,EAAA,KAVpBA,CAYX,CACD,GACH;AAEJ;ACpBA,SAAwBC,EAAiB;AAAA,EACvC,UAAAtC;AAAA,EACA,UAAAuC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AACZ,GAA0B;AACxB,QAAMC,IAAeD,KAEjB,2BAA2BH,CAAQ,aAEjCK,IAAM,OAAOJ,KAAY,WAAW,GAAGA,IAAU,CAAC,OAAOA;AAE/D,SACE,gBAAAjB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,qBAAqBoB;AAAA,QACrB,cAAcF;AAAA,QACd,KAAAG;AAAA,QACA,QAAQ;AAAA,MAAA;AAAA,MAGT,UAAA5C;AAAA,IAAA;AAAA,EAAA;AAGP;ACvCA,SAAwB6C,GAAsB,EAAE,KAAAC,GAAK,KAAAC,KAAa;AAChE,SACE,gBAAAxB;AAAA,IAACyB;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,OAAO,EAAE,IAAI,IAAI,IAAI,IAAA;AAAA;AAAA,QACrB,QAAQ,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA;AAAA,QACtB,SAAS;AAAA,MAAA;AAAA,MAGX,UAAA,gBAAAzB;AAAA,QAACyB;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,KAAAF;AAAA,UACA,KAAAC;AAAA,UACA,IAAI;AAAA,YACF,UAAU;AAAA,YACV,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW;AAAA,UAAA;AAAA,QACb;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;;;;;;ACvBA,SAAwBE,GAAkB,EAAE,OAAArB,GAAO,UAAAsB,KAAoC;AACrF,SACE,gBAAA7B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW8B,GAAO;AAAA,MAElB,UAAA;AAAA,QAAA,gBAAA5B;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,YAAY;AAAA,YAAA;AAAA,YAGb,UAAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAGFsB,KACC,gBAAA7B;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW8B,GAAO;AAAA,YAElB,UAAA;AAAA,cAAA,gBAAA9B,EAAC,OAAA,EAAI,OAAM,KAAG,QAAO,KAAG,SAAQ,WAAS,OAAM,8BAA4B,OAAO,EAAE,YAAY,KAAK,UAAA;AAAA,gBAAA;AAAA,gBAAC,gBAAAE,EAAC,YAAO,IAAG,OAAM,IAAG,OAAM,GAAE,OAAM,MAAK,QAAA,CAAQ;AAAA,gBAAE;AAAA,cAAA,GAAC;AAAA,cACxJ,gBAAAA,EAAC,QAAA,EAAK,WAAW4B,GAAO,UACrB,UAAAD,GACH;AAAA,gCACC,OAAA,CAAA,CAAI;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAAA;AAIR;ACvBA,SAAwBE,GAAwB,EAAE,MAAAC,GAAM,OAAAC,IAAQ,WAAW,WAAAC,IAAY,UAAyC;AAC9H,SACE,gBAAAhC;AAAA,IAAC;AAAA,IAAA;AAAA,MACD,WAAU;AAAA,MACR,OAAO;AAAA,QACL,iBAAiB+B;AAAA,QACjB,OAAOC;AAAA,QACP,cAAc;AAAA,QACd,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,OAAQ;AAAA,QACR,QAAS;AAAA,QACT,WAAW;AAAA,MAAA;AAAA,MAGZ,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP;ACzBA,SAAwBG,GAAmB,EAAE,MAAAC,GAAM,MAAAC,KAAkC;AACnF,SACE,gBAAArC,EAAC,OAAA,EAAI,WAAU,YAAW,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,MAAA,GAC5E,UAAA;AAAA,IAAAoC,KAAQ,gBAAAlC,EAAC6B,IAAA,EAAwB,MAAK,UAAA,CAAU;AAAA,IAChDM,KAAQ,gBAAAnC,EAAC,QAAA,EAAK,OAAO,EAAE,UAAU,QAAQ,YAAY,KAAK,YAAY,QAAQ,YAAY,MAAA,GAAU,UAAAmC,EAAA,CAAK;AAAA,EAAA,GAC5G;AAEJ;ACJA,SAAwBC,GAAmB,EAAE,OAAA/B,GAAO,UAAAsB,GAAU,MAAAO,IAAO,IAAO,MAAAC,IAAO,MAAgC;AACjH,SACE,gBAAArC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,OAAO;AAAA,MAAA;AAAA,MAGT,UAAA;AAAA,QAAA,gBAAAE,EAAC0B,IAAA,EAAkB,OAAArB,GAAc,UAAAsB,EAAA,CAAoB;AAAA,QACrD,gBAAA3B,EAACiC,IAAA,EAAmB,MAAAC,GAAY,MAAAC,EAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlD;;;;ACpBA,SAAwBE,GAAkB,EAAE,MAAAP,KAAiC;AAC3E,SAAO,gBAAA9B,EAAC,QAAA,EAAK,WAAW4B,GAAO,OAAQ,UAAAE,GAAK;AAC9C;;;;ACFA,SAAwBQ,GAAmB,EAAE,OAAAjC,KAAuB;AAClE,2BACG,OAAA,EAAI,WAAWuB,GAAO,WACpB,UAAAvB,EAAM,eACT;AAEJ;;;;;;;;ACAA,SAAwBkC,GAAkB,EAAE,MAAAT,GAAM,MAAAU,GAAM,MAAAvD,IAAO,YAAqC;AAClG,SACE,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAG8B,EAAO,YAAY,IAAIA,EAAO3C,CAAI,CAAC;AAAA,MAEjD,UAAA;AAAA,QAAA,gBAAAe,EAAC,OAAA,EAAI,WAAW,GAAG4B,EAAO,KAAK,IAAIA,EAAO3C,CAAI,CAAC,IAAK,UAAA6C,EAAA,CAAK;AAAA,QACxDU,KAAQ,gBAAAxC,EAAC,QAAA,EAAK,WAAW,GAAG4B,EAAO,IAAI,IAAIA,EAAO3C,CAAI,CAAC,IAAK,UAAAuD,EAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGxE;;;;;;;;ACVA,SAAwBC,GAAqB,EAAE,MAAAD,GAAM,MAAAE,GAAM,MAAAzD,IAAO,aAAyC;AACzG,SACE,gBAAAa,EAAC,OAAA,EAAI,WAAW,YAAY8B,EAAO,IAAI,IAAIA,EAAO3C,CAAI,CAAC,IACrD,UAAA;AAAA,IAAA,gBAAAe,EAAC,SAAI,KAAK0C,GAAM,KAAKF,GAAM,WAAWZ,EAAO,MAAM;AAAA,IACnD,gBAAA5B,EAAC,QAAA,EAAK,WAAW4B,EAAO,MAAO,UAAAY,EAAA,CAAK;AAAA,EAAA,GACtC;AAEJ;ACoCA,MAAMG,KAAcC,IACdC,KAAmBC,IAEnBC,IAAkBC;AAAA,EACtB,CACE;AAAA,IACE,OAAAC,IAAQ,CAAA;AAAA,IACR,YAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,KAAA9B,IAAM;AAAA,IACN,aAAA+B;AAAA,IACA,SAAAC,IAAU,CAAA;AAAA,IACV,WAAAjE,IAAY;AAAA,IACZ,QAAAkE;AAAA,IACA,eAAAC,IAAgB;AAAA,EAAA,GAElBC,MACG;AACH,UAAMC,IAAYC,EAAY,IAAI;AAElC,IAAAC,GAAoBH,GAAK,OAAO;AAAA,MAC9B,MAAM,MAAA;;AAAM,gBAAAI,IAAAH,EAAU,YAAV,gBAAAG,EAAmB,GAAG;AAAA;AAAA,MAClC,MAAM,MAAA;;AAAM,gBAAAA,IAAAH,EAAU,YAAV,gBAAAG,EAAmB,GAAG;AAAA;AAAA,MAClC,IAAI,CAACC,MAAA;;AAAU,gBAAAD,IAAAH,EAAU,YAAV,gBAAAG,EAAmB,GAAGC;AAAA;AAAA,IAAK,EAC1C;AAEN,UAAMC,IAAaC,GAAY,CAACC,MAAgB;AAC1C,YAAMC,IAAaD,EAAO,WAAW,YAEnCH,IAAQI,EAAW,SAAA,GACnBC,IAAMD,EAAW,OAAA,GAEjBE,IAAUN,MAAU,GACpBO,IAAQP,KAASK,GAEjBzD,IAAQuD,EAAO,WAAW,OAAO,UAAA;AAEvC,MAAAV,KAAA,QAAAA,EAAS,EAAE,OAAAO,GAAO,SAAAM,GAAS,OAAAC,GAAO,OAAA3D;IACpC,GAAG,CAAC6C,CAAM,CAAC,GAEDe,IAAgBN;AAAA,MACpB,CAACC,MAAgB;AACf,QAAAF,EAAWE,CAAM;AAAA,MACnB;AAAA,MACA,CAACF,CAAU;AAAA,IAAA,GAGPQ,IAAwC;AAAA,MAC5C,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAAnB;AAAA,MACA,KAAA9B;AAAA,MACA,aAAA+B;AAAA,MACA,GAAGC;AAAA,IAAA;AAGL,6BACG,OAAA,EAAI,WAAAjE,GAAsB,OAAO,EAAE,OAAO,UACzC,UAAA,gBAAAY;AAAA,MAAC2C;AAAA,MAAA;AAAA,QACC,KAAKc;AAAA,QACL,SAASa;AAAA,QACT,QAAQR;AAAA,QACR,WAAWO;AAAA,QAEV,YAAM,IAAI,CAACE,GAAMV,MAAA;;mCACfhB,IAAA,EACE,UAAAK,EAAWqB,GAAMV,CAAK,KADPN,IAAgBM,KAASD,IAAAW,EAAa,OAAb,OAAAX,IAAmBC,CAE9D;AAAA,SACD;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AACF,GCzHMW,IAAkD,CAAC;AAAA,EACvD,UAAAC;AAAA,EACA,SAAA/F;AAAA,EACA,MAAAO,IAAO;AAAA,EACP,YAAAyF,IAAa;AACf,MAAM;AACJ,QAAMC,IACJ1F,MAAS,OACL,EAAE,GAAG,KAAK,GAAG,IAAA,IACb,EAAE,GAAG,KAAK,GAAG,IAAA,GAEb2F,IAAgE,CAACzE,MAAM;AAC3E,IAAAA,EAAE,gBAAA,GACFzB,KAAA,QAAAA;AAAA,EACF,GAEMmG,IAAaH,IACf,EAAE,OAAO,QAAQ,QAAQ,WACzB,EAAE,OAAO,GAAGC,EAAI,CAAC,MAAM,QAAQ,GAAGA,EAAI,CAAC,KAAA;AAE3C,SACE,gBAAA7E;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,SAAA/C;AAAA,MACA,MAAK;AAAA,MACL,IAAI;AAAA,QACF,UAAU;AAAA,QACV,cAAc;AAAA,QACd,UAAU;AAAA,QACV,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,GAAGmG;AAAA,QACH,WAAW;AAAA,UACT,WAAW;AAAA,UACX,WAAW;AAAA,UACX,QAAQ;AAAA,QAAA;AAAA,QAEV,sCAAsC;AAAA,UACpC,SAAS;AAAA,QAAA;AAAA,QAEX,kCAAkC;AAAA,UAChC,SAAS;AAAA,UACT,WAAW;AAAA,UACX,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAA7E;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKyE;AAAA,YACL,KAAI;AAAA,YACJ,SAAQ;AAAA,YACR,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,SAAS;AAAA,cACT,cAAc;AAAA,YAAA;AAAA,UAChB;AAAA,QAAA;AAAA,QAGF,gBAAAzE;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,QAAA;AAAA,QAGF,gBAAAzB;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,eAAe;AAAA,YAAA;AAAA,YAGjB,UAAA,gBAAAzB,EAACxB,KAAc,SAAQ,WAAU,MAAK,MAAK,SAASoG,GAAmB,UAAA,QAAA,CAEvE;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACpFA,SAAwBE,GAAoB;AAAA,EAC1C,UAAAL;AAAA,EACA,OAAAM,IAAQ;AAAA,EACR,SAAArG;AAAA,EACA,OAAAsG,IAAQ;AAAA,IACN,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,MAAM,GAAA;AAAA,IACnC,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,MAAM,GAAA;AAAA,EAAG;AAE5C,GAA6B;;AAC3B,QAAMC,IAAS,CAA0BC,GAAMC,MAAA;;AAAiB;AAAA,MAC9D,KAAIC,KAAAxB,IAAAoB,EAAM,OAAN,gBAAApB,EAAWsB,OAAX,OAAAE,IAAiBD;AAAA,MACrB,KAAIE,KAAAC,IAAAN,EAAM,OAAN,gBAAAM,EAAWJ,OAAX,OAAAG,IAAiBF;AAAA,IAAA;AAAA,KAGjBI,IAAIN,EAAO,KAAK,GAAG,GACnBO,IAAIP,EAAO,KAAK,GAAG,GACnBQ,IAAIR,EAAO,KAAK,IAAI,GACpBS,IAAIT,EAAO,QAAQ,EAAE,GAErBU,IAAO;AAAA,IACX,IAAI,KAAK,QAAOP,KAAAxB,IAAAoB,EAAM,OAAN,gBAAApB,EAAU,SAAV,OAAAwB,IAAkB,MAAM,IAAI;AAAA,IAC5C,IAAI,KAAK,QAAOC,KAAAC,IAAAN,EAAM,OAAN,gBAAAM,EAAU,SAAV,OAAAD,IAAkB,MAAM,IAAI;AAAA,EAAA;AAG9C,SACE,gBAAAvF;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU,EAAE,IAAI,GAAG8D,EAAE,EAAE,MAAM,IAAI,GAAGA,EAAE,EAAE,KAAA;AAAA,QACxC,aAAa;AAAA,UACX,IAAI,GAAGA,EAAE,EAAE,IAAIC,EAAE,EAAE;AAAA,UACnB,IAAI,GAAGD,EAAE,EAAE,IAAIC,EAAE,EAAE;AAAA,QAAA;AAAA,QAErB,cAAc,EAAE,IAAI,GAAGC,EAAE,EAAE,MAAM,IAAI,GAAGA,EAAE,EAAE,KAAA;AAAA,QAC5C,WAAW;AAAA,QACX,UAAU;AAAA,QACV,IAAI,EAAE,IAAI,GAAGE,EAAK,EAAE,MAAM,IAAI,GAAGA,EAAK,EAAE,KAAA;AAAA,MAAK;AAAA,MAG/C,UAAA;AAAA,QAAA,gBAAA3F;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,cAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,YAGZ,UAAA,gBAAAzB;AAAA,cAACwE;AAAA,cAAA;AAAA,gBACC,UAAAC;AAAA,gBACA,SAAA/F;AAAA,gBACA,MAAK;AAAA,gBACL,YAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAGF,gBAAAsB;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,UAAU;AAAA,cACV,MAAM;AAAA,cACN,QAAQ;AAAA,gBACN,IAAI,IAAIkE,EAAK,EAAE;AAAA,gBACf,IAAI,IAAIA,EAAK,EAAE;AAAA,cAAA;AAAA,cAEjB,YAAY;AAAA,cACZ,UAAU;AAAA,gBACR,IAAI,GAAGD,EAAE,EAAE;AAAA,gBACX,IAAI,GAAGA,EAAE,EAAE;AAAA,cAAA;AAAA,cAEb,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,kBAAkB;AAAA,cAClB,QAAQ;AAAA,cACR,YAAY;AAAA,YAAA;AAAA,YAGb,UAAAX;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;ACvFA,MAAMa,KAA8D,CAAC;AAAA,EACnE,MAAAlD;AAAA,EACA,UAAAmD;AAAA,EACA,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAArH;AACF,MAAM;;AACJ,SACE,gBAAAoB;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,SAAA/C;AAAA,MACA,IAAI;AAAA,QACF,MAAM;AAAA,QACN,UAAU;AAAA,QACV,cAAc;AAAA,QACd,UAAU;AAAA,QACV,OAAO,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,QACtB,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,QACvB,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,UACT,QAAQ;AAAA,UACR,OAAO,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,QAAI;AAAA,QAE5B,oCAAoC;AAAA,UAClC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,MAIF,UAAA;AAAA,QAAA,gBAAAsB;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAKiB;AAAA,YACL,KAAK,SAASqD,KAAA,OAAAA,IAAW,EAAE;AAAA,YAC3B,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,SAAS;AAAA,YAAA;AAAA,UACX;AAAA,QAAA;AAAA,QAIF,gBAAA/F;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK,EAAE,IAAI,OAAO,IAAI,MAAA;AAAA,cACtB,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,eAAe;AAAA,YAAA;AAAA,YAGjB,UAAA,gBAAAzB;AAAA,cAACgG;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,YAAY;AAAA,kBACZ,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,kBACxB,eAAe;AAAA,gBAAA;AAAA,gBAGhB,+BAAYF,iBAAgB;AAAA,cAAA;AAAA,YAAA;AAAA,UAC/B;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCrEMG,KAAM,IAENC,KAAoD,CAAC;AAAA,EACzD,OAAAjD;AAAA,EACA,QAAAkD,IAAS;AAAA,EACT,SAAAzH;AACF,MAAM;;AAEJ,MAAIyH,MAAW,UAAU;AACvB,UAAMC,IAAMnD,EAAM,CAAC,GACboD,IAASpD,EAAM,MAAM,GAAG,CAAC;AAE/B,WACE,gBAAAnD;AAAA,MAAC2B;AAAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,SAAS;AAAA,UACT,kBAAkB;AAAA,YAChB,IAAI;AAAA,YACJ,IAAI;AAAA,UAAA;AAAA,UAEN,qBAAqB;AAAA,YACnB,IAAI;AAAA,YACJ,IAAI;AAAA,UAAA;AAAA,UAEN,cAAc;AAAA,UACd,iBAAiB;AAAA,YACf,IAAI;AAAA,YACJ,IAAI;AAAA,UAAA;AAAA,UAEN,WAAW,GAAGwE,EAAG;AAAA,UACjB,QAAQ,GAAGA,EAAG;AAAA,UACd,YAAY;AAAA,UACZ,cAAc;AAAA,QAAA;AAAA,QAGf,UAAA;AAAA,UAAAG,KACC,gBAAApG;AAAA,YAACyB;AAAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,OAAO,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,gBACtB,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,gBACvB,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,cAAc;AAAA,cAAA;AAAA,cAGhB,UAAA,gBAAAzB;AAAA,gBAACwE;AAAA,gBAAA;AAAA,kBACC,UAAU,sBAAqBZ,IAAAwC,EAAI,aAAJ,OAAAxC,IAAgB,EAAE;AAAA,kBACjD,MAAK;AAAA,kBACL,YAAU;AAAA,kBACV,SAAS,MAAMlF,KAAA,gBAAAA,EAAU0H,GAAK;AAAA,gBAAC;AAAA,cAAA;AAAA,YACjC;AAAA,UAAA;AAAA,UAIHC,EAAO,IAAI,CAACC,GAAIzC,MAAA;;AACf,mCAAA7D;AAAA,cAACyB;AAAAA,cAAA;AAAA,gBAEC,IAAI;AAAA,kBACF,OAAO,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,kBACtB,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,kBACvB,UAAU;AAAA,kBACV,cAAc;AAAA,gBAAA;AAAA,gBAGhB,UAAA,gBAAAzB;AAAA,kBAACwE;AAAA,kBAAA;AAAA,oBACC,UAAU,sBAAqBZ,IAAA0C,EAAG,aAAH,OAAA1C,IAAe,EAAE;AAAA,oBAChD,MAAK;AAAA,oBACL,YAAU;AAAA,oBACV,SAAS,MAAMlF,KAAA,gBAAAA,EAAU4H,GAAIzC,IAAQ;AAAA,kBAAC;AAAA,gBAAA;AAAA,cACxC;AAAA,cAbKyC,EAAG;AAAA,YAAA;AAAA,WAeX;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,SACE,gBAAAtG;AAAA,IAACyB;AAAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,SAAS;AAAA,QACT,qBAAqB;AAAA,UACnB,IAAI;AAAA,UACJ,IAAI;AAAA,QAAA;AAAA,QAEN,kBAAkB;AAAA,UAChB,IAAI;AAAA,UACJ,IAAI;AAAA,QAAA;AAAA,QAEN,KAAK,GAAGwE,EAAG;AAAA,QACX,cAAc;AAAA,MAAA;AAAA,MAGf,UAAAhD,EAAM,IAAI,CAACqD,GAAIzC,MAAA;;AACd,+BAAA7D;AAAA,UAACyB;AAAAA,UAAA;AAAA,YAEC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,cAAc;AAAA,YAAA;AAAA,YAGhB,UAAA,gBAAAzB;AAAA,cAACwE;AAAA,cAAA;AAAA,gBACC,UAAU,sBAAqBZ,IAAA0C,EAAG,aAAH,OAAA1C,IAAe,EAAE;AAAA,gBAChD,MAAK;AAAA,gBACL,YAAU;AAAA,gBACV,SAAS,MAAMlF,KAAA,gBAAAA,EAAU4H,GAAIzC;AAAA,cAAK;AAAA,YAAA;AAAA,UACpC;AAAA,WAXKuB,IAAAkB,EAAG,OAAH,OAAAlB,IAASvB;AAAA,QAAA;AAAA,OAajB;AAAA,IAAA;AAAA,EAAA;AAIP,GC7GM0C,KAA4D,CAAC;AAAA,EACjE,OAAAlG;AAAA,EACA,QAAAmG;AAAA,EACA,UAAA7E;AAAA,EACA,YAAA8E;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,KAAAnF;AAAA,EACA,WAAApC,IAAY;AAAA,EACZ,SAAAJ,IAAU;AACZ,MAAM;AACJ,QAAM4H,IAASJ,IAASA,EAAO,MAAM,GAAG,CAAC,IAAI,IACvCK,IAAQL,IAASA,EAAO,MAAM,CAAC,IAAI,IACnCM,IAAU9H,MAAY;AAE5B,SACE,gBAAAc;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,WAAArC;AAAA,MACA,IAAI;AAAA,QACF,UAAU;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,IAAI0H,IAAU,MAAM;AAAA,QAAA;AAAA,QAEtB,IAAI;AAAA,MAAA;AAAA,MAGL,UAAA;AAAA,QAAAH,KACC,gBAAA3G;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,aAAa;AAAA,gBACX,IAAI;AAAA,gBACJ,IAAIqF,IAAU,cAAc;AAAA,cAAA;AAAA,cAE9B,cAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,YAGZ,UAAA,gBAAA9G;AAAA,cAACyB;AAAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,KAAKkF;AAAA,gBACL,KAAKnF,KAAA,OAAAA,IAAO;AAAA,gBACZ,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,WAAW;AAAA,kBACX,gBAAgB;AAAA,oBACd,IAAI;AAAA,oBACJ,IAAI;AAAA,kBAAA;AAAA,kBAEN,SAAS;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAKJ,gBAAAxB;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,OAAO;AAAA,cACP,WAAW;AAAA,cACX,IAAI;AAAA,cACJ,IAAI,EAAE,IAAI,OAAO,IAAI,MAAA;AAAA,YAAM;AAAA,YAG7B,UAAA,gBAAA3B;AAAA,cAAC2B;AAAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,UAAU;AAAA,kBACV,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,gBAAA;AAAA,gBAIb,UAAA;AAAA,kBAAApB,KACC,gBAAAL;AAAA,oBAACgG;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,wBACxB,YAAY;AAAA,wBACZ,OAAO;AAAA,sBAAA;AAAA,sBAGR,UAAA3F;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKJmG,KACC,gBAAA1G;AAAA,oBAAC2B;AAAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,IAAI;AAAA,wBACF,YAAY;AAAA,wBACZ,YAAY,EAAE,IAAI,KAAK,IAAI,KAAA;AAAA,wBAC3B,GAAG;AAAA,wBACH,YACE;AAAA,wBACF,sBAAsB;AAAA,wBACtB,qBAAqB;AAAA,wBACrB,kBAAkB;AAAA,wBAClB,QACE;AAAA,wBACF,SAAS;AAAA,wBACT,YAAY;AAAA,wBACZ,gBAAgB;AAAA,sBAAA;AAAA,sBAGlB,UAAA;AAAA,wBAAA,gBAAAzB;AAAA,0BAACyB;AAAAA,0BAAA;AAAA,4BACC,WAAU;AAAA,4BACV,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA,GAAM,IAAI,IAAA;AAAA,4BAEvC,UAAAmF;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEH,gBAAA5G;AAAA,0BAACyB;AAAAA,0BAAA;AAAA,4BACC,WAAU;AAAA,4BACV,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,IAAI,KAAG;AAAA,4BAEhC,UAAAoF;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACH;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKHlF,KACC,gBAAA3B;AAAA,oBAACgG;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,IAAI;AAAA,wBACJ,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,OAAO;AAAA,sBAAA;AAAA,sBAGR,UAAArE;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAKJ8E,KACC,gBAAAzG,EAACxB,GAAA,EAAc,SAASkI,GACrB,UAAAD,EAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCzJMM,KAAkE,CAAC;AAAA,EACvE,MAAAjF;AAAA,EACA,aAAAkF,IAAc;AAAA,EACd,SAAAtI;AAAA,EACA,QAAAuI,IAAS;AAAA,EACT,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AACF,MAEI,gBAAAtH,EAAAC,GAAA,EAEE,UAAA;AAAA,EAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKkH;AAAA,MACL,KAAKD;AAAA,MACL,WAAU;AAAA,IAAA;AAAA,EAAA,GAEd;AAAA,EAGA,gBAAAnH,EAAC,OAAA,EAAI,WAAU,oBACZ,UAAA;AAAA,IAAAqH,KACC,gBAAAnH,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKmH;AAAA,QACL,KAAK,GAAGF,CAAM;AAAA,QACd,WAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IAGDG,KACC,gBAAApH,EAAC,OAAA,EAAI,WAAU,eACb,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKoH;AAAA,QACL,KAAK,GAAGH,CAAM;AAAA,QACd,WAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IAGF,gBAAAnH,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,MAAA,gBAAAE,EAAC,KAAA,EAAE,WAAU,yBAAyB,UAAA8B,GAAK;AAAA,wBAC1CtD,GAAA,EAAc,SAAAE,GAAkB,SAAQ,WAAU,MAAK,MACrD,UAAAsI,EAAA,CACH;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAAA,EAGA,gBAAAlH,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,IAAA,gBAAAE,EAAC,KAAA,EAAE,WAAU,kBAAkB,UAAA8B,GAAK;AAAA,sBACnCtD,GAAA,EAAc,SAAAE,GAAkB,SAAQ,WAAU,MAAK,MACrD,UAAAsI,EAAA,CACH;AAAA,EAAA,EAAA,CACF;AAAA,GACF;;;;;;;;;;AC3EG,SAASK,GAAyBC,GAA6B;AACpE,QAAMC,IAAM,MAAM,QAAQD,CAAQ,IAAIA,IAAW,CAACA,CAAQ;AAC1D,iBAAe,QAAQ,mBAAmB,KAAK,UAAUC,CAAG,CAAC,GAC7D,OAAO,SAAS,OAAO;AACzB;ACGA,SAAwBC,GAA2B,EAAC,OAAAC,KAA6B;;AACjF,WAAUC,EAAeD,GAAa;;AACrC,UAAME,KAAWF,IAAAA,EAAM,cAANA,OAAAA,IAAmB,CAAA,GAC7BG,IAAWH,EAAM,UACjBI,IAAWJ,EAAM,UAEfH,IAAWK,EAAS,IAAI,CAACG,MAAY;;AAC3C,UAAIC,IAAOD,EAAE,SAAS,CAAC,GACfjB,IAAQ,IAEZmB,IAAOD,KAAA,QAAAA,EAAM,OAAOA,EAAK,OAAO,MAAO;AAE3C,aAAI,CAAC,UAAU,UAAU,MAAM,EAAE,SAASA,KAAA,gBAAAA,EAAM,KAAK,KACnDlB,IAAQ,UAAUmB,CAAI,IAClBD,KAAA,QAAAA,EAAM,gBACVlB,IAAQ,GAAGkB,EAAK,WAAW,MAAMlB,CAAK,OAG/B,CAAC,YAAY,OAAO,EAAE,SAASkB,KAAA,gBAAAA,EAAM,KAAK,KACjDlB,IAAQ,YAAYmB,CAAI,IAClBD,KAAA,QAAAA,EAAM,gBACVlB,IAAQ,GAAGkB,EAAK,WAAW,MAAMlB,CAAK,OAIrC,CAAC,MAAM,IAAI,EAAE,SAASkB,KAAA,gBAAAA,EAAM,KAAK,KACtClB,IAAQkB,KAAA,gBAAAA,EAAM,OACTA,KAAA,QAAAA,EAAM,gBACTlB,IAAQ,GAAGkB,EAAK,WAAW,MAAMlB,CAAK,OAKnC,CAAC,MAAM,MAAM,IAAI,EAAE,SAASkB,KAAA,gBAAAA,EAAM,KAAK,IAE1CA,EAAK,UAAU,OACjBlB,IAAQ,GAAGe,CAAQ,cACVG,EAAK,UAAU,OACxBlB,IAAQ,GAAGe,CAAQ,MAAMC,CAAQ,KACxBE,EAAK,UAAU,SACxBlB,IAAQ,GAAGgB,CAAQ,gBAMbE,KAAA,QAAAA,EAAM,cAAalB,IAAQkB,EAAK,cAC/BlB,KAAQjD,IAAAmE,KAAA,gBAAAA,EAAM,UAAN,OAAAnE,IAAe,IAExBoE,MAAS,MAAMnB,MAAUkB,EAAK,UAChClB,IAAQ,GAAGkB,EAAK,KAAK,IAAIC,CAAI,MAI1B;AAAA,QACL,KAAK5C,IAAA2C,KAAA,gBAAAA,EAAM,OAAN,OAAA3C,IAAY;AAAA,QACjB,OAAAyB;AAAA,QACA,OAAOiB,EAAE,UAAU;AAAA,QACnB,OAAMxC,IAAAyC,KAAA,gBAAAA,EAAM,SAAN,OAAAzC,IAAc;AAAA,QACpB,KAAID,IAAA0C,KAAA,gBAAAA,EAAM,UAAN,OAAA1C,IAAe;AAAA,QACnB,WAAU4C,IAAAF,KAAA,gBAAAA,EAAM,aAAN,OAAAE,IAAkB;AAAA,MAAA;AAAA,IAGhC,CAAC,GAEKxH,IAAQ6G,EAAS,OAAO,CAACY,GAAUC,MAAUD,IAAMC,EAAE,MAAM,CAAC,IAAI;AAEtE,WAAO;AAAA,MACL,UAAAb;AAAA,MACA,OAAO7G,EAAM,QAAQ,CAAC;AAAA,IAAA;AAAA,EAE1B;AACA,QAAM2H,IAAgBV,EAAeD,CAAK;AAGxC,SACE,gBAAA3H,EAAC,OAAA,EAAI,WAAW8B,EAAO,MACrB,UAAA;AAAA,IAAA,gBAAA5B,EAAC,OAAA,EAAI,WAAW4B,EAAO,YACrB,UAAA,gBAAA9B,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAChD,UAAA;AAAA,MAAA,gBAAArI;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,OAAOqH,EAAM;AAAA,UACb,SAAQ;AAAA,UACR,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAEP,gBAAAzH,EAAC,OAAA,EAAI,KAAI,uCAAA,CAAuC;AAAA,MAEhD,gBAAAA,EAACqI,KAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAC/C,UAAAD,EAAc,SAAY,KAAK,CAACN,GAAQQ,MAAWR,EAAE,WAAWQ,EAAE,QAAQ,EAAE,IAAI,CAACR,GAAQhH,MAGtF,gBAAAhB,EAAC,OAAA,EAAI,WAAW8B,EAAO,aACrB,UAAA;AAAA,QAAA,gBAAA9B,EAAC,OAAA,EAAI,WAAW8B,EAAO,eACrB,UAAA;AAAA,UAAA,gBAAA5B,EAAC,OAAA,EAAI,WAAW4B,EAAO,OAAA,CAAQ;AAAA,UAC9Bd,IAAIsH,EAAc,SAAS,SAAS,KAAK,gBAAApI,EAAC,OAAA,EAAI,WAAW4B,EAAO,KAAA,CAAM;AAAA,QAAA,GACzE;AAAA,QAEA,gBAAA9B,EAAC,OAAA,EAAI,WAAW8B,EAAO,aACrB,UAAA;AAAA,UAAA,gBAAA5B,EAAC,UAAA,EACC,UAAA8H,EAAE,MAAO,CACX;AAAA,UAAU;AAAA,UAAI;AAAA,UACXA,EAAE;AAAA,QAAO,EAAA,CACd;AAAA,MAAA,EAAA,GAXuChH,CAYzC,CAEH,EAAA,CACH;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,sBAEA,UAAA,EAAO,SAAS,MAAA;;AAAM,aAAAuG,IAAyBjC,KAAAxB,IAAAwE,KAAA,gBAAAA,EAAe,aAAf,gBAAAxE,EAAyB,IAAI,CAACuE,MAAYA,KAAA,gBAAAA,EAAG,QAA7C,OAAA/C,IAAoD,CAAA,CAAE;AAAA,OAAI,WAAWxD,EAAO,YAC/H,UAAA;AAAA,MAAA,gBAAA9B,EAAC,QAAA,EAAK,UAAA;AAAA,QAAA;AAAA,QACS,gBAAAE,EAAC,YAAW,aAAA4D,IAAA6D,EAAc,mBAAd,OAAA7D,IAAoC,KAAM,KAAM,QAAQ,CAAC,EAAA,CAAE;AAAA,MAAA,GACtF;AAAA,MACA,gBAAA5D,EAAC,OAAA,EAAI,KAAI,8CAA6C,KAAI,cAAA,CAAc;AAAA,IAAA,EAAA,CAC1E;AAAA,EAAA,GACI;AAEJ;;;;;;;;;;;;;;;ACrGA,SAAwBuI,GAAiB;AAAA,EACvC,UAAA9J;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,MAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,GAAuB;AACrB,QAAMC,IAAU,CAAC,CAAChB,KAAYA,MAAa,IAGrCiB,KAFU,CAAC,CAACJ,IAEa,IAAI,MADlB,CAAC,CAACC,IACiC,IAAI,MAAO,GACzDI,IAAaH,KAAA,OAAAA,IAAaE,KAAe,CAACD,GAE1CG,IAAM;AAAA,IACVgC,EAAO,SAAS;AAAA;AAAA,IAChBA,EAAO,YAAY5C,CAAO,EAAE;AAAA;AAAA,IAC5BC,IAAO2C,EAAO,YAAY3C,CAAI,EAAE,IAAI;AAAA;AAAA,IACpCC,IAAY0C,EAAO,eAAe,IAAI;AAAA,IACtCzC,IAAayC,EAAO,qBAAqB,IAAI;AAAA,IAC7CjC,IAAaiC,EAAO,mBAAmB,IAAI;AAAA,IAC3CxC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELS,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAT,uBAAa,QAAA,EAAK,WAAWsC,EAAO,eAAe,GAAI,UAAAtC,GAAS;AAAA,IAChE,CAACK,KACA,gBAAAK,EAAC,QAAA,EAAK,WAAW4B,EAAO,gBAAgB,GAAI,UAAAnD,GAAS;AAAA,IAEtDc,KAAa,gBAAAS,EAAC,QAAA,EAAK,WAAW4B,EAAO,eAAe,GAAI,UAAArC,EAAA,CAAU;AAAA,EAAA,GACrE,GAGIU,IAAelB,IAAW,KAAO;AAEvC,SAAIJ,IAEA,gBAAAqB;AAAA,IAACE;AAAAA,IAAA;AAAA,MACC,MAAAvB;AAAA,MACA,QAAAC;AAAA,MACA,KAAAC;AAAA,MACA,cAAYQ;AAAA,MACZ,iBAAeY;AAAA,MACf,UAAUA,IAAe,KAAK;AAAA,MAC9B,WAAWL;AAAA,MACX,SAASK,IAAe,CAACE,MAAMA,EAAE,mBAAmBzB;AAAA,MAEnD,UAAAmB;AAAA,IAAA;AAAA,EAAA,IAML,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAlB;AAAA,MACA,SAAAJ;AAAA,MACA,UAAU,CAAC,CAACuB;AAAA,MACZ,cAAYZ;AAAA,MACZ,WAAWO;AAAA,MAEV,UAAAC;AAAA,IAAA;AAAA,EAAA;AAGP;ACxFA,SAAwB2I,GAAuB,EAAE,OAAAf,GAAO,UAAAgB,GAAW,WAAAC,GAAW,OAAAC,IAAQ,uCAA0D;;AAE9I,QAAMC,IAAgBF,KAAA,gBAAAA,EAAW;AAAA,IACjC,CAACG,MAAA;;AAAU,eAAAjF,IAAAiF,EAAM,iBAAN,gBAAAjF,EAAoB,QAAO;AAAA;AAAA;AAGtC,SACE,gBAAA5D,EAAC,SAAI,OAAO;AAAA,IACR,iBAAiB,OAAO2I,CAAK;AAAA,IAC7B,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAAA,GAGd,4BAACN,GAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAC9C,UAAA;AAAA,IAAA,gBAAAvI,EAACuI,KAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAChD,UAAA;AAAA,MAAA,gBAAArI;AAAA,QAAC8I;AAAAA,QAAA;AAAA,UACC,QAAOlF,IAAA6D,EAAM,KAAK,CAAC,EAAE,SAAd,OAAA7D,IAAsB;AAAA,UAC7B,UAAU6D,EAAM;AAAA,UAChB,MAAM;AAAA,UACN,QAAMrC,IAAAqD,KAAA,gBAAAA,EAAU,eAAV,gBAAArD,EAAsB,WAAU,OAAO,GAAGqD,EAAS,WAAW,MAAM,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAGlF,gBAAAzI,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAA,GAErB,UAAA,gBAAAF,EAACiB,GAAA,EAAiB,SAAS,KAAK,SAAQ,gBACtC,UAAA;AAAA,QAAA,gBAAAf;AAAA,UAACyC;AAAA,UAAA;AAAA,YACC,MAAMgF,EAAM;AAAA,YACZ,MAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAEP,gBAAAzH,EAACuC,IAAA,EAAkB,QAAO8C,KAAAC,IAAAmD,KAAA,gBAAAA,EAAU,UAAV,gBAAAnD,EAAiB,SAAjB,OAAAD,IAAyB,KAAK,QAAM0D,KAAAd,IAAAQ,KAAA,gBAAAA,EAAU,UAAV,gBAAAR,EAAiB,SAAjB,OAAAc,IAAyB,IAAI,MAAK,WAAU;AAAA,0BACzGtG,IAAA,EAAqB,MAAMgF,EAAM,UAAU,MAAK,qCAAA,CAAqC;AAAA,MAAA,EAAA,CACxF,EAAA,CACF;AAAA,IAAA,GACJ;AAAA,sBAECY,GAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAE9C,UAAA;AAAA,MAAA,gBAAArI,EAACe,GAAA,EAAiB,SAAS,GACxB,YAAAiI,IAAAJ,KAAA,gBAAAA,EAAe,aAAf,OAAAI,IAA2B,IAAI,IAAI,CAACzE,GAAgBV,MACnD,gBAAA7D,EAACqC,IAAA,EAA8B,MAAMkC,EAAK,MAAM,cAAY,GAApCV,CAAuC,CAChE,GACH;AAAA,MAEA,gBAAA7D,EAACe,GAAA,EAAiB,SAAS,GACvB,YAAAkI,IAAAL,KAAA,gBAAAA,EAAe,aAAf,OAAAK,IAA2B,CAAA,GAAI,IAAI,CAAC1E,GAAgBV,wBACjD0E,IAAA,EAA6B,SAAQ,WAAU,UAAUhE,EAAK,QAAQ,SAAaqE,KAAA,gBAAAA,EAAe,kBAAiB,aAAa,SAAS,MAAI;AAAC,QAAAvB,GAAyB9C,EAAK,EAAE;AAAA,MAAE,GAC9K,UAAAA,EAAK,SAAS,SAAY,MAAMA,EAAK,OAAO,KAAM,QAAQ,CAAC,EAAA,GADvCV,CAEvB,CACH,EAAA,CACH;AAAA,IAAA,EAAA,CACJ;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAGF;;;;AC9DA,SAAwBqF,GAAiB,EAAE,MAAApH,KAA+B;AACxE,2BAAQ,OAAA,EAAI,WAAW,YAAYF,GAAO,IAAI,IAAK,UAAAE,EAAA,CAAK;AAC1D;;;;;;;ACMA,SAAwBqH,GAAuB,EAAC,OAAA1B,KAA4B;;AAC5E,WAAS2B,EAAWC,GAA6B;AAC7C,UAAMC,IAAO,IAAI,KAAKD,CAAU,GAE1BE,IAAWD,EAAK,mBAAmB,SAAS;AAAA,MAC9C,SAAS;AAAA,IAAA,CACZ,EAAE,YAAA,GAEGE,IAAMF,EAAK,QAAA,EAAU,WAAW,SAAS,GAAG,GAAG,GAC/CG,KAASH,EAAK,SAAA,IAAa,GAAG,WAAW,SAAS,GAAG,GAAG;AAE9D,QAAInH,IAAOmH,EAAK,mBAAmB,SAAS;AAAA,MACxC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA,CACX,EAAE,YAAA;AAGH,WAAAnH,IAAOA,EAAK,QAAQ,OAAO,EAAE,EAAE,QAAQ,UAAU,IAAI,EAAE,QAAQ,UAAU,IAAI,GAEtE,GAAGoH,CAAQ,IAAIC,CAAG,IAAIC,CAAK,MAAMtH,CAAI;AAAA,EAChD;AAEE,SACE,gBAAArC,EAAC,OAAA,EAAI,WAAW8B,EAAO,eACrB,UAAA;AAAA,IAAA,gBAAA5B,EAACsC,IAAA,EAAmB,QAAOsB,IAAA6D,EAAM,UAAN,OAAA7D,IAAe,IAAI;AAAA,sBAC3C,OAAA,EAAI,WAAWhC,EAAO,gBAErB,4BAACyG,GAAA,EAAM,WAAU,UAAS,SAAS,EAAE,IAAI,KAAK,IAAI,KAAK,YAAU,IAE/D,UAAA;AAAA,MAAA,gBAAAvI,EAACuI,KAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAE9C,UAAA;AAAA,QAAA,gBAAAvI,EAAC,OAAA,EAAI,WAAW8B,EAAO,SACrB,UAAA;AAAA,UAAA,gBAAA5B;AAAA,YAACyC;AAAA,YAAA;AAAA,cAAqB,MAAMgF,EAAM;AAAA,cAAU,MAAK;AAAA,cAA6C,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,4BAElGlF,IAAA,EAAkB,MAAM,OAAO,MAAK,IAAG,MAAK,SAAO;AAAA,UACpD,gBAAAvC,EAACyC,MAAqB,MAAMgF,EAAM,UAAU,MAAK,gDAA+C,MAAK,UAAA,CAAU;AAAA,QAAA,GACjH;AAAA,0BAECyB,IAAA,EAAiB,MAAME,EAAW3B,EAAM,KAAK,EAAA,CAAG;AAAA,MAAA,GAEnD;AAAA,MAEA,gBAAA3H,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,EAAE,IAAI,KAAK,IAAI,EAAA,GAAK,YAAU,IAC/D,UAAA;AAAA,QAAA,gBAAArI,EAACe,GAAA,EAAiB,SAAS,GACvB,YAAAsE,KAAAC,KAAAF,IAAAqC,KAAA,gBAAAA,EAAO,YAAP,gBAAArC,EAAiB,OAAjB,gBAAAE,EAAqB,aAArB,OAAAD,IAAiC,CAAA,GAAI,IAAI,CAACd,GAAMV,MAChD,gBAAA7D,EAACqC,IAAA,EAA8B,MAAMkC,EAAK,MAAM,YAAA,EAAY,GAApCV,CAAuC,CAChE,EAAA,CACH;AAAA,QAEA,gBAAA7D,EAAC,OAAA,EAAI,WAAW4B,EAAO,SACvB,UAAA,gBAAA5B,EAACe,GAAA,EAAiB,SAAS,GACvB,YAAAiI,KAAAD,KAAAd,IAAAR,KAAA,gBAAAA,EAAO,YAAP,gBAAAQ,EAAiB,OAAjB,gBAAAc,EAAqB,aAArB,OAAAC,IAAiC,CAAA,GAAI,IAAI,CAACzE,GAAMV,MAChD,gBAAA7D,EAACxB,GAAA,EAA2B,SAAQ,WAAU,YAAU,IAAC,SAAS,MAAI;AAAC,UAAA6I,GAAyB9C,EAAK,EAAE;AAAA,QAAE,GAAM,WAAAA,EAAK,OAAO,KAAM,QAAQ,CAAC,EAAA,GAAtHV,CAAwH,CAC7I,EAAA,CACH,EAAA,CACA;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAGN;ACxEA,SAAwB6F,GAAyB;AAAA,EAC/C,OAAAzG;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,YAAAqJ;AAAA,EACA,WAAAvK,IAAY;AACd,GAAkC;AAChC,QAAMwK,IAAclG,EAAY,IAAI,GAC9B,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAElEC,IAAa,MAAM;;AACvB,KAAApG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMqG,IAAa,MAAM;;AACvB,KAAArG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB,QACrB,QAAQ,IAAI,WAAWX,CAAK;AAAA,EAC9B,GAEMiH,IAAiB,MAAM;AAE3B,WAAO,SAAS,OAAO;AAAA,EACzB,GAEMC,IAAsB,CAACC,MAAuB;AAElD,QADI,CAACA,KACD,OAAO,UAAW,YAAa;AAGnC,UAAMC,IAAM,sCADC,mBAAmBD,CAAS,CACa;AAEtD,WAAO,SAAS,OAAOC;AAAA,EACzB;AAIA,SACE,gBAAAvK,EAAC,aAAQ,WAHcV,KAAa,QAGE,OAAO,EAAE,OAAO,UACpD,UAAA;AAAA,IAAA,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,cAAc;AAAA,QAAA;AAAA,QAGhB,UAAA;AAAA,UAAA,gBAAAE,EAACI,GAAA,EAAoB,OAAAC,GAAc,SAAAC,GAAkB,MAAK,MAAK;AAAA,UAE/D,gBAAAR,EAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,KAClC,UAAA;AAAA,YAAA,gBAAAE;AAAA,cAACxB;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,UAAQ;AAAA,gBACR,4BAAW8L,IAAA,EAAmB;AAAA,gBAC9B,SAASN;AAAA,gBACT,UAAUH,EAAS;AAAA,cAAA;AAAA,YAAA;AAAA,YAErB,gBAAA7J;AAAA,cAACxB;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,UAAQ;AAAA,gBACR,6BAAY+L,IAAA,EAAoB;AAAA,gBAChC,SAASN;AAAA,gBACT,UAAUJ,EAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACrB,GACF;AAAA,4BAECrL,GAAA,EAAc,SAAQ,aAAY,SAAS0L,GAAgB,UAAA,UAAA,CAE5D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,OAAA3G;AAAA,QACA,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS,EAAE,WAAW,GAAA;AAAA,QACtB,aAAa;AAAA,UACX,KAAK,EAAE,SAAS,MAAM,OAAO,QAAA;AAAA,UAC7B,MAAM,EAAE,SAAS,KAAK,OAAO,QAAA;AAAA,QAAQ;AAAA,QAEvC,YAAY,CAACsB,MACX,gBAAAvE;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAO;AAAA,cACL,WAAW;AAAA,cACX,WAAW;AAAA,cACX,QAAQ;AAAA,YAAA;AAAA,YAEV,SAAS,MAAMmK,EAAoB5F,EAAK,SAAS;AAAA,YAEjD,UAAA,gBAAAvE;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,KAAK,qBAAqBuE,EAAK,UAAU,KAAKA,EAAK,QAAQA,EAAK,aAAa;AAAA,gBAC7E,KAAKA,EAAK;AAAA,gBACV,OAAO;AAAA,kBACL,OAAO;AAAA;AAAA;AAAA,kBAGP,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,SAAS;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UACF;AAAA,UApBK,GAAGA,EAAK,KAAK,IAAIA,EAAK,KAAK;AAAA,QAAA;AAAA,QAuBpC,QAAQ,CAAC,EAAE,SAAAJ,GAAS,OAAAC,EAAA,MAAY0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAChE,GACF;AAEJ;AC/GA,MAAMoG,KAAyB,CAACC,MAA0B;;AACxD,MAAI,OAAO,UAAW,YAAa;AAEnC,QAAMC,KAAetF,KAAAxB,IAAA6G,EAAK,SAAL,OAAA7G,IAAa6G,EAAK,aAAlB,OAAArF,IAA8B,IAC7CS,KAAWP,IAAAmF,EAAK,aAAL,OAAAnF,IAAiB,IAC5BS,KAAUV,IAAAoF,EAAK,YAAL,OAAApF,IAAgB,IAC1BsF,KAAc1C,IAAAwC,EAAK,gBAAL,OAAAxC,IAAoB,IAClCnJ,KAAOiK,IAAA0B,EAAK,SAAL,OAAA1B,IAAa,IAEpB6B,IAAe,mBAAmB,OAAO/E,CAAQ,CAAC,GAClDgF,IAAc,mBAAmB,OAAO9E,CAAO,CAAC,GAChD+E,IAAW,mBAAmB,OAAOJ,CAAY,CAAC,GAClDK,IAAa,mBAAmB,OAAOJ,CAAW,CAAC,GACnDK,IAAY,mBAAmB,OAAOlM,CAAI,CAAC,GAE3CuL,IACJ,iCAAiCQ,CAAW,aAChCD,CAAY,SAChBE,CAAQ,gBACDC,CAAU,SACjBC,CAAS;AAEnB,SAAO,SAAS,OAAOX;AACzB;AAEA,SAAwBY,GAAwB;AAAA,EAC9C,OAAAhI;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,aAAA4K;AACF,GAAiC;AAE/B,QAAMC,IAAkBC;AAAA,IACtB,MACEnI,EACG,IAAI,CAACsB,GAAMV,MAAA;;AAAW;AAAA,QACrB,GAAGU;AAAA;AAAA,QAEH,QAAOX,IAAAW,EAAK,UAAL,OAAAX,IAAcC,IAAQ;AAAA,QAC7B,gBAAgBA;AAAA,MAAA;AAAA,KAChB,EACD,KAAK,CAACiE,GAAGQ,MACJR,EAAE,SAAS,QAAQQ,EAAE,SAAS,OAAaR,EAAE,QAAQQ,EAAE,QACpDR,EAAE,iBAAiBQ,EAAE,cAC7B;AAAA,IACL,CAACrF,CAAK;AAAA,EAAA;AAGR,SACE,gBAAAjD,EAAC,WAAA,EAAQ,OAAO,EAAE,OAAO,OAAA,GACvB,UAAA,gBAAAF,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAC9C,UAAA;AAAA,IAAA,gBAAArI,EAACI,GAAA,EAAoB,OAAAC,GAAc,SAAAC,GAAkB,MAAK,MAAK;AAAA,IAE/D,gBAAAN;AAAA,MAACyB;AAAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,SAAS;AAAA,UACT,qBAAqB;AAAA,YACnB,IAAI;AAAA,YACJ,IAAI;AAAA,UAAA;AAAA,UAEN,KAAK,EAAE,IAAI,KAAK,IAAI,EAAA;AAAA,UACpB,cAAc;AAAA,UACd,OAAO;AAAA,QAAA;AAAA,QAGR,YAAgB,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC4J;;AAChC,iCAAArL;AAAA,YAAC8E;AAAA,YAAA;AAAA,cAEC,UAAU,sBAAqBlB,IAAAyH,EAAM,SAAN,OAAAzH,IAAc,EAAE;AAAA,cAC/C,OAAOyH,EAAM;AAAA,cACb,SAAS,MAAM;AACb,gBAAIH,IACFA,EAAYG,CAAK,IAEjBb,GAAuBa,CAAK;AAAA,cAEhC;AAAA,YAAA;AAAA,YATKA,EAAM;AAAA,UAAA;AAAA,SAWd;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,EAAA,CACF,EAAA,CACF;AAEJ;AClFA,MAAMC,KAAY,CAACC,GAAoBC;;AACrC,UAAApG,KAAAxB,IAAA2H,EAAE,UAAF,OAAA3H,IAAW2H,EAAE,YAAb,OAAAnG,IAAwBoG;AAAA,GAEpBhB,KAAyB,CAACC,MAA0B;;AACxD,MAAI,OAAO,UAAW,YAAa;AAEnC,QAAMC,KAAetF,KAAAxB,IAAA6G,EAAK,SAAL,OAAA7G,IAAa6G,EAAK,aAAlB,OAAArF,IAA8B,IAC7CS,KAAWP,IAAAmF,EAAK,aAAL,OAAAnF,IAAiB,IAC5BS,KAAUV,IAAAoF,EAAK,YAAL,OAAApF,IAAgB,IAC1BsF,KAAc1C,IAAAwC,EAAK,gBAAL,OAAAxC,IAAoB,IAClCnJ,KAAOiK,IAAA0B,EAAK,SAAL,OAAA1B,IAAa,QAEpB6B,IAAe,mBAAmB,OAAO/E,CAAQ,CAAC,GAClDgF,IAAc,mBAAmB,OAAO9E,CAAO,CAAC,GAChD+E,IAAW,mBAAmB,OAAOJ,CAAY,CAAC,GAClDK,IAAa,mBAAmB,OAAOJ,CAAW,CAAC,GACnDK,IAAY,mBAAmB,OAAOlM,CAAI,CAAC,GAE3CuL,IACJ,yCAAyCQ,CAAW,aACxCD,CAAY,SAChBE,CAAQ,gBACDC,CAAU,SACjBC,CAAS;AAEnB,SAAO,SAAS,OAAOX;AACzB,GAEMoB,KAAwE,CAAC;AAAA,EAC7E,OAAAxI;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,UAAAsB,IAAW;AAAA,EACX,qBAAA+J,IAAsB;AAAA,EACtB,sBAAAC,IAAuB;AAAA,EACvB,aAAAT;AAAA,EACA,YAAAvB;AAAA,EACA,WAAAvK;AACF,MAEI,gBAAAU;AAAA,EAAC2B;AAAAA,EAAA;AAAA,IACC,WAAArC;AAAA,IACA,IAAI;AAAA,MACF,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,MAKV,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAIZ,UAAA;AAAA,MAAA,gBAAAY;AAAA,QAACyB;AAAAA,QAAA;AAAA,UACC,IAAI;AAAA,YACF,UAAU;AAAA,YACV,OAAO;AAAA,YACP,iBAAiB;AAAA,cACf,IAAI;AAAA;AAAA;AAAA,qBAGKiK,CAAmB;AAAA;AAAA,cAE5B,IAAI;AAAA;AAAA;AAAA,qBAGKC,CAAoB;AAAA;AAAA,YAAA;AAAA,YAG/B,gBAAgB;AAAA,YAChB,oBAAoB;AAAA,YACpB,kBAAkB;AAAA,YAClB,QAAQ;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,MAIF,gBAAA7L;AAAA,QAAC2B;AAAAA,QAAA;AAAA,UACC,IAAI;AAAA,YACF,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,QAAQ,EAAE,IAAI,SAAS,IAAI,QAAA;AAAA,YAC3B,IAAI;AAAA,YACJ,IAAI,EAAE,IAAI,KAAK,IAAI,EAAA;AAAA,YACnB,SAAS;AAAA,YACT,eAAe,EAAE,IAAI,UAAU,IAAI,MAAA;AAAA,YACnC,YAAY,EAAE,IAAI,UAAU,IAAI,SAAA;AAAA,YAChC,gBAAgB;AAAA,YAChB,KAAK,EAAE,IAAI,GAAG,IAAI,GAAA;AAAA,YAClB,WAAW,EAAE,IAAI,UAAU,IAAI,OAAA;AAAA,UAAO;AAAA,UAIxC,UAAA;AAAA,YAAA,gBAAA3B,EAACuI,GAAA,EAAM,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,IAAA,EAAI,GAC3C,UAAA;AAAA,cAAA,gBAAArI;AAAA,gBAACgG;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,IAAI;AAAA,oBACF,YAAY;AAAA,oBACZ,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,oBACxB,kBAAkB;AAAA,oBAClB,YACE;AAAA,kBAAA;AAAA,kBAKH,UAAA3F;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGH,gBAAAL;AAAA,gBAACgG;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,oBACxB,OAAO;AAAA,oBACP,SAAS,EAAE,IAAI,GAAG,IAAI,EAAA;AAAA,oBACtB,YAAY;AAAA,kBAAA;AAAA,kBAGb,UAAArE;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGH,gBAAA3B,EAACyB,GAAA,EAAI,IAAI,EAAE,SAAS,EAAE,IAAI,QAAQ,IAAI,UAAQ,GAC5C,UAAA,gBAAAzB;AAAA,gBAACxB;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,SAAS,MAAMmL,KAAA,gBAAAA;AAAA,kBAChB,UAAA;AAAA,gBAAA;AAAA,cAAA,EAED,CACF;AAAA,YAAA,GACF;AAAA,YAGA,gBAAA3J;AAAA,cAACyB;AAAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,KAAK,EAAE,IAAI,GAAG,IAAI,EAAA;AAAA,kBAClB,gBAAgB;AAAA,kBAChB,WAAW,EAAE,IAAI,QAAQ,IAAI,UAAA;AAAA,kBAC7B,IAAI,EAAE,IAAI,GAAG,IAAI,EAAA;AAAA,kBACjB,YAAY;AAAA,gBAAA;AAAA,gBAGZ,WAAAwB,KAAA,OAAAA,IAAS,CAAA,GAAI,MAAM,GAAG,CAAC,EAAE,IAAI,CAACoI,GAAOG,MAAA;;AACrC,yCAAAxL;AAAA,oBAAC4F;AAAA,oBAAA;AAAA,sBAEC,MAAM,sBAAqBhC,IAAAyH,EAAM,SAAN,OAAAzH,IAAc,EAAE;AAAA,sBAC3C,UAAUyH,EAAM;AAAA,sBAChB,cAAcA,EAAM;AAAA,sBACpB,SAASA,EAAM;AAAA,sBACf,SAAS,MAAM;AACb,wBAAIH,IACFA,EAAYG,GAAOG,CAAG,IAEtBhB,GAAuBa,CAAK;AAAA,sBAEhC;AAAA,oBAAA;AAAA,oBAXKC,GAAUD,GAAOG,CAAG;AAAA,kBAAA;AAAA,iBAa5B;AAAA,cAAA;AAAA,YAAA;AAAA,YAIH,gBAAAxL,EAACyB,GAAA,EAAI,IAAI,EAAE,SAAS,EAAE,IAAI,SAAS,IAAI,SAAO,GAC5C,UAAA,gBAAAzB;AAAA,cAACxB;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,SAAS,MAAMmL,KAAA,gBAAAA;AAAA,gBAChB,UAAA;AAAA,cAAA;AAAA,YAAA,EAED,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAAA,GC1JA2B,KAAY,CAACC,GAAoBC;;AACrC,UAAApG,KAAAxB,IAAA2H,EAAE,UAAF,OAAA3H,IAAW2H,EAAE,YAAb,OAAAnG,IAAwBoG;AAAA,GAEpBhB,KAAyB,CAACC,MAA0B;;AACxD,MAAI,OAAO,UAAW,YAAa;AAEnC,QAAMC,KAAe9G,IAAA6G,EAAK,SAAL,OAAA7G,IAAa,IAC5BiC,KAAWT,IAAAqF,EAAK,aAAL,OAAArF,IAAiB,IAC5BW,KAAUT,IAAAmF,EAAK,YAAL,OAAAnF,IAAgB,IAC1BqF,KAActF,IAAAoF,EAAK,gBAAL,OAAApF,IAAoB,IAClCvG,KAAOmJ,IAAAwC,EAAK,SAAL,OAAAxC,IAAa,UAEpB2C,IAAe,mBAAmB,OAAO/E,CAAQ,CAAC,GAClDgF,IAAc,mBAAmB,OAAO9E,CAAO,CAAC,GAChD+E,IAAW,mBAAmB,OAAOJ,CAAY,CAAC,GAClDK,IAAa,mBAAmB,OAAOJ,CAAW,CAAC,GACnDK,IAAY,mBAAmB,OAAOlM,CAAI,CAAC,GAE3CuL,IACJ,iCAAiCQ,CAAW,aAChCD,CAAY,SAChBE,CAAQ,gBACDC,CAAU,SACjBC,CAAS;AAEnB,SAAO,SAAS,OAAOX;AACzB,GAEMuB,KAAoB,CACxBC,GACAC,IAAc,IACdC,IAAW,MACO;AAClB,QAAMC,IAAoCH,EAAM,IAAI,CAACN,GAAGC,MAAA;;AAAS;AAAA,MAC/D,IAAIF,GAAUC,GAAGC,CAAG;AAAA,MACpB,WAAU5H,IAAA2H,EAAE,SAAF,OAAA3H,IAAU;AAAA,IAAA;AAAA,GACpB;AAEF,MAAI,CAACoI,EAAU,OAAQ,QAAO,CAAA;AAE9B,QAAMC,IAAwB,CAAA;AAC9B,MAAIC,IAAQ;AAEZ,MAAIJ,GAAa;AACf,UAAMK,IAAO,KAAK,IAAIH,EAAU,QAAQ,CAAC;AACzC,IAAAC,EAAO,KAAK;AAAA,MACV,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAOD,EAAU,MAAM,GAAGG,CAAI;AAAA,IAAA,CAC/B,GACDD,IAAQC;AAAA,EACV;AAEA,SAAOD,IAAQF,EAAU,UAAQ;AAC/B,UAAM9H,IAAM,KAAK,IAAIgI,IAAQH,GAAUC,EAAU,MAAM;AACvD,IAAAC,EAAO,KAAK;AAAA,MACV,IAAI,QAAQC,CAAK;AAAA,MACjB,MAAM;AAAA,MACN,OAAOF,EAAU,MAAME,GAAOhI,CAAG;AAAA,IAAA,CAClC,GACDgI,IAAQhI;AAAA,EACV;AAEA,SAAO+H;AACT,GAEMG,KAA4D,CAAC;AAAA,EACjE,OAAAnJ;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,aAAA+L;AAAA,EACA,YAAA1C;AAAA,EACA,aAAAmC,IAAc;AAAA,EACd,UAAAC,IAAW;AACb,MAAM;AACJ,QAAMnC,IAAclG,EAAkC,IAAI,GACpD,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAElEkC,IAASL,GAAkB3I,GAAO6I,GAAaC,CAAQ,GAEvD/B,IAAa,MAAM;;AACvB,KAAApG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMqG,IAAa,MAAM;;AACvB,KAAArG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMsG,IAAiB,MAAM;AAE3B,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,gBAAAlK,EAAC,aACC,UAAA,gBAAAF,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAE9C,UAAA;AAAA,IAAA,gBAAAvI;AAAA,MAAC2B;AAAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,QAAQ;AAAA,QAAA;AAAA,QAGV,UAAA;AAAA,UAAA,gBAAAzB;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,OAAAC;AAAA,cACA,SAAAC;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,UAGP,gBAAAR;AAAA,YAAC2B;AAAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,gBAAgB;AAAA,cAAA;AAAA,cAGlB,UAAA;AAAA,gBAAA,gBAAAzB;AAAA,kBAACxB;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,UAAQ;AAAA,oBACR,4BAAW8L,IAAA,EAAmB;AAAA,oBAC9B,SAASN;AAAA,oBACT,UAAUH,EAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErB,gBAAA7J;AAAA,kBAACxB;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,UAAQ;AAAA,oBACR,6BAAY+L,IAAA,EAAoB;AAAA,oBAChC,SAASN;AAAA,oBACT,UAAUJ,EAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACrB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,gBAAA7J,EAACyB,GAAA,EAAI,IAAI,EAAE,aAAa,MAAA,GACtB,UAAA,gBAAAzB,EAACxB,GAAA,EAAc,SAAQ,aAAY,SAAS0L,GAAgB,qBAE5D,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,OAAOqC;AAAA,QACP,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS;AAAA,UACP,WAAW;AAAA,UACX,KAAK;AAAA,UACL,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,QAET,YAAY,CAACK,MACX,gBAAAtM,EAAC,SAAI,OAAO,EAAE,WAAW,WACvB,UAAA,gBAAAA;AAAA,UAACkG;AAAA,UAAA;AAAA,YACC,OAAOoG,EAAM;AAAA,YACb,QAAQA,EAAM,SAAS,WAAW,WAAW;AAAA,YAC7C,SAAS,CAACC,MAAQ;AAChB,oBAAM9B,IAAOxH,EAAM;AAAA,gBAAK,CAACsI,GAAGC,MAC1BF,GAAUC,GAAGC,CAAG,MAAMe,EAAI;AAAA,cAAA;AAG5B,cAAK9B,MAED4B,IACFA,EAAY5B,CAAI,IAEhBD,GAAuBC,CAAI;AAAA,YAE/B;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QAEF,QAAQ,CAAC,EAAE,SAAAtG,GAAS,OAAAC,EAAA,MAAY0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAChE,EAAA,CACF,EAAA,CACF;AAEJ,GCxLMkH,KAAY,CAACC,GAAoBC;;AACrC,UAAApG,KAAAxB,IAAA2H,EAAE,UAAF,OAAA3H,IAAW2H,EAAE,YAAb,OAAAnG,IAAwBoG;AAAA,GAEpBhB,KAAyB,CAACC,MAA0B;;AACxD,MAAI,OAAO,UAAW,YAAa;AAEnC,QAAMC,KAAe9G,IAAA6G,EAAK,SAAL,OAAA7G,IAAa,IAC5BiC,KAAWT,IAAAqF,EAAK,aAAL,OAAArF,IAAiB,IAC5BW,KAAUT,IAAAmF,EAAK,YAAL,OAAAnF,IAAgB,IAC1BqF,KAActF,IAAAoF,EAAK,gBAAL,OAAApF,IAAoB,IAClCvG,KAAOmJ,IAAAwC,EAAK,SAAL,OAAAxC,IAAa,aAEpB2C,IAAe,mBAAmB,OAAO/E,CAAQ,CAAC,GAClDgF,IAAc,mBAAmB,OAAO9E,CAAO,CAAC,GAChD+E,IAAW,mBAAmB,OAAOJ,CAAY,CAAC,GAClDK,IAAa,mBAAmB,OAAOJ,CAAW,CAAC,GACnDK,IAAY,mBAAmB,OAAOlM,CAAI,CAAC,GAE3CuL,IACJ,2CAA2CQ,CAAW,aAC1CD,CAAY,SAChBE,CAAQ,gBACDC,CAAU,SACjBC,CAAS;AAEnB,SAAO,SAAS,OAAOX;AACzB,GAEMmC,KAAqB,CACzBX,GACAC,IAAc,IACdC,IAAW,MACQ;AACnB,QAAMC,IAAoCH,EAAM,IAAI,CAACN,GAAGC,MAAA;;AAAS;AAAA,MAC/D,IAAIF,GAAUC,GAAGC,CAAG;AAAA,MACpB,WAAU5H,IAAA2H,EAAE,SAAF,OAAA3H,IAAU;AAAA,IAAA;AAAA,GACpB;AAEF,MAAI,CAACoI,EAAU,OAAQ,QAAO,CAAA;AAE9B,QAAMC,IAAyB,CAAA;AAC/B,MAAIC,IAAQ;AAEZ,MAAIJ,GAAa;AACf,UAAMK,IAAO,KAAK,IAAIH,EAAU,QAAQ,CAAC;AACzC,IAAAC,EAAO,KAAK;AAAA,MACV,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,OAAOD,EAAU,MAAM,GAAGG,CAAI;AAAA,IAAA,CAC/B,GACDD,IAAQC;AAAA,EACV;AAEA,SAAOD,IAAQF,EAAU,UAAQ;AAC/B,UAAM9H,IAAM,KAAK,IAAIgI,IAAQH,GAAUC,EAAU,MAAM;AACvD,IAAAC,EAAO,KAAK;AAAA,MACV,IAAI,QAAQC,CAAK;AAAA,MACjB,MAAM;AAAA,MACN,OAAOF,EAAU,MAAME,GAAOhI,CAAG;AAAA,IAAA,CAClC,GACDgI,IAAQhI;AAAA,EACV;AAEA,SAAO+H;AACT,GAEMQ,KAAkE,CAAC;AAAA,EACvE,OAAAxJ;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,aAAA+L;AAAA,EACA,YAAA1C;AAAA,EACA,aAAAmC,IAAc;AAAA,EACd,UAAAC,IAAW;AACb,MAAM;AACJ,QAAMnC,IAAclG,EAAkC,IAAI,GACpD,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAElEkC,IAASO,GAAmBvJ,GAAO6I,GAAaC,CAAQ,GAExD/B,IAAa,MAAM;;AACvB,KAAApG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMqG,IAAa,MAAM;;AACvB,KAAArG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMsG,IAAiB,MAAM;AAE3B,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,SACE,gBAAAlK,EAAC,aACC,UAAA,gBAAAF,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAE9C,UAAA;AAAA,IAAA,gBAAAvI;AAAA,MAAC2B;AAAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,QAAQ;AAAA,QAAA;AAAA,QAGV,UAAA;AAAA,UAAA,gBAAAzB;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,OAAAC;AAAA,cACA,SAAAC;AAAA,cACA,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,UAGP,gBAAAR;AAAA,YAAC2B;AAAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,gBAAgB;AAAA,cAAA;AAAA,cAGlB,UAAA;AAAA,gBAAA,gBAAAzB;AAAA,kBAACxB;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,UAAQ;AAAA,oBACR,4BAAW8L,IAAA,EAAmB;AAAA,oBAC9B,SAASN;AAAA,oBACT,UAAUH,EAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErB,gBAAA7J;AAAA,kBAACxB;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,UAAQ;AAAA,oBACR,6BAAY+L,IAAA,EAAoB;AAAA,oBAChC,SAASN;AAAA,oBACT,UAAUJ,EAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACrB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,gBAAA7J,EAACyB,GAAA,EAAI,IAAI,EAAE,aAAa,MAAA,GACtB,UAAA,gBAAAzB,EAACxB,GAAA,EAAc,SAAQ,aAAY,SAAS0L,GAAgB,qBAE5D,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,OAAOqC;AAAA,QACP,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS;AAAA,UACP,WAAW;AAAA,UACX,KAAK;AAAA,UACL,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,QAAA;AAAA,QAEX,YAAY,CAACK,MACX,gBAAAtM,EAAC,SAAI,OAAO,EAAE,WAAW,WACvB,UAAA,gBAAAA;AAAA,UAACkG;AAAA,UAAA;AAAA,YACC,OAAOoG,EAAM;AAAA,YACb,QAAQA,EAAM,SAAS,WAAW,WAAW;AAAA,YAC7C,SAAS,CAACC,MAAQ;AAChB,oBAAM9B,IAAOxH,EAAM;AAAA,gBAAK,CAACsI,GAAGC,MAC1BF,GAAUC,GAAGC,CAAG,MAAMe,EAAI;AAAA,cAAA;AAG5B,cAAK9B,MAED4B,IACFA,EAAY5B,CAAI,IAEhBD,GAAuBC,CAAI;AAAA,YAE/B;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QAEF,QAAQ,CAAC,EAAE,SAAAtG,GAAS,OAAAC,EAAA,MAClB0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAElC,EAAA,CACF,EAAA,CACF;AAEJ,GCtMMsI,KAAiB,CAACC,OAAmB;AAAA;AAAA,EAEzC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKV,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,WAKRA,CAAK;AAAA;AAAA,EAEd,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,gBAAgB;AAClB,IAEMC,KAAiB;AAAA,EACrB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,IAAI;AACN,GAEMC,KAAU;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AACZ,GAEMC,KAAa;AAAA,EACjB,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,YAAY;AAAA;AAAA;AAAA;AAAA;AAKd,GAEMC,KAAkE,CAAC;AAAA,EACvE,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAhK;AAAA,EACA,oBAAAiK;AACF,MAAM;AACJ,QAAMC,IAAMH,GACNI,IAAMH,GAENI,IAAWC,GAAc,oBAAoB,GAC7CC,IAAWtK,EAAM,SAAS,GAE1B0J,IAAQO,KAAA,OAAAA,IAAsB,IAC9BM,IAAYd,GAAeC,CAAK,GAEhC/C,IAAclG,EAAkC,IAAI,GACpD,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAClE,CAAC0D,GAAaC,CAAc,IAAI3D,EAAS,CAAC,GAE1C4D,IAAiB,CAACC,MACtB,gBAAA9N;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,OAAO;AAAA,QACP,UAAUmM,IAAU,MAAM;AAAA,QAC1B,IAAIA,IAAU,SAAS;AAAA,MAAA;AAAA,MAGzB,UAAA;AAAA,QAAA,gBAAA5N;AAAA,UAAC+C;AAAA,UAAA;AAAA,YACC,KAAK6G;AAAA,YACL,OAAA3G;AAAA,YACA,SAAS;AAAA,YACT,KAAK2K,IAAU,SAAS;AAAA,YACxB,aACEA,IACI,SACA;AAAA,cACE,KAAK;AAAA,gBACH,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,SAAS,EAAE,MAAM,OAAO,OAAO,MAAA;AAAA,cAAM;AAAA,cAEvC,KAAK;AAAA,gBACH,SAAS;AAAA,gBACT,KAAK;AAAA,gBACL,SAAS,EAAE,MAAM,OAAO,OAAO,MAAA;AAAA,cAAM;AAAA,YACvC;AAAA,YAGR,SAAS,EAAE,WAAW,GAAA;AAAA,YACtB,YAAY,CAACtH,MACX,gBAAAtG;AAAA,cAACuG;AAAA,cAAA;AAAA,gBACE,GAAGD;AAAA,gBACJ,eAAeA,EAAG;AAAA,gBAClB,WAAWsH;AAAA,cAAA;AAAA,YAAA;AAAA,YAGf,QAAQ,CAAC,EAAE,OAAA/J,GAAO,SAAAM,GAAS,OAAAC,QAAY;AACrC,cAAA0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,GAAO,GAC9BsJ,EAAe7J,CAAK;AAAA,YACtB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD0J,KACC,gBAAAvN;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,IAAI;AAAA,cACJ,SAAS;AAAA,cACT,gBAAgB;AAAA,YAAA;AAAA,YAGlB,UAAA,gBAAAzB;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,OAAOyC,EAAM;AAAA,gBACb,QAAQwK;AAAA,gBACR,UAAU,CAAC3M,MAAM;;AACf,kBAAA4M,EAAe5M,CAAC,IAChB8C,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB,GAAG9C;AAAA,gBAC1B;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAMN,SAAIuM,IAEA,gBAAAvN;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI;AAAA,QACF,GAAG+L;AAAA,QACH,WAAW;AAAA,MAAA;AAAA,MAGX,UAAA;AAAA,SAAAL,KAAOC,MACP,gBAAAtN,EAAC2B,GAAA,EAAI,IAAImL,IACN,UAAA;AAAA,UAAAO,uBACEnH,GAAA,EAAW,WAAU,QAAO,IAAI6G,IAC9B,UAAAM,GACH;AAAA,UAEDC,KACC,gBAAAtN,EAAAC,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAC,EAAC,MAAA,EAAG;AAAA,8BACHgG,GAAA,EAAW,WAAU,QAAO,IAAI8G,IAC9B,UAAAM,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,GAEJ;AAAA,QAGDO,EAAe,EAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAOzB,gBAAA3N,EAACyB,GAAA,EAAI,WAAU,WAAU,IAAI+L,GAC3B,UAAA,gBAAA1N;AAAA,IAAC2B;AAAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB,YAAY;AAAA,QACZ,WAAW;AAAA,MAAA;AAAA,MAGX,UAAA;AAAA,SAAA0L,KAAOC,MACP,gBAAApN;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,WAAW;AAAA,YAAA;AAAA,YAGb,UAAA,gBAAA3B;AAAA,cAAC2B;AAAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,GAAGmL;AAAA,kBACH,WAAW;AAAA,kBACX,IAAI;AAAA,gBAAA;AAAA,gBAGL,UAAA;AAAA,kBAAAO,uBACEnH,GAAA,EAAW,WAAU,QAAO,IAAI6G,IAC9B,UAAAM,GACH;AAAA,kBAEDC,KACC,gBAAAtN,EAAAC,GAAA,EACE,UAAA;AAAA,oBAAA,gBAAAC,EAAC,MAAA,EAAG;AAAA,sCACHgG,GAAA,EAAW,WAAU,QAAO,IAAI8G,IAC9B,UAAAM,EAAA,CACH;AAAA,kBAAA,EAAA,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ;AAAA,QAAA;AAAA,QAKJ,gBAAApN;AAAA,UAACyB;AAAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA,YAAA;AAAA,YAGb,YAAe,EAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MACtB;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GC1NMoM,KAAoE,CAAC;AAAA,EACzE,WAAAzO,IAAY;AAAA,EACZ,WAAA0O,IAAY;AAAA,EACZ,OAAA7K;AAAA,EACA,eAAA8K,IAAgB;AAAA,EAChB,WAAA1O;AACF,MAAM;AACJ,QAAM2O,IAAUtK,EAA8B,IAAI,GAC5CuK,IAAYvK,EAA8B,IAAI;AAEpD,MAAI,CAACT,EAAQ,QAAO;AAEpB,QAAMvE,IAAU,MAAM;AACpB,WAAO,SAAS,OAAO;AAAA,EACzB,GAEM6F,IAAO,MAAM,QAAQtB,CAAK,IAC5BA,EAAM8K,CAAa,IACnB9K;AAEJ,EAAAiL,GAAgB,MAAM;AAEpB,QADI,CAACF,EAAQ,WAAW,CAACC,EAAU,WAC/B,OAAO,kBAAmB,YAAa;AAE3C,UAAME,IAAOH,EAAQ,SACfI,IAASH,EAAU,SAEnBI,IAAS,MAAM;AACnB,MAAAF,EAAK,MAAM;AAAA,QACT;AAAA,QACA,GAAGC,EAAO,eAAe,EAAE;AAAA,MAAA;AAAA,IAE/B,GAEME,IAAK,IAAI,eAAeD,CAAM;AACpC,WAAAC,EAAG,QAAQF,CAAM,GACjBC,EAAA,GAEO,MAAMC,EAAG,WAAA;AAAA,EAClB,GAAG,CAAA,CAAE;AAEL,QAAM1N,IAAY;AAAA,IAChB;AAAA,IACAkN,IAAY,qBAAqB;AAAA,IACjC1O;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKgO;AAAA,MACL,WAAWpN;AAAA,MACX,cAAYvB,KAAakF,EAAK,UAAU;AAAA,MAExC,UAAA,gBAAAvE,EAAC,OAAA,EAAI,KAAKiO,GACR,UAAA,gBAAAjO;AAAA,QAAC+G;AAAA,QAAA;AAAA,UACC,MAAMxC,EAAK;AAAA,UAEX,SAAA7F;AAAA,UACA,QAAQ6F,EAAK;AAAA,UACb,cAAcA,EAAK;AAAA,UACnB,iBAAiBA,EAAK;AAAA,UACtB,mBAAmBA,EAAK;AAAA,QAAA;AAAA,MAAA,EAC1B,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;;;AC3EA,SAAwBgK,GAA+B;AAAA,EACrD,OAAAtL;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,YAAAqJ;AAAA,EACA,WAAAvK,IAAY;AACd,GAAQ;AAEN,QAAMwK,IAAclG,EAAY,IAAI,GAC9B,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAClE,CAACyE,GAAQC,CAAS,IAAI1E,EAAS,CAAA,CAAE,GACjC2E,IAAsB,qLAEtB1E,IAAa,MAAM;;AACvB,KAAApG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMqG,IAAa,MAAM;;AACvB,KAAArG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EAEvB,GAEMsG,IAAiB,MAAM;AAC3B,IAAAP,KAAA,QAAAA;AAAA,EACF;AAEA,iBAAegF,IAAuB;;AACtC,QAAI;AAEF,YAAMC,IAAW,OADD,MAAM,MAAMF,CAAmB,GAChB,KAAA,GAEzBG,KAAUvJ,KAAAF,KAAAxB,IAAAgL,KAAA,gBAAAA,EAAU,UAAV,gBAAAhL,EAAiB,WAAjB,gBAAAwB,EAA0B,OAA1B,gBAAAE,EAA8B;AAE9C,UAAI,CAACuJ,GAAS;AACZ,gBAAQ,MAAM,4BAA4B;AAC1C;AAAA,MACF;AAEA,YAAMC,IAAe,yFAAyFD,CAAO,qGAG/GE,IAAO,OADI,MAAM,MAAMD,CAAY,GACb,KAAA;AAE5B,MAAAL;AAAA,QACEO,EAAiBD,EAAK,QAAQA,EAAK,WAAWA,EAAK,cAAc;AAAA,MAAA;AAAA,IAErE,SAAS5O,GAAG;AACV,cAAQ,MAAM,+BAA+BA,CAAC;AAAA,IAChD;AAAA,EACF;AAEE,WAAS6O,EAAiBC,GAAatH,GAAgBuH,GAAsB;AAC7E,UAAMC,IAAiB,CAAA;AAEvB,eAAWC,KAAUF,GAAgB;AAEnC,YAAMG,IAAiBC,EAAkB,CAACF,CAAM,CAAC,GAC3CG,IAAOC,EAAoBJ,CAAM,GAGjCK,IAAkB9H,EAAS,OAAO,CAACO,GAASJ,MAAU;;AAC1D,QAAKI,EAAIJ,EAAE,OAAO,MAAGI,EAAIJ,EAAE,OAAO,IAAI,CAAA;AAEtC,cAAM4H,IAAmB5H,EAAE,SAAS;AAAA,UAAO,CAACK,MAC1CkH,EAAe,IAAIlH,EAAE,EAAE;AAAA,QAAA;AAGzB,YAAIuH,EAAiB,SAAS,GAAG;AACjC,gBAAMC,IAAc,MAAM;AAAA,aACxBvK,KAAAxB,IAAA2L,KAAA,gBAAAA,EAAO,OAAP,gBAAA3L,EAAW,uBAAX,OAAAwB,IAAiC,CAAA;AAAA,UAAC,GAE9BwK,KAAuBF,EAAiB,IAAI,CAACvH,OAAY;AAAA,YAC7D,GAAGA;AAAA,YACH,UAAUwH,EAAY,QAAQxH,EAAE,EAAE;AAAA,UAAA,EAClC;AAEA,UAAAD,EAAIJ,EAAE,OAAO,EAAE,KAAK;AAAA,YAClB,GAAGA;AAAA,YACH,UAAU8H;AAAA,UAAA,CACX;AAAA,QACH;AAEA,eAAO1H;AAAA,MACT,GAAG,CAAA,CAAE;AAKL,MAAA+G,EAAQ,QAAQ,CAACY,MAAiB;AAChC,YAAIA,EAAO,OAAOT,EAAO,kBAAkB,CAAC,EAAE,QAAS;AAEvD,cAAMU,IAAkBT;AAExB,YAAIU,IAAiB;AACrB,mBAAWC,KAAKT;AAId,cAFE,CAAC,GAAGS,EAAE,kBAAkB,EAAE,MAAM,CAAAC,MAAMH,EAAgB,IAAIG,CAAE,CAAC,GAEhD;AACb,YAAAF,IAAiBC,EAAE;AACnB;AAAA,UACF;AAGF,QAAAb,EAAQ,KAAK;AAAA,UACX,GAAGU;AAAA,UACH,gBAAAE;AAAA,UACA,WAAWN,EAAgBI,EAAO,EAAE,KAAK,CAAA;AAAA,UACzC,UAAUT,EAAO;AAAA;AAAA,QAAA,CAClB;AAAA,MACH,CAAC;AAAA,IACH;AAEA,WAAOD;AAAA,EACT;AAEA,WAASK,EAAoBJ,GAAc;;AACzC,UAAMG,IAAO,CAAA;AAEb,eAAWW,KAAOd,EAAO;AACvB,UAAIc,EAAI,SAAS,mBAAiBtM,IAAAsM,EAAI,UAAJ,QAAAtM,EAAW,SAAQ;AACnD,cAAMuM,wBAAyB,IAAA;AAC/B,QAAAD,EAAI,MAAM,OAAO,QAAQ,CAAC,MAAU;;AAClC,WAAAtM,IAAA,EAAE,aAAF,QAAAA,EAAY,QAAQ,CAACuE,MAAUgI,EAAmB,IAAIhI,EAAE,EAAE;AAAA,QAC5D,CAAC,GAEDoH,EAAK,KAAK;AAAA,UACR,oBAAAY;AAAA,UACA,SAASD,EAAI,KAAK;AAAA,QAAA,CACnB;AAAA,MACH;AAGF,WAAOX;AAAA,EACT;AAEA,WAASD,EAAkBJ,GAAuB;;AAChD,UAAMkB,wBAAa,IAAA;AAEnB,eAAWhB,KAAUF;AACnB,iBAAWgB,KAAOd,EAAO;AACvB,QAAIc,EAAI,SAAS,mBAAiBtM,IAAAsM,EAAI,UAAJ,QAAAtM,EAAW,WAE3CsM,EAAI,MAAM,OAAO,QAAQ,CAAC,MAAU;;AAClC,WAAAtM,IAAA,EAAE,aAAF,QAAAA,EAAY,QAAQ,CAACuE,MAAUiI,EAAO,IAAIjI,EAAE,EAAE;AAAA,QAChD,CAAC,GAGC+H,EAAI,SAAS,YAAYA,EAAI,WAC/BE,EAAO,IAAIF,EAAI,QAAQ,EAAE;AAI/B,WAAOE;AAAA,EACT;AAEE,EAAAC,EAAU,MAAM;AACd,IAAA1B,EAAA;AAAA,EACJ,GAAG,CAAA,CAAE;AAEH,QAAM2B,IAAmBlR,KAAa;AAEtC,SAAI,CAACoP,KAAUA,EAAO,WAAW,IAC1B,yBAIJ,WAAA,EAAQ,WAAW8B,GAAkB,OAAO,EAAE,OAAO,UACpD,UAAA,gBAAAxQ,EAACuI,KAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAEhD,UAAA;AAAA,IAAA,gBAAAvI,EAACiB,KAAiB,SAAS,KAAK,SAAQ,aAAY,SAAQ,SAC5D,UAAA;AAAA,MAAA,gBAAAf,EAACI,GAAA,EAAoB,OAAAC,GAAc,SAAAC,GAAkB,MAAK,MAAK;AAAA,MAE/D,gBAAAR,EAAC,OAAA,EAAI,WAAW8B,GAAO,UACrB,UAAA;AAAA,QAAA,gBAAA9B,EAACiB,GAAA,EAAiB,SAAS,GAAG,SAAQ,aACtC,UAAA;AAAA,UAAA,gBAAAf;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,4BAAW8L,IAAA,EAAmB;AAAA,cAC9B,SAASN;AAAA,cACT,UAAUH,EAAS;AAAA,YAAA;AAAA,UAAA;AAAA,UAErB,gBAAA7J;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,6BAAY+L,IAAA,EAAoB;AAAA,cAChC,SAASN;AAAA,cACT,UAAUJ,EAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACrB,GACF;AAAA,0BAECrL,GAAA,EAAc,SAAQ,aAAY,SAAS0L,GAAgB,UAAA,UAAA,CAE5D;AAAA,MAAA,EAAA,CACA;AAAA,IAAA,GACF;AAAA,IAEA,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,OAAO4E,EAAO,OAAO,OAAS/G,EAAM,mBAAsB,IAAI;AAAA,QAC9D,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS,EAAE,WAAW,IAAM,WAAW,OAAA;AAAA,QACvC,eAAa;AAAA,QACb,aAAa;AAAA,UACP,KAAK,EAAE,SAAS,KAAK,KAAK,QAAS,SAAS,EAAE,MAAM,OAAO,OAAO,MAAA,EAAM;AAAA,QAAG;AAAA,QAEjF,YAAY,CAAC8I,MAAM,gBAAAvQ,EAACwQ,IAAA,EAA2B,OAAOD,GAAG;AAAA,QACzD,QAAQ,CAAC,EAAE,SAAApM,GAAS,OAAAC,EAAA,MAAY0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAChE,EAAA,CACA,EAAA,CACF;AAEJ;ACxNA,SAAwBqM,GAA2B;AAAA,EACjD,OAAAxN;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,YAAAqJ;AAAA,EACA,WAAAvK,IAAY;AACd,GAAQ;;AAEN,QAAMsR,IAAkB,yQAClB9G,IAAclG,EAAY,IAAI,GAC9B,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAClE,CAACyE,GAAQC,CAAS,IAAI1E,EAAS,CAAA,CAAE,GACjCC,IAAa,MAAM;;AACvB,KAAApG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMqG,IAAa,MAAM;;AACvB,KAAArG,IAAAgG,EAAY,YAAZ,QAAAhG,EAAqB;AAAA,EACvB,GAEMsG,IAAiB,MAAM;AAC3B,IAAAP,KAAA,QAAAA;AAAA,EACF;AAEA,iBAAegH,IAAW;AACxB,QAAI;AAEF,YAAM5B,IAAO,OADI,MAAM,MAAM2B,CAAe,GAChB,KAAA;AAC5B,MAAAjC,EAAUM,EAAK,MAAM;AAAA,IACvB,SAAS5O,GAAG;AACV,cAAQ,MAAMA,CAAC;AAAA,IACjB;AAAA,EACF;AAGF,SAAAkQ,EAAU,MAAM;AACd,IAAAM,EAAA;AAEA,UAAMC,IAAW,YAAY,MAAM;AACjC,MAAAD,EAAA;AAAA,IACF,GAAG,GAAK;AAER,WAAO,MAAM,cAAcC,CAAQ;AAAA,EACrC,GAAG,CAAA,CAAE,qBAMA,WAAA,EAAQ,WAHcxR,KAAa,QAGE,OAAO,EAAE,OAAO,UACpD,UAAA,gBAAAU,EAACuI,KAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAEhD,UAAA;AAAA,IAAA,gBAAAvI,EAACiB,KAAiB,SAAS,KAAK,SAAQ,aAAY,SAAQ,SACpD,UAAA;AAAA,MAAA,gBAAAf,EAACI,GAAA,EAAoB,OAAAC,GAAc,SAAAC,GAAkB,MAAK,MAAK;AAAA,MAEvE,gBAAAR,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,GAAI,YAAW,SAAA,GAC7C,UAAA;AAAA,QAAA,gBAAAA,EAACiB,GAAA,EAAiB,SAAS,GAAG,SAAQ,aACtC,UAAA;AAAA,UAAA,gBAAAf;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,4BAAW8L,IAAA,EAAmB;AAAA,cAC9B,SAASN;AAAA,cACT,UAAUH,EAAS;AAAA,YAAA;AAAA,UAAA;AAAA,UAErB,gBAAA7J;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,UAAQ;AAAA,cACR,6BAAY+L,IAAA,EAAoB;AAAA,cAChC,SAASN;AAAA,cACT,UAAUJ,EAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QACrB,GACF;AAAA,0BAECrL,GAAA,EAAc,SAAQ,aAAY,SAAS0L,GAAgB,UAAA,UAAA,CAE5D;AAAA,MAAA,EAAA,CACA;AAAA,IAAA,GACF;AAAA,IAEJ,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,QAAOhG,IAAA4K,KAAA,gBAAAA,EAAQ,OAAO,CAACqC,MAAWA,EAAG,MAAM,UAAU,YAAY,KAAK,CAAC/I,GAAOQ,MAAU,IAAI,KAAKA,EAAE,MAAM,KAAK,EAAE,QAAA,IAAY,IAAI,KAAKR,EAAE,MAAM,KAAK,EAAE,QAAA,OAA7I,OAAAlE,IAA2J,CAAA;AAAA,QAClK,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS,EAAE,WAAW,IAAM,WAAW,OAAA;AAAA,QACvC,aAAa;AAAA,UACT,KAAK,EAAG,KAAK,OAAO,OAAO,SAAA;AAAA,UAC3B,MAAM,EAAE,KAAK,QAAS,OAAO,SAAA;AAAA,QAAU;AAAA,QAE3C,YAAY,CAAC2M,MAAM,gBAAAvQ,EAACwI,IAAA,EAAwB,GAAG+H,GAAG;AAAA,QAClD,QAAQ,CAAC,EAAE,SAAApM,GAAS,OAAAC,EAAA,MAAY0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAChE,EAAA,CACA,EAAA,CACF;AAEJ;;;;;;AChGA,SAAwB0M,GAA2B;AAAA,EACjD,OAAA7N;AAAA,EACA,OAAA5C,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,YAAAqJ;AAAA,EACA,WAAAvK,IAAY;AACd,GAAQ;AAEN,QAAM2R,IAAkB,2HAClBnH,IAAclG,EAAY,IAAI,GAC9B,CAACmG,GAAUC,CAAW,IAAIC,EAAS,EAAE,SAAS,IAAM,OAAO,IAAO,GAClE,CAACyE,GAAQC,CAAS,IAAI1E,EAAgB,CAAA,CAAE;AAE9C,WAASiH,EAAWC,GAAY;AAC9B,WAAO,CAAC,GAAGA,CAAG,EAAE;AAAA,MACd,CAACnJ,GAAGQ,MAAM,IAAI,KAAKR,EAAE,KAAK,EAAE,QAAA,IAAY,IAAI,KAAKQ,EAAE,KAAK,EAAE,QAAA;AAAA,IAAQ;AAAA,EAEtE;AAEA,WAAS4I,EAA0B1C,GAAe;AAChD,UAAM2C,wBAAU,KAAA,GACVC,IAAe,IAAI,KAAKD,EAAI,QAAA,IAAY,QAAc,KAAK,GAAI;AAErE,WAAO3C,EAAO,OAAO,CAAC/G,MAAe;AACnC,UAAI,CAACA,EAAM,MAAO,QAAO;AAEzB,YAAM4J,IAAY,IAAI,KAAK5J,EAAM,KAAK;AACtC,aAAO4J,KAAaF,KAAOE,KAAaD;AAAA,IAC1C,CAAC;AAAA,EACH;AAEA,QAAMlH,IAAiB,MAAM;AAC3B,IAAAP,KAAA,QAAAA;AAAA,EACF;AAEA,iBAAe2H,IAAoB;AAC/B,QAAI;AAGF,YAAMC,KADO,OADI,MAAM,MAAMR,CAAe,GAChB,KAAA,GACN,MAAM,OAAO;AAAA,QACjC,CAACxF,MAAYA,EAAE,gBAAgB;AAAA,MAAA;AAGnC,UAAI,CAACgG,KAAY,CAAC,MAAM,QAAQA,EAAS,MAAM,GAAG;AAChD,gBAAQ,MAAM,2BAA2B;AACzC;AAAA,MACF;AAIA,YAAMC,IAAcD,EAAS,OAAO,MAAM,GAFhC,CAEoC,GAGxCE,IAAY,CAACC,MAAgB;AACjC,cAAMC,IAAO;AAEb,YAAID,EAAM,UAAUA,EAAM,OAAO,SAAS,GAAG;AAC3C,gBAAME,IAAMF,EAAM,OAAO,CAAC;AAC1B,iBAAO;AAAA,YACL,GAAGC,CAAI,IAAID,EAAM,OAAO,IAAIE,EAAI,OAAO;AAAA,UAAA;AAAA,QAE3C;AAEA,eAAO;AAAA,UACL,GAAGD,CAAI,IAAID,EAAM,OAAO;AAAA,QAAA;AAAA,MAE5B,GAEMG,IAAOL,EAAY,QAAQC,CAAS;AAE1C,MAAAK,EAAmBD,CAAI;AAAA,IAC3B,SAAS1R,GAAG;AACV,cAAQ,MAAMA,CAAC;AAAA,IACjB;AAAA,EACF;AAEE,iBAAe2R,EAAmBD,GAAY;AAC9C,QAAI;AACF,YAAME,IAAY,MAAM,QAAQ;AAAA,QAC9BF,EAAK,IAAI,CAACxH,MAAa,MAAMA,CAAG,EAAE,KAAK,CAAA2H,MAAOA,EAAI,KAAA,CAAM,CAAC;AAAA,MAAA;AAG3D,UAAIC,IAAkB,CAAA,GAClBC,IAAqB,CAAA;AAEzB,MAAAH,EAAU,QAAQ,CAAAhD,MAAQ;AACxB,QAAKA,EAAK,WAEVkD,EAAU,KAAK,GAAGlD,EAAK,OAAO,IAAI,CAACxK,MAAcA,EAAK,KAAK,CAAC,GAC5D2N,EAAa,KAAK,GAAGnD,EAAK,OAAO,QAAQ,CAACxK,MAAaA,EAAK,aAAa,CAAA,CAAE,CAAC;AAAA,MAC9E,CAAC;AAGD,YAAM4N,IAASC,EAAwBH,GAAWC,CAAY;AAE9D,MAAAzD,EAAUuC,EAAWE,EAA0BiB,CAAM,CAAC,CAAC;AAAA,IAEzD,SAASE,GAAO;AACd,cAAQ,MAAM,yBAAyBA,CAAK;AAAA,IAC9C;AAAA,EACF;AAEE,WAASD,EAAwBnD,GAAetH,GAAgB;AAG9D,UAAM8H,IAFW9H,EAAS,OAAO,CAACW;;AAAU,eAAA1E,IAAA0E,EAAE,iBAAF,gBAAA1E,EAAgB,QAAO;AAAA,KAAC,EAEnC,OAAO,CAACsE,GAAWI,OAC7CJ,EAAII,EAAE,OAAO,MAAGJ,EAAII,EAAE,OAAO,IAAI,CAAA,IACtCJ,EAAII,EAAE,OAAO,EAAE,KAAKA,CAAC,GACdJ,IACN,CAAA,CAAE;AAEL,WAAO+G,EACJ,OAAO,CAACY,MAAiBJ,EAAgBI,EAAO,EAAE,CAAC,EACnD,IAAI,CAACA,OAAiB;AAAA,MACrB,GAAGA;AAAA,MACH,SAASJ,EAAgBI,EAAO,EAAE;AAAA,IAAA,EAClC;AAAA,EACN;AAEA,SAAAQ,EAAU,MAAM;AAChB,IAAIpN,KAASA,EAAM,OAAO,SAAS,KACjCqO,EAAA;AAAA,EAEJ,GAAG,CAACrO,CAAK,CAAC,GAMN,gBAAAjD,EAAC,WAAA,EAAQ,WAHcZ,KAAa,QAGE,OAAO,EAAE,OAAO,OAAA,GAClD,UAAA,gBAAAU,EAAC,OAAA,EAAI,WAAW8B,GAAO,SAEvB,UAAA;AAAA,IAAA,gBAAA5B,EAAC,OAAA,EAAI,WAAW4B,GAAO,WACrB,UAAA,gBAAA9B,EAACuI,GAAA,EAAM,WAAU,UAAS,SAAS,KAAK,YAAU,IAChD,UAAA;AAAA,MAAA,gBAAArI,EAACI,GAAA,EAAoB,OAAM,uBAAA,CAAuB;AAAA,MAClD,gBAAAJ,EAAC,OAAA,EAAI,WAAW4B,GAAO,eACrB,UAAA,gBAAA5B,EAACxB,GAAA,EAAc,SAAQ,aAAY,MAAK,MAAK,WAAS,IAAC,SAAS,MAAM;AAAC,QAAA0L,EAAA;AAAA,MAAiB,GAAI,qBAAO,EAAA,CACrG;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,sBAEC,OAAA,EAAI,OAAO,EAAE,UAAU,KAG1B,UAAA,gBAAAlK;AAAA,MAAC+C;AAAA,MAAA;AAAA,QACC,KAAK6G;AAAA,QACL,OAAO4E;AAAA,QACP,SAAS;AAAA,QACT,KAAI;AAAA,QACJ,SAAS,EAAE,WAAW,IAAM,WAAW,GAAA;AAAA,QACvC,aAAa;AAAA,UACT,MAAK,EAAE,SAAS,KAAK,KAAK,OAAO,OAAO,UAAU,SAAS,EAAE,MAAM,OAAO,OAAO,QAAM;AAAA,QAAG;AAAA,QAE9F,YAAY,CAAC+B,MAAM,gBAAAvQ,EAACmJ,IAAA,EAAuB,OAAQoH,GAAG;AAAA,QACtD,QAAQ,CAAC,EAAE,SAAApM,GAAS,OAAAC,EAAA,MAAY0F,EAAY,EAAE,SAAA3F,GAAS,OAAAC,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA,EAChE,CACA;AAAA,EAAA,EAAA,CACA,EAAA,CACF;AAEJ;AChKA,MAAMkO,KAAsB;AAAA,EAC1B;AAAA,IACE,YACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,EAAA;AAAA,EAEJ;AAAA,IACE,YACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,EAAA;AAEN,GAEMC,KAAc,CAAClI,MAAgB,GAAG,OAAO,SAAS,MAAM,GAAGA,CAAG,IAE9DmI,KAAqC;AAAA,EACzC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MACE;AAAA,IACF,SAAS,MAAMD,GAAY,8BAA8B;AAAA,EAAA;AAAA,EAE3D;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MACE;AAAA,IACF,SAAS,MAAM,QAAQ,IAAI,UAAU;AAAA,EAAA;AAAA,EAEvC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MACE;AAAA,IACF,SAAS,MAAMA,GAAY,+BAA+B;AAAA,EAAA;AAAA,EAE5D;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MACE;AAAA,IACF,SAAS,MAAMA,GAAY,iCAAiC;AAAA,EAAA;AAEhE;AAEA,SAAwBE,GAAsB;AAAA,EAC5C,aAAAC,IAAcJ;AAAA,EACd,OAAArP,IAAQuP;AACV,GAA+B;AAC7B,QAAM,CAACG,GAAWC,CAAY,IAAI7I,EAAS,CAAC,GAEtC8I,KAAYH,KAAA,gBAAAA,EAAa,WAAU;AAEzC,SACE,gBAAA5S;AAAA,IAAC2B;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI;AAAA,QACF,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,QAMV,UAAU;AAAA;AAAA,MAAA;AAAA,MAKZ,UAAA;AAAA,QAAA,gBAAA3B;AAAA,UAAC2B;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,IAAA;AAAA,cAChC,cAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,YAGZ,UAAA;AAAA,cAAA,gBAAAzB;AAAA,gBAAC+C;AAAA,gBAAA;AAAA,kBACC,OAAO2P;AAAA,kBACP,SAAS;AAAA,kBACT,KAAI;AAAA,kBACJ,SAAS;AAAA,oBACP,MAAM;AAAA,oBACN,YAAY;AAAA,oBACZ,QAAQ;AAAA,oBACR,MAAM;AAAA,oBACN,OAAO;AAAA;AAAA;AAAA,kBAAA;AAAA,kBAIT,QAAQ,CAAC,EAAE,OAAA7O,QAAY+O,EAAa/O,CAAK;AAAA,kBACzC,YAAY,CAACiP;;AACX,2CAAAhT;AAAA,sBAAC2B;AAAA,sBAAA;AAAA,wBACC,IAAI;AAAA,0BACF,UAAU;AAAA,0BACV,QAAQ,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,IAAA;AAAA,wBAAI;AAAA,wBAGtC,UAAA;AAAA,0BAAA,gBAAA3B;AAAA,4BAAC2B;AAAA,4BAAA;AAAA,8BACC,WAAU;AAAA,8BACV,IAAI,EAAE,UAAU,YAAY,OAAO,GAAG,YAAY,EAAA;AAAA,8BAElD,UAAA;AAAA,gCAAA,gBAAAzB;AAAA,kCAAC;AAAA,kCAAA;AAAA,oCACC,QAAQ8S,EAAG;AAAA,oCACX,OAAM;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAER,gBAAA9S;AAAA,kCAAC;AAAA,kCAAA;AAAA,oCACC,QAAQ8S,EAAG;AAAA,oCACX,OAAM;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAER,gBAAA9S;AAAA,kCAACyB;AAAA,kCAAA;AAAA,oCACC,WAAU;AAAA,oCACV,MAAKmC,IAAAkP,EAAG,gBAAH,OAAAlP,IAAkBkP,EAAG;AAAA,oCAC1B,KAAI;AAAA,oCACJ,eAAW;AAAA,oCACX,SAAQ;AAAA,oCACR,IAAI;AAAA,sCACF,OAAO;AAAA,sCACP,QAAQ;AAAA,sCACR,WAAW;AAAA,sCACX,SAAS;AAAA,oCAAA;AAAA,kCACX;AAAA,gCAAA;AAAA,8BACF;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAGF,gBAAA9S;AAAA,4BAACyB;AAAA,4BAAA;AAAA,8BACC,IAAI;AAAA,gCACF,UAAU;AAAA,gCACV,OAAO;AAAA,gCACP,eAAe;AAAA,gCACf,aAAa;AAAA,kCACX,SAAS;AAAA,kCACT,UAAU;AAAA,kCACV,MAAM;AAAA,kCACN,OAAO;AAAA,kCACP,QAAQ;AAAA,kCACR,KAAK;AAAA,kCACL,YACE;AAAA,gCAAA;AAAA,8BACJ;AAAA,4BACF;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,oBAAA;AAAA;AAAA,gBAEF;AAAA,cAAA;AAAA,cAIJ,gBAAAzB;AAAA,gBAACyB;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,gBAAgB;AAAA,oBAChB,QAAQ;AAAA,kBAAA;AAAA,kBAGV,UAAA,gBAAAzB,EAACQ,IAAA,EAAoB,OAAOqS,GAAW,QAAQF,EAAA,CAAW;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC5D;AAAA,UAAA;AAAA,QAAA;AAAA,QAIF,gBAAA3S;AAAA,UAACyB;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQ,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,cACtB,MAAM;AAAA,cACN,WAAW;AAAA,cACX,OAAO,EAAE,IAAI,OAAO,IAAI,OAAO,IAAI,MAAA;AAAA,cACnC,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,cAAc;AAAA,cACd,IAAI,EAAE,IAAI,KAAK,IAAI,IAAA;AAAA,cACnB,IAAI,EAAE,IAAI,KAAK,IAAI,EAAA;AAAA,cACnB,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,QAAQ;AAAA,YAAA;AAAA,YAGT,UAAAwB,KAAA,gBAAAA,EAAO,IAAI,CAACsB,MACX,gBAAAzE;AAAA,cAAC2B;AAAA,cAAA;AAAA,gBAEC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,eAAe,EAAE,IAAI,UAAU,IAAI,MAAA;AAAA;AAAA,kBACnC,YAAY;AAAA,kBACZ,gBAAgB;AAAA,kBAChB,KAAK,EAAE,IAAI,KAAK,IAAI,EAAA;AAAA;AAAA,kBACpB,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,QAAQ8C,EAAK,UAAU,YAAY;AAAA,kBACnC,YAAY;AAAA,gBAAA;AAAA,gBAEd,SAAS,MAAA;;AAAM,0BAAAX,IAAAW,EAAK,YAAL,gBAAAX,EAAA,KAAAW;AAAA;AAAA,gBAEd,UAAA;AAAA,kBAAAA,EAAK,QACJ,gBAAAvE;AAAA,oBAACyB;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,KAAK8C,EAAK;AAAA,sBACV,KAAKA,EAAK,SAAS,QAAQA,EAAK,EAAE;AAAA,sBAClC,IAAI;AAAA,wBACF,OAAO,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,wBAC7B,QAAQ,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,wBAC9B,WAAW;AAAA,sBAAA;AAAA,oBACb;AAAA,kBAAA;AAAA,kBAGJ,gBAAAvE;AAAA,oBAACgG;AAAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,wBAChC,YAAY;AAAA,wBACZ,OAAO;AAAA,wBACP,WAAW;AAAA;AAAA,sBAAA;AAAA,sBAGZ,UAAAzB,EAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACR;AAAA,cAAA;AAAA,cAnCKA,EAAK;AAAA,YAAA;AAAA,UAqCb;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;ACnOA,MAAMwO,KAA6B;AAAA,EACjC;AAAA,IACE,EAAE,KAAK,wEAAwE,KAAK,YAAA;AAAA,IACpF,EAAE,KAAK,yEAAyE,KAAK,OAAA;AAAA,EAAO;AAAA,EAE9F;AAAA,IACE,EAAE,KAAK,0EAA0E,KAAK,QAAA;AAAA,IACtF,EAAE,KAAK,2EAA2E,KAAK,SAAA;AAAA,IACvF,EAAE,KAAK,2EAA2E,KAAK,SAAA;AAAA,EAAS;AAEpG;AAEA,SAAwBC,GAAyB;AAAA,EAC/C,OAAA3S,IAAQ;AAAA,EACR,MAAA4S,IAAOF;AACT,GAAU;AAER,QAAMG,IAAOD,EAAK,KAAA;AAElB,SACE,gBAAAnT,EAAC2B,GAAA,EAAI,WAAU,WAAU,mBAAgB,YAAW,IAAI,EAAE,OAAO,OAAA,GAC/D,UAAA;AAAA,IAAA,gBAAAzB;AAAA,MAACgG;AAAAA,MAAA;AAAA,QACC,IAAG;AAAA,QACH,SAAQ;AAAA,QACR,IAAI;AAAA,UACF,YAAY;AAAA,UACZ,UAAU,EAAE,IAAI,IAAI,IAAI,GAAA;AAAA,UACxB,WAAW;AAAA,UACX,IAAI;AAAA,QAAA;AAAA,QAGL,UAAA3F;AAAA,MAAA;AAAA,IAAA;AAAA,IAIH,gBAAAL;AAAA,MAACyB;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,YACE;AAAA,QAAA;AAAA,MACJ;AAAA,IAAA;AAAA,sBAIDA,GAAA,EAAI,IAAI,EAAE,SAAS,EAAE,IAAI,SAAS,IAAI,OAAA,KACpC,UAAAwR,EAAK,IAAI,CAAC,GAAGnS,MACZ,gBAAAd;AAAA,MAACqI;AAAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QACV,gBAAe;AAAA,QACf,YAAW;AAAA,QACX,KAAK;AAAA,QACL,UAAS;AAAA,QAER,UAAA,EAAE,IAAI,CAAC8K,wBACL7R,IAAA,EAAiD,GAAG6R,EAAA,GAAzB,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAG,EAAW,CACzD;AAAA,MAAA;AAAA,MATIrS;AAAA,IAAA,CAWR,GACH;AAAA,IAGA,gBAAAd;AAAA,MAACyB;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,IAAI;AAAA,UACJ,SAAS,EAAE,IAAI,QAAQ,IAAI,OAAA;AAAA,UAC3B,KAAK,EAAE,IAAI,KAAK,IAAI,KAAA;AAAA,UACpB,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,qBAAqB,EAAE,IAAI,0BAAA;AAAA,UAC3B,gBAAgB,EAAE,IAAI,SAAA;AAAA,QAAS;AAAA,QAGhC,UAAAyR,EAAK,IAAI,CAACC,wBACR7R,IAAA,EAAiD,GAAG6R,EAAA,GAAzB,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAG,EAAW,CACzD;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEF;AAEJ;AClFO,MAAMC,KAA+B;AAAA,EAC1C,0BAAA1J;AAAA,EACA,yBAAAuB;AAAA,EACA,4BAAAQ;AAAA,EACA,sBAAAW;AAAA,EACA,yBAAAK;AAAA,EACA,0BAAAoB;AAAA,EACA,8BAAAd;AAAA,EACA,uBAAA0F;AAAA,EACA,0BAAAO;AAAA,EACA,4BAAAvC;AAAA,EACA,4BAAAK;AAAA,EACA,gCAAAvC;AACF,GCnBM8E,KAAc,CAACC,MACnB,OAAOA,KAAQ,cACdA,KAAO,OAAOA,KAAQ,YAAY,cAAcA,GAG7CC,KAAgB,CAACC,MAAgB,uBAAuB,KAAKA,CAAG,GAEzDC,KAAyC,OAAO;AAAA,EAC3D,OAAO,QAAQL,EAAO,EAAE;AAAA,IACtB,CAAC,CAACI,GAAKF,CAAG,MAAMC,GAAcC,CAAG,KAAKH,GAAYC,CAAG;AAAA,EAAA;AAEzD;AAqCA,MAAMI,WAAkB,MAAM;AAAA,EAC5B,YACSC,GACAtJ,GACAuJ,GACP;AACA,UAAM,QAAQD,CAAM,IAAIC,CAAU,EAAE,GAJ7B,KAAA,SAAAD,GACA,KAAA,MAAAtJ,GACA,KAAA,aAAAuJ,GAGP,KAAK,OAAO;AAAA,EACd;AACF;AAOA,MAAMC,KAAsE,CAAC;AAAA,EAC3E,kBAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,IAAAC;AACF,MAAM;AACJ,QAAM,CAACC,GAAUC,CAAW,IAAInK;AAAA,IAC9B,CAAA;AAAA,EAAC,GAEG,CAACoK,GAASC,CAAU,IAAIrK,EAAS,EAAK,GACtC,CAACsK,GAAgBC,CAAiB,IAAIvK,EAE1C,CAAA,CAAE,GACE,CAACwK,GAAmBC,CAAoB,IAAIzK,EAEhD,CAAA,CAAE,GACE,CAAC0K,GAAiBC,CAAkB,IAAI3K,EAE5C,CAAA,CAAE;AAGJ,EAAAsG,EAAU,MAAM;AAEd,QADIyD,KACA,CAACE,EAAI;AAET,IAAAI,EAAW,EAAI;AA4Bf,UAAMO,IAAcC;AAAA,MAClBC,GAAIb,GAAI,YAAYD,CAAK;AAAA,MACzB,CAACe,MAAS;;AACR,YAAI;AACF,cAAIC,IAA8CD,EAAK,OAAA,MAClDlR,IAAAkR,EAAK,WAAL,gBAAAlR,EAAa,aACd,CAAA,IACA,CAAA;AACJ,UAAAmR,IAAUA,EACP,MAAA,EACA,KAAK,CAACjN,GAAGQ;;AAAO,qBAAA1E,IAAAkE,EAAE,UAAF,OAAAlE,IAAW,OAAMwB,IAAAkD,EAAE,UAAF,OAAAlD,IAAW;AAAA,WAAE,EAC9C,IAAI,CAAC4P,GAAGlU,OAAO,EAAE,GAAGkU,GAAG,OAAOlU,IAAI,EAAA,EAAI,GAEzCoT,EAAYa,CAAO,GACnB,QAAQ,IAAI,aAAaA,CAAO;AAAA,QAClC,SAAS5U,GAAG;AACV,kBAAQ,MAAM,+BAA+B4T,GAAO5T,CAAC;AAAA,QACvD,UAAA;AACE,UAAAiU,EAAW,EAAK;AAAA,QAClB;AAAA,MACF;AAAA,MACA,CAAC/B,MAAU;AACT,gBAAQ,MAAM,+BAA+B0B,GAAO1B,CAAK,GACzD+B,EAAW,EAAK;AAAA,MAClB;AAAA,IAAA;AAGF,WAAO,MAAMO,EAAA;AAAA,EACf,GAAG,CAACb,GAAkBC,GAAOC,CAAE,CAAC,GAEhC3D,EAAU,MAAM;AASd,KAP0ByD,IACtBA,EAAiB,MAAA,IACjBG,EAAS,MAAA,GAEV,IAAI,CAACe,MAAMA,EAAE,YAAY,EACzB,OAAO,CAACxB,MAAQ,CAAC,CAACA,CAAG,EAEb;AAAA,EAEb,GAAG,CAACM,GAAkBG,CAAQ,CAAC;AAE/B,QAAMgB,IAAmB,OACvBC,MAC4B;AAC5B,UAAMC,KAAUD,EAAQ,UAAU,IAAI,KAAA;AACtC,QAAI,CAACC,EAAQ;AAEb,UAAMC,IAASF,EAAQ,aAAa,OAC9BG,IAASH,EAAQ,aAAa,CAAA;AAEpC,QAAI7K,IAAM8K,GACNG,GACAC;AAEJ,QAAIH,MAAW,OAAO;AACpB,YAAMI,IAAI,IAAI;AAAA,QACZL;AAAA,QACA,OAAO,UAAU,cACb,qBACA,OAAO,SAAS;AAAA,MAAA;AAEtB,iBAAW5E,KAAK8E;AACd,QAAK9E,EAAE,OACPiF,EAAE,aAAa,OAAOjF,EAAE,KAAKA,EAAE,KAAK;AAEtC,MAAAlG,IAAMmL,EAAE,SAAA;AAAA,IACV,OAAO;AAEL,YAAMC,IAAU,IAAI,gBAAA;AACpB,iBAAWlF,KAAK8E;AACd,QAAK9E,EAAE,OAEPkF,EAAQ,OAAOlF,EAAE,KAAKA,EAAE,KAAK;AAE/B,MAAA+E,IAAOG,EAAQ,SAAA,GACfF,IAAU;AAAA,QACR,gBAAgB;AAAA,MAAA;AAAA,IAEpB;AAEA,UAAMvD,IAAM,MAAM,MAAM3H,GAAK;AAAA,MAC3B,QAAA+K;AAAA,MACA,SAAAG;AAAA,MACA,MAAAD;AAAA,IAAA,CACD;AAED,QAAI,CAACtD,EAAI,GAAI,OAAM,IAAI0B,GAAU1B,EAAI,QAAQ3H,GAAK2H,EAAI,UAAU;AAChE,WAAOA,EAAI,KAAA;AAAA,EACb,GAGM0D,IAAoBtK;AAAA,IACxB,MAAO0I,IAAmBA,EAAiB,MAAA,IAAUG,EAAS,MAAA;AAAA,IAC9D,CAACH,GAAkBG,CAAQ;AAAA,EAAA,GAGvB0B,IAAiBC,GAAM,OAAoB,oBAAI,KAAK;AAE1D,EAAAvF,EAAU,MAAM;AACd,UAAMwF,IAAaH,EAChB,IAAI,CAACV,OAAO,EAAE,GAAAA,GAAG,MAAMA,EAAE,UAAU,IAAI,OAAK,EAAI,EAChD,OAAO,CAAC,EAAE,KAAA3K,EAAA,MAAU,CAAC,CAACA,CAAG;AAE5B,QAAKwL,EAAW;AAEhB,iBAAW,EAAE,GAAAb,GAAG,KAAA3K,EAAA,KAASwL,GAAY;AACnC,cAAMrC,IAAM,GAAGwB,EAAE,EAAE,IAAI3K,CAAG;AAC1B,QAAIsL,EAAe,QAAQ,IAAInC,CAAG,MAClCmC,EAAe,QAAQ,IAAInC,CAAG,GAE9BgB,EAAqB,CAACsB,OAAU,EAAE,GAAGA,GAAM,CAACd,EAAE,EAAE,GAAG,GAAA,EAAO,GAC1DN,EAAmB,CAACoB,OAAU,EAAE,GAAGA,GAAM,CAACd,EAAE,EAAE,GAAG,GAAA,EAAK,IAErD,YAAY;AACX,cAAI;AACF,kBAAMe,IAAO,MAAMd,EAAiBD,CAAC;AACrC,YAAAV,EAAkB,CAACwB,OAAU,EAAE,GAAGA,GAAM,CAACd,EAAE,EAAE,GAAGe,EAAA,EAAO;AAAA,UACzD,SAASC,GAAc;AACrB,gBAAIC,IAAU;AACd,YAAID,aAAetC,KACjBuC,IAAU,cAAcD,EAAI,MAAM,KAAKA,EAAI,UAAU,QAAQA,EAAI,GAAG,KAC3DA,aAAe,cACxBC,IAAU,gCACDD,aAAe,YACxBC,IAAU,mCACD,OAAOD,KAAQ,aACxBC,IAAUD,EAAI,SAAA,IAEhBtB,EAAmB,CAACoB,OAAU,EAAE,GAAGA,GAAM,CAACd,EAAE,EAAE,GAAGiB,EAAA,EAAU;AAAA,UAC7D,UAAA;AACE,YAAAzB,EAAqB,CAACsB,OAAU,EAAE,GAAGA,GAAM,CAACd,EAAE,EAAE,GAAG,GAAA,EAAQ;AAAA,UAC7D;AAAA,QACF,GAAA;AAAA,MACF;AAAA,EACF,GAAG,CAACU,CAAiB,CAAC;AAEtB,QAAMQ,IAAiB9K;AAAA,IACrB,MACEsK,EACG,OAAO,CAACV,MAAMA,EAAE,OAAO,EACvB,KAAK,CAAClN,GAAGQ,MAAMR,EAAE,QAAQQ,EAAE,KAAK;AAAA,IACrC,CAACoN,CAAiB;AAAA,EAAA,GAGdS,IAAgB,CACpBlT,MAIK,MAAM,QAAQA,CAAK,IACjBA,EAAM,IAAI,CAACqD,MAAO;AACvB,UAAM8P,IAA+B,CAAA;AACrC,eAAWC,KAAK/P,EAAG,UAAU,CAAA,GAAI;AAC/B,YAAMgQ,KAAKD,EAAE,QAAQ,UAAU,YAAA;AAC/B,UAAIC,MAAM,UAAU;AAClB,cAAMhD,IAAM,OAAO+C,EAAE,SAAS,EAAE,EAAE,KAAA;AAClC,YAAI/C,MAAQ,IAAI;AACd,gBAAMiD,IAAM,OAAOjD,CAAG;AACtB,UAAK,OAAO,MAAMiD,CAAG,MACnBH,EAAIC,EAAE,IAAI,IAAIE;AAAA,QAElB;AAAA,MACF,WAAWD,MAAM;AACf,QAAAF,EAAIC,EAAE,IAAI,IAAI,OAAOA,EAAE,KAAK,EAAE,kBAAkB;AAAA,eACzCC,MAAM,YAAY;AACzB,cAAMhB,IAAO,OAAOe,EAAE,SAAS,EAAE,EAAE,KAAA;AACnC,YAAIf;AACF,cAAI;AAEF,kBAAMkB,IAAK,IAAI,SAASlB,CAAI;AAC5B,YAAAc,EAAIC,EAAE,IAAI,IAAIG;AAAA,UAChB,SAASrW,GAAG;AACV,oBAAQ,MAAM,oCAAoCkW,EAAE,IAAI,MAAMlW,CAAC;AAAA,UACjE;AAAA,MAEJ,MAAO,CAAAiW,EAAIC,EAAE,IAAI,IAAIA,EAAE;AAAA,IACzB;AACA,WAAOD;AAAA,EACT,CAAC,IA7BiC,CAAA,GAgC9BK,IAAkB,CACtBC,MAC4B;AAC5B,UAAMC,IAA+B,CAAA;AACrC,QAAI,CAAC,MAAM,QAAQD,CAAM,EAAG,QAAOC;AACnC,eAAW,KAAKD,GAAQ;AACtB,UAAI,CAAC,EAAE,KAAM;AACb,YAAMJ,KAAK,EAAE,QAAQ,UAAU,YAAA;AAC/B,UAAIA,MAAM,UAAU;AAElB,cAAMhD,IAAM,OAAO,EAAE,SAAS,EAAE,EAAE,KAAA;AAClC,YAAIA,MAAQ,IAAI;AACd,gBAAMiD,IAAM,OAAOjD,CAAG;AACtB,UAAK,OAAO,MAAMiD,CAAG,MACnBI,EAAI,EAAE,IAAI,IAAIJ;AAAA,QAElB;AAAA,MACF,WAAWD,MAAM;AACf,QAAAK,EAAI,EAAE,IAAI,IAAI,OAAO,EAAE,KAAK,EAAE,kBAAkB;AAAA,eACzCL,MAAM,YAAY;AACzB,cAAMhB,IAAO,OAAO,EAAE,SAAS,EAAE,EAAE,KAAA;AACnC,YAAIA;AACF,cAAI;AAEF,kBAAMkB,IAAK,IAAI,SAASlB,CAAI;AAC5B,YAAAqB,EAAI,EAAE,IAAI,IAAIH;AAAA,UAChB,SAASrW,GAAG;AACV,oBAAQ,MAAM,oCAAoC,EAAE,IAAI,MAAMA,CAAC;AAAA,UACjE;AAAA,MAEJ,MAAO,CAAAwW,EAAI,EAAE,IAAI,IAAI,EAAE;AAAA,IACzB;AACA,WAAOA;AAAA,EACT,GAEMC,IAAoB,CACxBC,GACAC,GACAnF,MAC4B;AAC5B,UAAMQ,IAAkCR,IAAO,EAAE,GAAGA,EAAA,IAAS,CAAA;AAC7D,QAAImF,GAAQ;AACV,YAAMtU,KAAQsU,EAAO,gBAAgB,SAAS,UAAU;AACxD,aAAA3E,EAAO3P,CAAI,IAAIsU,EAAO,OAAO,CAAA,GACtB3E;AAAA,IACT;AACA,UAAM4E,IAAKF,GACLG,IAAQ,MAAM,QAAQD,CAAE,GACxBX,IACJ,CAACY,KAAS,OAAOD,KAAO,YAAYA,MAAO,OAAOA,IAAK,QACnDE,IACJb,KAAO,MAAM,QAASA,EAAY,SAAUA,EAAY,KAAK,IACtDA,EAAY,SAAUA,EAAY,QACrC,QACAc,IAAS,CAACC,MAAyBH,IAAQD,IAAKE,KAAWE;AACjE,WAAAhF,EAAO,QAAQ+E,EAAOD,KAAW,CAAA,CAAE,GAC5B9E;AAAA,EACT,GAEMiF,IAAiB,CACrBpC,MAC4B;;AAC5B,UAAMqC,IAAS,CAAC,GAACzT,IAAAoR,EAAE,WAAF,QAAApR,EAAU,SACrBiT,IAA0BQ,IAAShD,EAAeW,EAAE,EAAE,IAAI;AAChE,QAAIsC,IAAqCtC,EAAE,QAAQ,EAAE,GAAGA,EAAE,MAAA,IAAU,CAAA;AACpE,UAAMuC,IAAUd,EAAgBzB,EAAE,kBAAkB;AACpD,QACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IAAA,EACA,SAASA,EAAE,YAAY;AAEzB,qBAAQ,IAAI6B,CAAO,GACZ,EAAE,OAAOA,GAAS,GAAGS,GAAW,GAAGC,EAAA;AAI5C,QADAD,IAAY,EAAE,GAAGA,GAAW,GAAGC,EAAA,GAC3BF,EAAQ,CAAAC,IAAYV,EAAkBC,GAAS,MAAMS,CAAS;AAAA,aACzDtC,EAAE,aAAa,UAAU;AAChC,YAAMzN,IAAM4O,EAAcnB,EAAE,WAAW;AAQvC,UAPAsC,IAAYV;AAAA,QACV;AAAA,QACA,EAAE,KAAArP,GAAK,cAAcyN,EAAE,aAAA;AAAA,QACvBsC;AAAA,MAAA,GAIEtC,EAAE,iBAAiBA,EAAE,cAAc;AACrC,cAAMwC,IAAOrB,EAAcnB,EAAE,YAAY,GACnCyC,KAAYzC,EAAE,iBAAiB,UAAU,UAAU;AACzD,QAAAsC,EAAUG,CAAQ,IAAID;AAAA,MACxB;AAAA,IACF;AAEA,WAAOF;AAAA,EACT,GAEMI,IAAkB,CACtBlE,GACA1U,GACAmX,MAQE,gBAAAjW,EAAC,SAAc,WAAW,oBANa;AAAA,IACvC,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,EAAA,EAG4ClB,CAAI,CAAC,IACzD,UAAAmX,EAAA,GADOzC,CAEV,GAIEmE,IAAsB,CAAC3C,MAAwC;;AACnE,UAAM4C,IAAS5C,EAAE,cAEX6C,IAAOpE,GAAkBmE,CAAM;AAErC,QAAI,CAACC;AACH,qBAAQ,KAAK,sCAAsCD,CAAM,GAAG,GACrDF;AAAA,QACL1C,EAAE;AAAA,QACF;AAAA,QACA,eAAe4C,CAAM;AAAA,MAAA;AAIzB,UAAMP,IAAS,CAAC,GAACzT,IAAAoR,EAAE,WAAF,QAAApR,EAAU,SACrBiT,IAAUQ,IAAShD,EAAeW,EAAE,EAAE,IAAI,QAC1C8C,IAAaT,IAAS,CAAC,CAAC9C,EAAkBS,EAAE,EAAE,IAAI,IAClD+C,IAAWV,IAAS5C,EAAgBO,EAAE,EAAE,IAAI;AAElD,QAAIqC,GAAQ;AACV,UAAIS,KAAc,CAACjB;AACjB,eAAOa;AAAA,UACL1C,EAAE;AAAA,UACF;AAAA,UACA,wBAAwBA,EAAE,MAAM;AAAA,QAAA;AAEpC,UAAI+C,KAAY,CAAClB;AACf,eAAOa;AAAA,UACL1C,EAAE;AAAA,UACF;AAAA,UACA,kBAAkBA,EAAE,MAAM,KAAK+C,CAAQ;AAAA,QAAA;AAAA,IAE7C;AAEA,UAAMT,IAAYF,EAAepC,CAAC,GAQ5BgD,0BAN0B,IAAI;AAAA,MAClC;AAAA,MACA;AAAA,IAAA,CACD,GACuC,IAAIhD,EAAE,YAAY,IAGtD;AAAA,MACE,OAAO;AAAA,MACP,WAAW;AAAA,IAAA,IAEb;AAAA,MACE,aAAa;AAAA,MACb,cAAc;AAAA,MACd,OAAO;AAAA,MACP,WAAW;AAAA,IAAA;AAGjB,WACE,gBAAAhV,EAAC,OAAA,EAAe,OAAOgY,IACrB,UAAA,gBAAAhY,EAAC6X,KAAM,GAAGP,EAAA,CAAW,EAAA,GADbtC,EAAE,EAEZ;AAAA,EAEJ;AAEA,SAAIb,KAAW,CAACL,IACP,gBAAA9T,EAAC,OAAA,EAAI,WAAU,yBAAwB,UAAA,uBAAmB,IAC/D,CAACmU,KAAW,CAACL,KAAoBG,EAAS,WAAW,IAErD,gBAAAjU,EAAC,OAAA,EAAI,WAAU,yBAAwB,UAAA,6BAAyB,IAIlE,gBAAAA;AAAA,IAACiY;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU;AAAA,MACV,gBAAc;AAAA,MACd,IAAI;AAAA,QACF,iBAAiB;AAAA,QACjB,UAAU;AAAA;AAAA;AAAA,QAGV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,MAAA;AAAA,MAGb,UAAA,gBAAAjY,EAACqI,IAAA,EAAM,WAAU,UAAS,SAAS,GAAG,YAAU,IAC7C,UAAA6N,EAAe,IAAIyB,CAAmB,EAAA,CACzC;AAAA,IAAA;AAAA,EAAA;AAGN;"}