{"version":3,"file":"autogen-B7_TO0n5.mjs","names":[],"sources":["../src/autogen/fallback.ts","../src/autogen/native-shape.ts","../src/autogen/index.ts"],"sourcesContent":["/**\n * JS-based fallback for variant auto-generation.\n *\n * Used when the native Rust binding is not available. Provides simple\n * regex-based prop extraction, minimal art file generation, and a pure\n * JS variant generator.\n */\n\nimport path from \"node:path\";\n\nimport type { AutogenOptions, AutogenOutput, GeneratedVariant, PropDefinition } from \"./index.js\";\n\n/**\n * Simple prop extraction fallback (when native binding not available).\n */\nexport function extractPropsSimple(source: string): PropDefinition[] {\n  const props: PropDefinition[] = [];\n\n  // Match defineProps<{ ... }>() or defineProps({ ... })\n  const propsMatch = source.match(/defineProps\\s*<\\s*\\{([^}]*)\\}\\s*>/s);\n\n  if (propsMatch) {\n    const propsBlock = propsMatch[1];\n    const propLines = propsBlock.split(\"\\n\");\n\n    for (const line of propLines) {\n      const propMatch = line.trim().match(/^(\\w+)(\\?)?:\\s*(.+?)\\s*;?\\s*$/);\n      if (propMatch) {\n        props.push({\n          name: propMatch[1],\n          propType: propMatch[3].replace(/,\\s*$/, \"\"),\n          required: !propMatch[2],\n        });\n      }\n    }\n  }\n\n  return props;\n}\n\n/**\n * Minimal art file for components with no props.\n */\nexport function generateMinimalArt(componentName: string, componentPath: string): string {\n  return `<script setup lang=\"ts\">\ndefineArt(${JSON.stringify(componentPath)}, {\n  title: ${JSON.stringify(componentName)},\n});\n</script>\n\n<art>\n  <variant name=\"Default\" default>\n    <${componentName} />\n  </variant>\n</art>\n`;\n}\n\n/**\n * JS-based variant generation fallback.\n */\nexport function generateArtFileJs(\n  componentPath: string,\n  props: PropDefinition[],\n  options: AutogenOptions,\n): AutogenOutput {\n  const componentName = path.basename(componentPath, \".vue\");\n  const relPath = `./${path.basename(componentPath)}`;\n  const maxVariants = options.maxVariants ?? 20;\n  const variants: GeneratedVariant[] = [];\n\n  // Default variant\n  if (options.includeDefault !== false) {\n    const defaultProps: Record<string, unknown> = {};\n    for (const prop of props) {\n      if (prop.defaultValue !== undefined) {\n        defaultProps[prop.name] = prop.defaultValue;\n      }\n    }\n    variants.push({\n      name: \"Default\",\n      isDefault: true,\n      props: withRequiredPlaceholders(defaultProps, props),\n      description: `${componentName} with default props`,\n    });\n  }\n\n  // Enum variants\n  if (options.includeEnumVariants !== false) {\n    for (const prop of props) {\n      const unionValues = parseUnionType(prop.propType);\n      for (const val of unionValues) {\n        if (variants.length >= maxVariants) break;\n        const name =\n          typeof val === \"string\" ? toPascalCase(val) : `${toPascalCase(prop.name)}_${String(val)}`;\n        variants.push({\n          name,\n          isDefault: false,\n          props: withRequiredPlaceholders({ [prop.name]: val }, props),\n          description: `${prop.name} = ${JSON.stringify(val)}`,\n        });\n      }\n    }\n  }\n\n  // Boolean toggle variants\n  if (options.includeBooleanToggles !== false) {\n    for (const prop of props) {\n      if (variants.length >= maxVariants) break;\n      if (prop.propType.toLowerCase() === \"boolean\") {\n        const nonDefault = prop.defaultValue === true ? false : true;\n        variants.push({\n          name: nonDefault ? toPascalCase(prop.name) : `No${toPascalCase(prop.name)}`,\n          isDefault: false,\n          props: withRequiredPlaceholders({ [prop.name]: nonDefault }, props),\n          description: `${prop.name} = ${nonDefault}`,\n        });\n      }\n    }\n  }\n\n  return {\n    variants,\n    artFileContent: generateArtFileContent(componentName, relPath, variants, props),\n    componentName,\n  };\n}\n\nexport function finalizeArtOutput(\n  output: AutogenOutput,\n  componentPath: string,\n  props: PropDefinition[],\n): AutogenOutput {\n  const variants = output.variants.map((variant) => ({\n    ...variant,\n    props: withRequiredPlaceholders(variant.props, props),\n  }));\n  return {\n    ...output,\n    variants,\n    artFileContent: generateArtFileContent(output.componentName, componentPath, variants, props),\n  };\n}\n\nfunction generateArtFileContent(\n  componentName: string,\n  componentPath: string,\n  variants: GeneratedVariant[],\n  props: PropDefinition[],\n): string {\n  const fixtures = new Map<string, string>();\n  let variantsContent = \"\";\n\n  for (const variant of variants) {\n    const attrs = variant.isDefault ? `name=\"${variant.name}\" default` : `name=\"${variant.name}\"`;\n    variantsContent += `  <variant ${attrs}>\\n`;\n\n    const propsStr = Object.entries(variant.props)\n      .map(([k, v]) => renderPropAttribute(k, v, props, fixtures))\n      .join(\" \");\n\n    variantsContent += `    <${componentName}${propsStr ? \" \" + propsStr : \"\"} />\\n`;\n    variantsContent += `  </variant>\\n\\n`;\n  }\n\n  const fixtureLines = [...fixtures.entries()].map(\n    ([propName, fixture]) =>\n      `const ${fixture} = {} as never; // TODO: replace generated fixture for required prop ${JSON.stringify(propName)}`,\n  );\n  const fixtureBlock = fixtureLines.length > 0 ? `${fixtureLines.join(\"\\n\")}\\n\\n` : \"\";\n\n  return `<script setup lang=\"ts\">\n${fixtureBlock}defineArt(${JSON.stringify(componentPath)}, {\n  title: ${JSON.stringify(componentName)},\n});\n</script>\n\n<art>\n${variantsContent}</art>\n`;\n}\n\nfunction withRequiredPlaceholders(\n  values: Record<string, unknown>,\n  props: PropDefinition[],\n): Record<string, unknown> {\n  const next = { ...values };\n  for (const prop of props) {\n    if (prop.required && prop.defaultValue === undefined && !(prop.name in next)) {\n      next[prop.name] = null;\n    }\n  }\n  return next;\n}\n\nfunction renderPropAttribute(\n  name: string,\n  value: unknown,\n  props: PropDefinition[],\n  fixtures: Map<string, string>,\n): string {\n  const attrName = toKebabCase(name);\n  const prop = props.find((candidate) => candidate.name === name);\n  if (prop?.required && prop.defaultValue === undefined && value == null) {\n    const fixture = fixtureIdentifier(name);\n    fixtures.set(name, fixture);\n    return `:${attrName}=\"${fixture}\"`;\n  }\n  if (typeof value === \"string\") return `${attrName}=\"${value}\"`;\n  if (typeof value === \"boolean\" && value) return attrName;\n  if (typeof value === \"boolean\" && !value) return `:${attrName}=\"false\"`;\n  return `:${attrName}=\"${JSON.stringify(value)}\"`;\n}\n\nfunction fixtureIdentifier(propName: string): string {\n  const base = propName.replace(/[^\\w$]/g, \"_\");\n  return /^[A-Za-z_$]/.test(base) ? `${base}Fixture` : `prop${toPascalCase(base)}Fixture`;\n}\n\nexport function parseUnionType(typeStr: string): unknown[] {\n  const trimmed = typeStr.trim();\n  if (!trimmed.includes(\"|\")) return [];\n\n  if (trimmed.includes(\"'\") || trimmed.includes('\"')) {\n    return trimmed\n      .split(\"|\")\n      .map((s) => s.trim().replace(/^['\"]|['\"]$/g, \"\"))\n      .filter((s) => s.length > 0);\n  }\n\n  const parts = trimmed.split(\"|\").map((s) => s.trim());\n  if (parts.every((p) => !isNaN(Number(p)))) {\n    return parts.map(Number);\n  }\n\n  return [];\n}\n\nexport function toPascalCase(str: string): string {\n  return str\n    .split(/[\\s\\-_]+/)\n    .filter(Boolean)\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(\"\");\n}\n\nfunction toKebabCase(str: string): string {\n  return str.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n","import type { AutogenOptions, AutogenOutput, PropDefinition } from \"./index.js\";\n\nexport interface NativePropDefinition {\n  name: string;\n  propType: string;\n  required: boolean;\n  defaultValue?: unknown;\n}\n\nexport interface NativeAutogenConfig {\n  maxVariants?: number;\n  includeDefault?: boolean;\n  includeBooleanToggles?: boolean;\n  includeEnumVariants?: boolean;\n  includeBoundaryValues?: boolean;\n  includeEmptyStrings?: boolean;\n}\n\nexport interface NativeGeneratedVariant {\n  name: string;\n  isDefault: boolean;\n  props: Record<string, unknown>;\n  description?: string;\n}\n\nexport interface NativeAutogenOutput {\n  variants: NativeGeneratedVariant[];\n  artFileContent: string;\n  componentName: string;\n}\n\nexport function toNativePropDefinitions(props: PropDefinition[]): NativePropDefinition[] {\n  return props.map((prop) => ({\n    name: prop.name,\n    propType: prop.propType,\n    required: prop.required,\n    defaultValue: prop.defaultValue,\n  }));\n}\n\nexport function toNativeAutogenConfig(options: AutogenOptions): NativeAutogenConfig {\n  return {\n    maxVariants: options.maxVariants,\n    includeDefault: options.includeDefault,\n    includeBooleanToggles: options.includeBooleanToggles,\n    includeEnumVariants: options.includeEnumVariants,\n    includeBoundaryValues: options.includeBoundaryValues,\n    includeEmptyStrings: options.includeEmptyStrings,\n  };\n}\n\nexport function fromNativeOutput(output: NativeAutogenOutput): AutogenOutput {\n  return {\n    variants: output.variants.map((variant) => ({\n      name: variant.name,\n      isDefault: variant.isDefault,\n      props: variant.props,\n      description: variant.description,\n    })),\n    artFileContent: output.artFileContent,\n    componentName: output.componentName,\n  };\n}\n","/**\n * Variant auto-generation module.\n * Generates .art.vue files from component prop analysis.\n *\n * JS-based fallback logic (extractPropsSimple, generateMinimalArt,\n * generateArtFileJs, and helpers) is extracted into `fallback.ts`.\n */\n\nimport { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport {\n  extractPropsSimple,\n  finalizeArtOutput,\n  generateMinimalArt,\n  generateArtFileJs,\n} from \"./fallback.js\";\nimport {\n  fromNativeOutput,\n  toNativeAutogenConfig,\n  toNativePropDefinitions,\n  type NativeAutogenOutput,\n  type NativePropDefinition,\n} from \"./native-shape.js\";\n\n/**\n * Autogen configuration options.\n */\nexport interface AutogenOptions {\n  /** Maximum number of variants to generate (default: 20) */\n  maxVariants?: number;\n  /** Include a \"Default\" variant with all default values (default: true) */\n  includeDefault?: boolean;\n  /** Include boolean toggle variants (default: true) */\n  includeBooleanToggles?: boolean;\n  /** Include enum/union variants (default: true) */\n  includeEnumVariants?: boolean;\n  /** Include boundary value variants for numbers (default: false) */\n  includeBoundaryValues?: boolean;\n  /** Include empty string variants for optional strings (default: false) */\n  includeEmptyStrings?: boolean;\n}\n\n/**\n * Prop definition for variant generation.\n */\nexport interface PropDefinition {\n  name: string;\n  propType: string;\n  required: boolean;\n  defaultValue?: unknown;\n}\n\n/**\n * Generated variant.\n */\nexport interface GeneratedVariant {\n  name: string;\n  isDefault: boolean;\n  props: Record<string, unknown>;\n  description?: string;\n}\n\n/**\n * Autogen output.\n */\nexport interface AutogenOutput {\n  variants: GeneratedVariant[];\n  artFileContent: string;\n  componentName: string;\n}\n\n// Native binding types\ninterface NativeAutogen {\n  generateVariants?: (\n    componentPath: string,\n    props: NativePropDefinition[],\n    config?: ReturnType<typeof toNativeAutogenConfig>,\n  ) => NativeAutogenOutput;\n  analyzeSfc?: (\n    source: string,\n    options?: { filename?: string },\n  ) => {\n    props: Array<{\n      name: string;\n      type: string;\n      required: boolean;\n      defaultValue?: unknown;\n      default_value?: unknown;\n    }>;\n    emits: string[];\n  };\n}\n\nlet native: NativeAutogen | null = null;\n\nfunction loadNative(): NativeAutogen {\n  if (native) return native;\n  const require = createRequire(import.meta.url);\n  try {\n    native = require(\"@vizejs/native\") as NativeAutogen;\n    return native;\n  } catch (e) {\n    throw new Error(\n      `Failed to load @vizejs/native. Make sure it's installed and built:\\n${String(e)}`,\n    );\n  }\n}\n\n/**\n * Generate .art.vue file for a component.\n *\n * @param componentPath - Path to the Vue component file\n * @param options - Auto-generation options\n * @returns Generated .art.vue content and metadata\n */\nexport async function generateArtFile(\n  componentPath: string,\n  options: AutogenOptions = {},\n): Promise<AutogenOutput> {\n  const absolutePath = path.resolve(componentPath);\n  const source = await fs.promises.readFile(absolutePath, \"utf-8\");\n\n  const binding = loadNative();\n\n  // Analyze component to extract props\n  let props: PropDefinition[];\n  if (binding.analyzeSfc) {\n    const analysis = binding.analyzeSfc(source, { filename: absolutePath });\n    props = analysis.props.map((p) => ({\n      name: p.name,\n      propType: p.type,\n      required: p.required,\n      defaultValue: p.defaultValue ?? p.default_value,\n    }));\n  } else {\n    // Fallback: simple regex-based prop extraction\n    props = extractPropsSimple(source);\n  }\n\n  if (props.length === 0) {\n    // No props found: generate minimal art file\n    const componentName = path.basename(componentPath, \".vue\");\n    const relPath = `./${path.basename(componentPath)}`;\n    return {\n      variants: [{ name: \"Default\", isDefault: true, props: {} }],\n      artFileContent: generateMinimalArt(componentName, relPath),\n      componentName,\n    };\n  }\n\n  // Use native variant generation if available\n  if (binding.generateVariants) {\n    const relPath = `./${path.basename(componentPath)}`;\n    const result = binding.generateVariants(\n      relPath,\n      toNativePropDefinitions(props),\n      toNativeAutogenConfig(options),\n    );\n\n    return finalizeArtOutput(fromNativeOutput(result), relPath, props);\n  }\n\n  // Fallback: JS-based generation\n  return generateArtFileJs(componentPath, props, options);\n}\n\n/**\n * Write generated .art.vue file to disk.\n */\nexport async function writeArtFile(\n  componentPath: string,\n  options: AutogenOptions = {},\n  outputPath?: string,\n): Promise<string> {\n  const output = await generateArtFile(componentPath, options);\n\n  const targetPath = outputPath ?? componentPath.replace(/\\.vue$/, \".art.vue\");\n\n  await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });\n  await fs.promises.writeFile(targetPath, output.artFileContent, \"utf-8\");\n\n  return targetPath;\n}\n"],"mappings":";;;;;;;;;;;;;;AAeA,SAAgB,mBAAmB,QAAkC;CACnE,MAAM,QAA0B,EAAE;CAGlC,MAAM,aAAa,OAAO,MAAM,qCAAqC;CAErE,IAAI,YAAY;EAEd,MAAM,YADa,WAAW,GACD,MAAM,KAAK;EAExC,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,YAAY,KAAK,MAAM,CAAC,MAAM,gCAAgC;GACpE,IAAI,WACF,MAAM,KAAK;IACT,MAAM,UAAU;IAChB,UAAU,UAAU,GAAG,QAAQ,SAAS,GAAG;IAC3C,UAAU,CAAC,UAAU;IACtB,CAAC;;;CAKR,OAAO;;;;;AAMT,SAAgB,mBAAmB,eAAuB,eAA+B;CACvF,OAAO;YACG,KAAK,UAAU,cAAc,CAAC;WAC/B,KAAK,UAAU,cAAc,CAAC;;;;;;OAMlC,cAAc;;;;;;;;AASrB,SAAgB,kBACd,eACA,OACA,SACe;CACf,MAAM,gBAAgB,KAAK,SAAS,eAAe,OAAO;CAC1D,MAAM,UAAU,KAAK,KAAK,SAAS,cAAc;CACjD,MAAM,cAAc,QAAQ,eAAe;CAC3C,MAAM,WAA+B,EAAE;CAGvC,IAAI,QAAQ,mBAAmB,OAAO;EACpC,MAAM,eAAwC,EAAE;EAChD,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,iBAAiB,KAAA,GACxB,aAAa,KAAK,QAAQ,KAAK;EAGnC,SAAS,KAAK;GACZ,MAAM;GACN,WAAW;GACX,OAAO,yBAAyB,cAAc,MAAM;GACpD,aAAa,GAAG,cAAc;GAC/B,CAAC;;CAIJ,IAAI,QAAQ,wBAAwB,OAClC,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,cAAc,eAAe,KAAK,SAAS;EACjD,KAAK,MAAM,OAAO,aAAa;GAC7B,IAAI,SAAS,UAAU,aAAa;GACpC,MAAM,OACJ,OAAO,QAAQ,WAAW,aAAa,IAAI,GAAG,GAAG,aAAa,KAAK,KAAK,CAAC,GAAG,OAAO,IAAI;GACzF,SAAS,KAAK;IACZ;IACA,WAAW;IACX,OAAO,yBAAyB,GAAG,KAAK,OAAO,KAAK,EAAE,MAAM;IAC5D,aAAa,GAAG,KAAK,KAAK,KAAK,KAAK,UAAU,IAAI;IACnD,CAAC;;;CAMR,IAAI,QAAQ,0BAA0B,OACpC,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,SAAS,UAAU,aAAa;EACpC,IAAI,KAAK,SAAS,aAAa,KAAK,WAAW;GAC7C,MAAM,aAAa,KAAK,iBAAiB,OAAO,QAAQ;GACxD,SAAS,KAAK;IACZ,MAAM,aAAa,aAAa,KAAK,KAAK,GAAG,KAAK,aAAa,KAAK,KAAK;IACzE,WAAW;IACX,OAAO,yBAAyB,GAAG,KAAK,OAAO,YAAY,EAAE,MAAM;IACnE,aAAa,GAAG,KAAK,KAAK,KAAK;IAChC,CAAC;;;CAKR,OAAO;EACL;EACA,gBAAgB,uBAAuB,eAAe,SAAS,UAAU,MAAM;EAC/E;EACD;;AAGH,SAAgB,kBACd,QACA,eACA,OACe;CACf,MAAM,WAAW,OAAO,SAAS,KAAK,aAAa;EACjD,GAAG;EACH,OAAO,yBAAyB,QAAQ,OAAO,MAAM;EACtD,EAAE;CACH,OAAO;EACL,GAAG;EACH;EACA,gBAAgB,uBAAuB,OAAO,eAAe,eAAe,UAAU,MAAM;EAC7F;;AAGH,SAAS,uBACP,eACA,eACA,UACA,OACQ;CACR,MAAM,2BAAW,IAAI,KAAqB;CAC1C,IAAI,kBAAkB;CAEtB,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,QAAQ,QAAQ,YAAY,SAAS,QAAQ,KAAK,aAAa,SAAS,QAAQ,KAAK;EAC3F,mBAAmB,cAAc,MAAM;EAEvC,MAAM,WAAW,OAAO,QAAQ,QAAQ,MAAM,CAC3C,KAAK,CAAC,GAAG,OAAO,oBAAoB,GAAG,GAAG,OAAO,SAAS,CAAC,CAC3D,KAAK,IAAI;EAEZ,mBAAmB,QAAQ,gBAAgB,WAAW,MAAM,WAAW,GAAG;EAC1E,mBAAmB;;CAGrB,MAAM,eAAe,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,KAC1C,CAAC,UAAU,aACV,SAAS,QAAQ,uEAAuE,KAAK,UAAU,SAAS,GACnH;CAGD,OAAO;EAFc,aAAa,SAAS,IAAI,GAAG,aAAa,KAAK,KAAK,CAAC,QAAQ,GAGrE,YAAY,KAAK,UAAU,cAAc,CAAC;WAC9C,KAAK,UAAU,cAAc,CAAC;;;;;EAKvC,gBAAgB;;;AAIlB,SAAS,yBACP,QACA,OACyB;CACzB,MAAM,OAAO,EAAE,GAAG,QAAQ;CAC1B,KAAK,MAAM,QAAQ,OACjB,IAAI,KAAK,YAAY,KAAK,iBAAiB,KAAA,KAAa,EAAE,KAAK,QAAQ,OACrE,KAAK,KAAK,QAAQ;CAGtB,OAAO;;AAGT,SAAS,oBACP,MACA,OACA,OACA,UACQ;CACR,MAAM,WAAW,YAAY,KAAK;CAClC,MAAM,OAAO,MAAM,MAAM,cAAc,UAAU,SAAS,KAAK;CAC/D,IAAI,MAAM,YAAY,KAAK,iBAAiB,KAAA,KAAa,SAAS,MAAM;EACtE,MAAM,UAAU,kBAAkB,KAAK;EACvC,SAAS,IAAI,MAAM,QAAQ;EAC3B,OAAO,IAAI,SAAS,IAAI,QAAQ;;CAElC,IAAI,OAAO,UAAU,UAAU,OAAO,GAAG,SAAS,IAAI,MAAM;CAC5D,IAAI,OAAO,UAAU,aAAa,OAAO,OAAO;CAChD,IAAI,OAAO,UAAU,aAAa,CAAC,OAAO,OAAO,IAAI,SAAS;CAC9D,OAAO,IAAI,SAAS,IAAI,KAAK,UAAU,MAAM,CAAC;;AAGhD,SAAS,kBAAkB,UAA0B;CACnD,MAAM,OAAO,SAAS,QAAQ,WAAW,IAAI;CAC7C,OAAO,cAAc,KAAK,KAAK,GAAG,GAAG,KAAK,WAAW,OAAO,aAAa,KAAK,CAAC;;AAGjF,SAAgB,eAAe,SAA4B;CACzD,MAAM,UAAU,QAAQ,MAAM;CAC9B,IAAI,CAAC,QAAQ,SAAS,IAAI,EAAE,OAAO,EAAE;CAErC,IAAI,QAAQ,SAAS,IAAI,IAAI,QAAQ,SAAS,KAAI,EAChD,OAAO,QACJ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,QAAQ,gBAAgB,GAAG,CAAC,CAChD,QAAQ,MAAM,EAAE,SAAS,EAAE;CAGhC,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,MAAM,CAAC;CACrD,IAAI,MAAM,OAAO,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,EACvC,OAAO,MAAM,IAAI,OAAO;CAG1B,OAAO,EAAE;;AAGX,SAAgB,aAAa,KAAqB;CAChD,OAAO,IACJ,MAAM,WAAW,CACjB,OAAO,QAAQ,CACf,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,CAAC,CAC3D,KAAK,GAAG;;AAGb,SAAS,YAAY,KAAqB;CACxC,OAAO,IAAI,QAAQ,WAAW,SAAS,IAAI,KAAK,aAAa,GAAG;;;;ACxNlE,SAAgB,wBAAwB,OAAiD;CACvF,OAAO,MAAM,KAAK,UAAU;EAC1B,MAAM,KAAK;EACX,UAAU,KAAK;EACf,UAAU,KAAK;EACf,cAAc,KAAK;EACpB,EAAE;;AAGL,SAAgB,sBAAsB,SAA8C;CAClF,OAAO;EACL,aAAa,QAAQ;EACrB,gBAAgB,QAAQ;EACxB,uBAAuB,QAAQ;EAC/B,qBAAqB,QAAQ;EAC7B,uBAAuB,QAAQ;EAC/B,qBAAqB,QAAQ;EAC9B;;AAGH,SAAgB,iBAAiB,QAA4C;CAC3E,OAAO;EACL,UAAU,OAAO,SAAS,KAAK,aAAa;GAC1C,MAAM,QAAQ;GACd,WAAW,QAAQ;GACnB,OAAO,QAAQ;GACf,aAAa,QAAQ;GACtB,EAAE;EACH,gBAAgB,OAAO;EACvB,eAAe,OAAO;EACvB;;;;;;;;;;;ACkCH,IAAI,SAA+B;AAEnC,SAAS,aAA4B;CACnC,IAAI,QAAQ,OAAO;CACnB,MAAM,UAAU,cAAc,OAAO,KAAK,IAAI;CAC9C,IAAI;EACF,SAAS,QAAQ,iBAAiB;EAClC,OAAO;UACA,GAAG;EACV,MAAM,IAAI,MACR,uEAAuE,OAAO,EAAE,GACjF;;;;;;;;;;AAWL,eAAsB,gBACpB,eACA,UAA0B,EAAE,EACJ;CACxB,MAAM,eAAe,KAAK,QAAQ,cAAc;CAChD,MAAM,SAAS,MAAM,GAAG,SAAS,SAAS,cAAc,QAAQ;CAEhE,MAAM,UAAU,YAAY;CAG5B,IAAI;CACJ,IAAI,QAAQ,YAEV,QADiB,QAAQ,WAAW,QAAQ,EAAE,UAAU,cAAc,CACtD,CAAC,MAAM,KAAK,OAAO;EACjC,MAAM,EAAE;EACR,UAAU,EAAE;EACZ,UAAU,EAAE;EACZ,cAAc,EAAE,gBAAgB,EAAE;EACnC,EAAE;MAGH,QAAQ,mBAAmB,OAAO;CAGpC,IAAI,MAAM,WAAW,GAAG;EAEtB,MAAM,gBAAgB,KAAK,SAAS,eAAe,OAAO;EAE1D,OAAO;GACL,UAAU,CAAC;IAAE,MAAM;IAAW,WAAW;IAAM,OAAO,EAAE;IAAE,CAAC;GAC3D,gBAAgB,mBAAmB,eAAe,KAH/B,KAAK,SAAS,cAAc,GAGW;GAC1D;GACD;;CAIH,IAAI,QAAQ,kBAAkB;EAC5B,MAAM,UAAU,KAAK,KAAK,SAAS,cAAc;EAOjD,OAAO,kBAAkB,iBANV,QAAQ,iBACrB,SACA,wBAAwB,MAAM,EAC9B,sBAAsB,QAAQ,CAGgB,CAAC,EAAE,SAAS,MAAM;;CAIpE,OAAO,kBAAkB,eAAe,OAAO,QAAQ;;;;;AAMzD,eAAsB,aACpB,eACA,UAA0B,EAAE,EAC5B,YACiB;CACjB,MAAM,SAAS,MAAM,gBAAgB,eAAe,QAAQ;CAE5D,MAAM,aAAa,cAAc,cAAc,QAAQ,UAAU,WAAW;CAE5E,MAAM,GAAG,SAAS,MAAM,KAAK,QAAQ,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;CACtE,MAAM,GAAG,SAAS,UAAU,YAAY,OAAO,gBAAgB,QAAQ;CAEvE,OAAO"}