@kubuild/components 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/index.cjs +601 -12
- package/dist/blocks/index.cjs.map +1 -1
- package/dist/blocks/index.d.ts +2 -1
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/sales.d.ts +7 -0
- package/dist/blocks/sales.d.ts.map +1 -0
- package/dist/canonical-props.d.ts +8 -0
- package/dist/canonical-props.d.ts.map +1 -0
- package/dist/{chunk-PWKMZYTC.js → chunk-CJN5OHHX.js} +596 -10
- package/dist/chunk-CJN5OHHX.js.map +1 -0
- package/dist/{chunk-JTQ35OQQ.js → chunk-DIZKTXJI.js} +601 -13
- package/dist/chunk-DIZKTXJI.js.map +1 -0
- package/dist/definitions/constants.d.ts.map +1 -1
- package/dist/definitions/conversion/accordion.d.ts +8 -0
- package/dist/definitions/conversion/accordion.d.ts.map +1 -0
- package/dist/definitions/conversion/carousel.d.ts +7 -0
- package/dist/definitions/conversion/carousel.d.ts.map +1 -0
- package/dist/definitions/conversion/countdown.d.ts +19 -0
- package/dist/definitions/conversion/countdown.d.ts.map +1 -0
- package/dist/definitions/conversion/divider.d.ts +9 -0
- package/dist/definitions/conversion/divider.d.ts.map +1 -0
- package/dist/definitions/conversion/index.d.ts +7 -0
- package/dist/definitions/conversion/index.d.ts.map +1 -0
- package/dist/definitions/conversion/rating.d.ts +7 -0
- package/dist/definitions/conversion/rating.d.ts.map +1 -0
- package/dist/definitions/conversion/tabs.d.ts +9 -0
- package/dist/definitions/conversion/tabs.d.ts.map +1 -0
- package/dist/definitions/form/button.d.ts.map +1 -1
- package/dist/definitions/index.cjs +746 -148
- package/dist/definitions/index.cjs.map +1 -1
- package/dist/definitions/index.d.ts +1 -0
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/index.js +27 -1
- package/dist/definitions/media/image.d.ts.map +1 -1
- package/dist/definitions/types.d.ts +4 -1
- package/dist/definitions/types.d.ts.map +1 -1
- package/dist/definitions/typography/badge.d.ts.map +1 -1
- package/dist/definitions/typography/blockquote.d.ts.map +1 -1
- package/dist/definitions/typography/heading.d.ts.map +1 -1
- package/dist/definitions/typography/link.d.ts.map +1 -1
- package/dist/definitions/typography/paragraph.d.ts.map +1 -1
- package/dist/definitions/typography/text.d.ts.map +1 -1
- package/dist/index.cjs +1417 -228
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-JTQ35OQQ.js.map +0 -1
- package/dist/chunk-PWKMZYTC.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blocks/types.ts","../src/blocks/layout.ts","../src/blocks/sections.ts","../src/blocks/forms.ts","../src/blocks/sales.ts","../src/blocks/index.ts"],"sourcesContent":["import { Node } from '@kubuild/schema';\n\nexport interface BlockDefinition {\n id: string;\n name: string;\n category: 'layout' | 'sections' | 'ui' | 'pricing' | 'cta' | 'forms' | string;\n categoryLabel?: string;\n description?: string;\n icon?: string;\n thumbnailSvg?: string;\n createNodeTree: (generateId?: (prefix?: string) => string) => Node;\n}\n\nlet nextId = 1;\nexport function defaultGenId(prefix = 'node'): string {\n return `${prefix}-${Date.now().toString(36)}-${(nextId++).toString(36)}`;\n}\n\n","import { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Predefined Starter Layout Blocks (STORA-241).\n */\nexport const LAYOUT_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'layout-1-col',\n name: '1 Column',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Full-width single column container inside a section',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { maxWidth: '1200px', margin: '0 auto', width: '100%' } },\n children: [],\n },\n ],\n }),\n },\n {\n id: 'layout-2-col-50-50',\n name: '2 Columns (50/50)',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Two equal-width 50/50 columns with flexible layout',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 2, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-2-col-30-70',\n name: '2 Columns (30/70)',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Two asymmetric columns: 30% sidebar and 70% main area',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 2, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '0 0 30%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-3-col',\n name: '3 Columns',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Three equal-width columns for grid showcases or card groups',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 3, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-4-col',\n name: '4 Columns',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Four equal columns for metric stats, logos, or compact feature cards',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 4, gap: '16px' },\n styles: { base: { display: 'flex', gap: '16px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n];\n\n","import { ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Pre-composed UI Blocks (STORA-242).\n */\nexport const UI_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'navbar',\n name: 'Navbar',\n category: 'sections',\n categoryLabel: 'Navigation & Headers',\n description: 'Responsive top navigation bar with brand logo, nav links, CTA button, and mobile hamburger menu',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '24px',\n paddingRight: '24px',\n backgroundColor: '#ffffff',\n borderBottom: '1px solid #e2e8f0',\n width: '100%',\n },\n mobile: {\n paddingLeft: '16px',\n paddingRight: '16px',\n paddingTop: '12px',\n paddingBottom: '12px',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n maxWidth: '1200px',\n margin: '0 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n flexWrap: 'wrap',\n },\n },\n children: [\n // 1. Brand Logo\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Brand', level: 3 },\n styles: {\n base: {\n fontSize: '20px',\n fontWeight: '800',\n color: '#0f172a',\n margin: '0',\n },\n },\n },\n // 2. Desktop Navigation Links (hidden on mobile)\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '24px',\n },\n mobile: {\n display: 'none',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Home', href: '#home' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#0f172a',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Features', href: '#features' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Pricing', href: '#pricing' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'About', href: '#about' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n ],\n },\n // 3. Desktop CTA Buttons (hidden on mobile)\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '12px',\n },\n mobile: {\n display: 'none',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Sign In', href: '#signin' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#475569',\n textDecoration: 'none',\n padding: '8px 12px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '8px 18px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n // 4. Mobile Hamburger Button (hidden on desktop, visible on mobile)\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: '☰',\n activeLabel: '✕',\n isEditable: false,\n modalId: 'mobile-nav-drawer',\n ariaLabel: 'Toggle navigation menu',\n variant: 'secondary',\n },\n styles: {\n base: {\n display: 'none',\n },\n mobile: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 12px',\n fontSize: '18px',\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0',\n borderRadius: '6px',\n color: '#0f172a',\n cursor: 'pointer',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'click',\n label: 'Toggle Mobile Menu',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'open_modal',\n label: 'Toggle Navigation Drawer',\n payload: {\n modalId: 'mobile-nav-drawer',\n toggle: true,\n },\n },\n ],\n },\n ],\n },\n // 5. Mobile Navigation Dropdown (hidden on desktop, stacked on mobile)\n // A `collapsible`, not a plain flex: this is an in-flow disclosure that expands\n // inside the navbar (its width/border styles depend on staying there), so it must\n // not be treated as a floating overlay. The dedicated renderer also keeps it\n // visible while editing, so the menu's links stay reachable on the canvas, and\n // only honours the open/closed state at runtime.\n {\n id: gen('collapsible'),\n type: 'collapsible',\n props: {\n modalId: 'mobile-nav-drawer',\n ariaLabel: 'Mobile navigation menu',\n defaultOpen: false,\n animated: true,\n },\n styles: {\n base: {\n display: 'none',\n },\n mobile: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gap: '8px',\n paddingTop: '16px',\n marginTop: '12px',\n borderTop: '1px solid #f1f5f9',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Home', href: '#home' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#0f172a',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Features', href: '#features' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Pricing', href: '#pricing' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'About', href: '#about' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '10px 16px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n textAlign: 'center',\n display: 'block',\n marginTop: '8px',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'hero-section',\n name: 'Hero Section',\n category: 'sections',\n categoryLabel: 'Hero & Headers',\n description: 'Engaging hero banner with headline, lead paragraph, and call-to-action button',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '80px 24px',\n backgroundColor: '#f8fafc',\n textAlign: 'center',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { maxWidth: '768px', margin: '0 auto' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Build Remarkable Experiences', level: 1 },\n styles: {\n base: {\n fontSize: '44px',\n fontWeight: '800',\n color: '#0f172a',\n marginBottom: '16px',\n lineHeight: '1.2',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text:\n 'A visual builder designed for maximum craft, responsiveness, and performance.',\n },\n styles: {\n base: {\n fontSize: '18px',\n color: '#475569',\n marginBottom: '32px',\n lineHeight: '1.6',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started Today', href: '#explore' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 28px',\n borderRadius: '8px',\n fontWeight: '600',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'feature-card',\n name: 'Feature Card',\n category: 'ui',\n categoryLabel: 'UI Blocks',\n description: 'Clean elevated feature card with badge, title, text, and action link',\n icon: 'box',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n padding: '24px',\n backgroundColor: '#ffffff',\n borderRadius: '12px',\n border: '1px solid #e2e8f0',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05)',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'PRO FEATURE', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Next-Gen Performance', level: 3 },\n styles: {\n base: { fontSize: '20px', fontWeight: '700', color: '#1e293b', marginBottom: '8px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Engineered for sub-millisecond render updates and zero runtime overhead.',\n },\n styles: { base: { fontSize: '14px', color: '#64748b', lineHeight: '1.5' } },\n },\n ],\n }),\n },\n {\n id: 'media-object',\n name: 'Media Object',\n category: 'ui',\n categoryLabel: 'UI Blocks',\n description: 'Horizontal media layout with image beside text content',\n icon: 'image',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n display: 'flex',\n gap: '16px',\n alignItems: 'flex-start',\n padding: '16px',\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n border: '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('image'),\n type: 'image',\n props: {\n src: 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809?w=160&auto=format&fit=crop&q=80',\n alt: 'Visual preview',\n },\n styles: {\n base: {\n width: '80px',\n height: '80px',\n borderRadius: '8px',\n objectFit: 'cover',\n flexShrink: '0',\n },\n },\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Creative Studio Asset', level: 4 },\n styles: {\n base: { fontSize: '16px', fontWeight: '600', color: '#0f172a', marginBottom: '4px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'High dynamic range gradients crafted for modern presentations.' },\n styles: { base: { fontSize: '13px', color: '#64748b', lineHeight: '1.4' } },\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'pricing-table',\n name: 'Pricing Table',\n category: 'pricing',\n categoryLabel: 'Pricing',\n description: 'Highlighted subscription pricing plan with price, feature list, and buy button',\n icon: 'table',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n padding: '32px 24px',\n backgroundColor: '#ffffff',\n borderRadius: '16px',\n border: '2px solid #3b82f6',\n boxShadow: '0 10px 15px -3px rgba(59, 130, 246, 0.1)',\n textAlign: 'center',\n maxWidth: '360px',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'MOST POPULAR', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Professional', level: 3 },\n styles: { base: { fontSize: '22px', fontWeight: '700', color: '#0f172a' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: '$29 / mo', level: 2 },\n styles: {\n base: { fontSize: '36px', fontWeight: '800', color: '#2563eb', margin: '16px 0 24px 0' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Includes unlimited pages, custom domains, and team collaboration.' },\n styles: { base: { fontSize: '14px', color: '#64748b', marginBottom: '24px' } },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Upgrade to Pro', href: '#checkout' },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n display: 'block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n }),\n },\n {\n id: 'cta-banner',\n name: 'CTA Banner',\n category: 'cta',\n categoryLabel: 'Call to Action',\n description: 'High-contrast conversion banner with title and action button',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '60px 24px',\n backgroundColor: '#0f172a',\n color: '#ffffff',\n borderRadius: '16px',\n textAlign: 'center',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Ready to boost your workflow?', level: 2 },\n styles: {\n base: { fontSize: '32px', fontWeight: '700', color: '#ffffff', marginBottom: '12px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Start building with zero installation and instant live preview.' },\n styles: {\n base: { fontSize: '16px', color: '#94a3b8', marginBottom: '24px', maxWidth: '600px', margin: '0 auto 24px auto' },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Start Free Trial', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#ffffff',\n color: '#0f172a',\n padding: '12px 28px',\n borderRadius: '8px',\n fontWeight: '700',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#f1f5f9' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n }),\n },\n];\n\n","import { ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Starter Form Templates (STORA-350).\n */\nexport const FORM_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'form-contact-us',\n name: 'Contact Us Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Contact form with Name, Email, Subject, Message, and submit action pipeline with API request and toast notifications',\n icon: 'form',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '64px 20px',\n backgroundColor: '#f8fafc',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '640px' },\n styles: {\n base: {\n maxWidth: '640px',\n margin: '0 auto',\n width: '100%',\n backgroundColor: '#ffffff',\n padding: '36px',\n borderRadius: '16px',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05)',\n border: '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Contact Us', level: 2 },\n styles: {\n base: {\n fontSize: '28px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n textAlign: 'center',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Have questions or need assistance? Fill out the form below and we will get back to you shortly.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '28px',\n textAlign: 'center',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'contact_us_form',\n method: 'POST',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '20px',\n width: '100%',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Submit Contact Form',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Send Contact Message',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you! Your message has been sent successfully.',\n type: 'success',\n title: 'Message Sent',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Failed to send message. Please check your connection and try again.',\n type: 'error',\n title: 'Submission Failed',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'name',\n label: 'Your Name',\n type: 'text',\n placeholder: 'Jane Doe',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your name' },\n { type: 'min_length', value: 2, message: 'Name must be at least 2 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n label: 'Email Address',\n type: 'email',\n placeholder: 'jane@example.com',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your email' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'subject',\n label: 'Subject',\n type: 'text',\n placeholder: 'How can we help you?',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter a subject' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('textarea'),\n type: 'textarea',\n props: {\n name: 'message',\n label: 'Message',\n placeholder: 'Write your message here...',\n rows: 4,\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your message' },\n { type: 'min_length', value: 10, message: 'Message must be at least 10 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Send Message',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '15px',\n display: 'inline-block',\n textAlign: 'center',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'form-newsletter',\n name: 'Newsletter Subscribe Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Inline email newsletter subscription form with real-time feedback',\n icon: 'mail',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '48px 20px',\n backgroundColor: '#f1f5f9',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '580px' },\n styles: {\n base: {\n maxWidth: '580px',\n margin: '0 auto',\n width: '100%',\n textAlign: 'center',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Stay in the Loop', level: 3 },\n styles: {\n base: {\n fontSize: '26px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Subscribe to our newsletter for weekly curated insights, updates, and best practices.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'newsletter_form',\n method: 'POST',\n preventDefault: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n alignItems: 'center',\n width: '100%',\n },\n mobile: {\n flexDirection: 'column',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Subscribe to Newsletter',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Submit Subscription',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you for subscribing to our newsletter!',\n type: 'success',\n title: 'Subscription Confirmed',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Unable to subscribe right now. Please try again later.',\n type: 'error',\n title: 'Error',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n type: 'email',\n placeholder: 'Enter your email address...',\n required: true,\n rules: [\n { type: 'required', message: 'Email address is required' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n flex: '1 1 0%',\n minWidth: '0',\n padding: '12px 16px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n backgroundColor: '#ffffff',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Subscribe',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 24px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '14px',\n whiteSpace: 'nowrap',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'form-lead-gen',\n name: 'Lead Generation Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Multi-field lead generation form with phone validation, interest dropdown, and API submission pipeline',\n icon: 'users',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '64px 20px',\n backgroundColor: '#ffffff',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '640px' },\n styles: {\n base: {\n maxWidth: '640px',\n margin: '0 auto',\n width: '100%',\n backgroundColor: '#ffffff',\n padding: '36px',\n borderRadius: '16px',\n border: '1px solid #e2e8f0',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.05)',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'FREE CONSULTATION', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Schedule a Consultation', level: 2 },\n styles: {\n base: {\n fontSize: '28px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Share your project details with our solutions team. We will analyze your needs and provide a personalized roadmap.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '28px',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'lead_generation_form',\n method: 'POST',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '18px',\n width: '100%',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Submit Lead Form',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Send Lead Data',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you! Your request has been received. Our team will contact you shortly.',\n type: 'success',\n title: 'Request Submitted',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Submission failed. Please verify your information and try again.',\n type: 'error',\n title: 'Submission Error',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'full_name',\n label: 'Full Name',\n type: 'text',\n placeholder: 'Alex Morgan',\n required: true,\n rules: [\n { type: 'required', message: 'Full name is required' },\n { type: 'min_length', value: 2, message: 'Name must be at least 2 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n label: 'Business Email',\n type: 'email',\n placeholder: 'alex@company.com',\n required: true,\n rules: [\n { type: 'required', message: 'Business email is required' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'phone',\n label: 'Phone Number',\n type: 'tel',\n placeholder: '+62 812-3456-7890',\n required: true,\n rules: [\n { type: 'required', message: 'Phone number is required' },\n {\n type: 'custom_regex',\n value: '^[+]?[0-9\\\\s-()]{8,20}$',\n message: 'Please enter a valid phone number (min 8 digits)',\n },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('select'),\n type: 'select',\n props: {\n name: 'interest',\n label: 'Area of Interest',\n placeholder: 'Select your interest / service...',\n required: true,\n defaultValue: '',\n options: [\n { label: 'Web Platform Development', value: 'web_platform' },\n { label: 'Mobile Application', value: 'mobile_app' },\n { label: 'Cloud Architecture & DevOps', value: 'cloud_devops' },\n { label: 'UI/UX Product Design', value: 'product_design' },\n { label: 'General Inquiry', value: 'general' },\n ],\n rules: [\n { type: 'required', message: 'Please select an area of interest' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'company',\n label: 'Company Name (Optional)',\n type: 'text',\n placeholder: 'Company / Organization',\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Request Consultation',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 24px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '15px',\n marginTop: '4px',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n];\n\n","import { Node, ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\ntype Gen = (prefix?: string) => string;\n\nconst SALES_CATEGORY = 'sales';\nconst SALES_CATEGORY_LABEL = 'Sales & Conversion';\n\n/** Full-width section wrapping a centered, max-width container. */\nfunction sectionShell(\n gen: Gen,\n children: Node[],\n sectionStyles: ResponsiveStyles = {},\n maxWidth = '960px',\n): Node {\n return {\n id: gen('section'),\n type: 'section',\n styles: {\n ...sectionStyles,\n base: {\n paddingTop: '64px',\n paddingBottom: '64px',\n paddingLeft: '24px',\n paddingRight: '24px',\n width: '100%',\n ...(sectionStyles.base ?? {}),\n },\n mobile: {\n paddingTop: '40px',\n paddingBottom: '40px',\n paddingLeft: '16px',\n paddingRight: '16px',\n ...(sectionStyles.mobile ?? {}),\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n maxWidth,\n margin: '0 auto',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '24px',\n },\n },\n children,\n },\n ],\n };\n}\n\nfunction sectionHeading(gen: Gen, text: string, subtitle?: string, color = '#0f172a'): Node[] {\n const nodes: Node[] = [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text, level: 2 },\n styles: {\n base: { fontSize: '32px', fontWeight: '800', color, textAlign: 'center', margin: '0' },\n mobile: { fontSize: '26px' },\n },\n },\n ];\n if (subtitle) {\n nodes.push({\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: subtitle },\n styles: { base: { fontSize: '16px', color: '#64748b', textAlign: 'center', margin: '0' } },\n });\n }\n return nodes;\n}\n\nfunction faqItem(gen: Gen, question: string, answer: string): Node {\n return {\n id: gen('accordion-item'),\n type: 'accordion-item',\n props: { title: question },\n styles: { base: { borderBottom: '1px solid #e2e8f0' } },\n children: [\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: answer },\n styles: { base: { fontSize: '15px', color: '#475569', margin: '0', lineHeight: '1.6' } },\n },\n ],\n };\n}\n\nfunction testimonialSlide(\n gen: Gen,\n quote: string,\n name: string,\n role: string,\n rating: number,\n): Node {\n return {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n padding: '32px 48px',\n textAlign: 'center',\n },\n mobile: { padding: '24px 40px' },\n },\n children: [\n {\n id: gen('rating'),\n type: 'rating',\n props: { value: rating, max: 5, size: 20, color: '#f59e0b' },\n },\n {\n id: gen('blockquote'),\n type: 'blockquote',\n props: { text: quote },\n styles: {\n base: {\n fontSize: '18px',\n color: '#0f172a',\n fontStyle: 'italic',\n margin: '0',\n lineHeight: '1.6',\n },\n },\n },\n {\n id: gen('text'),\n type: 'text',\n props: { text: `${name} — ${role}` },\n styles: { base: { fontSize: '14px', fontWeight: '600', color: '#64748b' } },\n },\n ],\n };\n}\n\nfunction badgeItem(gen: Gen, iconName: string, label: string): Node {\n return {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '8px',\n padding: '16px',\n textAlign: 'center',\n },\n },\n children: [\n {\n id: gen('icon'),\n type: 'icon',\n props: { name: iconName, size: 28, color: '#16a34a', ariaLabel: label },\n },\n {\n id: gen('text'),\n type: 'text',\n props: { text: label },\n styles: { base: { fontSize: '14px', fontWeight: '600', color: '#334155' } },\n },\n ],\n };\n}\n\nfunction planCard(\n gen: Gen,\n name: string,\n price: string,\n features: string[],\n highlighted: boolean,\n): Node {\n return {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n padding: '28px 24px',\n backgroundColor: '#ffffff',\n borderRadius: '16px',\n border: highlighted ? '2px solid #2563eb' : '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: name, level: 3 },\n styles: { base: { fontSize: '20px', fontWeight: '700', color: '#0f172a', margin: '0' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: price, level: 4 },\n styles: { base: { fontSize: '32px', fontWeight: '800', color: '#2563eb', margin: '0' } },\n },\n {\n id: gen('list'),\n type: 'list',\n props: { tag: 'ul', listStyleType: 'disc' },\n styles: { base: { fontSize: '14px', color: '#475569', paddingLeft: '20px', margin: '0' } },\n children: features.map((feature) => ({\n id: gen('list-item'),\n type: 'list-item',\n props: { text: feature },\n })),\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: `Choose ${name}`,\n href: '#checkout',\n variant: highlighted ? 'primary' : 'secondary',\n },\n styles: {\n base: {\n width: '100%',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n marginTop: '8px',\n },\n },\n },\n ],\n };\n}\n\nfunction planColumns(gen: Gen, plans: Array<[string, string, string[], boolean]>): Node {\n return {\n id: gen('columns'),\n type: 'columns',\n props: { columns: plans.length, gap: '16px' },\n styles: {\n base: {\n display: 'grid',\n gridTemplateColumns: `repeat(${plans.length}, minmax(0, 1fr))`,\n gap: '16px',\n },\n mobile: { gridTemplateColumns: 'repeat(1, minmax(0, 1fr))' },\n },\n children: plans.map(([name, price, features, highlighted]) =>\n planCard(gen, name, price, features, highlighted),\n ),\n };\n}\n\n/**\n * Sales / funnel section blocks (STORA-549) built on the Epic 60 conversion\n * components. Every tree is valid under `validateDocument` with `strictChildPolicy`.\n */\nexport const SALES_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'sales-faq',\n name: 'FAQ',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Frequently asked questions accordion with FAQPage structured data for SEO',\n icon: 'chevron-down',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(\n gen,\n 'Frequently Asked Questions',\n 'Everything you need to know before you buy.',\n ),\n {\n id: gen('accordion'),\n type: 'accordion',\n props: { allowMultiple: false, defaultOpenIndex: 0, icon: 'chevron', faqSchema: true },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n borderTop: '1px solid #e2e8f0',\n },\n },\n children: [\n faqItem(\n gen,\n 'What exactly do I get?',\n 'Instant access to the full program, all bonuses, and every future update.',\n ),\n faqItem(\n gen,\n 'How long do I have access?',\n 'Lifetime access — learn at your own pace, on any device.',\n ),\n faqItem(\n gen,\n 'Is there a money-back guarantee?',\n 'Yes. If you are not satisfied within 30 days, we refund you in full.',\n ),\n faqItem(\n gen,\n 'How do I pay?',\n 'We accept cards, bank transfer, and e-wallets through a secure checkout.',\n ),\n ],\n },\n ],\n {},\n '760px',\n ),\n },\n {\n id: 'sales-testimonials',\n name: 'Testimonials Carousel',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Customer testimonial slider with star ratings',\n icon: 'star',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(gen, 'What Our Customers Say'),\n {\n id: gen('carousel'),\n type: 'carousel',\n props: {\n autoplay: true,\n interval: 6000,\n loop: true,\n showDots: true,\n showArrows: true,\n ariaLabel: 'Testimonials',\n },\n styles: {\n base: {\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n backgroundColor: '#f8fafc',\n borderRadius: '16px',\n },\n },\n children: [\n testimonialSlide(\n gen,\n 'This completely changed how I run my business. Worth every cent.',\n 'Sarah K.',\n 'Founder',\n 5,\n ),\n testimonialSlide(\n gen,\n 'Clear, practical, and easy to follow. I saw results in the first week.',\n 'Budi S.',\n 'Marketing Lead',\n 4.5,\n ),\n testimonialSlide(\n gen,\n 'The support team is amazing and the material is top-notch.',\n 'Aisha R.',\n 'Freelancer',\n 5,\n ),\n ],\n },\n ],\n { base: { backgroundColor: '#ffffff' } },\n '760px',\n ),\n },\n {\n id: 'sales-countdown-banner',\n name: 'Countdown Banner',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Limited-time offer banner with an evergreen countdown timer and CTA',\n icon: 'clock',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(gen, 'Special Launch Price Ends Soon', undefined, '#ffffff'),\n {\n id: gen('countdown'),\n type: 'countdown',\n props: {\n mode: 'evergreen',\n durationMinutes: 30,\n format: 'd h m s',\n labelDays: 'Days',\n labelHours: 'Hours',\n labelMinutes: 'Minutes',\n labelSeconds: 'Seconds',\n expireBehavior: 'text',\n expiredText: 'The special price has ended.',\n storage: 'session',\n ariaLabel: 'Offer ends in',\n },\n styles: {\n base: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n fontSize: '36px',\n fontWeight: '800',\n color: '#ffffff',\n fontVariantNumeric: 'tabular-nums',\n },\n mobile: { fontSize: '28px', gap: '8px' },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Claim the Offer', href: '#checkout' },\n styles: {\n base: {\n alignSelf: 'center',\n backgroundColor: '#f59e0b',\n color: '#0f172a',\n padding: '14px 32px',\n borderRadius: '9999px',\n fontSize: '16px',\n fontWeight: '700',\n },\n },\n },\n ],\n { base: { backgroundColor: '#0f172a' } },\n ),\n },\n {\n id: 'sales-guarantee',\n name: 'Money-Back Guarantee',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Risk-reversal guarantee section with shield icon',\n icon: 'badge',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '24px',\n padding: '32px',\n backgroundColor: '#f0fdf4',\n border: '2px dashed #16a34a',\n borderRadius: '16px',\n },\n mobile: { flexDirection: 'column', textAlign: 'center', padding: '24px' },\n },\n children: [\n {\n id: gen('icon'),\n type: 'icon',\n props: { name: 'shield-check', size: 64, color: '#16a34a', ariaLabel: 'Guarantee' },\n },\n {\n id: gen('flex'),\n type: 'flex',\n styles: { base: { display: 'flex', flexDirection: 'column', gap: '8px' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: '30-Day Money-Back Guarantee', level: 3 },\n styles: {\n base: { fontSize: '22px', fontWeight: '800', color: '#14532d', margin: '0' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Try it risk-free. If it is not right for you, email us within 30 days and we will refund every cent — no questions asked.',\n },\n styles: {\n base: { fontSize: '15px', color: '#166534', margin: '0', lineHeight: '1.6' },\n },\n },\n ],\n },\n ],\n },\n ],\n {},\n '760px',\n ),\n },\n {\n id: 'sales-trust-badges',\n name: 'Trust Badges',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Row of trust signals: secure payment, guarantee, support, and delivery',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n {\n id: gen('grid'),\n type: 'grid',\n styles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(4, minmax(0, 1fr))',\n gap: '16px',\n },\n mobile: { gridTemplateColumns: 'repeat(2, minmax(0, 1fr))' },\n },\n children: [\n badgeItem(gen, 'lock', 'Secure Payment'),\n badgeItem(gen, 'shield-check', 'Money-Back Guarantee'),\n badgeItem(gen, 'headphones', '24/7 Support'),\n badgeItem(gen, 'zap', 'Instant Access'),\n ],\n },\n {\n id: gen('divider'),\n type: 'divider',\n props: { lineStyle: 'solid', thickness: 1, color: '#e2e8f0', label: '' },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Trusted by 10,000+ customers.' },\n styles: {\n base: { fontSize: '14px', color: '#64748b', textAlign: 'center', margin: '0' },\n },\n },\n ],\n { base: { paddingTop: '32px', paddingBottom: '32px' } },\n ),\n },\n {\n id: 'sales-plan-comparison',\n name: 'Plan Comparison',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Monthly/yearly tabs comparing pricing plans side by side',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(gen, [\n ...sectionHeading(gen, 'Choose Your Plan', 'Switch between monthly and yearly billing.'),\n {\n id: gen('tabs'),\n type: 'tabs',\n props: { activeIndex: 0, ariaLabel: 'Billing period' },\n styles: { base: { display: 'flex', flexDirection: 'column', width: '100%' } },\n children: [\n {\n id: gen('tab-panel'),\n type: 'tab-panel',\n props: { label: 'Monthly' },\n styles: { base: { paddingTop: '24px' } },\n children: [\n planColumns(gen, [\n ['Basic', '$19 / mo', ['1 project', 'Email support', 'Core features'], false],\n [\n 'Pro',\n '$49 / mo',\n ['Unlimited projects', 'Priority support', 'All features'],\n true,\n ],\n ]),\n ],\n },\n {\n id: gen('tab-panel'),\n type: 'tab-panel',\n props: { label: 'Yearly' },\n styles: { base: { paddingTop: '24px' } },\n children: [\n planColumns(gen, [\n [\n 'Basic',\n '$190 / yr',\n ['1 project', 'Email support', 'Core features', '2 months free'],\n false,\n ],\n [\n 'Pro',\n '$490 / yr',\n ['Unlimited projects', 'Priority support', 'All features', '2 months free'],\n true,\n ],\n ]),\n ],\n },\n ],\n },\n {\n id: gen('spacer'),\n type: 'spacer',\n styles: { base: { width: '100%', height: '16px' }, mobile: { height: '8px' } },\n },\n ]),\n },\n];\n","import { BlockDefinition } from './types';\nimport { LAYOUT_STARTER_BLOCKS } from './layout';\nimport { UI_STARTER_BLOCKS } from './sections';\nimport { FORM_STARTER_BLOCKS } from './forms';\nimport { SALES_STARTER_BLOCKS } from './sales';\n\nexport * from './types';\nexport * from './layout';\nexport * from './sections';\nexport * from './forms';\nexport * from './sales';\n\n/**\n * Predefined Starter Layout Blocks (STORA-241), Pre-composed UI Blocks (STORA-242),\n * Pre-composed Form Templates (STORA-350), and Sales / conversion sections (STORA-549).\n */\nexport const STARTER_BLOCKS: BlockDefinition[] = [\n ...LAYOUT_STARTER_BLOCKS,\n ...UI_STARTER_BLOCKS,\n ...FORM_STARTER_BLOCKS,\n ...SALES_STARTER_BLOCKS,\n];\n\n"],"mappings":";AAaA,IAAI,SAAS;AACN,SAAS,aAAa,SAAS,QAAgB;AACpD,SAAO,GAAG,MAAM,IAAI,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,KAAK,UAAU,SAAS,EAAE,CAAC;AACxE;;;ACXO,IAAM,wBAA2C;AAAA,EACtD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,SAAS,aAAa,OAAO,OAAO,EAAE;AAAA,MACxD,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,MAAM;AAAA,UACpB,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAU,QAAQ,UAAU,OAAO,OAAO,EAAE;AAAA,UACxE,UAAU,CAAC;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,SAAS,aAAa,OAAO,OAAO,EAAE;AAAA,MACxD,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,GAAG,KAAK,OAAO;AAAA,UACjC,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,KAAK,QAAQ,OAAO,QAAQ,UAAU,UAAU,QAAQ,SAAS,EAAE;AAAA,UACtG,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,SAAS,aAAa,OAAO,OAAO,EAAE;AAAA,MACxD,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,GAAG,KAAK,OAAO;AAAA,UACjC,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,KAAK,QAAQ,OAAO,QAAQ,UAAU,UAAU,QAAQ,SAAS,EAAE;AAAA,UACtG,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,UAAU,IAAI,EAAE;AAAA,cACnD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,SAAS,aAAa,OAAO,OAAO,EAAE;AAAA,MACxD,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,GAAG,KAAK,OAAO;AAAA,UACjC,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,KAAK,QAAQ,OAAO,QAAQ,UAAU,UAAU,QAAQ,SAAS,EAAE;AAAA,UACtG,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,EAAE,SAAS,aAAa,OAAO,OAAO,EAAE;AAAA,MACxD,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,SAAS,GAAG,KAAK,OAAO;AAAA,UACjC,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,KAAK,QAAQ,OAAO,QAAQ,UAAU,UAAU,QAAQ,SAAS,EAAE;AAAA,UACtG,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,KAAK,MAAM;AAAA,cACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,UAAU,IAAI,EAAE;AAAA,cAClD,UAAU,CAAC;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC/LO,IAAM,oBAAuC;AAAA,EAClD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,YAAY;AAAA,UACZ,eAAe;AAAA,UACf,aAAa;AAAA,UACb,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,OAAO;AAAA,QACT;AAAA,QACA,QAAQ;AAAA,UACN,aAAa;AAAA,UACb,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,MAAM;AAAA,UACpB,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,OAAO;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,UACA,UAAU;AAAA;AAAA,YAER;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,SAAS,OAAO,EAAE;AAAA,cACjC,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA;AAAA,YAEA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,kBACZ,KAAK;AAAA,gBACP;AAAA,gBACA,QAAQ;AAAA,kBACN,SAAS;AAAA,gBACX;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,kBACrC,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,YAAY,MAAM,YAAY;AAAA,kBAC7C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,kBAC3C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,kBACvC,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA;AAAA,YAEA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,kBACZ,KAAK;AAAA,gBACP;AAAA,gBACA,QAAQ;AAAA,kBACN,SAAS;AAAA,gBACX;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,kBAC1C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,sBAChB,SAAS;AAAA,oBACX;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA,kBAC/C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,iBAAiB;AAAA,sBACjB,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,SAAS;AAAA,oBACX;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,oBACzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA;AAAA,YAEA;AAAA,cACE,IAAI,IAAI,QAAQ;AAAA,cAChB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,YAAY;AAAA,gBACZ,SAAS;AAAA,gBACT,WAAW;AAAA,gBACX,SAAS;AAAA,cACX;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,gBACX;AAAA,gBACA,QAAQ;AAAA,kBACN,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,gBAAgB;AAAA,kBAChB,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,iBAAiB;AAAA,kBACjB,QAAQ;AAAA,kBACR,cAAc;AAAA,kBACd,OAAO;AAAA,kBACP,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,cACA,SAAS;AAAA,gBACP;AAAA,kBACE,IAAI,IAAI,UAAU;AAAA,kBAClB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,OAAO;AAAA,oBACL;AAAA,sBACE,IAAI,IAAI,MAAM;AAAA,sBACd,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,SAAS;AAAA,wBACP,SAAS;AAAA,wBACT,QAAQ;AAAA,sBACV;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA;AAAA,cACE,IAAI,IAAI,aAAa;AAAA,cACrB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,WAAW;AAAA,gBACX,aAAa;AAAA,gBACb,UAAU;AAAA,cACZ;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,gBACX;AAAA,gBACA,QAAQ;AAAA,kBACN,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,OAAO;AAAA,kBACP,KAAK;AAAA,kBACL,YAAY;AAAA,kBACZ,WAAW;AAAA,kBACX,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,kBACrC,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,sBAChB,SAAS;AAAA,oBACX;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,YAAY,MAAM,YAAY;AAAA,kBAC7C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,sBAChB,SAAS;AAAA,oBACX;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,kBAC3C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,sBAChB,SAAS;AAAA,oBACX;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,MAAM;AAAA,kBACd,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,kBACvC,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,OAAO;AAAA,sBACP,gBAAgB;AAAA,sBAChB,SAAS;AAAA,oBACX;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA,kBAC/C,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,iBAAiB;AAAA,sBACjB,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,UAAU;AAAA,sBACV,YAAY;AAAA,sBACZ,WAAW;AAAA,sBACX,SAAS;AAAA,sBACT,WAAW;AAAA,oBACb;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,oBACzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,WAAW;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,MAAM;AAAA,UACpB,QAAQ,EAAE,MAAM,EAAE,UAAU,SAAS,QAAQ,SAAS,EAAE;AAAA,UACxD,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,gCAAgC,OAAO,EAAE;AAAA,cACxD,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MACE;AAAA,cACJ;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,QAAQ;AAAA,cAChB,MAAM;AAAA,cACN,OAAO,EAAE,OAAO,qBAAqB,MAAM,WAAW;AAAA,cACtD,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,iBAAiB;AAAA,kBACjB,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,cAAc;AAAA,kBACd,YAAY;AAAA,kBACZ,SAAS;AAAA,gBACX;AAAA,gBACA,QAAQ;AAAA,kBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,EAAE,KAAK,MAAM;AAAA,MACpB,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,OAAO;AAAA,UACf,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,eAAe,SAAS,UAAU;AAAA,UACjD,QAAQ,EAAE,MAAM,EAAE,cAAc,QAAQ,SAAS,eAAe,EAAE;AAAA,QACpE;AAAA,QACA;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,wBAAwB,OAAO,EAAE;AAAA,UAChD,QAAQ;AAAA,YACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,cAAc,MAAM;AAAA,UACrF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,UACA,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,YAAY,MAAM,EAAE;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,EAAE,KAAK,MAAM;AAAA,MACpB,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,KAAK;AAAA,UACL,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,OAAO;AAAA,UACf,MAAM;AAAA,UACN,OAAO;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,WAAW;AAAA,cACX,YAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,MAAM;AAAA,UACpB,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE;AAAA,UACnC,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,yBAAyB,OAAO,EAAE;AAAA,cACjD,QAAQ;AAAA,gBACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,cAAc,MAAM;AAAA,cACrF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,iEAAiE;AAAA,cAChF,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,YAAY,MAAM,EAAE;AAAA,YAC5E;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,EAAE,KAAK,MAAM;AAAA,MACpB,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,WAAW;AAAA,UACX,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,OAAO;AAAA,UACf,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,gBAAgB,SAAS,UAAU;AAAA,UAClD,QAAQ,EAAE,MAAM,EAAE,cAAc,QAAQ,SAAS,eAAe,EAAE;AAAA,QACpE;AAAA,QACA;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,gBAAgB,OAAO,EAAE;AAAA,UACxC,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,UAAU,EAAE;AAAA,QAC5E;AAAA,QACA;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,YAAY,OAAO,EAAE;AAAA,UACpC,QAAQ;AAAA,YACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,QAAQ,gBAAgB;AAAA,UACzF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,oEAAoE;AAAA,UACnF,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,cAAc,OAAO,EAAE;AAAA,QAC/E;AAAA,QACA;AAAA,UACE,IAAI,IAAI,QAAQ;AAAA,UAChB,MAAM;AAAA,UACN,OAAO,EAAE,OAAO,kBAAkB,MAAM,YAAY;AAAA,UACpD,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,OAAO;AAAA,cACP,iBAAiB;AAAA,cACjB,OAAO;AAAA,cACP,SAAS;AAAA,cACT,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA,YACA,QAAQ;AAAA,cACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,OAAO;AAAA,UACP,cAAc;AAAA,UACd,WAAW;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,iCAAiC,OAAO,EAAE;AAAA,UACzD,QAAQ;AAAA,YACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,cAAc,OAAO;AAAA,UACtF;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,kEAAkE;AAAA,UACjF,QAAQ;AAAA,YACN,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,cAAc,QAAQ,UAAU,SAAS,QAAQ,mBAAmB;AAAA,UAClH;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,QAAQ;AAAA,UAChB,MAAM;AAAA,UACN,OAAO,EAAE,OAAO,oBAAoB,MAAM,UAAU;AAAA,UACpD,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,iBAAiB;AAAA,cACjB,OAAO;AAAA,cACP,SAAS;AAAA,cACT,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,SAAS;AAAA,YACX;AAAA,YACA,QAAQ;AAAA,cACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACrpBO,IAAM,sBAAyC;AAAA,EACpD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,OAAO,UAAU,QAAQ;AAAA,UACvC,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,cAAc;AAAA,cACd,WAAW;AAAA,cACX,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,cAAc,OAAO,EAAE;AAAA,cACtC,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,cACR;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,WAAW;AAAA,kBACX,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,oBAAoB;AAAA,gBACpB,eAAe;AAAA,cACjB;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,KAAK;AAAA,kBACL,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,cACA,SAAS;AAAA,gBACP;AAAA,kBACE,IAAI,IAAI,UAAU;AAAA,kBAClB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,OAAO;AAAA,oBACL;AAAA,sBACE,IAAI,IAAI,MAAM;AAAA,sBACd,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,SAAS;AAAA,wBACP,KAAK;AAAA,wBACL,QAAQ;AAAA,wBACR,YAAY;AAAA,sBACd;AAAA,sBACA,WAAW;AAAA,wBACT;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,wBACA;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS,CAAC;AAAA,wBACZ;AAAA,sBACF;AAAA,sBACA,SAAS;AAAA,wBACP;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,yBAAyB;AAAA,sBACtD,EAAE,MAAM,cAAc,OAAO,GAAG,SAAS,qCAAqC;AAAA,oBAChF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,0BAA0B;AAAA,sBACvD,EAAE,MAAM,SAAS,SAAS,qCAAqC;AAAA,oBACjE;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,yBAAyB;AAAA,oBACxD;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,UAAU;AAAA,kBAClB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,aAAa;AAAA,oBACb,MAAM;AAAA,oBACN,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,4BAA4B;AAAA,sBACzD,EAAE,MAAM,cAAc,OAAO,IAAI,SAAS,yCAAyC;AAAA,oBACrF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,YAAY;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,iBAAiB;AAAA,sBACjB,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,YAAY;AAAA,sBACZ,UAAU;AAAA,sBACV,SAAS;AAAA,sBACT,WAAW;AAAA,oBACb;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,oBACzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,OAAO,UAAU,QAAQ;AAAA,UACvC,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,oBAAoB,OAAO,EAAE;AAAA,cAC5C,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,cAAc;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,cACR;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,eAAe;AAAA,cACjB;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,KAAK;AAAA,kBACL,YAAY;AAAA,kBACZ,OAAO;AAAA,gBACT;AAAA,gBACA,QAAQ;AAAA,kBACN,eAAe;AAAA,gBACjB;AAAA,cACF;AAAA,cACA,SAAS;AAAA,gBACP;AAAA,kBACE,IAAI,IAAI,UAAU;AAAA,kBAClB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,OAAO;AAAA,oBACL;AAAA,sBACE,IAAI,IAAI,MAAM;AAAA,sBACd,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,SAAS;AAAA,wBACP,KAAK;AAAA,wBACL,QAAQ;AAAA,wBACR,YAAY;AAAA,sBACd;AAAA,sBACA,WAAW;AAAA,wBACT;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,wBACA;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS,CAAC;AAAA,wBACZ;AAAA,sBACF;AAAA,sBACA,SAAS;AAAA,wBACP;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,4BAA4B;AAAA,sBACzD,EAAE,MAAM,SAAS,SAAS,qCAAqC;AAAA,oBACjE;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,MAAM;AAAA,sBACN,UAAU;AAAA,sBACV,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,iBAAiB;AAAA,sBACjB,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,YAAY;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,iBAAiB;AAAA,sBACjB,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,YAAY;AAAA,sBACZ,UAAU;AAAA,sBACV,YAAY;AAAA,oBACd;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,oBACzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,kBAAkB;AAAA,MACvC,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,KAAK,OAAO,UAAU,QAAQ;AAAA,UACvC,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,iBAAiB;AAAA,cACjB,SAAS;AAAA,cACT,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,OAAO;AAAA,cACf,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,qBAAqB,SAAS,UAAU;AAAA,cACvD,QAAQ,EAAE,MAAM,EAAE,cAAc,QAAQ,SAAS,eAAe,EAAE;AAAA,YACpE;AAAA,YACA;AAAA,cACE,IAAI,IAAI,SAAS;AAAA,cACjB,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,2BAA2B,OAAO,EAAE;AAAA,cACnD,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,OAAO;AAAA,kBACP,cAAc;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,WAAW;AAAA,cACnB,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,cACR;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,cAAc;AAAA,kBACd,YAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,OAAO;AAAA,gBACL,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,oBAAoB;AAAA,gBACpB,eAAe;AAAA,cACjB;AAAA,cACA,QAAQ;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,KAAK;AAAA,kBACL,OAAO;AAAA,gBACT;AAAA,cACF;AAAA,cACA,SAAS;AAAA,gBACP;AAAA,kBACE,IAAI,IAAI,UAAU;AAAA,kBAClB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,OAAO;AAAA,oBACL;AAAA,sBACE,IAAI,IAAI,MAAM;AAAA,sBACd,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,SAAS;AAAA,wBACP,KAAK;AAAA,wBACL,QAAQ;AAAA,wBACR,YAAY;AAAA,sBACd;AAAA,sBACA,WAAW;AAAA,wBACT;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,wBACA;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS,CAAC;AAAA,wBACZ;AAAA,sBACF;AAAA,sBACA,SAAS;AAAA,wBACP;AAAA,0BACE,IAAI,IAAI,MAAM;AAAA,0BACd,MAAM;AAAA,0BACN,OAAO;AAAA,0BACP,SAAS;AAAA,4BACP,SAAS;AAAA,4BACT,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,cACA,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,wBAAwB;AAAA,sBACrD,EAAE,MAAM,cAAc,OAAO,GAAG,SAAS,qCAAqC;AAAA,oBAChF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,6BAA6B;AAAA,sBAC1D,EAAE,MAAM,SAAS,SAAS,qCAAqC;AAAA,oBACjE;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,2BAA2B;AAAA,sBACxD;AAAA,wBACE,MAAM;AAAA,wBACN,OAAO;AAAA,wBACP,SAAS;AAAA,sBACX;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,aAAa;AAAA,oBACb,UAAU;AAAA,oBACV,cAAc;AAAA,oBACd,SAAS;AAAA,sBACP,EAAE,OAAO,4BAA4B,OAAO,eAAe;AAAA,sBAC3D,EAAE,OAAO,sBAAsB,OAAO,aAAa;AAAA,sBACnD,EAAE,OAAO,+BAA+B,OAAO,eAAe;AAAA,sBAC9D,EAAE,OAAO,wBAAwB,OAAO,iBAAiB;AAAA,sBACzD,EAAE,OAAO,mBAAmB,OAAO,UAAU;AAAA,oBAC/C;AAAA,oBACA,OAAO;AAAA,sBACL,EAAE,MAAM,YAAY,SAAS,oCAAoC;AAAA,oBACnE;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,sBACV,iBAAiB;AAAA,oBACnB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,OAAO;AAAA,kBACf,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,oBACN,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,aAAa;AAAA,kBACf;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,QAAQ;AAAA,sBACR,UAAU;AAAA,oBACZ;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,QAAQ;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,YAAY;AAAA,kBACd;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM;AAAA,sBACJ,OAAO;AAAA,sBACP,iBAAiB;AAAA,sBACjB,OAAO;AAAA,sBACP,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,YAAY;AAAA,sBACZ,UAAU;AAAA,sBACV,WAAW;AAAA,oBACb;AAAA,oBACA,QAAQ;AAAA,sBACN,UAAU,EAAE,iBAAiB,UAAU;AAAA,oBACzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC9uBA,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;AAG7B,SAAS,aACP,KACA,UACA,gBAAkC,CAAC,GACnC,WAAW,SACL;AACN,SAAO;AAAA,IACL,IAAI,IAAI,SAAS;AAAA,IACjB,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,MAAM;AAAA,QACJ,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,aAAa;AAAA,QACb,cAAc;AAAA,QACd,OAAO;AAAA,QACP,GAAI,cAAc,QAAQ,CAAC;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,aAAa;AAAA,QACb,cAAc;AAAA,QACd,GAAI,cAAc,UAAU,CAAC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,IAAI,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,OAAO,EAAE,KAAK,MAAM;AAAA,QACpB,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ;AAAA,YACA,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,SAAS;AAAA,YACT,eAAe;AAAA,YACf,KAAK;AAAA,UACP;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,eAAe,KAAU,MAAc,UAAmB,QAAQ,WAAmB;AAC5F,QAAM,QAAgB;AAAA,IACpB;AAAA,MACE,IAAI,IAAI,SAAS;AAAA,MACjB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,OAAO,EAAE;AAAA,MACxB,QAAQ;AAAA,QACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,UAAU,QAAQ,IAAI;AAAA,QACrF,QAAQ,EAAE,UAAU,OAAO;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AACA,MAAI,UAAU;AACZ,UAAM,KAAK;AAAA,MACT,IAAI,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,WAAW,UAAU,QAAQ,IAAI,EAAE;AAAA,IAC3F,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,QAAQ,KAAU,UAAkB,QAAsB;AACjE,SAAO;AAAA,IACL,IAAI,IAAI,gBAAgB;AAAA,IACxB,MAAM;AAAA,IACN,OAAO,EAAE,OAAO,SAAS;AAAA,IACzB,QAAQ,EAAE,MAAM,EAAE,cAAc,oBAAoB,EAAE;AAAA,IACtD,UAAU;AAAA,MACR;AAAA,QACE,IAAI,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,OAAO;AAAA,QACtB,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,QAAQ,KAAK,YAAY,MAAM,EAAE;AAAA,MACzF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,iBACP,KACA,OACA,MACA,MACA,QACM;AACN,SAAO;AAAA,IACL,IAAI,IAAI,MAAM;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,QAAQ,EAAE,SAAS,YAAY;AAAA,IACjC;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,IAAI,IAAI,QAAQ;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,EAAE,OAAO,QAAQ,KAAK,GAAG,MAAM,IAAI,OAAO,UAAU;AAAA,MAC7D;AAAA,MACA;AAAA,QACE,IAAI,IAAI,YAAY;AAAA,QACpB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM;AAAA,QACrB,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,UAAU;AAAA,YACV,OAAO;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,IAAI,IAAI,MAAM;AAAA,QACd,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,GAAG,IAAI,WAAM,IAAI,GAAG;AAAA,QACnC,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,UAAU,EAAE;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,UAAU,KAAU,UAAkB,OAAqB;AAClE,SAAO;AAAA,IACL,IAAI,IAAI,MAAM;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,IAAI,IAAI,MAAM;AAAA,QACd,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,UAAU,MAAM,IAAI,OAAO,WAAW,WAAW,MAAM;AAAA,MACxE;AAAA,MACA;AAAA,QACE,IAAI,IAAI,MAAM;AAAA,QACd,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM;AAAA,QACrB,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,UAAU,EAAE;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,SACP,KACA,MACA,OACA,UACA,aACM;AACN,SAAO;AAAA,IACL,IAAI,IAAI,WAAW;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,EAAE,KAAK,MAAM;AAAA,IACpB,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,SAAS;AAAA,QACT,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,QAAQ,cAAc,sBAAsB;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,IAAI,IAAI,SAAS;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,OAAO,EAAE;AAAA,QAC9B,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,QAAQ,IAAI,EAAE;AAAA,MACzF;AAAA,MACA;AAAA,QACE,IAAI,IAAI,SAAS;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,OAAO,OAAO,EAAE;AAAA,QAC/B,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,QAAQ,IAAI,EAAE;AAAA,MACzF;AAAA,MACA;AAAA,QACE,IAAI,IAAI,MAAM;AAAA,QACd,MAAM;AAAA,QACN,OAAO,EAAE,KAAK,MAAM,eAAe,OAAO;AAAA,QAC1C,QAAQ,EAAE,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,aAAa,QAAQ,QAAQ,IAAI,EAAE;AAAA,QACzF,UAAU,SAAS,IAAI,CAAC,aAAa;AAAA,UACnC,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,QAAQ;AAAA,QACzB,EAAE;AAAA,MACJ;AAAA,MACA;AAAA,QACE,IAAI,IAAI,QAAQ;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,UACL,OAAO,UAAU,IAAI;AAAA,UACrB,MAAM;AAAA,UACN,SAAS,cAAc,YAAY;AAAA,QACrC;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,OAAO;AAAA,YACP,SAAS;AAAA,YACT,cAAc;AAAA,YACd,YAAY;AAAA,YACZ,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,YAAY,KAAU,OAAyD;AACtF,SAAO;AAAA,IACL,IAAI,IAAI,SAAS;AAAA,IACjB,MAAM;AAAA,IACN,OAAO,EAAE,SAAS,MAAM,QAAQ,KAAK,OAAO;AAAA,IAC5C,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,qBAAqB,UAAU,MAAM,MAAM;AAAA,QAC3C,KAAK;AAAA,MACP;AAAA,MACA,QAAQ,EAAE,qBAAqB,4BAA4B;AAAA,IAC7D;AAAA,IACA,UAAU,MAAM;AAAA,MAAI,CAAC,CAAC,MAAM,OAAO,UAAU,WAAW,MACtD,SAAS,KAAK,MAAM,OAAO,UAAU,WAAW;AAAA,IAClD;AAAA,EACF;AACF;AAMO,IAAM,uBAA0C;AAAA,EACrD;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB;AAAA,MACE;AAAA,MACA;AAAA,QACE,GAAG;AAAA,UACD;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,eAAe,OAAO,kBAAkB,GAAG,MAAM,WAAW,WAAW,KAAK;AAAA,UACrF,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,SAAS;AAAA,cACT,eAAe;AAAA,cACf,OAAO;AAAA,cACP,WAAW;AAAA,YACb;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACJ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB;AAAA,MACE;AAAA,MACA;AAAA,QACE,GAAG,eAAe,KAAK,wBAAwB;AAAA,QAC/C;AAAA,UACE,IAAI,IAAI,UAAU;AAAA,UAClB,MAAM;AAAA,UACN,OAAO;AAAA,YACL,UAAU;AAAA,YACV,UAAU;AAAA,YACV,MAAM;AAAA,YACN,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,WAAW;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,UAAU;AAAA,cACV,OAAO;AAAA,cACP,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,cAAc;AAAA,YAChB;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,EAAE,MAAM,EAAE,iBAAiB,UAAU,EAAE;AAAA,MACvC;AAAA,IACF;AAAA,EACJ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB;AAAA,MACE;AAAA,MACA;AAAA,QACE,GAAG,eAAe,KAAK,kCAAkC,QAAW,SAAS;AAAA,QAC7E;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO;AAAA,YACL,MAAM;AAAA,YACN,iBAAiB;AAAA,YACjB,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,cAAc;AAAA,YACd,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,SAAS;AAAA,YACT,WAAW;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,KAAK;AAAA,cACL,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,oBAAoB;AAAA,YACtB;AAAA,YACA,QAAQ,EAAE,UAAU,QAAQ,KAAK,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,QAAQ;AAAA,UAChB,MAAM;AAAA,UACN,OAAO,EAAE,OAAO,mBAAmB,MAAM,YAAY;AAAA,UACrD,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,WAAW;AAAA,cACX,iBAAiB;AAAA,cACjB,OAAO;AAAA,cACP,SAAS;AAAA,cACT,cAAc;AAAA,cACd,UAAU;AAAA,cACV,YAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,EAAE,MAAM,EAAE,iBAAiB,UAAU,EAAE;AAAA,IACzC;AAAA,EACJ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,IAAI,IAAI,MAAM;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,SAAS;AAAA,cACT,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,KAAK;AAAA,cACL,SAAS;AAAA,cACT,iBAAiB;AAAA,cACjB,QAAQ;AAAA,cACR,cAAc;AAAA,YAChB;AAAA,YACA,QAAQ,EAAE,eAAe,UAAU,WAAW,UAAU,SAAS,OAAO;AAAA,UAC1E;AAAA,UACA,UAAU;AAAA,YACR;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,gBAAgB,MAAM,IAAI,OAAO,WAAW,WAAW,YAAY;AAAA,YACpF;AAAA,YACA;AAAA,cACE,IAAI,IAAI,MAAM;AAAA,cACd,MAAM;AAAA,cACN,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,MAAM,EAAE;AAAA,cACzE,UAAU;AAAA,gBACR;AAAA,kBACE,IAAI,IAAI,SAAS;AAAA,kBACjB,MAAM;AAAA,kBACN,OAAO,EAAE,MAAM,+BAA+B,OAAO,EAAE;AAAA,kBACvD,QAAQ;AAAA,oBACN,MAAM,EAAE,UAAU,QAAQ,YAAY,OAAO,OAAO,WAAW,QAAQ,IAAI;AAAA,kBAC7E;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,IAAI,IAAI,WAAW;AAAA,kBACnB,MAAM;AAAA,kBACN,OAAO;AAAA,oBACL,MAAM;AAAA,kBACR;AAAA,kBACA,QAAQ;AAAA,oBACN,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,QAAQ,KAAK,YAAY,MAAM;AAAA,kBAC7E;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACJ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,IAAI,IAAI,MAAM;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,SAAS;AAAA,cACT,qBAAqB;AAAA,cACrB,KAAK;AAAA,YACP;AAAA,YACA,QAAQ,EAAE,qBAAqB,4BAA4B;AAAA,UAC7D;AAAA,UACA,UAAU;AAAA,YACR,UAAU,KAAK,QAAQ,gBAAgB;AAAA,YACvC,UAAU,KAAK,gBAAgB,sBAAsB;AAAA,YACrD,UAAU,KAAK,cAAc,cAAc;AAAA,YAC3C,UAAU,KAAK,OAAO,gBAAgB;AAAA,UACxC;AAAA,QACF;AAAA,QACA;AAAA,UACE,IAAI,IAAI,SAAS;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,EAAE,WAAW,SAAS,WAAW,GAAG,OAAO,WAAW,OAAO,GAAG;AAAA,QACzE;AAAA,QACA;AAAA,UACE,IAAI,IAAI,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,gCAAgC;AAAA,UAC/C,QAAQ;AAAA,YACN,MAAM,EAAE,UAAU,QAAQ,OAAO,WAAW,WAAW,UAAU,QAAQ,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MACF;AAAA,MACA,EAAE,MAAM,EAAE,YAAY,QAAQ,eAAe,OAAO,EAAE;AAAA,IACxD;AAAA,EACJ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa;AAAA,IACb,MAAM;AAAA,IACN,gBAAgB,CAAC,MAAM,iBACrB,aAAa,KAAK;AAAA,MAChB,GAAG,eAAe,KAAK,oBAAoB,4CAA4C;AAAA,MACvF;AAAA,QACE,IAAI,IAAI,MAAM;AAAA,QACd,MAAM;AAAA,QACN,OAAO,EAAE,aAAa,GAAG,WAAW,iBAAiB;AAAA,QACrD,QAAQ,EAAE,MAAM,EAAE,SAAS,QAAQ,eAAe,UAAU,OAAO,OAAO,EAAE;AAAA,QAC5E,UAAU;AAAA,UACR;AAAA,YACE,IAAI,IAAI,WAAW;AAAA,YACnB,MAAM;AAAA,YACN,OAAO,EAAE,OAAO,UAAU;AAAA,YAC1B,QAAQ,EAAE,MAAM,EAAE,YAAY,OAAO,EAAE;AAAA,YACvC,UAAU;AAAA,cACR,YAAY,KAAK;AAAA,gBACf,CAAC,SAAS,YAAY,CAAC,aAAa,iBAAiB,eAAe,GAAG,KAAK;AAAA,gBAC5E;AAAA,kBACE;AAAA,kBACA;AAAA,kBACA,CAAC,sBAAsB,oBAAoB,cAAc;AAAA,kBACzD;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA;AAAA,YACE,IAAI,IAAI,WAAW;AAAA,YACnB,MAAM;AAAA,YACN,OAAO,EAAE,OAAO,SAAS;AAAA,YACzB,QAAQ,EAAE,MAAM,EAAE,YAAY,OAAO,EAAE;AAAA,YACvC,UAAU;AAAA,cACR,YAAY,KAAK;AAAA,gBACf;AAAA,kBACE;AAAA,kBACA;AAAA,kBACA,CAAC,aAAa,iBAAiB,iBAAiB,eAAe;AAAA,kBAC/D;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE;AAAA,kBACA;AAAA,kBACA,CAAC,sBAAsB,oBAAoB,gBAAgB,eAAe;AAAA,kBAC1E;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,IAAI,IAAI,QAAQ;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,EAAE,OAAO,QAAQ,QAAQ,OAAO,GAAG,QAAQ,EAAE,QAAQ,MAAM,EAAE;AAAA,MAC/E;AAAA,IACF,CAAC;AAAA,EACL;AACF;;;AChmBO,IAAM,iBAAoC;AAAA,EAC/C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/definitions/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/definitions/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,UAa1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAsC/B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
/**
|
|
3
|
+
* Accordion / FAQ group (STORA-544). Children are `accordion-item` nodes; the
|
|
4
|
+
* runtime can optionally emit `FAQPage` JSON-LD built from item titles + answers.
|
|
5
|
+
*/
|
|
6
|
+
export declare const accordionDefinition: ComponentDefinition;
|
|
7
|
+
export declare const accordionItemDefinition: ComponentDefinition;
|
|
8
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/accordion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,mBAwFjC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,mBAmBrC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
/**
|
|
3
|
+
* Carousel (STORA-546). Every child node is one slide. Autoplay is disabled in the
|
|
4
|
+
* editor and whenever the visitor prefers reduced motion.
|
|
5
|
+
*/
|
|
6
|
+
export declare const carouselDefinition: ComponentDefinition;
|
|
7
|
+
//# sourceMappingURL=carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/carousel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,mBAkDhC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
export declare const COUNTDOWN_MODES: readonly ["evergreen", "fixed"];
|
|
3
|
+
export declare const COUNTDOWN_FORMATS: readonly ["mm:ss", "hh:mm:ss", "d h m s"];
|
|
4
|
+
export declare const COUNTDOWN_EXPIRE_BEHAVIORS: readonly ["text", "hide", "zero"];
|
|
5
|
+
export declare const COUNTDOWN_STORAGE_TYPES: readonly ["session", "local"];
|
|
6
|
+
/**
|
|
7
|
+
* Countdown timer (STORA-543).
|
|
8
|
+
*
|
|
9
|
+
* - `evergreen`: every visitor gets `durationMinutes` from their first view; the
|
|
10
|
+
* per-visitor deadline is persisted in session/local storage (with an in-memory
|
|
11
|
+
* fallback when storage is unavailable or throws).
|
|
12
|
+
* - `fixed`: counts down to `targetDate` (wall-clock `YYYY-MM-DDTHH:mm[:ss]`)
|
|
13
|
+
* interpreted in the IANA `timezone`.
|
|
14
|
+
*
|
|
15
|
+
* When it reaches zero the runtime fires the node's `expire` action pipelines once
|
|
16
|
+
* and applies `expireBehavior`. In editor mode the timer is frozen.
|
|
17
|
+
*/
|
|
18
|
+
export declare const countdownDefinition: ComponentDefinition;
|
|
19
|
+
//# sourceMappingURL=countdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countdown.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/countdown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,eAAO,MAAM,eAAe,iCAAkC,CAAC;AAC/D,eAAO,MAAM,iBAAiB,2CAA4C,CAAC;AAC3E,eAAO,MAAM,0BAA0B,mCAAoC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,+BAAgC,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,mBAuJjC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
/** Horizontal divider line with optional centered label (STORA-548). */
|
|
3
|
+
export declare const dividerDefinition: ComponentDefinition;
|
|
4
|
+
/**
|
|
5
|
+
* Empty vertical spacer (STORA-548). Height is an ordinary style so it can differ
|
|
6
|
+
* per breakpoint (base/desktop/tablet/mobile) like any other responsive style.
|
|
7
|
+
*/
|
|
8
|
+
export declare const spacerDefinition: ComponentDefinition;
|
|
9
|
+
//# sourceMappingURL=divider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/divider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,mBAsD/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBAqB9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
/**
|
|
3
|
+
* Star rating (STORA-547). Supports half stars; the accessible label defaults to
|
|
4
|
+
* "{value} out of {max}" and can be localized via `labelTemplate`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ratingDefinition: ComponentDefinition;
|
|
7
|
+
//# sourceMappingURL=rating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/rating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,mBA0D9B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentDefinition } from '../../registry';
|
|
2
|
+
/**
|
|
3
|
+
* Tabs (STORA-545). Children are `tab-panel` nodes; each panel's `label` becomes a
|
|
4
|
+
* tab button. `activeIndex` is the tab shown on first render — clicking a tab on
|
|
5
|
+
* the editor canvas writes it back so authors can edit any panel.
|
|
6
|
+
*/
|
|
7
|
+
export declare const tabsDefinition: ComponentDefinition;
|
|
8
|
+
export declare const tabPanelDefinition: ComponentDefinition;
|
|
9
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/definitions/conversion/tabs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIrD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,mBAoD5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mBAmBhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/definitions/form/button.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/definitions/form/button.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAmBrD,eAAO,MAAM,gBAAgB,EAAE,mBAuF9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBA8GpC,CAAC"}
|