{"version":3,"file":"ng2-logger-browser.mjs","sources":["../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/ng2-logger.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/lib/index.ts","../../../tmp-libs-for-dist/ng2-logger/projects/ng2-logger/src/ng2-logger-browser.ts"],"sourcesContent":["//#region imports\n/* */                                  \nimport * as stringify from 'json-stringify-safe';\nimport { Helpers, json5, UtilsOs } from 'tnp-core/browser';\n\n/* */\n/* */\n  \n//#endregion\n\n//#region level\nexport enum Level {\n  DATA,\n  INFO,\n  WARN,\n  ERROR,\n  SUCCESS,\n  TASK_STARTED,\n  TASK_DONE,\n}\n//#endregion\n\n//#region constants\nexport const LevelKey = {\n  [Level.DATA]: 'data',\n  [Level.INFO]: 'info',\n  [Level.WARN]: 'warn',\n  [Level.ERROR]: 'error',\n  [Level.SUCCESS]: 'success',\n  [Level.TASK_STARTED]: 'taskstarted',\n  [Level.TASK_DONE]: 'taskdone',\n};\n\nexport const LevelOrder = [\n  LevelKey[Level.DATA],\n  LevelKey[Level.TASK_STARTED],\n  LevelKey[Level.TASK_DONE],\n  LevelKey[Level.INFO],\n  LevelKey[Level.SUCCESS],\n  LevelKey[Level.WARN],\n  LevelKey[Level.ERROR],\n];\n\nconst levelIcon = {\n  [Level.INFO]: 'ℹ️',\n  [Level.ERROR]: '❌',\n  [Level.WARN]: '⚠️',\n  [Level.SUCCESS]: '✅',\n  [Level.TASK_STARTED]: '🚀',\n  [Level.TASK_DONE]: '🏁',\n  [Level.DATA]: '',\n};\n\n//#endregion\n\n//#region log namespace\nexport namespace Log {\n  //#region internal state\n\n  const instances = new Map<string, Logger>();\n\n  let originalConsole: Partial<typeof console> | null = null;\n  let permanentlyDisabled = false;\n\n  const consoleMethods = ['log', 'info', 'warn', 'error'] as const;\n\n  let globalLevel: Level | null = null;\n\n  //#endregion\n\n  //#region settings\n\n  export const settings = {\n    mutedModules: [] as string[],\n    showTimestamp: false,\n  };\n\n  //#endregion\n\n  //#region helpers\n\n  const isMutedModule = (moduleName: string): boolean => {\n    if (settings.mutedModules.length === 0) return false;\n    return !Helpers.contain(settings.mutedModules, moduleName);\n  };\n\n  //#endregion\n\n  //#region public api\n\n  export const create = (moduleName: string, ...level: Level[]): Logger => {\n    const log = new Logger(\n      moduleName,\n      getRandomColor(),\n      level,\n      isMutedModule(moduleName),\n      undefined,\n    );\n\n    instances.set(moduleName, log);\n    return log;\n  };\n\n  export const setGlobalLevel = (level: Level) => {\n    globalLevel = level;\n  };\n\n  export const onlyLevel = (...levels: Level[]): void => {\n    instances.forEach(instance => {\n      instance.allowed = levels;\n    });\n  };\n\n  export const onlyModules = (...modules: (string | RegExp)[]): void => {\n    instances.forEach(instance => {\n      const moduleName = instance.moduleName;\n\n      const isAllowed = modules.some(m => {\n        if (typeof m === 'string') {\n          return m === moduleName;\n        }\n        if (m instanceof RegExp) {\n          return m.test(moduleName);\n        }\n        return false;\n      });\n\n      // mute if NOT allowed\n      instance.isMuted = !isAllowed;\n    });\n  };\n\n  export const disableAllLogsPermanetly = () => {\n    if (permanentlyDisabled) return;\n\n    if (!originalConsole) {\n      originalConsole = {};\n      consoleMethods.forEach(m => {\n        originalConsole![m] = console[m];\n      });\n    }\n\n    consoleMethods.forEach(m => {\n      console[m] = () => {};\n    });\n\n    permanentlyDisabled = true;\n  };\n\n  export const disableAllLogs = () => {\n    if (permanentlyDisabled) return;\n\n    if (!originalConsole) {\n      originalConsole = {};\n      consoleMethods.forEach(m => {\n        originalConsole![m] = console[m];\n      });\n    }\n\n    consoleMethods.forEach(m => {\n      console[m] = () => {};\n    });\n  };\n\n  export const enableAllLogs = () => {\n    if (permanentlyDisabled) return;\n    if (!originalConsole) return;\n\n    consoleMethods.forEach(m => {\n      if (originalConsole && originalConsole[m]) {\n        console[m] = originalConsole[m] as any;\n      }\n    });\n  };\n\n  //#endregion\n\n  //#region logger class\n\n  class Logger {\n    constructor(\n      public readonly moduleName: string,\n      public color: string,\n      public allowed: Level[],\n      public isMuted: boolean,\n      /**\n       * Set how much characters in terminal/console\n       * your module name should take\n       */\n      public moduleWidth: number | undefined,\n    ) {\n      this.createLevelMethod(Level.DATA);\n      this.createLevelMethod(Level.DATA, 'd');\n      this.createLevelMethod(Level.INFO);\n      this.createLevelMethod(Level.INFO, 'i');\n      this.createLevelMethod(Level.WARN);\n      this.createLevelMethod(Level.WARN, 'w');\n      this.createLevelMethod(Level.ERROR);\n      this.createLevelMethod(Level.ERROR, 'er');\n      this.createLevelMethod(Level.SUCCESS);\n      this.createLevelMethod(Level.TASK_STARTED);\n      this.createLevelMethod(Level.TASK_DONE);\n    }\n\n    declare data: (message: string, ...data: any[]) => void;\n\n    declare d: (message: string, ...data: any[]) => void;\n\n    declare info: (message: string, ...data: any[]) => void;\n\n    declare i: (message: string, ...data: any[]) => void;\n\n    declare warn: (message: string, ...data: any[]) => void;\n\n    declare w: (message: string, ...data: any[]) => void;\n\n    declare error: (message: string, ...data: any[]) => void;\n\n    declare er: (message: string, ...data: any[]) => void;\n\n    public setLevel(l: Level) {\n      this.allowed = [l];\n      return this;\n    }\n\n    public mute() {\n      this.isMuted = true;\n      return this;\n    }\n\n    public logOnlyWhen(expression: (() => boolean) | boolean): void {\n      this.isMuted =\n        typeof expression === 'function' ? !expression() : !expression;\n    }\n\n    private createLevelMethod(level: Level, overrideMethodName?: string) {\n      const methodName = overrideMethodName\n        ? overrideMethodName\n        : LevelKey[level];\n\n      (this as any)[methodName] = (message: string, ...data: any[]) => {\n        if (this.isMuted) return this;\n\n        if (globalLevel !== null && level < globalLevel) {\n          return this;\n        }\n\n        if (this.allowed.length === 0 || Helpers.contain(this.allowed, level)) {\n          displayMsg(\n            message,\n            data.length === 0 ? undefined : data,\n            this.moduleName,\n            this.color,\n            level,\n            this.moduleWidth,\n            permanentlyDisabled,\n          );\n        }\n\n        return this;\n      };\n    }\n  }\n\n  //#endregion\n}\n//#endregion\n\n//#region get random color\nconst getRandomColor = (): string => {\n/* */\n/* */\n/* */\n/* */\n  \n\n  const letters = '0123456789ABCDEF';\n  return (\n    '#' +\n    Array.from({ length: 6 })\n      .map(() => letters[Math.floor(Math.random() * 16)])\n      .join('')\n  );\n};\n//#endregion\n\n//#region console log\nconst consoleLog = (data: string, level: Level): void => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n};\n//#endregion\n\n//#region display message\nconst displayMsg = (\n  message: string,\n  params: any[] | undefined,\n  moduleName: string,\n  moduleColor: string,\n  level: Level,\n  moduleWidth: number | undefined,\n  permanentlyDisabled: boolean,\n): void => {\n  if (permanentlyDisabled) return;\n\n  if (message) {\n    message = `${levelIcon[level]}  ${message?.toString()}`;\n  } else {\n    message = levelIcon[level];\n  }\n\n  const timestamp = Log.settings.showTimestamp\n    ? `[${new Date().toISOString()}] `\n    : '';\n\n  if (moduleWidth) {\n    const diff = moduleWidth - moduleName.length;\n    if (diff > 0) {\n      for (let i = 0; i < diff; i++) {\n        moduleName += ' ';\n      }\n    }\n  }\n\n  //#region @browser\n  if (UtilsOs.isBrowser) {\n    let levelColor = 'gray';\n\n    switch (level) {\n      case Level.INFO:\n        levelColor = 'deepskyblue';\n        break;\n      case Level.WARN:\n        levelColor = 'orange';\n        break;\n      case Level.ERROR:\n        levelColor = 'red';\n        break;\n      case Level.SUCCESS:\n        levelColor = 'green';\n        break;\n      case Level.TASK_STARTED:\n        levelColor = 'purple';\n        break;\n      case Level.TASK_DONE:\n        levelColor = 'mediumseagreen';\n        break;\n      case Level.DATA:\n      default:\n        levelColor = 'gray';\n    }\n\n    const moduleStyle = `background:${moduleColor};color:white;padding:2px 4px;border-radius:2px;`;\n\n    const messageStyle = `color:${levelColor};font-weight:${level === Level.ERROR ? 'bold' : 'normal'};`;\n\n    console.log(\n      `%c ${moduleName} %c ${timestamp}${message}`,\n      moduleStyle,\n      messageStyle,\n      ...(params ?? []),\n    );\n  }\n  //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n  \n};\n//#endregion","export * from './ng2-logger';\n/* */                                    ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAKA;AACA;AAEA;AAEA;IACY;AAAZ,CAAA,UAAY,KAAK,EAAA;AACf,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,KAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,KAAA,CAAA,KAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACZ,IAAA,KAAA,CAAA,KAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACX,CAAC,EARW,KAAK,KAAL,KAAK,GAAA,EAAA,CAAA,CAAA;AASjB;AAEA;AACO,MAAM,QAAQ,GAAG;AACtB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;AACpB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;AACpB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;AACpB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACtB,IAAA,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS;AAC1B,IAAA,CAAC,KAAK,CAAC,YAAY,GAAG,aAAa;AACnC,IAAA,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU;;AAGxB,MAAM,UAAU,GAAG;AACxB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AAC5B,IAAA,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;AACzB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AACvB,IAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,IAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;;AAGvB,MAAM,SAAS,GAAG;AAChB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;AAClB,IAAA,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;AAClB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;AAClB,IAAA,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AACpB,IAAA,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI;AAC1B,IAAA,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI;AACvB,IAAA,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;CACjB;AAED;AAEA;AACM,IAAW;AAAjB,CAAA,UAAiB,GAAG,EAAA;;AAGlB,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB;IAE3C,IAAI,eAAe,GAAmC,IAAI;IAC1D,IAAI,mBAAmB,GAAG,KAAK;IAE/B,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU;IAEhE,IAAI,WAAW,GAAiB,IAAI;;;AAMvB,IAAA,GAAA,CAAA,QAAQ,GAAG;AACtB,QAAA,YAAY,EAAE,EAAc;AAC5B,QAAA,aAAa,EAAE,KAAK;KACrB;;;AAMD,IAAA,MAAM,aAAa,GAAG,CAAC,UAAkB,KAAa;AACpD,QAAA,IAAI,IAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AACpD,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAA,CAAA,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;AAC5D,IAAA,CAAC;;;AAMY,IAAA,GAAA,CAAA,MAAM,GAAG,CAAC,UAAkB,EAAE,GAAG,KAAc,KAAY;AACtE,QAAA,MAAM,GAAG,GAAG,IAAI,MAAM,CACpB,UAAU,EACV,cAAc,EAAE,EAChB,KAAK,EACL,aAAa,CAAC,UAAU,CAAC,EACzB,SAAS,CACV;AAED,QAAA,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;AAC9B,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC;AAEY,IAAA,GAAA,CAAA,cAAc,GAAG,CAAC,KAAY,KAAI;QAC7C,WAAW,GAAG,KAAK;AACrB,IAAA,CAAC;AAEY,IAAA,GAAA,CAAA,SAAS,GAAG,CAAC,GAAG,MAAe,KAAU;AACpD,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,YAAA,QAAQ,CAAC,OAAO,GAAG,MAAM;AAC3B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAEY,IAAA,GAAA,CAAA,WAAW,GAAG,CAAC,GAAG,OAA4B,KAAU;AACnE,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU;YAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAG;AACjC,gBAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;oBACzB,OAAO,CAAC,KAAK,UAAU;gBACzB;AACA,gBAAA,IAAI,CAAC,YAAY,MAAM,EAAE;AACvB,oBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3B;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC;;AAGF,YAAA,QAAQ,CAAC,OAAO,GAAG,CAAC,SAAS;AAC/B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAEY,GAAA,CAAA,wBAAwB,GAAG,MAAK;AAC3C,QAAA,IAAI,mBAAmB;YAAE;QAEzB,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,EAAE;AACpB,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;gBACzB,eAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,MAAK,EAAE,CAAC;AACvB,QAAA,CAAC,CAAC;QAEF,mBAAmB,GAAG,IAAI;AAC5B,IAAA,CAAC;IAEY,GAAA,CAAA,cAAc,GAAG,MAAK;AACjC,QAAA,IAAI,mBAAmB;YAAE;QAEzB,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,EAAE;AACpB,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;gBACzB,eAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,MAAK,EAAE,CAAC;AACvB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAEY,GAAA,CAAA,aAAa,GAAG,MAAK;AAChC,QAAA,IAAI,mBAAmB;YAAE;AACzB,QAAA,IAAI,CAAC,eAAe;YAAE;AAEtB,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AACzB,YAAA,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;gBACzC,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAQ;YACxC;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;;;AAMD,IAAA,MAAM,MAAM,CAAA;AACV,QAAA,WAAA,CACkB,UAAkB,EAC3B,KAAa,EACb,OAAgB,EAChB,OAAgB;AACvB;;;AAGG;QACI,WAA+B,EAAA;YARtB,IAAA,CAAA,UAAU,GAAV,UAAU;YACnB,IAAA,CAAA,KAAK,GAAL,KAAK;YACL,IAAA,CAAA,OAAO,GAAP,OAAO;YACP,IAAA,CAAA,OAAO,GAAP,OAAO;YAKP,IAAA,CAAA,WAAW,GAAX,WAAW;AAElB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;QACzC;AAkBO,QAAA,QAAQ,CAAC,CAAQ,EAAA;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAClB,YAAA,OAAO,IAAI;QACb;QAEO,IAAI,GAAA;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,OAAO,IAAI;QACb;AAEO,QAAA,WAAW,CAAC,UAAqC,EAAA;AACtD,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,OAAO,UAAU,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU;QAClE;QAEQ,iBAAiB,CAAC,KAAY,EAAE,kBAA2B,EAAA;YACjE,MAAM,UAAU,GAAG;AACjB,kBAAE;AACF,kBAAE,QAAQ,CAAC,KAAK,CAAC;YAElB,IAAY,CAAC,UAAU,CAAC,GAAG,CAAC,OAAe,EAAE,GAAG,IAAW,KAAI;gBAC9D,IAAI,IAAI,CAAC,OAAO;AAAE,oBAAA,OAAO,IAAI;gBAE7B,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,WAAW,EAAE;AAC/C,oBAAA,OAAO,IAAI;gBACb;AAEA,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AACrE,oBAAA,UAAU,CACR,OAAO,EACP,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,IAAI,EACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EACV,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,mBAAmB,CACpB;gBACH;AAEA,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC;QACH;AACD;;AAGH,CAAC,EAjNgB,GAAG,KAAH,GAAG,GAAA,EAAA,CAAA,CAAA;AAkNpB;AAEA;AACA,MAAM,cAAc,GAAG,MAAa;;;;;IAOlC,MAAM,OAAO,GAAG,kBAAkB;AAClC,IAAA,QACE,GAAG;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACrB,aAAA,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,aAAA,IAAI,CAAC,EAAE,CAAC;AAEf,CAAC;AACD;AAEA;AACA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAY,KAAU;;;;;;;;;AAUxD,CAAC;AACD;AAEA;AACA,MAAM,UAAU,GAAG,CACjB,OAAe,EACf,MAAyB,EACzB,UAAkB,EAClB,WAAmB,EACnB,KAAY,EACZ,WAA+B,EAC/B,mBAA4B,KACpB;AACR,IAAA,IAAI,mBAAmB;QAAE;IAEzB,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,GAAG,CAAA,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,OAAO,EAAE,QAAQ,EAAE,CAAA,CAAE;IACzD;SAAO;AACL,QAAA,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;UAC3B,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA,EAAA;UAC5B,EAAE;IAEN,IAAI,WAAW,EAAE;AACf,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC,MAAM;AAC5C,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC7B,UAAU,IAAI,GAAG;YACnB;QACF;IACF;;AAGA,IAAA,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,IAAI,UAAU,GAAG,MAAM;QAEvB,QAAQ,KAAK;YACX,KAAK,KAAK,CAAC,IAAI;gBACb,UAAU,GAAG,aAAa;gBAC1B;YACF,KAAK,KAAK,CAAC,IAAI;gBACb,UAAU,GAAG,QAAQ;gBACrB;YACF,KAAK,KAAK,CAAC,KAAK;gBACd,UAAU,GAAG,KAAK;gBAClB;YACF,KAAK,KAAK,CAAC,OAAO;gBAChB,UAAU,GAAG,OAAO;gBACpB;YACF,KAAK,KAAK,CAAC,YAAY;gBACrB,UAAU,GAAG,QAAQ;gBACrB;YACF,KAAK,KAAK,CAAC,SAAS;gBAClB,UAAU,GAAG,gBAAgB;gBAC7B;YACF,KAAK,KAAK,CAAC,IAAI;AACf,YAAA;gBACE,UAAU,GAAG,MAAM;;AAGvB,QAAA,MAAM,WAAW,GAAG,CAAA,WAAA,EAAc,WAAW,iDAAiD;AAE9F,QAAA,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,UAAU,CAAA,aAAA,EAAgB,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG;QAEpG,OAAO,CAAC,GAAG,CACT,CAAA,GAAA,EAAM,UAAU,CAAA,IAAA,EAAO,SAAS,CAAA,EAAG,OAAO,CAAA,CAAE,EAC5C,WAAW,EACX,YAAY,EACZ,IAAI,MAAM,IAAI,EAAE,CAAC,CAClB;IACH;;;;;;;;;;;;;;;AAiBF,CAAC;AACD;;AClYA;;ACDA;;AAEG;;;;"}