{"version":3,"file":"index.mjs","sources":["../../src/core/constants.ts","../../src/core/native-types.ts","../../src/core/modern-types.ts","../../src/core/kind-of.ts","../../src/validators/schema.ts"],"sourcesContent":["export const PRIMITIVE_TYPES = [\n  'undefined',\n  'null',\n  'boolean',\n  'number',\n  'string',\n  'symbol',\n  'bigint',\n] as const;\n\nexport const OBJECT_TYPES = [\n  'object',\n  'array',\n  'function',\n  'date',\n  'regexp',\n  'error',\n] as const;\n\nexport const COLLECTION_TYPES = [\n  'map',\n  'set',\n  'weakmap',\n  'weakset',\n] as const;\n\nexport const TYPED_ARRAY_TYPES = [\n  'int8array',\n  'uint8array',\n  'uint8clampedarray',\n  'int16array',\n  'uint16array',\n  'int32array',\n  'uint32array',\n  'float32array',\n  'float64array',\n  'bigint64array',\n  'biguint64array',\n] as const;\n\nexport const MODERN_TYPES = [\n  'promise',\n  'generatorfunction',\n  'asyncfunction',\n  'asyncgeneratorfunction',\n  'proxy',\n  'dataview',\n  'arraybuffer',\n  'sharedarraybuffer',\n] as const;\n\nexport const NODE_TYPES = [\n  'buffer',\n  'stream',\n  'eventemitter',\n] as const;\n\nexport const DOM_TYPES = [\n  'element',\n  'node',\n  'window',\n  'document',\n] as const;\n\nexport const SPECIAL_TYPES = [\n  'arguments',\n  'global',\n] as const;\n\nexport const ALL_TYPES = [\n  ...PRIMITIVE_TYPES,\n  ...OBJECT_TYPES,\n  ...COLLECTION_TYPES,\n  ...TYPED_ARRAY_TYPES,\n  ...MODERN_TYPES,\n  ...NODE_TYPES,\n  ...DOM_TYPES,\n  ...SPECIAL_TYPES,\n] as const;\n\nexport type PrimitiveType = typeof PRIMITIVE_TYPES[number];\nexport type ObjectType = typeof OBJECT_TYPES[number];\nexport type CollectionType = typeof COLLECTION_TYPES[number];\nexport type TypedArrayType = typeof TYPED_ARRAY_TYPES[number];\nexport type ModernType = typeof MODERN_TYPES[number];\nexport type NodeType = typeof NODE_TYPES[number];\nexport type DOMType = typeof DOM_TYPES[number];\nexport type SpecialType = typeof SPECIAL_TYPES[number];\nexport type TypeName = typeof ALL_TYPES[number];\n\nexport const TYPE_TAG_MAP: Record<string, TypeName> = {\n  '[object Arguments]': 'arguments',\n  '[object Array]': 'array',\n  '[object ArrayBuffer]': 'arraybuffer',\n  '[object AsyncFunction]': 'asyncfunction',\n  '[object AsyncGeneratorFunction]': 'asyncgeneratorfunction',\n  '[object BigInt]': 'bigint',\n  '[object BigInt64Array]': 'bigint64array',\n  '[object BigUint64Array]': 'biguint64array',\n  '[object Boolean]': 'boolean',\n  '[object DataView]': 'dataview',\n  '[object Date]': 'date',\n  '[object Error]': 'error',\n  '[object Float32Array]': 'float32array',\n  '[object Float64Array]': 'float64array',\n  '[object Function]': 'function',\n  '[object GeneratorFunction]': 'generatorfunction',\n  '[object Int8Array]': 'int8array',\n  '[object Int16Array]': 'int16array',\n  '[object Int32Array]': 'int32array',\n  '[object Map]': 'map',\n  '[object Number]': 'number',\n  '[object Object]': 'object',\n  '[object Promise]': 'promise',\n  '[object Proxy]': 'proxy',\n  '[object RegExp]': 'regexp',\n  '[object Set]': 'set',\n  '[object SharedArrayBuffer]': 'sharedarraybuffer',\n  '[object String]': 'string',\n  '[object Symbol]': 'symbol',\n  '[object Uint8Array]': 'uint8array',\n  '[object Uint8ClampedArray]': 'uint8clampedarray',\n  '[object Uint16Array]': 'uint16array',\n  '[object Uint32Array]': 'uint32array',\n  '[object WeakMap]': 'weakmap',\n  '[object WeakSet]': 'weakset',\n  '[object Window]': 'window',\n  '[object HTMLDocument]': 'document',\n  '[object Document]': 'document',\n  '[object Null]': 'null',\n  '[object Undefined]': 'undefined',\n};","import type { TypeName } from './constants';\nimport { TYPE_TAG_MAP } from './constants';\n\nconst toString = Object.prototype.toString;\nconst toStringTag = Symbol.toStringTag;\n\nexport function getNativeType(value: unknown): TypeName | null {\n  if (value === undefined) return 'undefined';\n  if (value === null) return 'null';\n\n  const primitiveType = typeof value;\n  \n  switch (primitiveType) {\n    case 'boolean': return 'boolean';\n    case 'number': return 'number';\n    case 'string': return 'string';\n    case 'symbol': return 'symbol';\n    case 'bigint': return 'bigint';\n    case 'function': return getFunctionType(value as (...args: any[]) => any);\n    case 'object': return getObjectType(value as object);\n    default: return null;\n  }\n}\n\nfunction getFunctionType(fn: (...args: any[]) => any): TypeName {\n  const fnString = fn.toString();\n  \n  if (/^class\\s/.test(fnString)) {\n    return 'function';\n  }\n  \n  if (/^async\\s*function\\s*\\*/.test(fnString) || /^async\\s*\\*/.test(fnString)) {\n    return 'asyncgeneratorfunction';\n  }\n  \n  if (/^async\\s/.test(fnString)) {\n    return 'asyncfunction';\n  }\n  \n  if (/^function\\s*\\*/.test(fnString) || /^\\*/.test(fnString)) {\n    return 'generatorfunction';\n  }\n  \n  const ctorName = fn.constructor?.name;\n  if (ctorName === 'AsyncFunction') return 'asyncfunction';\n  if (ctorName === 'GeneratorFunction') return 'generatorfunction';\n  if (ctorName === 'AsyncGeneratorFunction') return 'asyncgeneratorfunction';\n  \n  return 'function';\n}\n\nfunction getObjectType(obj: object): TypeName {\n  const tag = toString.call(obj);\n  const mappedType = TYPE_TAG_MAP[tag];\n  \n  if (mappedType) {\n    return mappedType;\n  }\n  \n  // Check for special types first, before processing [object Object]\n  if (typeof Buffer !== 'undefined' && Buffer.isBuffer && Buffer.isBuffer(obj)) {\n    return 'buffer';\n  }\n  \n  if (typeof obj === 'object' && 'callee' in obj && typeof obj.callee === 'function') {\n    return 'arguments';\n  }\n  \n  if (isStream(obj)) {\n    return 'stream';\n  }\n  \n  if (isEventEmitter(obj)) {\n    return 'eventemitter';\n  }\n  \n  if (tag === '[object Object]') {\n    const customTag = (obj as any)[toStringTag];\n    if (typeof customTag === 'string') {\n      return customTag.toLowerCase() as TypeName;\n    }\n    \n    const ctor = obj.constructor;\n    if (ctor && ctor !== Object) {\n      const ctorName = ctor.name;\n      if (ctorName && ctorName !== 'Object') {\n        return ctorName.toLowerCase() as TypeName;\n      }\n    }\n    // Don't return 'object' here - continue to check for other types\n  }\n  \n  if (isDOMElement(obj)) {\n    return 'element';\n  }\n  \n  if (isDOMNode(obj)) {\n    return 'node';\n  }\n  \n  if (isGlobal(obj)) {\n    return 'global';\n  }\n  \n  return 'object';\n}\n\nfunction isStream(obj: any): boolean {\n  return obj !== null &&\n    typeof obj === 'object' &&\n    typeof obj.pipe === 'function';\n}\n\nfunction isEventEmitter(obj: any): boolean {\n  return obj !== null &&\n    typeof obj === 'object' &&\n    typeof obj.on === 'function' &&\n    typeof obj.emit === 'function' &&\n    typeof obj.removeListener === 'function';\n}\n\nfunction isDOMElement(obj: any): boolean {\n  if (typeof HTMLElement === 'undefined') return false;\n  return obj instanceof HTMLElement;\n}\n\nfunction isDOMNode(obj: any): boolean {\n  if (typeof Node === 'undefined') return false;\n  return obj instanceof Node;\n}\n\nfunction isGlobal(obj: any): boolean {\n  if (typeof globalThis !== 'undefined' && obj === globalThis) return true;\n  if (typeof global !== 'undefined' && obj === global) return true;\n  if (typeof window !== 'undefined' && obj === window) return true;\n  if (typeof self !== 'undefined' && obj === self) return true;\n  return false;\n}","import type { TypeName } from './constants';\n\nconst WeakMapPrototype = WeakMap.prototype;\nconst WeakSetPrototype = WeakSet.prototype;\nconst MapPrototype = Map.prototype;\nconst SetPrototype = Set.prototype;\nconst ArrayBufferPrototype = ArrayBuffer.prototype;\nconst DataViewPrototype = DataView.prototype;\nconst SharedArrayBufferPrototype = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer.prototype : null;\n\nexport function checkModernType(value: unknown): TypeName | null {\n  if (value === null || value === undefined) {\n    return null;\n  }\n\n  try {\n    if (value instanceof Promise || isThenable(value)) {\n      return 'promise';\n    }\n\n    if (value instanceof Map || (value as any).__proto__ === MapPrototype) {\n      return 'map';\n    }\n\n    if (value instanceof Set || (value as any).__proto__ === SetPrototype) {\n      return 'set';\n    }\n\n    if (value instanceof WeakMap || (value as any).__proto__ === WeakMapPrototype) {\n      return 'weakmap';\n    }\n\n    if (value instanceof WeakSet || (value as any).__proto__ === WeakSetPrototype) {\n      return 'weakset';\n    }\n\n    if (value instanceof ArrayBuffer || (value as any).__proto__ === ArrayBufferPrototype) {\n      return 'arraybuffer';\n    }\n\n    if (SharedArrayBufferPrototype && (value instanceof SharedArrayBuffer || (value as any).__proto__ === SharedArrayBufferPrototype)) {\n      return 'sharedarraybuffer';\n    }\n\n    if (value instanceof DataView || (value as any).__proto__ === DataViewPrototype) {\n      return 'dataview';\n    }\n\n    if (isProxy(value)) {\n      return 'proxy';\n    }\n  } catch {\n    // Cross-realm objects might throw\n  }\n\n  return null;\n}\n\nfunction isThenable(value: any): boolean {\n  return value !== null &&\n    (typeof value === 'object' || typeof value === 'function') &&\n    typeof value.then === 'function';\n}\n\nfunction isProxy(value: any): boolean {\n  try {\n    // Proxies are detected by checking if they trigger proxy traps\n    // when used with certain operations\n    if (typeof value !== 'object' && typeof value !== 'function') {\n      return false;\n    }\n\n    // Try to create a proxy with the value as handler\n    // If it's already a proxy, this might throw or behave differently\n    new Proxy({}, value as ProxyHandler<any>);\n    \n    // Additional check: see if common proxy behaviors are present\n    // This is a heuristic and might not catch all proxies\n    const descriptor = Object.getOwnPropertyDescriptor(value, Symbol.toStringTag);\n    if (descriptor && !descriptor.configurable && descriptor.value === 'Proxy') {\n      return true;\n    }\n\n    return false;\n  } catch {\n    // Some proxy operations might throw\n    return false;\n  }\n}\n\nexport function getTypedArrayType(value: any): TypeName | null {\n  if (!ArrayBuffer.isView(value)) {\n    return null;\n  }\n\n  const proto = Object.getPrototypeOf(value);\n  const ctorName = proto?.constructor?.name;\n\n  switch (ctorName) {\n    case 'Int8Array': return 'int8array';\n    case 'Uint8Array': return 'uint8array';\n    case 'Uint8ClampedArray': return 'uint8clampedarray';\n    case 'Int16Array': return 'int16array';\n    case 'Uint16Array': return 'uint16array';\n    case 'Int32Array': return 'int32array';\n    case 'Uint32Array': return 'uint32array';\n    case 'Float32Array': return 'float32array';\n    case 'Float64Array': return 'float64array';\n    case 'BigInt64Array': return 'bigint64array';\n    case 'BigUint64Array': return 'biguint64array';\n    default: return null;\n  }\n}","import type { TypeName } from './constants';\nexport type { TypeName } from './constants';\nimport { getNativeType } from './native-types';\nimport { checkModernType, getTypedArrayType } from './modern-types';\n\n\nexport interface DetailedType {\n  type: string;\n  constructor: string | null;\n  prototype: string | null;\n  isPrimitive: boolean;\n  isBuiltIn: boolean;\n  isNullish: boolean;\n  isIterable: boolean;\n  isAsync: boolean;\n  customType: string | null;\n  metadata?: Record<string, any> | undefined;\n}\n\nlet typeCache: WeakMap<object, string> | null = null;\nlet cacheEnabled = true;\n\nexport function kindOfCore(value: unknown): string {\n  if (value === undefined) return 'undefined';\n  if (value === null) return 'null';\n\n  const primitiveType = getPrimitiveType(value);\n  if (primitiveType) return primitiveType;\n\n  if (typeof value === 'object' && cacheEnabled && typeCache) {\n    const cached = typeCache.get(value);\n    if (cached) return cached;\n  }\n\n  let type = getNativeType(value);\n  \n  if (!type || type === 'object') {\n    const modernType = checkModernType(value);\n    if (modernType) {\n      type = modernType;\n    } else {\n      const arrayType = getTypedArrayType(value);\n      if (arrayType) {\n        type = arrayType;\n      } else {\n        type = getCustomType(value) || type || ('object' as TypeName);\n      }\n    }\n  }\n\n  if (typeof value === 'object' && cacheEnabled && type) {\n    if (!typeCache) typeCache = new WeakMap();\n    typeCache.set(value, type);\n  }\n\n  return type || 'object';\n}\n\nexport function fastKindOf(value: unknown): string {\n  if (value === undefined) return 'undefined';\n  if (value === null) return 'null';\n\n  const primitiveType = typeof value;\n  if (primitiveType !== 'object' && primitiveType !== 'function') {\n    return primitiveType;\n  }\n\n  if (Array.isArray(value)) return 'array';\n  if (value instanceof Date) return 'date';\n  if (value instanceof RegExp) return 'regexp';\n  if (value instanceof Error) return 'error';\n\n  return 'object';\n}\n\nexport function kindOfMany(values: unknown[]): string[] {\n  const results: string[] = new Array(values.length);\n  for (let i = 0; i < values.length; i++) {\n    results[i] = kindOfCore(values[i]);\n  }\n  return results;\n}\n\nexport function getDetailedType(value: unknown): DetailedType {\n  const type = kindOfCore(value);\n  const isPrimitive = value === null || (typeof value !== 'object' && typeof value !== 'function');\n  \n  let constructor: string | null = null;\n  let prototype: string | null = null;\n  let isIterable = false;\n  let isAsync = false;\n  let customType: string | null = null;\n  const metadata: Record<string, any> = {};\n\n  if (!isPrimitive && value !== null) {\n    const obj = value as any;\n    \n    if (obj.constructor) {\n      constructor = obj.constructor.name || null;\n    }\n    \n    const proto = Object.getPrototypeOf(obj);\n    if (proto && proto.constructor) {\n      prototype = proto.constructor.name || null;\n    }\n    \n    isIterable = typeof obj[Symbol.iterator] === 'function';\n    isAsync = typeof obj[Symbol.asyncIterator] === 'function' || \n              type === 'promise' || \n              type === 'asyncfunction' || \n              type === 'asyncgeneratorfunction';\n    \n    if (obj[Symbol.toStringTag]) {\n      customType = String(obj[Symbol.toStringTag]);\n    }\n    \n    if (type === 'array') {\n      metadata['length'] = (obj).length;\n    } else if (type === 'map' || type === 'set') {\n      metadata['size'] = (obj).size;\n    } else if (type === 'arraybuffer' || type === 'sharedarraybuffer') {\n      metadata['byteLength'] = (obj).byteLength;\n    } else if (type.includes('array') && (obj).buffer) {\n      metadata['byteLength'] = (obj).byteLength;\n      metadata['length'] = (obj).length;\n    }\n  }\n\n  return {\n    type,\n    constructor,\n    prototype,\n    isPrimitive,\n    isBuiltIn: isBuiltInType(type),\n    isNullish: value === null || value === undefined,\n    isIterable,\n    isAsync,\n    customType,\n    metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n  };\n}\n\nfunction getPrimitiveType(value: unknown): string | null {\n  const type = typeof value;\n  switch (type) {\n    case 'boolean':\n    case 'number':\n    case 'string':\n    case 'symbol':\n    case 'bigint':\n      return type;\n    default:\n      return null;\n  }\n}\n\nfunction getCustomType(value: any): TypeName | null {\n  try {\n    const toStringTag = value[Symbol.toStringTag];\n    if (typeof toStringTag === 'string') {\n      return toStringTag.toLowerCase() as TypeName;\n    }\n\n    if (value.constructor && value.constructor !== Object) {\n      const ctorName = value.constructor.name;\n      if (ctorName && ctorName !== 'Object') {\n        return ctorName.toLowerCase() as TypeName;\n      }\n    }\n  } catch {\n    // Ignore errors from accessing properties\n  }\n\n  return null;\n}\n\nfunction isBuiltInType(type: string): boolean {\n  const builtInTypes = new Set([\n    'undefined', 'null', 'boolean', 'number', 'string', 'symbol', 'bigint',\n    'object', 'array', 'function', 'date', 'regexp', 'error',\n    'map', 'set', 'weakmap', 'weakset',\n    'int8array', 'uint8array', 'uint8clampedarray', 'int16array', 'uint16array',\n    'int32array', 'uint32array', 'float32array', 'float64array',\n    'bigint64array', 'biguint64array',\n    'promise', 'generatorfunction', 'asyncfunction', 'asyncgeneratorfunction',\n    'proxy', 'dataview', 'arraybuffer', 'sharedarraybuffer',\n    'arguments'\n  ]);\n  \n  return builtInTypes.has(type);\n}\n\nexport function enableCache(): void {\n  cacheEnabled = true;\n  if (!typeCache) typeCache = new WeakMap();\n}\n\nexport function disableCache(): void {\n  cacheEnabled = false;\n  typeCache = null;\n}\n\nexport function clearCache(): void {\n  if (typeCache) {\n    typeCache = new WeakMap();\n  }\n}","import { kindOfCore } from '../core/kind-of';\nimport type { ValidationResult, ValidationError, ValidationOptions, SchemaType } from '../types/schema';\n\nexport function validateSchema(\n  value: unknown,\n  schema: SchemaType,\n  options: ValidationOptions = {}\n): ValidationResult {\n  const errors: ValidationError[] = [];\n  const context = {\n    path: options.path || '',\n    strict: options.strict ?? true,\n    coerce: options.coerce ?? false,\n    partial: options.partial ?? false,\n  };\n\n  validateValue(value, schema, context, errors);\n\n  return {\n    valid: errors.length === 0,\n    errors,\n  };\n}\n\nfunction validateValue(\n  value: unknown,\n  schema: SchemaType,\n  context: { path: string; strict: boolean; coerce: boolean; partial: boolean },\n  errors: ValidationError[]\n): void {\n  if (typeof schema === 'string') {\n    // Simple type check\n    const actualType = kindOfCore(value);\n    if (actualType !== schema) {\n      errors.push({\n        path: context.path || 'root',\n        expected: schema,\n        actual: actualType,\n        message: `Expected type \"${schema}\" but got \"${actualType}\"`,\n      });\n    }\n  } else if (Array.isArray(schema)) {\n    // Array schema\n    if (!Array.isArray(value)) {\n      errors.push({\n        path: context.path || 'root',\n        expected: 'array',\n        actual: kindOfCore(value),\n        message: `Expected array but got \"${kindOfCore(value)}\"`,\n      });\n      return;\n    }\n\n    const itemSchema = schema[0];\n    if (itemSchema) {\n      value.forEach((item, index) => {\n        validateValue(\n          item,\n          itemSchema,\n          { ...context, path: `${context.path}[${index}]` },\n          errors\n        );\n      });\n    }\n  } else if (schema && typeof schema === 'object') {\n    // Object schema\n    if (typeof value !== 'object' || value === null) {\n      errors.push({\n        path: context.path || 'root',\n        expected: 'object',\n        actual: kindOfCore(value),\n        message: `Expected object but got \"${kindOfCore(value)}\"`,\n      });\n      return;\n    }\n\n    const obj = value as Record<string, unknown>;\n    const schemaObj = schema;\n\n    // Check required properties\n    if (!context.partial) {\n      for (const key of Object.keys(schemaObj)) {\n        if (!(key in obj)) {\n          errors.push({\n            path: context.path ? `${context.path}.${key}` : key,\n            expected: typeof schemaObj[key] === 'string' ? schemaObj[key] : kindOfCore(schemaObj[key]),\n            actual: 'undefined',\n            message: `Missing required property \"${key}\"`,\n          });\n        }\n      }\n    }\n\n    // Validate present properties\n    for (const key of Object.keys(obj)) {\n      if (key in schemaObj) {\n        const schemaValue = schemaObj[key];\n        if (schemaValue !== undefined) {\n          validateValue(\n            obj[key],\n            schemaValue,\n            { ...context, path: context.path ? `${context.path}.${key}` : key },\n            errors\n          );\n        }\n      } else if (context.strict) {\n        errors.push({\n          path: context.path ? `${context.path}.${key}` : key,\n          expected: 'undefined',\n          actual: kindOfCore(obj[key]),\n          message: `Unexpected property \"${key}\"`,\n        });\n      }\n    }\n  }\n}\n\nexport function createValidator(\n  schema: SchemaType,\n  options?: ValidationOptions\n): (value: unknown) => ValidationResult {\n  return (value: unknown) => validateSchema(value, schema, options);\n}"],"names":[],"mappings":"AA0FO,MAAM,YAAA,GAAyC;AAAA,EACpD,oBAAA,EAAsB,WAAA;AAAA,EACtB,gBAAA,EAAkB,OAAA;AAAA,EAClB,sBAAA,EAAwB,aAAA;AAAA,EACxB,wBAAA,EAA0B,eAAA;AAAA,EAC1B,iCAAA,EAAmC,wBAAA;AAAA,EACnC,iBAAA,EAAmB,QAAA;AAAA,EACnB,wBAAA,EAA0B,eAAA;AAAA,EAC1B,yBAAA,EAA2B,gBAAA;AAAA,EAC3B,kBAAA,EAAoB,SAAA;AAAA,EACpB,mBAAA,EAAqB,UAAA;AAAA,EACrB,eAAA,EAAiB,MAAA;AAAA,EACjB,gBAAA,EAAkB,OAAA;AAAA,EAClB,uBAAA,EAAyB,cAAA;AAAA,EACzB,uBAAA,EAAyB,cAAA;AAAA,EACzB,mBAAA,EAAqB,UAAA;AAAA,EACrB,4BAAA,EAA8B,mBAAA;AAAA,EAC9B,oBAAA,EAAsB,WAAA;AAAA,EACtB,qBAAA,EAAuB,YAAA;AAAA,EACvB,qBAAA,EAAuB,YAAA;AAAA,EACvB,cAAA,EAAgB,KAAA;AAAA,EAChB,iBAAA,EAAmB,QAAA;AAAA,EACnB,iBAAA,EAAmB,QAAA;AAAA,EACnB,kBAAA,EAAoB,SAAA;AAAA,EACpB,gBAAA,EAAkB,OAAA;AAAA,EAClB,iBAAA,EAAmB,QAAA;AAAA,EACnB,cAAA,EAAgB,KAAA;AAAA,EAChB,4BAAA,EAA8B,mBAAA;AAAA,EAC9B,iBAAA,EAAmB,QAAA;AAAA,EACnB,iBAAA,EAAmB,QAAA;AAAA,EACnB,qBAAA,EAAuB,YAAA;AAAA,EACvB,4BAAA,EAA8B,mBAAA;AAAA,EAC9B,sBAAA,EAAwB,aAAA;AAAA,EACxB,sBAAA,EAAwB,aAAA;AAAA,EACxB,kBAAA,EAAoB,SAAA;AAAA,EACpB,kBAAA,EAAoB,SAAA;AAAA,EACpB,iBAAA,EAAmB,QAAA;AAAA,EACnB,uBAAA,EAAyB,UAAA;AAAA,EACzB,mBAAA,EAAqB,UAAA;AAAA,EACrB,eAAA,EAAiB,MAAA;AAAA,EACjB,oBAAA,EAAsB;AACxB,CAAA;;AChIA,MAAM,QAAA,GAAW,OAAO,SAAA,CAAU,QAAA;AAClC,MAAM,cAAc,MAAA,CAAO,WAAA;AAEpB,SAAS,cAAc,KAAA,EAAiC;AAC7D,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,WAAA;AAChC,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,MAAA;AAE3B,EAAA,MAAM,gBAAgB,OAAO,KAAA;AAE7B,EAAA,QAAQ,aAAA;AAAe,IACrB,KAAK,SAAA;AAAW,MAAA,OAAO,SAAA;AAAA,IACvB,KAAK,QAAA;AAAU,MAAA,OAAO,QAAA;AAAA,IACtB,KAAK,QAAA;AAAU,MAAA,OAAO,QAAA;AAAA,IACtB,KAAK,QAAA;AAAU,MAAA,OAAO,QAAA;AAAA,IACtB,KAAK,QAAA;AAAU,MAAA,OAAO,QAAA;AAAA,IACtB,KAAK,UAAA;AAAY,MAAA,OAAO,gBAAgB,KAAgC,CAAA;AAAA,IACxE,KAAK,QAAA;AAAU,MAAA,OAAO,cAAc,KAAe,CAAA;AAAA,IACnD;AAAS,MAAA,OAAO,IAAA;AAAA;AAEpB;AAEA,SAAS,gBAAgB,EAAA,EAAuC;AAC9D,EAAA,MAAM,QAAA,GAAW,GAAG,QAAA,EAAS;AAE7B,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC7B,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,IAAI,yBAAyB,IAAA,CAAK,QAAQ,KAAK,aAAA,CAAc,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC3E,IAAA,OAAO,wBAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC7B,IAAA,OAAO,eAAA;AAAA,EACT;AAEA,EAAA,IAAI,iBAAiB,IAAA,CAAK,QAAQ,KAAK,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC3D,IAAA,OAAO,mBAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,GAAG,WAAA,EAAa,IAAA;AACjC,EAAA,IAAI,QAAA,KAAa,iBAAiB,OAAO,eAAA;AACzC,EAAA,IAAI,QAAA,KAAa,qBAAqB,OAAO,mBAAA;AAC7C,EAAA,IAAI,QAAA,KAAa,0BAA0B,OAAO,wBAAA;AAElD,EAAA,OAAO,UAAA;AACT;AAEA,SAAS,cAAc,GAAA,EAAuB;AAC5C,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,aAAa,GAAG,CAAA;AAEnC,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,UAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,WAAW,WAAA,IAAe,MAAA,CAAO,YAAY,MAAA,CAAO,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5E,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,QAAQ,QAAA,IAAY,QAAA,IAAY,OAAO,OAAO,GAAA,CAAI,WAAW,UAAA,EAAY;AAClF,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AACjB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,cAAA,CAAe,GAAG,CAAA,EAAG;AACvB,IAAA,OAAO,cAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAQ,iBAAA,EAAmB;AAC7B,IAAA,MAAM,SAAA,GAAa,IAAY,WAAW,CAAA;AAC1C,IAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,MAAA,OAAO,UAAU,WAAA,EAAY;AAAA,IAC/B;AAEA,IAAA,MAAM,OAAO,GAAA,CAAI,WAAA;AACjB,IAAA,IAAI,IAAA,IAAQ,SAAS,MAAA,EAAQ;AAC3B,MAAA,MAAM,WAAW,IAAA,CAAK,IAAA;AACtB,MAAA,IAAI,QAAA,IAAY,aAAa,QAAA,EAAU;AACrC,QAAA,OAAO,SAAS,WAAA,EAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EAEF;AAEA,EAAA,IAAI,YAAA,CAAa,GAAG,CAAA,EAAG;AACrB,IAAA,OAAO,SAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAA,CAAU,GAAG,CAAA,EAAG;AAClB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AACjB,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,SAAS,GAAA,EAAmB;AACnC,EAAA,OAAO,QAAQ,IAAA,IACb,OAAO,QAAQ,QAAA,IACf,OAAO,IAAI,IAAA,KAAS,UAAA;AACxB;AAEA,SAAS,eAAe,GAAA,EAAmB;AACzC,EAAA,OAAO,GAAA,KAAQ,IAAA,IACb,OAAO,GAAA,KAAQ,YACf,OAAO,GAAA,CAAI,EAAA,KAAO,UAAA,IAClB,OAAO,GAAA,CAAI,IAAA,KAAS,UAAA,IACpB,OAAO,IAAI,cAAA,KAAmB,UAAA;AAClC;AAEA,SAAS,aAAa,GAAA,EAAmB;AACvC,EAAA,IAAI,OAAO,WAAA,KAAgB,WAAA,EAAa,OAAO,KAAA;AAC/C,EAAA,OAAO,GAAA,YAAe,WAAA;AACxB;AAEA,SAAS,UAAU,GAAA,EAAmB;AACpC,EAAA,IAAI,OAAO,IAAA,KAAS,WAAA,EAAa,OAAO,KAAA;AACxC,EAAA,OAAO,GAAA,YAAe,IAAA;AACxB;AAEA,SAAS,SAAS,GAAA,EAAmB;AACnC,EAAA,IAAI,OAAO,UAAA,KAAe,WAAA,IAAe,GAAA,KAAQ,YAAY,OAAO,IAAA;AACpE,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,GAAA,KAAQ,QAAQ,OAAO,IAAA;AAC5D,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,GAAA,KAAQ,QAAQ,OAAO,IAAA;AAC5D,EAAA,IAAI,OAAO,IAAA,KAAS,WAAA,IAAe,GAAA,KAAQ,MAAM,OAAO,IAAA;AACxD,EAAA,OAAO,KAAA;AACT;;ACvIA,MAAM,mBAAmB,OAAA,CAAQ,SAAA;AACjC,MAAM,mBAAmB,OAAA,CAAQ,SAAA;AACjC,MAAM,eAAe,GAAA,CAAI,SAAA;AACzB,MAAM,eAAe,GAAA,CAAI,SAAA;AACzB,MAAM,uBAAuB,WAAA,CAAY,SAAA;AACzC,MAAM,oBAAoB,QAAA,CAAS,SAAA;AACnC,MAAM,0BAAA,GAA6B,OAAO,iBAAA,KAAsB,WAAA,GAAc,kBAAkB,SAAA,GAAY,IAAA;AAErG,SAAS,gBAAgB,KAAA,EAAiC;AAC/D,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,YAAiB,OAAA,IAAW,UAAA,CAAW,KAAK,CAAA,EAAG;AACjD,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,GAAA,IAAQ,KAAA,CAAc,SAAA,KAAc,YAAA,EAAc;AACrE,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,GAAA,IAAQ,KAAA,CAAc,SAAA,KAAc,YAAA,EAAc;AACrE,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,OAAA,IAAY,KAAA,CAAc,SAAA,KAAc,gBAAA,EAAkB;AAC7E,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,OAAA,IAAY,KAAA,CAAc,SAAA,KAAc,gBAAA,EAAkB;AAC7E,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,WAAA,IAAgB,KAAA,CAAc,SAAA,KAAc,oBAAA,EAAsB;AACrF,MAAA,OAAO,aAAA;AAAA,IACT;AAEA,IAAA,IAAI,0BAAA,KAA+B,KAAA,YAAiB,iBAAA,IAAsB,KAAA,CAAc,cAAc,0BAAA,CAAA,EAA6B;AACjI,MAAA,OAAO,mBAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,YAAiB,QAAA,IAAa,KAAA,CAAc,SAAA,KAAc,iBAAA,EAAmB;AAC/E,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,KAAK,CAAA,EAAG;AAClB,MAAA,OAAO,OAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,WAAW,KAAA,EAAqB;AACvC,EAAA,OAAO,KAAA,KAAU,IAAA,KACd,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU,UAAA,CAAA,IAC/C,OAAO,KAAA,CAAM,IAAA,KAAS,UAAA;AAC1B;AAEA,SAAS,QAAQ,KAAA,EAAqB;AACpC,EAAA,IAAI;AAGF,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,UAAA,EAAY;AAC5D,MAAA,OAAO,KAAA;AAAA,IACT;AAIA,IAAA,IAAI,KAAA,CAAM,EAAC,EAAG,KAA0B,CAAA;AAIxC,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,wBAAA,CAAyB,KAAA,EAAO,OAAO,WAAW,CAAA;AAC5E,IAAA,IAAI,cAAc,CAAC,UAAA,CAAW,YAAA,IAAgB,UAAA,CAAW,UAAU,OAAA,EAAS;AAC1E,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,SAAS,kBAAkB,KAAA,EAA6B;AAC7D,EAAA,IAAI,CAAC,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,EAAG;AAC9B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA;AACzC,EAAA,MAAM,QAAA,GAAW,OAAO,WAAA,EAAa,IAAA;AAErC,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,WAAA;AAAa,MAAA,OAAO,WAAA;AAAA,IACzB,KAAK,YAAA;AAAc,MAAA,OAAO,YAAA;AAAA,IAC1B,KAAK,mBAAA;AAAqB,MAAA,OAAO,mBAAA;AAAA,IACjC,KAAK,YAAA;AAAc,MAAA,OAAO,YAAA;AAAA,IAC1B,KAAK,aAAA;AAAe,MAAA,OAAO,aAAA;AAAA,IAC3B,KAAK,YAAA;AAAc,MAAA,OAAO,YAAA;AAAA,IAC1B,KAAK,aAAA;AAAe,MAAA,OAAO,aAAA;AAAA,IAC3B,KAAK,cAAA;AAAgB,MAAA,OAAO,cAAA;AAAA,IAC5B,KAAK,cAAA;AAAgB,MAAA,OAAO,cAAA;AAAA,IAC5B,KAAK,eAAA;AAAiB,MAAA,OAAO,eAAA;AAAA,IAC7B,KAAK,gBAAA;AAAkB,MAAA,OAAO,gBAAA;AAAA,IAC9B;AAAS,MAAA,OAAO,IAAA;AAAA;AAEpB;;AC7FA,IAAI,SAAA,GAA4C,IAAA;AAChD,IAAI,YAAA,GAAe,IAAA;AAEZ,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,WAAA;AAChC,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,MAAA;AAE3B,EAAA,MAAM,aAAA,GAAgB,iBAAiB,KAAK,CAAA;AAC5C,EAAA,IAAI,eAAe,OAAO,aAAA;AAE1B,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,YAAA,IAAgB,SAAA,EAAW;AAC1D,IAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,CAAI,KAAK,CAAA;AAClC,IAAA,IAAI,QAAQ,OAAO,MAAA;AAAA,EACrB;AAEA,EAAA,IAAI,IAAA,GAAO,cAAc,KAAK,CAAA;AAE9B,EAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,KAAS,QAAA,EAAU;AAC9B,IAAA,MAAM,UAAA,GAAa,gBAAgB,KAAK,CAAA;AACxC,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,IAAA,GAAO,UAAA;AAAA,IACT,CAAA,MAAO;AACL,MAAA,MAAM,SAAA,GAAY,kBAAkB,KAAK,CAAA;AACzC,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,IAAA,GAAO,SAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,aAAA,CAAc,KAAK,CAAA,IAAK,IAAA,IAAS,QAAA;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,YAAA,IAAgB,IAAA,EAAM;AACrD,IAAA,IAAI,CAAC,SAAA,EAAW,SAAA,mBAAY,IAAI,OAAA,EAAQ;AACxC,IAAA,SAAA,CAAU,GAAA,CAAI,OAAO,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,IAAA,IAAQ,QAAA;AACjB;AAsFA,SAAS,iBAAiB,KAAA,EAA+B;AACvD,EAAA,MAAM,OAAO,OAAO,KAAA;AACpB,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAEA,SAAS,cAAc,KAAA,EAA6B;AAClD,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAO,WAAW,CAAA;AAC5C,IAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,MAAA,OAAO,YAAY,WAAA,EAAY;AAAA,IACjC;AAEA,IAAA,IAAI,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,KAAgB,MAAA,EAAQ;AACrD,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,IAAA;AACnC,MAAA,IAAI,QAAA,IAAY,aAAa,QAAA,EAAU;AACrC,QAAA,OAAO,SAAS,WAAA,EAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,IAAA;AACT;;AC3KO,SAAS,cAAA,CACd,KAAA,EACA,MAAA,EACA,OAAA,GAA6B,EAAC,EACZ;AAClB,EAAA,MAAM,SAA4B,EAAC;AACnC,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,IAAA,EAAM,QAAQ,IAAA,IAAQ,EAAA;AAAA,IACtB,MAAA,EAAQ,QAAQ,MAAA,IAAU,IAAA;AAAA,IAC1B,MAAA,EAAQ,QAAQ,MAAA,IAAU,KAAA;AAAA,IAC1B,OAAA,EAAS,QAAQ,OAAA,IAAW;AAAA,GAC9B;AAEA,EAAA,aAAA,CAAc,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AAE5C,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,OAAO,MAAA,KAAW,CAAA;AAAA,IACzB;AAAA,GACF;AACF;AAEA,SAAS,aAAA,CACP,KAAA,EACA,MAAA,EACA,OAAA,EACA,MAAA,EACM;AACN,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAE9B,IAAA,MAAM,UAAA,GAAa,WAAW,KAAK,CAAA;AACnC,IAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,QAAQ,IAAA,IAAQ,MAAA;AAAA,QACtB,QAAA,EAAU,MAAA;AAAA,QACV,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,CAAA,eAAA,EAAkB,MAAM,CAAA,WAAA,EAAc,UAAU,CAAA,CAAA;AAAA,OAC1D,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AAEhC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,QAAQ,IAAA,IAAQ,MAAA;AAAA,QACtB,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,WAAW,KAAK,CAAA;AAAA,QACxB,OAAA,EAAS,CAAA,wBAAA,EAA2B,UAAA,CAAW,KAAK,CAAC,CAAA,CAAA;AAAA,OACtD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,OAAO,CAAC,CAAA;AAC3B,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,KAAU;AAC7B,QAAA,aAAA;AAAA,UACE,IAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,GAAG,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAA,EAAI;AAAA,UAChD;AAAA,SACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AAE/C,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,IAAA,EAAM,QAAQ,IAAA,IAAQ,MAAA;AAAA,QACtB,QAAA,EAAU,QAAA;AAAA,QACV,MAAA,EAAQ,WAAW,KAAK,CAAA;AAAA,QACxB,OAAA,EAAS,CAAA,yBAAA,EAA4B,UAAA,CAAW,KAAK,CAAC,CAAA,CAAA;AAAA,OACvD,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,GAAA,GAAM,KAAA;AACZ,IAAA,MAAM,SAAA,GAAY,MAAA;AAGlB,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,EAAG;AACxC,QAAA,IAAI,EAAE,OAAO,GAAA,CAAA,EAAM;AACjB,UAAA,MAAA,CAAO,IAAA,CAAK;AAAA,YACV,IAAA,EAAM,QAAQ,IAAA,GAAO,CAAA,EAAG,QAAQ,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAAA,YAChD,QAAA,EAAU,OAAO,SAAA,CAAU,GAAG,CAAA,KAAM,QAAA,GAAW,SAAA,CAAU,GAAG,CAAA,GAAI,UAAA,CAAW,SAAA,CAAU,GAAG,CAAC,CAAA;AAAA,YACzF,MAAA,EAAQ,WAAA;AAAA,YACR,OAAA,EAAS,8BAA8B,GAAG,CAAA,CAAA;AAAA,WAC3C,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAGA,IAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,EAAG;AAClC,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,MAAM,WAAA,GAAc,UAAU,GAAG,CAAA;AACjC,QAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,UAAA,aAAA;AAAA,YACE,IAAI,GAAG,CAAA;AAAA,YACP,WAAA;AAAA,YACA,EAAE,GAAG,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,IAAA,GAAO,CAAA,EAAG,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA,EAAI;AAAA,YAClE;AAAA,WACF;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAW,QAAQ,MAAA,EAAQ;AACzB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,IAAA,EAAM,QAAQ,IAAA,GAAO,CAAA,EAAG,QAAQ,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAAA,UAChD,QAAA,EAAU,WAAA;AAAA,UACV,MAAA,EAAQ,UAAA,CAAW,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,UAC3B,OAAA,EAAS,wBAAwB,GAAG,CAAA,CAAA;AAAA,SACrC,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,eAAA,CACd,QACA,OAAA,EACsC;AACtC,EAAA,OAAO,CAAC,KAAA,KAAmB,cAAA,CAAe,KAAA,EAAO,QAAQ,OAAO,CAAA;AAClE;;;;"}