{"version":3,"file":"tangential-core.mjs","sources":["../../../../projects/tangential/core/src/lib/data/selection-list.ts","../../../../projects/tangential/core/src/lib/lang/array-util.ts","../../../../projects/tangential/core/src/lib/lang/guard/guard.ts","../../../../projects/tangential/core/src/lib/lang/coded-error.ts","../../../../projects/tangential/core/src/lib/lang/obj-map-util.ts","../../../../projects/tangential/core/src/lib/util/core-util.ts","../../../../projects/tangential/core/src/lib/lang/json-util.ts","../../../../projects/tangential/core/src/lib/lang/reactive-util.ts","../../../../projects/tangential/core/src/lib/lang/string-util.ts","../../../../projects/tangential/core/src/lib/media-type/app-environment.ts","../../../../projects/tangential/core/src/lib/util/generate-push-id.ts","../../../../projects/tangential/core/src/lib/message-bus/message-bus.ts","../../../../projects/tangential/core/src/lib/message-bus/logging/log-message.ts","../../../../projects/tangential/core/src/lib/message-bus/logging/logger.ts","../../../../projects/tangential/core/src/lib/message-bus/logging/console-logger.ts","../../../../projects/tangential/core/src/lib/message-bus/logging/bus-logger.ts","../../../../projects/tangential/core/src/lib/message-bus/navigation/navigation-message.ts","../../../../projects/tangential/core/src/lib/message-bus/application/application-message.ts","../../../../projects/tangential/core/src/lib/routing/route-info.ts","../../../../projects/tangential/core/src/lib/routing/ng-route-util.ts","../../../../projects/tangential/core/src/lib/time/time-unit.ts","../../../../projects/tangential/core/src/lib/util/hacks.ts","../../../../projects/tangential/core/src/lib/util/localization-util.ts","../../../../projects/tangential/core/src/lib/util/name-generator.ts","../../../../projects/tangential/core/src/lib/util/ng-util.ts","../../../../projects/tangential/core/src/lib/util/transform-util.ts","../../../../projects/tangential/core/src/lib/view/page.ts","../../../../projects/tangential/core/src/public-api.ts","../../../../projects/tangential/core/src/tangential-core.ts"],"sourcesContent":["export class SelectionEntry<T> {\n\n  constructor(public value: T, public selected: boolean = false, public disabled: boolean = false) {\n  }\n}\n\nexport class SelectionList<T> {\n  entries: SelectionEntry<T>[]\n\n  constructor(initialValues: T[] = [], selectAll: boolean = false, public keyField: string = '$key') {\n    this.entries = initialValues.map((v) => {\n      return new SelectionEntry(v, selectAll)\n    })\n  }\n\n  asIndexMap() {\n    const indices: { [key: string]: number } = {}\n    this.entries.forEach((entry, index) => {\n      indices[(entry.value as any)[this.keyField]] = index\n    })\n    return indices\n  }\n\n  select(values: T[]) {\n    const map = this.asIndexMap()\n    values.forEach((value: T) => {\n      const index: number = (map as any)[(value as any)[this.keyField]]\n      if (index || index === 0) {\n        this.entries[index].selected = true\n      }\n    })\n  }\n\n  disable(values: T[]) {\n    const map = this.asIndexMap()\n    values.forEach((value: T) => {\n      const index: number = (map as any)[(value as any)[this.keyField]]\n      if (index || index === 0) {\n        this.entries[index].disabled = true\n      }\n    })\n  }\n}\n","export class ArrayUtils {\n\n  static peek<T>(ary: T[]): T | undefined {\n    let v: T | undefined = undefined\n    if (ary && ary.length) {\n      v = ary[ary.length - 1]\n    }\n    return v\n  }\n}\n","export class Guard {\n  static isString(value: any | string): value is string {\n    return typeof value === 'string'\n  }\n}\n","export class CodedError extends Error {\n\n  constructor(message: string, public code: any) {\n    super(message)\n  }\n}\n","import {ObjMap} from './obj-map'\nexport class ObjMapUtil {\n\n  static fromKeyedEntityArray<V>(values: V[], keyField: string = '$key'): ObjMap<V> {\n    values = values || []\n    const m: ObjMap<V> = {}\n    for (let i = 0; i < values.length; i++) {\n      (m as any)[(values[i] as any)[keyField]] = values[i]\n    }\n    return m\n  }\n\n  static toArray<V>(map: ObjMap<V>): V[] {\n    return Object.keys(map).map((key) => {\n      return map[key]\n    })\n  }\n\n  static toKeyedEntityArray<V>(map: ObjMap<V>, keyField: string = '$key'): V[] {\n    return Object.keys(map).map((key) => {\n      const keyObj = {}; // semicolon actually required here.\n      (keyObj as any)[keyField] = key\n      return Object.assign({}, map[key], keyObj)\n    })\n  }\n\n  static toTruthMap<V>(map: ObjMap<V>): ObjMap<boolean> {\n    const result: ObjMap<boolean> = {}\n    Object.keys(map).forEach((key) => {\n      result[key] = true\n    })\n    return result\n  }\n\n  static addAll<V>(map: ObjMap<V>, mapB: ObjMap<V>, noOverwrite: boolean = false): ObjMap<V> {\n    map = map || {}\n    mapB = mapB || {}\n    Object.keys(mapB).forEach((key: string) => {\n      if (noOverwrite && map[key] !== undefined) {\n        throw new Error(`Key already exists on map, cannot replace: ${key}.`)\n      }\n      map[key] = mapB[key]\n    })\n    return map\n  }\n\n  static removeAll<V>(map: ObjMap<V>, mapB: ObjMap<V>) {\n    Object.keys(mapB).forEach((key: string) => {\n      if (map[key] !== undefined) {\n        delete map[key]\n      }\n    })\n  }\n\n  /**\n   * Remove the child fields from the provided map.\n   * @param map\n   * @param fields {string[]}\n   * @returns {ObjMap<V>}\n   */\n  static deleteValueFields<V>(map: ObjMap<V>, fields: string[] = ['$key']): ObjMap<V> {\n    map = map || {}\n    fields.forEach((fieldKey) => {\n      Object.keys(map).forEach((key) => {\n        delete (map as any)[key][fieldKey]\n      })\n    })\n    return map\n  }\n}\n","import {ObjMap} from '../lang/obj-map'\n\n\nexport interface MapEntry<T> { key: string, value: T\n}\n\nexport const ResolveVoid = undefined\n\nexport class ObjectUtil {\n\n\n  /**\n   * Null safe version of Object.keys.\n   * @param map\n   * @returns {string[]} The keys for the map, or an empty array if the argument provided is falsy.\n   */\n  static keys<T>(map: ObjMap<T>): string[] {\n    return Object.keys(map || {})\n  }\n\n  /**\n   * Provide a map of keys such that 'map[key]' provides a literal true value if the key is present, even if the value\n   * on the source map is falsy.\n   */\n  static toTruthMap(ary: string[]): ObjMap<boolean> {\n    const map = {}\n    ary.forEach(value => (map as any)[value] = true)\n    return map\n  }\n\n  /**\n   * Expand the map into an array of key-value pairs.\n   * @param {ObjMap<T extends object>} map\n   * @returns MapEntry<T>\n   */\n  static entries<T>(map: ObjMap<T> | any): MapEntry<T>[] {\n    const ret:MapEntry<T>[] =  Object.keys(map || {}).map((key) => {\n      return {key: key, value: map[key]}\n    })\n    return ret\n  }\n\n  /**\n   * Provide the values of the map.\n   * @param {ObjMap<T>} map\n   * @returns MapEntry<T>\n   */\n  static values<T>(map: ObjMap<T> | any): T[] {\n    return Object.keys(map || {}).map((key) => {\n      return map[key]\n    })\n  }\n\n  static isObject(value:any): boolean {\n    return (typeof value === 'object' || value.constructor === Object)\n  }\n\n  static isFunction(value:any): boolean {\n    return (typeof value === 'function' || value instanceof Function)\n  }\n\n  static isNullOrDefined(value:any): boolean {\n    return value === null || value === undefined\n  }\n\n  static exists(value:any): boolean {\n    return value !== null && value !== undefined\n  }\n\n  static assignDeep(target: any, ...sources: any[]): any {\n    target = target || {}\n    const L = sources.length\n    for (let i = 0; i < L; i++) {\n      const source = sources[i] || {}\n      Object.keys(source).forEach(key => {\n        const value = source[key]\n        if (value && ObjectUtil.isObject(value)) {\n          target[key] = ObjectUtil.assignDeep({}, target[key] || {}, value)\n        } else {\n          target[key] = value\n        }\n      })\n    }\n    return target\n  }\n\n\n  static removeNullish<T>(obj: T): T {\n    const cleanObj: T = <T>{}\n    Object.keys(obj as any).forEach((key) => {\n      const v = (obj as any)[key]\n      if (v !== null && v !== undefined) {\n        (cleanObj as any)[key] = v\n      }\n    })\n    return cleanObj\n  }\n\n}\n\nexport const cleanFirebaseMap = function <T>(firebaseList: ObjMap<T>, deep?: boolean): ObjMap<T> {\n  const result: ObjMap<T> = {}\n\n  Object.keys(firebaseList).forEach((key: string) => {\n    if (key[0] !== '$') {\n      if (deep && firebaseList[key] instanceof Object) {\n        result[key] = <any>cleanFirebaseMap(<any>firebaseList[key], true)\n      } else {\n        result[key] = firebaseList[key]\n      }\n    }\n  })\n  return result\n}\nexport const pathExists = (object: any, path: string): any => {\n  const parts = path.split('\\.')\n  let exists = true\n  let obj = object\n  for (let i = 0; i < parts.length; i++) {\n    obj = obj[parts[i]]\n    if (obj === undefined) {\n      exists = false\n      break\n    }\n  }\n  return exists\n}\n\nexport const ensureExists = (object: any, path: string, value: any = true): any => {\n  const parts = path.split('\\.')\n  let obj = object\n  for (let i = 0; i < parts.length - 1; i++) {\n    const key = parts[i]\n    if (obj[key] === undefined) {\n      obj[key] = {}\n    }\n    obj = obj[key]\n  }\n  const lastKey = parts[parts.length - 1]\n  if (obj[lastKey] === undefined) {\n    obj[lastKey] = value\n  }\n  return obj[lastKey]\n}\n\nexport const removeIfExists = (object: any, path: string): boolean => {\n  const parts = path.split('\\.')\n  let obj = object\n  let existed = true\n  for (let i = 0; i < parts.length - 1; i++) {\n    obj = obj[parts[i]]\n    if (obj === undefined) {\n      existed = false\n      break\n    }\n  }\n  if (existed) {\n    const lastKey = parts[parts.length - 1]\n    existed = obj[lastKey] !== undefined\n    if (existed) {\n      delete obj[lastKey]\n    }\n  }\n  return existed\n}\n\nexport const safe = (fn: () => any) => {\n  try {\n    return fn()\n  } catch (e) {\n    return null\n  }\n}\n\nexport const eachKey = <T extends {}>(objMap: T, fn: (arg?: T, key?: string) => any) => {\n  Object.keys(objMap).forEach((key: string) => {\n    fn((objMap as any)[key], key)\n  })\n}\n\n\nexport interface Duo<X, Y> {\n  x: X\n  y: Y\n}\n","import {MapEntry, ObjectUtil} from '../util/core-util'\nimport {ObjMap} from './obj-map'\n\n\nexport interface ToJson<T> {\n  toJson(withHiddenFields?: boolean): T\n}\n\n\nexport interface Jsonified<T, J extends ObjMap<any>> extends ToJson<J> {\n  getModel(): J\n\n\n}\n\nexport class JsonUtil {\n\n  static diff<T>(left: T, right: T): T {\n    const diff = <T>{}\n    let keys = ObjectUtil.keys(<any>left).concat(ObjectUtil.keys(<any>right))\n    keys = ObjectUtil.keys(ObjectUtil.toTruthMap(keys))\n    keys.forEach(key => {\n      const leftVal = (left as any)[key]\n      const rightVal = (right as any)[key]\n      if (!JsonUtil.areEqual(leftVal, rightVal)) {\n        (diff as any)[key] = true\n      }\n    })\n    return diff\n  }\n\n\n  private static areEqual(left:any, right:any): boolean {\n    let areEqual\n    if (left === right) {\n      areEqual = true\n    } else if (!left || !right) {\n      areEqual = false\n    } else if (ObjectUtil.isObject(left)) {\n      if (!ObjectUtil.isObject(right)) {\n        areEqual = false\n      } else {\n        areEqual = ObjectUtil.keys(JsonUtil.diff(left, right)).length === 0\n      }\n    }\n    return areEqual || false\n  }\n\n  static applyJsonToInstance<T, J extends ObjMap<any>>(instance: Jsonified<T, J>, json: J) {\n    const model = instance.getModel()\n    json = json || <any>{}\n    ObjectUtil.keys(model).forEach((key) => {\n      (instance as any)[key] = this.determineValue(json[key], model[key])\n    })\n  }\n\n  private static determineValue<T, J extends ObjMap<any>>(jsonValue: any, defaultValue: any): any {\n    let value = null\n    if (ObjectUtil.isNullOrDefined(jsonValue)) {\n      value = defaultValue\n    } else if (ObjectUtil.isObject(jsonValue)) {\n      value = ObjectUtil.assignDeep({}, defaultValue, jsonValue)\n    } else {\n      value = jsonValue\n    }\n    return value\n  }\n\n  static instanceToJson<T, J extends ObjMap<any>>(instance: Jsonified<T, J>, withHiddenFields?: boolean) {\n    const model = instance.getModel()\n    const json = <any>{}\n    ObjectUtil.keys(model).forEach((key) => {\n      if (withHiddenFields || JsonUtil.isLegalFirebaseKey(key)) {\n        const value = (instance as any)[key]\n        json[key] = value\n        if (value) {\n          if (ObjectUtil.isFunction(value['toJson'])) {\n            json[key] = value.toJson(withHiddenFields)\n          } else if (ObjectUtil.isObject(value)) {\n            json[key] = JsonUtil.mapToJson(value, withHiddenFields || false)\n          }\n        }\n      }\n    })\n    return json\n  }\n\n\n  static mapToJson<J extends object>(map: ObjMap<J>, withHiddenFields: boolean): ObjMap<J> {\n    const json:any = {}\n    // @ts-ignore Typescript is confused by the return type of ObjectUtil.entries.\n    ObjectUtil.entries(map).forEach((entry: MapEntry<J>) => {\n      let v: any = entry.value\n      if (v && v['toJson'] && ObjectUtil.isFunction(v['toJson'])) {\n        v = v.toJson(withHiddenFields)\n      }\n      json[entry.key] = v\n    })\n    return json\n  }\n\n  static keyedArrayToJsonMap<J extends object>(array: ToJson<J>[], withHiddenFields: boolean, keyField: string = '$key'): ObjMap<J> {\n    const json:any = {}\n    array.forEach(entry => {\n      json[(entry as any)[keyField]] = entry.toJson(withHiddenFields)\n    })\n    return json\n  }\n\n  /**\n   * @param obj\n   * @returns {T}\n   * @deprecated See FireBlanket.util.removeIllegalKey\n   */\n  static removeIllegalFirebaseKeys<T extends object>(obj: T): T {\n    const cleanObj: T = <T>{}\n    Object.keys(obj).forEach((key) => {\n      const v = obj[key as keyof T]\n      if (JsonUtil.isLegalFirebaseKey(v as string)) {\n        cleanObj[key as keyof T] = v\n      }\n    })\n    return cleanObj\n  }\n\n  /**\n   * @param key\n   * @returns {boolean}\n   * @deprecated See FireBlanket.util.isLegalFirebaseKey\n   */\n  static isLegalFirebaseKey(key: string): boolean {\n    return key !== null && key !== undefined && !key.startsWith('$')\n  }\n\n\n}\n","import {Subscription} from 'rxjs'\nexport class ReactiveUtil {\n\n  static unSub(subscription: Subscription) {\n    if (subscription) {\n      subscription.unsubscribe()\n    }\n  }\n\n}\n","export class StringUtil {\n\n  static _baseTen = [true, true, true, true, true, true, true, true, true, true]\n\n  static firstUniqueByCounterSuffix(value: string, values: string[], separatorChar: string = ' ') {\n    let result = value\n    const map: { [key: string]: boolean } = {}\n    values.forEach(v => map[v] = true)\n    let idx = 1\n    while (map[result]) {\n      result = value + separatorChar + idx++\n    }\n    return result\n  }\n\n\n  /**\n   * Split a string that ends with a number into its corresponding parts. Useful for name collisions, e.g.\n   * FooValue, FooValue-1, FooValue-2\n   * @param value\n   */\n  static withoutNumericSuffix(value: string): { text: string, suffix?: number } {\n    let idx = value.length\n    const suffixChars = []\n    for (idx; idx--; idx > 0) {\n      if ((StringUtil._baseTen as any)[value.charAt(idx)] !== true) {\n        break;\n      }\n      suffixChars.unshift(value.charAt(idx))\n    }\n    const suffixValue = suffixChars.length ? Number.parseInt(suffixChars.join('')) : undefined\n    const text = value.substring(0, idx)\n    return {text: text.trim(), suffix: suffixValue}\n  }\n\n  static incrementCounterSuffix(value: string) {\n    let result = value\n    let suffixValue = 1\n    const suffixChars = []\n    let idx = value.length\n\n    for (idx; idx--; idx > 0) {\n      if ((StringUtil._baseTen as any)[value.charAt(idx)] !== true) {\n        break;\n      }\n      suffixChars.unshift(value.charAt(idx))\n    }\n    if (suffixChars.length) {\n      try {\n        suffixValue = Number.parseInt(suffixChars.join(''))\n        result = value.substring(0, idx + 1)\n      } catch (e) {\n        suffixValue = 1;\n      }\n    }\n    return result + (suffixValue + 1)\n\n\n  }\n}\n","export class AppEnvironment {\n  firebase: {\n    privateKeyPath: string,\n    databaseTemplatePath: string,\n    databaseRulesPath: string,\n    backupDirName: string,\n    config: {\n      apiKey: string\n      authDomain: string\n      databaseURL: string\n      projectId: string\n      storageBucket: string\n      messagingSenderId: string\n    }\n  } = {} as any // Class is another \"we'd use an interface if we could, but compiler deletes interfaces\"\n  googleAdWords?: {\n    enabled: boolean\n    campaignId: string\n    adClient: string\n    adSlot: string\n  }\n  googleAnalytics?: {\n    enabled: boolean\n    trackingId: string\n  }\n  name: 'dev' | 'test' | 'stage' | 'prod' = 'dev'\n  production: boolean = false\n  suppressAds: boolean = false\n}\n","/**\n * From https://gist.github.com/mikelehen/3596a30bd69384624c11, via Firebase blog at\n * https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html\n * With minor tweaks for use with TypeScript\n **/\n\n\n/**\n * Fancy ID generator that creates 20-character string identifiers with the following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly).\n * 4. They're monotonically increasing.  Even if you generate more than one in the same timestamp, the\n *    latter ones will sort after the former ones.  We do this by using the previous random bits\n *    but \"incrementing\" them by 1 (only in the case of a timestamp collision).\n */\n\n// Modeled after base64 web-safe chars, but ordered by ASCII.\nconst PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n// Timestamp of last push, used to prevent local collisions if you push twice in one ms.\nlet lastPushTime: number = 0;\n\n// We generate 72-bits of randomness which get turned into 12 characters and appended to the\n// timestamp to prevent collisions with other clients.  We store the last characters we\n// generated because in the event of a collision, we'll use those same characters except\n// \"incremented\" by one.\nconst lastRandChars: number[] = [];\n\nexport const generatePushID: () => string = function () {\n  let i: number;\n  let now = Date.now();\n  const duplicateTime = (now === lastPushTime);\n  lastPushTime = now;\n\n  const timeStampChars = new Array(8);\n  for (i = 7; i >= 0; i--) {\n    timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n    // NOTE: Can't use << here because javascript will convert to int and lose the upper bits.\n    now = Math.floor(now / 64);\n  }\n  if (now !== 0) {\n    throw new Error('We should have converted the entire timestamp.');\n  }\n\n\n  let id = timeStampChars.join('');\n\n  if (!duplicateTime) {\n    for (i = 0; i < 12; i++) {\n      lastRandChars[i] = Math.floor(Math.random() * 64);\n    }\n  } else {\n    // If the timestamp hasn't changed since last push, use the same random number, except incremented by 1.\n    for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n      lastRandChars[i] = 0;\n    }\n    lastRandChars[i]++;\n  }\n  for (i = 0; i < 12; i++) {\n    id += PUSH_CHARS.charAt(lastRandChars[i]);\n  }\n  if (id.length !== 20) {\n    throw new Error('Length should be 20.');\n  }\n\n  return id;\n};\n","import {\n  EventEmitter,\n  Injectable\n} from '@angular/core'\nimport {Observable} from 'rxjs'\nimport {share} from 'rxjs/operators'\n//noinspection ES6PreferShortImport\nimport {generatePushID} from '../util/generate-push-id'\n\nexport type BusMessageIntent = 'request' | 'action' | 'event' | 'notification' | 'log'\n\nexport const Intention = {\n  /**\n   * An action has been performed. For example, a user has been created, granted a permission, removed, etc.\n   */\n  action:       <BusMessageIntent>'action',\n\n  /**\n   * A general event, typically used to communicate UI state across domains.\n   */\n  event:        <BusMessageIntent>'event',\n\n  /**\n   *  A BusMessage whose intent is to record a log message.\n   */\n  log:          <BusMessageIntent>'log',\n\n  /**\n   * A BusMessage whose intent is to provide a message to the Visitor. It is up to the currently active UI to determine the best method\n   * of sharing the message payload.\n   */\n  notification: <BusMessageIntent>'notification',\n\n  /**\n   * A BusMessage that communicates that the current Visitor has requested than an action be performed. For example, clicked a button\n   * that is intended to result in a user being created, a permission being granted, etc.\n   */\n  request:      <BusMessageIntent>'request',\n}\n\n\nexport class BusMessage {\n  public id: string\n  public intent: BusMessageIntent\n  public key: string\n  public source: string\n\n  /** @todo: 'intent' should probably be handled by static creation methods. */\n  constructor(source: string, intent?: BusMessageIntent, key?: string) {\n    this.id = generatePushID()\n    this.source = source\n    this.intent = intent || 'event' // this should not be optional.\n    this.key = key || '_'\n  }\n}\n\n@Injectable()\nexport class MessageBus {\n\n  public all: Observable<BusMessage>\n  private bus: EventEmitter<BusMessage> = new EventEmitter(false)\n\n  constructor() {\n    this.all = this.bus.pipe(share());\n  }\n\n  post(message: BusMessage) {\n    this.bus.next(message)\n  }\n}\n","import {BusMessage} from '../message-bus'\nimport {LogLevel} from './logger'\n\nexport class LogMessage extends BusMessage {\n  static SourceKey:string = \"LogMessage\"\n  context?: any\n  message: any[]\n  level: LogLevel\n\n  constructor(level: LogLevel, context: any, ...message: any[]) {\n    super(LogMessage.SourceKey, 'log')\n    this.message = message\n    this.context = context\n    this.level = level\n  }\n\n}\n","import {\n  Injectable,\n  Optional\n} from '@angular/core'\nimport {LogMessage} from './log-message'\n\nconst spaces = '                                                                                                    '\n\nexport type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' | 'NONE'\n\n/**\n *\n *\n */\nexport const LogLevels = {\n  NONE:  <LogLevel>'NONE',\n  fatal: <LogLevel>'fatal',\n  error: <LogLevel>'error',\n  warn:  <LogLevel>'warn',\n  info:  <LogLevel>'info',\n  debug: <LogLevel>'debug',\n  trace: <LogLevel>'trace'\n}\n\nexport class LoggerConfiguration {\n  contextAsStringWidth: number = 30\n  includeFullContext: boolean = false\n  /**\n   * For temporarily shutting of logging, use NONE, but if you are shutting off logging for production, or because you're using\n   * another logging system, you should Provide a simpler logging class in your module configuration.\n   * @type {LogLevel}\n   */\n  logLevel: LogLevel = 'trace'\n}\n\nconst emptyFn = function (...x: any[]): any {}\n\n\n@Injectable()\nexport abstract class Logger {\n\n  config: LoggerConfiguration = new LoggerConfiguration()\n\n  protected constructor(@Optional() configuration?: LoggerConfiguration) {\n    this.config = configuration || this.config\n    this.applyLevel()\n  }\n\n  abstract log(message: LogMessage): void\n\n  trace(context: any, ...message:any[]) {\n    this.log(new LogMessage('trace', context, ...message))\n  }\n\n  debug(context: any, ...message:any[]) {\n    this.log(new LogMessage('debug', context, ...message))\n  }\n\n  info(context: any, ...message:any[]) {\n    this.log(new LogMessage('info', context, ...message))\n  }\n\n  warn(context: any, ...message:any[]) {\n    this.log(new LogMessage('warn', context, ...message))\n  }\n\n  error(context: any, ...message:any[]) {\n    this.log(new LogMessage('error', context, ...message))\n  }\n\n  fatal(context: any, ...message:any[]) {\n    this.log(new LogMessage('fatal', context, ...message))\n  }\n\n\n  private applyLevel() {\n    console.log('Logger', 'applyLevel', this.config)\n    /**\n     * This keeps noise off the system bus when running in production mode or with logging off.\n     * Yes, it's supposed to fall through, despite the evil nature.\n     */\n    // @ts-ignore\n    // noinspection FallThroughInSwitchStatementJS\n    switch (this.config.logLevel) {\n      // @ts-ignore\n      case LogLevels.NONE:\n        this.fatal = emptyFn\n      // @ts-ignore\n      case LogLevels.fatal:\n        this.error = emptyFn\n      // @ts-ignore\n      case LogLevels.error:\n        this.warn = emptyFn\n      // @ts-ignore\n      case LogLevels.warn:\n        this.info = emptyFn\n      // @ts-ignore\n      case LogLevels.info:\n        this.debug = emptyFn\n      // @ts-ignore\n      case LogLevels.debug:\n        this.trace = emptyFn\n      // @ts-ignore\n    }\n  }\n\n}\n","import {\n  Injectable,\n  Optional\n} from '@angular/core'\nimport {LogMessage} from './log-message'\nimport {\n  LoggerConfiguration,\n  Logger\n} from './logger'\n\nconst spaces = '                                                                                                    '\n\n\n/**\n * Singleton. Attempting to run two Logger instances will fail. And rightly so!\n */\n@Injectable()\nexport class ConsoleLogger extends Logger {\n\n  constructor(@Optional() configuration?: LoggerConfiguration) {\n    super(configuration)\n  }\n\n  log(message: LogMessage) {\n    let args = [message.level + ':']\n    let name: string = ''\n    if (message.context && !this.config.includeFullContext && message.context.constructor) {\n      name = message.context._proto_ ? message.context._proto_.name : message.context.constructor.name\n    }\n    const padChars = this.config.contextAsStringWidth - name.length\n    name = padChars > 0 ? name + spaces.substring(0, padChars) : name\n    args.push(name + ' - ')\n    args = args.concat(message.message)\n\n    if (this.config.includeFullContext && message.context) {\n      args.push(message.context)\n    }\n\n    console.log.apply(console, args)\n  }\n\n\n\n}\n","import {\n  Injectable,\n  Optional\n} from '@angular/core'\nimport {MessageBus} from '../message-bus'\nimport {LogMessage} from './log-message'\nimport {\n  LoggerConfiguration,\n  LogLevels\n} from './logger'\nimport {ConsoleLogger} from './console-logger'\n\n@Injectable()\nexport class BusLoggerConfiguration extends LoggerConfiguration {\n  alsoLogToConsole:boolean = false\n}\n\n/**\n * Singleton. Attempting to run two Logger instances will fail. And rightly so!\n */\n@Injectable()\nexport class BusLogger extends ConsoleLogger {\n\n  override config:BusLoggerConfiguration = new BusLoggerConfiguration()\n\n  constructor(private bus: MessageBus, @Optional() configuration?: LoggerConfiguration) {\n    super(configuration)\n    console.log('BusLogger', 'constructor', configuration)\n  }\n\n  override log(message: LogMessage): void {\n    this.bus.post(message)\n    if(this.config.alsoLogToConsole){\n      super.log(message)\n    }\n  }\n}\n","import {Observable} from 'rxjs'\nimport {filter} from 'rxjs/operators'\nimport {\n  BusMessage,\n  MessageBus\n} from '../message-bus'\n\n\nexport class NavigationMessage extends BusMessage {\n  static SourceKey = 'NavigationMessage'\n  path: string\n  additionalMessage: string | undefined\n  constructor(key:string, path: string, additionalMessage?:string) {\n    super(NavigationMessage.SourceKey, 'notification', key)\n    this.path = path\n    this.additionalMessage = additionalMessage\n  }\n\n  static filter(bus: MessageBus):Observable<BusMessage> {\n    return bus.all.pipe(filter(m => m.source === NavigationMessage.SourceKey))\n  }\n}\n\n\nexport class NavigationRequiresAuthenticationMessage extends NavigationMessage {\n  static Key: string = 'requiresAuthentication'\n\n  constructor(path: string) {\n    super(NavigationRequiresAuthenticationMessage.Key, path)\n  }\n\n  static post(bus: MessageBus, path: string) {\n    bus.post(new NavigationRequiresAuthenticationMessage(path))\n  }\n}\n\nexport class NavigationRequiresRoleMessage extends NavigationMessage {\n  static Key: string = 'requiresRole'\n\n  constructor(path: string, public roleKey: string) {\n    super(NavigationRequiresRoleMessage.Key, path, 'Role Required: ' + roleKey)\n  }\n\n  static post(bus: MessageBus, path: string, roleKey: string) {\n    bus.post(new NavigationRequiresRoleMessage(path, roleKey))\n  }\n}\n\n\nexport class NavigationRequiresPermissionMessage extends NavigationMessage {\n  static SubKey: string = 'requiresPermission'\n\n  constructor(path: string, public permissionKey: string) {\n    super(NavigationRequiresPermissionMessage.SubKey, path, 'Permission Required: ' + permissionKey)\n  }\n\n\n  static post(bus: MessageBus, path: string, roleKey: string) {\n    bus.post(new NavigationRequiresPermissionMessage(path, roleKey))\n  }\n\n\n}\n\n\n\n\n","import {filter, Observable} from 'rxjs'\nimport {BusMessage, BusMessageIntent, MessageBus} from '../message-bus'\n\nexport class AppMessage extends BusMessage {\n  static SourceKey: string = 'App'\n\n  static SignOutRequest = 'signOutRequest'\n\n  constructor(intent:BusMessageIntent, key:string) {\n    super(AppMessage.SourceKey, intent, key)\n  }\n\n  static filter(bus:MessageBus):Observable<AppMessage>{\n    return bus.all.pipe(filter(msg => msg.source === AppMessage.SourceKey))\n  }\n\n  static signOutRequest() {\n    return new AppMessage('request', AppMessage.SignOutRequest)\n  }\n}\n","export interface PageInfo {\n  title: string\n}\n\nexport interface PageAnalyticsEvents {\n  load?: boolean\n  unload?: boolean\n  scroll?: boolean\n  click?: boolean\n  mouseMove?: boolean\n}\n\nexport interface PageAnalytics {\n  events?: PageAnalyticsEvents\n}\n\nexport interface RouteInfo {\n  page?: PageInfo\n  analytics?: PageAnalytics\n  showAds?: boolean\n}\n\nexport const DefaultPageAnalytics = function (): PageAnalytics {\n  return {\n    events: {\n      load: true,\n      unload: true\n    }\n  }\n}\n","import {\n  ActivatedRoute,\n  Route,\n  Router\n} from '@angular/router'\n\nexport class NgRouteUtil {\n\n  static fullPath(route: ActivatedRoute):string {\n    let pathAry:string[] = []\n    route.pathFromRoot\n      .map(routeSegment => routeSegment.snapshot)\n      .map(routeSnap => {\n        return routeSnap\n      })\n      .map(routeSnap => routeSnap.url)\n      .filter(segments => segments && segments.length > 0)\n      .forEach(segments => segments.forEach(segment => pathAry.push(segment.toString())))\n\n    let path = pathAry.join('/')\n\n    if (path && path.endsWith('/')) {\n      path = path.substring(0, path.length - 1)\n    }\n    return path\n  }\n\n  static primaryLeaf(router: Router): ActivatedRoute {\n    let c = router.routerState.root\n    while (c.firstChild) {\n      c = c.firstChild\n    }\n    return c\n  }\n\n  static findDescendantByComponentKey(router: Router, componentTypeKey: string): (ActivatedRoute | null ) {\n    let c:ActivatedRoute | null  = router.routerState.root\n    do {\n      if (c.component && (c.component as any)['Key'] == componentTypeKey) {\n        break\n      }\n      c = c.firstChild\n    } while (c)\n    return c\n  }\n\n\n  /**\n   * Breadth first search of route to find the descendant where 'parent.children[x].component['Key'] === componentTypeKey'\n   * This requires that the Component have the static field 'Key' declared and set to a value.\n   * @param route\n   * @param componentTypeKey\n   * @returns {Route | null}\n   */\n  static findDescendantRouteByComponentKey(route: Route, componentTypeKey: string): (Route | null ) {\n    let result = null\n    if (route.children) {\n      for (let i = 0; i < route.children.length; i++) {\n        let child = route.children[i]\n        if (child.component && (child.component as any)['Key'] === componentTypeKey) {\n          result = child\n          break\n        }\n      }\n      if (!result) {\n        for (let i = 0; i < route.children.length; i++) {\n          result = NgRouteUtil.findDescendantRouteByComponentKey(route.children[i], componentTypeKey)\n          if (result) {\n            break\n          }\n        }\n      }\n    }\n    return result\n  }\n\n  /**\n   * Breadth first search of route to find the descendant where 'parent.children[x].path === path'\n   * @param route\n   * @param path\n   * @returns {Route | null}\n   */\n  static findDescendantRouteByPath(route: Route, path: string): (Route | null ) {\n    let result = null\n    if (route.children) {\n      for (let i = 0; i < route.children.length; i++) {\n        let child = route.children[i]\n        if (child.path === path) {\n          result = child\n          break\n        }\n      }\n      if (!result) {\n        for (let i = 0; i < route.children.length; i++) {\n          result = NgRouteUtil.findDescendantRouteByPath(route.children[i], path)\n          if (result) {\n            break\n          }\n        }\n      }\n    }\n    return result\n  }\n\n}\n","export interface TimeUnit {\n  unitKey: string\n  logicalMax: number\n  fullLabel: string\n  label: string\n  momentKey: 'd' | 'h' | 'm' | 's' | 'ms',\n  orderIndex: number\n  separatorSuffix: string\n  next: string | undefined\n  previous: string | undefined\n}\n\n\nexport const TimeUnitSort = (b:TimeUnit, a:TimeUnit) => {\n  return a.orderIndex - b.orderIndex\n}\nexport interface TimeUnitsType {\n  day: TimeUnit,\n  h: TimeUnit,\n  min: TimeUnit,\n  s: TimeUnit,\n  ms: TimeUnit,\n}\nexport const TimeUnits:TimeUnitsType = {\n  day: <TimeUnit>{\n    unitKey:         'day',\n    fullLabel:       'Day',\n    label:           'day',\n    separatorSuffix: 'd ',\n    logicalMax:      7,\n    momentKey:       'd',\n    orderIndex:      40,\n    next:            'h',\n    previous:        undefined\n  },\n  h:   <TimeUnit>{\n    unitKey:         'h',\n    fullLabel:       'Hour',\n    label:           'hour',\n    separatorSuffix: ':',\n    logicalMax:      23,\n    momentKey:       'h',\n    orderIndex:      30,\n    next:            'min',\n    previous:        'day'\n  } ,\n  min: <TimeUnit>{\n    unitKey:         'min',\n    fullLabel:       'Minute',\n    label:           'min',\n    separatorSuffix: ':',\n    logicalMax:      59,\n    momentKey:       'm',\n    orderIndex:      20,\n    next:            's',\n    previous:        'h'\n  },\n  s:   <TimeUnit>{\n    unitKey:         's',\n    fullLabel:       'Second',\n    label:           'sec',\n    separatorSuffix: '.',\n    logicalMax:      59,\n    momentKey:       's',\n    orderIndex:      10,\n    next:            'ms',\n    previous:        'min'\n  },\n  ms:  <TimeUnit>{\n    unitKey:         'ms',\n    fullLabel:       'Millisecond',\n    label:           'ms',\n    separatorSuffix: '',\n    logicalMax:      999,\n    momentKey:       'ms',\n    orderIndex:      0,\n    next:            undefined,\n    previous:        's'\n  },\n}\n\nexport const TimeUnitKeySort = (a:keyof TimeUnitsType, b:keyof TimeUnitsType) => {\n  return TimeUnits[b].orderIndex - TimeUnits[a].orderIndex\n}\n\n","import {ChangeDetectorRef} from '@angular/core'\nexport class Hacks {\n  static materialDesignPlaceholderText(changeDetector: ChangeDetectorRef) {\n    setTimeout(() => {\n      changeDetector.markForCheck()\n    }, 100)\n  }\n}\n","export class LocalizationUtil {\n\n  static browserLanguages(): string[] {\n    let languages:string[]\n    if (navigator['languages']) {\n      languages = navigator['languages'] as string[]\n    } else {\n      languages = [navigator.language]\n    }\n\n    return languages\n  }\n\n}\n","const adjectives: string[] = [\n  'Abrupt', 'Acidic', 'Adorable', 'Adventurous', 'Aggressive', 'Agitated', 'Alert', 'Aloof', 'Amiable', 'Amused',\n  'Annoyed', 'Antsy', 'Anxious', 'Appalling', 'Appetizing', 'Apprehensive', 'Arrogant', 'Astonishing', 'Attractive',\n  'Batty', 'Beefy', 'Bewildered', 'Biting', 'Bitter', 'Bland', 'Blushing', 'Bored', 'Brave', 'Bright', 'Broad', 'Bulky',\n  'Burly', 'Charming', 'Cheeky', 'Cheerful', 'Clean', 'Clear', 'Cloudy', 'Clueless', 'Clumsy', 'Colorful', 'Colossal',\n  'Combative', 'Comfortable', 'Confused', 'Contemplative', 'Convincing', 'Convoluted', 'Cooperative', 'Corny', 'Costly',\n  'Courageous', 'Crabby', 'Creepy', 'Crooked', 'Cumbersome', 'Cynical', 'Dangerous', 'Dashing', 'Deep', 'Defeated',\n  'Defiant', 'Delicious', 'Delightful', 'Depraved', 'Despicable', 'Determined', 'Dilapidated', 'Diminutive',\n  'Disgusted', 'Distinct', 'Distraught', 'Distressed', 'Disturbed', 'Dizzy', 'Drab', 'Drained', 'Dull', 'Eager',\n  'Ecstatic', 'Elated', 'Elegant', 'Embarrassed', 'Enchanting', 'Encouraging', 'Energetic', 'Enormous', 'Enthusiastic',\n  'Envious', 'Exasperated', 'Excited', 'Exhilarated', 'Extensive', 'Exuberant', 'Fancy', 'Fantastic', 'Fierce',\n  'Filthy', 'Flat', 'Floppy', 'Fluttering', 'Foolish', 'Frantic', 'Fresh', 'Friendly', 'Frothy', 'Frustrating', 'Funny',\n  'Fuzzy', 'Gaudy', 'Gentle', 'Giddy', 'Gigantic', 'Glamorous', 'Gleaming', 'Glorious', 'Gorgeous', 'Graceful',\n  'Gritty', 'Grubby', 'Grumpy', 'Handsome', 'Happy', 'Harebrained', 'Healthy', 'Helpful', 'Hollow', 'Homely', 'Huge',\n  'Icy', 'Ideal', 'Immense', 'Impressionable', 'Intrigued', 'Itchy', 'Jealous', 'Jittery', 'Jolly', 'Joyous', 'Juicy',\n  'Jumpy', 'Kind', 'Lackadaisical', 'Lazy', 'Little', 'Lively', 'Livid', 'Lonely', 'Loose', 'Lovely', 'Lucky',\n  'Ludicrous', 'Macho', 'Magnificent', 'Mammoth', 'Maniacal', 'Massive', 'Melancholy', 'Melted', 'Miniature', 'Minute',\n  'Mistaken', 'Misty', 'Moody', 'Muddy', 'Mysterious', 'Narrow', 'Naughty', 'Nervous', 'Nonchalant', 'Nonsensical',\n  'Nutritious', 'Nutty', 'Oblivious', 'Obnoxious', 'Odd', 'Old-fashioned', 'Outrageous', 'Perfect', 'Perplexed',\n  'Petite', 'Petty', 'Plain', 'Pleasant', 'Poised', 'Pompous', 'Precious', 'Prickly', 'Proud', 'Pungent', 'Puny',\n  'Quaint', 'Quizzical', 'Ratty', 'Reassured', 'Relieved', 'Responsive', 'Ripe', 'Robust', 'Rough', 'Round', 'Salty',\n  'Sarcastic', 'Scant', 'Scary', 'Scattered', 'Scrawny', 'Selfish', 'Shaggy', 'Shaky', 'Shallow', 'Sharp', 'Shiny',\n  'Short', 'Silky', 'Silly', 'Skinny', 'Slippery', 'Small', 'Smarmy', 'Smiling', 'Smoggy', 'Smooth', 'Smug', 'Soggy',\n  'Solid', 'Sore', 'Sour', 'Sparkling', 'Spicy', 'Splendid', 'Spotless', 'Square', 'Stale', 'Steady', 'Steep', 'Sticky',\n  'Stormy', 'Stout', 'Strange', 'Strong', 'Stunning', 'Substantial', 'Successful', 'Succulent', 'Superficial',\n  'Superior', 'Swanky', 'Sweet', 'Tart', 'Tasty', 'Teeny', 'Tender', 'Tense', 'Terrible', 'Testy', 'Thankful', 'Thick',\n  'Thoughtful', 'Thoughtless', 'Timely', 'Tricky', 'Trite', 'Pated', 'Uneven', 'Unsightly', 'Upset', 'Uptight', 'Vast',\n  'Vexed', 'Victorious', 'Virtuous', 'Vivacious', 'Vivid', 'Wacky', 'Whimsical', 'Whopping', 'Wicked', 'Witty',\n  'Wobbly', 'Wonderful', 'Worried', 'Yummy', 'Zany', 'Zealous', 'Zippy'];\n\n\nconst nouns: string[] = [\n  'Aardvark', 'Aardwolf', 'Albatross', 'Alligator', 'Alpaca', 'Anaconda', 'Anglerfish', 'Ant', 'Anteater', 'Antelope',\n  'Antlion', 'Ape', 'Aphid', 'Armadillo', 'Asp', 'Baboon', 'Badger', 'Bandicoot', 'Barnacle', 'Barracuda', 'Basilisk',\n  'Bass', 'Bat', 'Bear', 'Beaver', 'Bedbug', 'Bee', 'Beetle', 'Bison', 'Blackbird', 'Boa', 'Bobcat', 'Bobolink',\n  'Bonobo', 'Booby', 'Bovid', 'Buffalo', 'Bug', 'Butterfly', 'Buzzard', 'Camel', 'Canid', 'Capybara', 'Cardinal',\n  'Caribou', 'Carp', 'Caterpillar', 'Catfish', 'Catshark', 'Centipede', 'Cephalopod', 'Chameleon', 'Cheetah',\n  'Chickadee', 'Chimpanzee', 'Chinchilla', 'Chipmunk', 'Cicada', 'Clam', 'Clownfish', 'Cobra', 'Cockroach', 'Cod',\n  'Condor', 'Constrictor', 'Coral', 'Cougar', 'Cow', 'Coyote', 'Coypu', 'Crab', 'Crane', 'Crawdad', 'Crayfish',\n  'Cricket', 'Crocodile', 'Crow', 'Cuckoo', 'Damselfly', 'Deer', 'Dingo', 'Dolphin', 'Dormouse', 'Dove', 'Dragon',\n  'Dragonfly', 'Eagle', 'Earthworm', 'Earwig', 'Echidna', 'Eel', 'Egret', 'Elephant', 'Elk', 'Emu', 'Ermine', 'Falcon',\n  'Ferret', 'Finch', 'Firefly', 'Fish', 'Flamingo', 'Flea', 'Fly', 'Flyingfish', 'Fowl', 'Fox', 'Fox', 'Frog',\n  'Gazelle', 'Gecko', 'Gerbil', 'Gibbon', 'Giraffe', 'Goldfish', 'Gopher', 'Gorilla', 'Grasshopper', 'Grouse',\n  'Guanaco', 'Gull', 'Guppy', 'Haddock', 'Halibut', 'Hamster', 'Hare', 'Harrier', 'Hawk', 'Hedgehog', 'Heron',\n  'Herring', 'Hippopotamus', 'Hookworm', 'Hornet', 'Hoverfly', 'Hummingbird', 'Hyena', 'Iguana', 'Impala', 'Insect',\n  'Jacana', 'Jackal', 'Jaguar', 'Jay', 'Jellyfish', 'Junglefowl', 'Kangaroo', 'Kingfisher', 'Kite', 'Kiwi', 'Koala',\n  'Koi', 'Krill', 'Ladybug', 'Lamprey', 'Landfowl', 'Lark', 'Leech', 'Lemming', 'Lemur', 'Leopard', 'Leopard',\n  'Leopard', 'Leopon', 'Limpet', 'Lion', 'Lizard', 'Llama', 'Lobster', 'Locust', 'Loon', 'Louse', 'Lungfish', 'Lynx',\n  'Macaw', 'Mackerel', 'Magpie', 'Mammal', 'Manatee', 'Mandrill', 'Marlin', 'Marmoset', 'Marmot', 'Marsupial', 'Marten',\n  'Mastodon', 'Meadowlark', 'Meerkat', 'Mink', 'Minnow', 'Mite', 'Mockingbird', 'Mole', 'Mollusk', 'Mongoose', 'Monkey',\n  'Moose', 'Mosquito', 'Moth', 'Mouse', 'Mule', 'Muskox', 'Narwhal', 'Needlefish', 'Newt', 'Nighthawk', 'Nightingale',\n  'Numbat', 'Ocelot', 'Octopus', 'Okapi', 'Olingo', 'Opossum', 'Orangutan', 'Orca', 'Oribi', 'Ostrich', 'Otter', 'Owl',\n  'Ox', 'Panda', 'Panther', 'Panther', 'Parakeet', 'Parrot', 'Parrotfish', 'Partridge', 'Peacock', 'Peafowl', 'Pelican',\n  'Penguin', 'Perch', 'Pheasant', 'Pig', 'Pike', 'Pinniped', 'Piranha', 'Planarian', 'Platypus', 'Pony', 'Porcupine',\n  'Porpoise', 'Possum', 'Prawn', 'Primate', 'Ptarmigan', 'Puffin', 'Puma', 'Python', 'Quail', 'Quelea', 'Quokka',\n  'Raccoon', 'Rat', 'Rattlesnake', 'Raven', 'Reindeer', 'Reptile', 'Rhinoceros', 'Roadrunner', 'Rodent', 'Rook',\n  'Rooster', 'Roundworm', 'Sailfish', 'Salamander', 'Salmon', 'Sawfish', 'Scallop', 'Scorpion', 'Seahorse', 'Shrew',\n  'Shrimp', 'Silkworm', 'Silverfish', 'Skink', 'Skunk', 'Sloth', 'Slug', 'Smelt', 'Snail', 'Snipe', 'Sole', 'Sparrow',\n  'Spider', 'Spoonbill', 'Squid', 'Squirrel', 'Starfish', 'Stingray', 'Stoat', 'Stork', 'Sturgeon', 'Swallow', 'Swan',\n  'Swift', 'Swordfish', 'Swordtail', 'Tahr', 'Takin', 'Tapir', 'Tarantula', 'Tarsier', 'Termite', 'Tern', 'Thrush',\n  'Tick', 'Tiger', 'Tiglon', 'Titi', 'Toad', 'Tortoise', 'Toucan', 'Trout', 'Tuna', 'Turtle', 'Tyrannosaurus', 'Urial',\n  'Vaquita', 'Vicuña', 'Viper', 'Voalavoanala', 'Vole', 'Vulture', 'Wallaby', 'Walrus', 'Warbler', 'Wasp', 'Waterbuck',\n  'Weasel', 'Whale', 'Whippet', 'Whitefish', 'Wildcat', 'Wildebeest', 'Wildfowl', 'Wolf', 'Wolf', 'Wolverine', 'Wombat',\n  'Woodchuck', 'Woodpecker', 'Worm', 'Wren', 'Xerinae', 'Yak', 'Zebra', 'Zebu', 'Zorilla',\n]\n\n\nexport class NameGenerator {\n  static adjectivesLength = adjectives.length\n  static nounsLength = nouns.length\n\n  static generate() {\n    const aRand = Math.floor(NameGenerator.adjectivesLength * Math.random())\n    const nRand = Math.floor(NameGenerator.nounsLength * Math.random())\n\n    return adjectives[aRand] + ' ' + nouns[nRand]\n  }\n}\n","import {ActivatedRoute, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators'\n\n\n\nexport class NgUtil {\n\n  static data$(route: ActivatedRoute):Observable<{}> {\n    return route.data.pipe(map((data: any) => {\n      return NgUtil.collectFromRoute(route.snapshot, true)\n    }))\n  }\n\n  static data(route: ActivatedRouteSnapshot): any {\n    return NgUtil.collectFromRoute(route, true)\n  }\n\n  static params(route: ActivatedRouteSnapshot): any {\n    return NgUtil.collectFromRoute(route, false)\n  }\n\n  static collectFromRoute(route: ActivatedRouteSnapshot, data: boolean): any {\n    const datas: any[] = [{}]\n    let child:ActivatedRouteSnapshot|null = route.root\n    while (child) {\n      const what = data ? child.data : child.params\n      datas.push(what || {})\n      child = child.firstChild\n    }\n    // merge them all together...\n    return Object.assign.apply(Object, datas as any) as any\n  }\n\n  static params$(route: ActivatedRoute) {\n    return route.params.pipe(map((params: any) => {\n      return NgUtil.collectFromRoute(route.snapshot, false)\n    }))\n  }\n\n  static routeLeaf(route: RouterStateSnapshot): ActivatedRouteSnapshot {\n    let child = route.root\n\n    while (child.firstChild) {\n      child = child.firstChild\n    }\n    return child\n  }\n\n  static keylessUrl(route: RouterStateSnapshot): string {\n    return route.url ? route.url.split('/').map(\n      segment => NgUtil.isFirebaseId(segment) ? ':key' : segment).join('/') : ''\n  }\n\n  /**\n   *\n   * @param key\n   * @returns {boolean}\n   * @deprecated See FireBlanket.util#isFirebaseGeneratedId\n   */\n  static isFirebaseId(key: string): boolean {\n    let isKey = false\n    if (key && key.length === 20 && key.startsWith('-')) {\n      isKey = true\n    }\n    return isKey\n  }\n\n}\n","import {ObjectUtil} from './core-util';\nexport class TransformUtil {\n\n\n  static firstExisting(...obj: any[]) {\n    let result\n    for (let i = 0; i < obj.length; i++) {\n      if(ObjectUtil.exists(obj[i])){\n        result = obj[i]\n        break\n      }\n    }\n    return result\n  }\n}\n","// noinspection ES6PreferShortImport\nimport {MessageBus} from '../message-bus/message-bus';\n// noinspection ES6PreferShortImport\nimport {RouteInfo} from '../routing/route-info';\n\n/**\n * Cannot implement 'OnInit' any longer; Angular inspects for that and requires a decorator.\n */\nexport abstract class Page  {\n\n  public routeInfo: RouteInfo\n\n  protected constructor(protected bus:MessageBus) {\n    this.routeInfo = {\n      page: {\n        title: this.constructor['name']\n      },\n      showAds: false\n    }\n  }\n\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["spaces","i1.LoggerConfiguration","i1.MessageBus","i2.LoggerConfiguration","filter"],"mappings":";;;;;MAAa,cAAc,CAAA;IAEzB,WAAmB,CAAA,KAAQ,EAAS,QAAA,GAAoB,KAAK,EAAS,WAAoB,KAAK,EAAA;AAA5E,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;AAAS,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AAAS,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;KAC9F;AACF,CAAA;MAEY,aAAa,CAAA;IAGxB,WAAY,CAAA,gBAAqB,EAAE,EAAE,YAAqB,KAAK,EAAS,WAAmB,MAAM,EAAA;AAAzB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QAC/F,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACrC,YAAA,OAAO,IAAI,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACzC,SAAC,CAAC,CAAA;KACH;IAED,UAAU,GAAA;QACR,MAAM,OAAO,GAA8B,EAAE,CAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpC,YAAA,OAAO,CAAE,KAAK,CAAC,KAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAA;AACtD,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,OAAO,CAAA;KACf;AAED,IAAA,MAAM,CAAC,MAAW,EAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;AAC7B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAQ,KAAI;YAC1B,MAAM,KAAK,GAAY,GAAW,CAAE,KAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AACjE,YAAA,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;AACpC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAED,IAAA,OAAO,CAAC,MAAW,EAAA;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;AAC7B,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAQ,KAAI;YAC1B,MAAM,KAAK,GAAY,GAAW,CAAE,KAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AACjE,YAAA,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;AACpC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AACF;;MC1CY,UAAU,CAAA;IAErB,OAAO,IAAI,CAAI,GAAQ,EAAA;QACrB,IAAI,CAAC,GAAkB,SAAS,CAAA;AAChC,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;YACrB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACxB,SAAA;AACD,QAAA,OAAO,CAAC,CAAA;KACT;AACF;;MCTY,KAAK,CAAA;IAChB,OAAO,QAAQ,CAAC,KAAmB,EAAA;AACjC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;KACjC;AACF;;ACJK,MAAO,UAAW,SAAQ,KAAK,CAAA;IAEnC,WAAY,CAAA,OAAe,EAAS,IAAS,EAAA;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAA;AADoB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAE5C;AACF;;MCJY,UAAU,CAAA;AAErB,IAAA,OAAO,oBAAoB,CAAI,MAAW,EAAE,WAAmB,MAAM,EAAA;AACnE,QAAA,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;QACrB,MAAM,CAAC,GAAc,EAAE,CAAA;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,CAAS,CAAE,MAAM,CAAC,CAAC,CAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AACrD,SAAA;AACD,QAAA,OAAO,CAAC,CAAA;KACT;IAED,OAAO,OAAO,CAAI,GAAc,EAAA;AAC9B,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;AACjB,SAAC,CAAC,CAAA;KACH;AAED,IAAA,OAAO,kBAAkB,CAAI,GAAc,EAAE,WAAmB,MAAM,EAAA;AACpE,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC;AACjB,YAAA,MAAc,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAA;AAC/B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAC5C,SAAC,CAAC,CAAA;KACH;IAED,OAAO,UAAU,CAAI,GAAc,EAAA;QACjC,MAAM,MAAM,GAAoB,EAAE,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AACpB,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,MAAM,CAAA;KACd;IAED,OAAO,MAAM,CAAI,GAAc,EAAE,IAAe,EAAE,cAAuB,KAAK,EAAA;AAC5E,QAAA,GAAG,GAAG,GAAG,IAAI,EAAE,CAAA;AACf,QAAA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;YACxC,IAAI,WAAW,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACzC,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,CAAA,CAAA,CAAG,CAAC,CAAA;AACtE,aAAA;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;AACtB,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,GAAG,CAAA;KACX;AAED,IAAA,OAAO,SAAS,CAAI,GAAc,EAAE,IAAe,EAAA;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;AACxC,YAAA,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1B,gBAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;AAChB,aAAA;AACH,SAAC,CAAC,CAAA;KACH;AAED;;;;;AAKG;IACH,OAAO,iBAAiB,CAAI,GAAc,EAAE,MAAmB,GAAA,CAAC,MAAM,CAAC,EAAA;AACrE,QAAA,GAAG,GAAG,GAAG,IAAI,EAAE,CAAA;AACf,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC/B,gBAAA,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;AACpC,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,GAAG,CAAA;KACX;AACF;;AC/DM,MAAM,WAAW,GAAG,UAAS;MAEvB,UAAU,CAAA;AAGrB;;;;AAIG;IACH,OAAO,IAAI,CAAI,GAAc,EAAA;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;KAC9B;AAED;;;AAGG;IACH,OAAO,UAAU,CAAC,GAAa,EAAA;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAA;AACd,QAAA,GAAG,CAAC,OAAO,CAAC,KAAK,IAAK,GAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AAChD,QAAA,OAAO,GAAG,CAAA;KACX;AAED;;;;AAIG;IACH,OAAO,OAAO,CAAI,GAAoB,EAAA;AACpC,QAAA,MAAM,GAAG,GAAkB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAC5D,YAAA,OAAO,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAC,CAAA;AACpC,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,GAAG,CAAA;KACX;AAED;;;;AAIG;IACH,OAAO,MAAM,CAAI,GAAoB,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACxC,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;AACjB,SAAC,CAAC,CAAA;KACH;IAED,OAAO,QAAQ,CAAC,KAAS,EAAA;AACvB,QAAA,QAAQ,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAC;KACnE;IAED,OAAO,UAAU,CAAC,KAAS,EAAA;QACzB,QAAQ,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,YAAY,QAAQ,EAAC;KAClE;IAED,OAAO,eAAe,CAAC,KAAS,EAAA;AAC9B,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;KAC7C;IAED,OAAO,MAAM,CAAC,KAAS,EAAA;AACrB,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;KAC7C;AAED,IAAA,OAAO,UAAU,CAAC,MAAW,EAAE,GAAG,OAAc,EAAA;AAC9C,QAAA,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;AACrB,QAAA,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAChC,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;gBACzB,IAAI,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAA;AAClE,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpB,iBAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;AACD,QAAA,OAAO,MAAM,CAAA;KACd;IAGD,OAAO,aAAa,CAAI,GAAM,EAAA;QAC5B,MAAM,QAAQ,GAAS,EAAE,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACtC,YAAA,MAAM,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;AAC3B,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AAChC,gBAAA,QAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC3B,aAAA;AACH,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,QAAQ,CAAA;KAChB;AAEF,CAAA;AAEY,MAAA,gBAAgB,GAAG,UAAa,YAAuB,EAAE,IAAc,EAAA;IAClF,MAAM,MAAM,GAAc,EAAE,CAAA;IAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;AAChD,QAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YAClB,IAAI,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE;AAC/C,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAQ,gBAAgB,CAAM,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AAClE,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;AAChC,aAAA;AACF,SAAA;AACH,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,MAAM,CAAA;AACf,EAAC;MACY,UAAU,GAAG,CAAC,MAAW,EAAE,IAAY,KAAS;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,GAAG,GAAG,MAAM,CAAA;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,MAAM,GAAG,KAAK,CAAA;YACd,MAAK;AACN,SAAA;AACF,KAAA;AACD,IAAA,OAAO,MAAM,CAAA;AACf,EAAC;AAEM,MAAM,YAAY,GAAG,CAAC,MAAW,EAAE,IAAY,EAAE,KAAA,GAAa,IAAI,KAAS;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,GAAG,GAAG,MAAM,CAAA;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;AACpB,QAAA,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1B,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;AACd,SAAA;AACD,QAAA,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;AACf,KAAA;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACvC,IAAA,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;AAC9B,QAAA,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;AACrB,KAAA;AACD,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;AACrB,EAAC;MAEY,cAAc,GAAG,CAAC,MAAW,EAAE,IAAY,KAAa;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,GAAG,GAAG,MAAM,CAAA;IAChB,IAAI,OAAO,GAAG,IAAI,CAAA;AAClB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,OAAO,GAAG,KAAK,CAAA;YACf,MAAK;AACN,SAAA;AACF,KAAA;AACD,IAAA,IAAI,OAAO,EAAE;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACvC,QAAA,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;AACpC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;AACpB,SAAA;AACF,KAAA;AACD,IAAA,OAAO,OAAO,CAAA;AAChB,EAAC;AAEY,MAAA,IAAI,GAAG,CAAC,EAAa,KAAI;IACpC,IAAI;QACF,OAAO,EAAE,EAAE,CAAA;AACZ,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AACH,EAAC;MAEY,OAAO,GAAG,CAAe,MAAS,EAAE,EAAkC,KAAI;IACrF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;QAC1C,EAAE,CAAE,MAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;AAC/B,KAAC,CAAC,CAAA;AACJ;;MCnKa,QAAQ,CAAA;AAEnB,IAAA,OAAO,IAAI,CAAI,IAAO,EAAE,KAAQ,EAAA;QAC9B,MAAM,IAAI,GAAM,EAAE,CAAA;AAClB,QAAA,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAM,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAM,KAAK,CAAC,CAAC,CAAA;AACzE,QAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACjB,YAAA,MAAM,OAAO,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;AAClC,YAAA,MAAM,QAAQ,GAAI,KAAa,CAAC,GAAG,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;AACxC,gBAAA,IAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AAC1B,aAAA;AACH,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,IAAI,CAAA;KACZ;AAGO,IAAA,OAAO,QAAQ,CAAC,IAAQ,EAAE,KAAS,EAAA;AACzC,QAAA,IAAI,QAAQ,CAAA;QACZ,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,QAAQ,GAAG,IAAI,CAAA;AAChB,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,QAAQ,GAAG,KAAK,CAAA;AACjB,SAAA;AAAM,aAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC/B,QAAQ,GAAG,KAAK,CAAA;AACjB,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACpE,aAAA;AACF,SAAA;QACD,OAAO,QAAQ,IAAI,KAAK,CAAA;KACzB;AAED,IAAA,OAAO,mBAAmB,CAA2B,QAAyB,EAAE,IAAO,EAAA;AACrF,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;AACjC,QAAA,IAAI,GAAG,IAAI,IAAS,EAAE,CAAA;QACtB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,QAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AACrE,SAAC,CAAC,CAAA;KACH;AAEO,IAAA,OAAO,cAAc,CAA2B,SAAc,EAAE,YAAiB,EAAA;QACvF,IAAI,KAAK,GAAG,IAAI,CAAA;AAChB,QAAA,IAAI,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;YACzC,KAAK,GAAG,YAAY,CAAA;AACrB,SAAA;AAAM,aAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACzC,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;AAC3D,SAAA;AAAM,aAAA;YACL,KAAK,GAAG,SAAS,CAAA;AAClB,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb;AAED,IAAA,OAAO,cAAc,CAA2B,QAAyB,EAAE,gBAA0B,EAAA;AACnG,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,IAAI,GAAQ,EAAE,CAAA;QACpB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACrC,IAAI,gBAAgB,IAAI,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AACxD,gBAAA,MAAM,KAAK,GAAI,QAAgB,CAAC,GAAG,CAAC,CAAA;AACpC,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACjB,gBAAA,IAAI,KAAK,EAAE;oBACT,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;wBAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC3C,qBAAA;AAAM,yBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACrC,wBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,IAAI,KAAK,CAAC,CAAA;AACjE,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,IAAI,CAAA;KACZ;AAGD,IAAA,OAAO,SAAS,CAAmB,GAAc,EAAE,gBAAyB,EAAA;QAC1E,MAAM,IAAI,GAAO,EAAE,CAAA;;QAEnB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAkB,KAAI;AACrD,YAAA,IAAI,CAAC,GAAQ,KAAK,CAAC,KAAK,CAAA;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1D,gBAAA,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACrB,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,mBAAmB,CAAmB,KAAkB,EAAE,gBAAyB,EAAE,WAAmB,MAAM,EAAA;QACnH,MAAM,IAAI,GAAO,EAAE,CAAA;AACnB,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;AACpB,YAAA,IAAI,CAAE,KAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AACjE,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,IAAI,CAAA;KACZ;AAED;;;;AAIG;IACH,OAAO,yBAAyB,CAAmB,GAAM,EAAA;QACvD,MAAM,QAAQ,GAAS,EAAE,CAAA;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC/B,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAA;AAC7B,YAAA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAW,CAAC,EAAE;AAC5C,gBAAA,QAAQ,CAAC,GAAc,CAAC,GAAG,CAAC,CAAA;AAC7B,aAAA;AACH,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,QAAQ,CAAA;KAChB;AAED;;;;AAIG;IACH,OAAO,kBAAkB,CAAC,GAAW,EAAA;AACnC,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;KACjE;AAGF;;MCtIY,YAAY,CAAA;IAEvB,OAAO,KAAK,CAAC,YAA0B,EAAA;AACrC,QAAA,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,WAAW,EAAE,CAAA;AAC3B,SAAA;KACF;AAEF;;MCTY,UAAU,CAAA;IAIrB,OAAO,0BAA0B,CAAC,KAAa,EAAE,MAAgB,EAAE,gBAAwB,GAAG,EAAA;QAC5F,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,MAAM,GAAG,GAA+B,EAAE,CAAA;AAC1C,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QAClC,IAAI,GAAG,GAAG,CAAC,CAAA;AACX,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE;AAClB,YAAA,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,GAAG,EAAE,CAAA;AACvC,SAAA;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AAGD;;;;AAIG;IACH,OAAO,oBAAoB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAA;QACtB,MAAM,WAAW,GAAG,EAAE,CAAA;QACtB,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE;AACxB,YAAA,IAAK,UAAU,CAAC,QAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC5D,MAAM;AACP,aAAA;YACD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AACvC,SAAA;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;QAC1F,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACpC,QAAA,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAC,CAAA;KAChD;IAED,OAAO,sBAAsB,CAAC,KAAa,EAAA;QACzC,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,MAAM,WAAW,GAAG,EAAE,CAAA;AACtB,QAAA,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAA;QAEtB,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE;AACxB,YAAA,IAAK,UAAU,CAAC,QAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC5D,MAAM;AACP,aAAA;YACD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AACvC,SAAA;QACD,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,IAAI;AACF,gBAAA,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;gBACnD,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;AACrC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACV,WAAW,GAAG,CAAC,CAAC;AACjB,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC,CAAA;KAGlC;;AAxDM,UAAQ,CAAA,QAAA,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;MCFnE,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;AACE,QAAA,IAAA,CAAA,QAAQ,GAaJ,EAAS,CAAA;AAWb,QAAA,IAAI,CAAA,IAAA,GAAsC,KAAK,CAAA;AAC/C,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAA;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAA;KAC7B;AAAA;;AC5BD;;;;AAII;AAGJ;;;;;;;;;AASG;AAEH;AACA,MAAM,UAAU,GAAG,kEAAkE,CAAC;AACtF;AACA,IAAI,YAAY,GAAW,CAAC,CAAC;AAE7B;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAa,EAAE,CAAC;AAEtB,MAAA,cAAc,GAAiB,YAAA;AAC1C,IAAA,IAAI,CAAS,CAAC;AACd,IAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACrB,IAAA,MAAM,aAAa,IAAI,GAAG,KAAK,YAAY,CAAC,CAAC;IAC7C,YAAY,GAAG,GAAG,CAAC;AAEnB,IAAA,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACvB,QAAA,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;;QAEhD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;AAC5B,KAAA;IACD,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACnE,KAAA;IAGD,IAAI,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjC,IAAI,CAAC,aAAa,EAAE;QAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACvB,YAAA,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACnD,SAAA;AACF,KAAA;AAAM,SAAA;;AAEL,QAAA,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,SAAA;AACD,QAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACpB,KAAA;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACvB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAA;AACD,IAAA,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACzC,KAAA;AAED,IAAA,OAAO,EAAE,CAAC;AACZ;;ACxDa,MAAA,SAAS,GAAG;AACvB;;AAEG;AACH,IAAA,MAAM,EAA0B,QAAQ;AAExC;;AAEG;AACH,IAAA,KAAK,EAA2B,OAAO;AAEvC;;AAEG;AACH,IAAA,GAAG,EAA6B,KAAK;AAErC;;;AAGG;AACH,IAAA,YAAY,EAAoB,cAAc;AAE9C;;;AAGG;AACH,IAAA,OAAO,EAAyB,SAAS;EAC1C;MAGY,UAAU,CAAA;;AAOrB,IAAA,WAAA,CAAY,MAAc,EAAE,MAAyB,EAAE,GAAY,EAAA;AACjE,QAAA,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAA;KACtB;AACF,CAAA;MAGY,UAAU,CAAA;AAKrB,IAAA,WAAA,GAAA;QAFQ,IAAA,CAAA,GAAG,GAA6B,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;AAG7D,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACnC;AAED,IAAA,IAAI,CAAC,OAAmB,EAAA;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACvB;;wGAXU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACrDL,MAAO,UAAW,SAAQ,UAAU,CAAA;AAMxC,IAAA,WAAA,CAAY,KAAe,EAAE,OAAY,EAAE,GAAG,OAAc,EAAA;AAC1D,QAAA,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;KACnB;;AAVM,UAAS,CAAA,SAAA,GAAU,YAAY;;ACExC,MAAMA,QAAM,GAAG,sGAAsG,CAAA;AAIrH;;;AAGG;AACU,MAAA,SAAS,GAAG;AACvB,IAAA,IAAI,EAAa,MAAM;AACvB,IAAA,KAAK,EAAY,OAAO;AACxB,IAAA,KAAK,EAAY,OAAO;AACxB,IAAA,IAAI,EAAa,MAAM;AACvB,IAAA,IAAI,EAAa,MAAM;AACvB,IAAA,KAAK,EAAY,OAAO;AACxB,IAAA,KAAK,EAAY,OAAO;EACzB;MAEY,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;AACE,QAAA,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAA;AACjC,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAA;AACnC;;;;AAIG;AACH,QAAA,IAAQ,CAAA,QAAA,GAAa,OAAO,CAAA;KAC7B;AAAA,CAAA;AAED,MAAM,OAAO,GAAG,UAAU,GAAG,CAAQ,EAAA,GAAS,CAAA;MAIxB,MAAM,CAAA;AAI1B,IAAA,WAAA,CAAkC,aAAmC,EAAA;AAFrE,QAAA,IAAA,CAAA,MAAM,GAAwB,IAAI,mBAAmB,EAAE,CAAA;QAGrD,IAAI,CAAC,MAAM,GAAG,aAAa,IAAI,IAAI,CAAC,MAAM,CAAA;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAA;KAClB;AAID,IAAA,KAAK,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACvD;AAED,IAAA,KAAK,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACvD;AAED,IAAA,IAAI,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACtD;AAED,IAAA,IAAI,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AACjC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACtD;AAED,IAAA,KAAK,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACvD;AAED,IAAA,KAAK,CAAC,OAAY,EAAE,GAAG,OAAa,EAAA;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;KACvD;IAGO,UAAU,GAAA;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;AAChD;;;AAGG;;;AAGH,QAAA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;;YAE1B,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;;YAEtB,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;;YAEtB,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;;YAErB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;;YAErB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;;YAEtB,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;;AAEvB,SAAA;KACF;;oGAjEmB,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wGAAN,MAAM,EAAA,CAAA,CAAA;4FAAN,MAAM,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;8BAKc,QAAQ;;;;ACjCjC,MAAM,MAAM,GAAG,sGAAsG,CAAA;AAGrH;;AAEG;AAEG,MAAO,aAAc,SAAQ,MAAM,CAAA;AAEvC,IAAA,WAAA,CAAwB,aAAmC,EAAA;QACzD,KAAK,CAAC,aAAa,CAAC,CAAA;KACrB;AAED,IAAA,GAAG,CAAC,OAAmB,EAAA;QACrB,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAA;QAChC,IAAI,IAAI,GAAW,EAAE,CAAA;AACrB,QAAA,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;YACrF,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAA;AACjG,SAAA;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAA;QAC/D,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAA;AACjE,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;QACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,EAAE;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC3B,SAAA;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;KACjC;;2GAtBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,CAAA,CAAA;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;8BAGI,QAAQ;;;;ACNjB,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAD/D,IAAA,WAAA,GAAA;;AAEE,QAAA,IAAgB,CAAA,gBAAA,GAAW,KAAK,CAAA;KACjC;;oHAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAtB,sBAAsB,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;AAKX;;AAEG;AAEG,MAAO,SAAU,SAAQ,aAAa,CAAA;IAI1C,WAAoB,CAAA,GAAe,EAAc,aAAmC,EAAA;QAClF,KAAK,CAAC,aAAa,CAAC,CAAA;AADF,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;AAF1B,QAAA,IAAA,CAAA,MAAM,GAA0B,IAAI,sBAAsB,EAAE,CAAA;QAInE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;KACvD;AAEQ,IAAA,GAAG,CAAC,OAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACtB,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAC;AAC9B,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACnB,SAAA;KACF;;uGAdU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAT,SAAS,EAAA,CAAA,CAAA;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;8BAK6B,QAAQ;;;;ACjB1C,MAAO,iBAAkB,SAAQ,UAAU,CAAA;AAI/C,IAAA,WAAA,CAAY,GAAU,EAAE,IAAY,EAAE,iBAAyB,EAAA;QAC7D,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;AACvD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;KAC3C;IAED,OAAO,MAAM,CAAC,GAAe,EAAA;QAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;KAC3E;;AAXM,iBAAS,CAAA,SAAA,GAAG,mBAAmB,CAAA;AAelC,MAAO,uCAAwC,SAAQ,iBAAiB,CAAA;AAG5E,IAAA,WAAA,CAAY,IAAY,EAAA;AACtB,QAAA,KAAK,CAAC,uCAAuC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;KACzD;AAED,IAAA,OAAO,IAAI,CAAC,GAAe,EAAE,IAAY,EAAA;QACvC,GAAG,CAAC,IAAI,CAAC,IAAI,uCAAuC,CAAC,IAAI,CAAC,CAAC,CAAA;KAC5D;;AARM,uCAAG,CAAA,GAAA,GAAW,wBAAwB,CAAA;AAWzC,MAAO,6BAA8B,SAAQ,iBAAiB,CAAA;IAGlE,WAAY,CAAA,IAAY,EAAS,OAAe,EAAA;QAC9C,KAAK,CAAC,6BAA6B,CAAC,GAAG,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAA;AAD5C,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;KAE/C;AAED,IAAA,OAAO,IAAI,CAAC,GAAe,EAAE,IAAY,EAAE,OAAe,EAAA;QACxD,GAAG,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;KAC3D;;AARM,6BAAG,CAAA,GAAA,GAAW,cAAc,CAAA;AAY/B,MAAO,mCAAoC,SAAQ,iBAAiB,CAAA;IAGxE,WAAY,CAAA,IAAY,EAAS,aAAqB,EAAA;QACpD,KAAK,CAAC,mCAAmC,CAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,aAAa,CAAC,CAAA;AADjE,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAQ;KAErD;AAGD,IAAA,OAAO,IAAI,CAAC,GAAe,EAAE,IAAY,EAAE,OAAe,EAAA;QACxD,GAAG,CAAC,IAAI,CAAC,IAAI,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;KACjE;;AATM,mCAAM,CAAA,MAAA,GAAW,oBAAoB;;AC/CxC,MAAO,UAAW,SAAQ,UAAU,CAAA;IAKxC,WAAY,CAAA,MAAuB,EAAE,GAAU,EAAA;QAC7C,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;KACzC;IAED,OAAO,MAAM,CAAC,GAAc,EAAA;QAC1B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAACC,QAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;KACxE;AAED,IAAA,OAAO,cAAc,GAAA;QACnB,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;KAC5D;;AAdM,UAAS,CAAA,SAAA,GAAW,KAAK,CAAA;AAEzB,UAAc,CAAA,cAAA,GAAG,gBAAgB;;ACgB7B,MAAA,oBAAoB,GAAG,YAAA;IAClC,OAAO;AACL,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,IAAI;AACb,SAAA;KACF,CAAA;AACH;;MCvBa,WAAW,CAAA;IAEtB,OAAO,QAAQ,CAAC,KAAqB,EAAA;QACnC,IAAI,OAAO,GAAY,EAAE,CAAA;AACzB,QAAA,KAAK,CAAC,YAAY;aACf,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,CAAC;aAC1C,GAAG,CAAC,SAAS,IAAG;AACf,YAAA,OAAO,SAAS,CAAA;AAClB,SAAC,CAAC;aACD,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC;AAC/B,aAAA,MAAM,CAAC,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;aACnD,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;QAErF,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE5B,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC1C,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,WAAW,CAAC,MAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA;QAC/B,OAAO,CAAC,CAAC,UAAU,EAAE;AACnB,YAAA,CAAC,GAAG,CAAC,CAAC,UAAU,CAAA;AACjB,SAAA;AACD,QAAA,OAAO,CAAC,CAAA;KACT;AAED,IAAA,OAAO,4BAA4B,CAAC,MAAc,EAAE,gBAAwB,EAAA;AAC1E,QAAA,IAAI,CAAC,GAA0B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA;QACtD,GAAG;AACD,YAAA,IAAI,CAAC,CAAC,SAAS,IAAK,CAAC,CAAC,SAAiB,CAAC,KAAK,CAAC,IAAI,gBAAgB,EAAE;gBAClE,MAAK;AACN,aAAA;AACD,YAAA,CAAC,GAAG,CAAC,CAAC,UAAU,CAAA;AACjB,SAAA,QAAQ,CAAC,EAAC;AACX,QAAA,OAAO,CAAC,CAAA;KACT;AAGD;;;;;;AAMG;AACH,IAAA,OAAO,iCAAiC,CAAC,KAAY,EAAE,gBAAwB,EAAA;QAC7E,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC7B,gBAAA,IAAI,KAAK,CAAC,SAAS,IAAK,KAAK,CAAC,SAAiB,CAAC,KAAK,CAAC,KAAK,gBAAgB,EAAE;oBAC3E,MAAM,GAAG,KAAK,CAAA;oBACd,MAAK;AACN,iBAAA;AACF,aAAA;YACD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,MAAM,GAAG,WAAW,CAAC,iCAAiC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;AAC3F,oBAAA,IAAI,MAAM,EAAE;wBACV,MAAK;AACN,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AAED;;;;;AAKG;AACH,IAAA,OAAO,yBAAyB,CAAC,KAAY,EAAE,IAAY,EAAA;QACzD,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC7B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;oBACvB,MAAM,GAAG,KAAK,CAAA;oBACd,MAAK;AACN,iBAAA;AACF,aAAA;YACD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,MAAM,GAAG,WAAW,CAAC,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACvE,oBAAA,IAAI,MAAM,EAAE;wBACV,MAAK;AACN,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AAEF;;MC3FY,YAAY,GAAG,CAAC,CAAU,EAAE,CAAU,KAAI;AACrD,IAAA,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAA;AACpC,EAAC;AAQY,MAAA,SAAS,GAAiB;AACrC,IAAA,GAAG,EAAY;AACb,QAAA,OAAO,EAAU,KAAK;AACtB,QAAA,SAAS,EAAQ,KAAK;AACtB,QAAA,KAAK,EAAY,KAAK;AACtB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,UAAU,EAAO,CAAC;AAClB,QAAA,SAAS,EAAQ,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,IAAI,EAAa,GAAG;AACpB,QAAA,QAAQ,EAAS,SAAS;AAC3B,KAAA;AACD,IAAA,CAAC,EAAc;AACb,QAAA,OAAO,EAAU,GAAG;AACpB,QAAA,SAAS,EAAQ,MAAM;AACvB,QAAA,KAAK,EAAY,MAAM;AACvB,QAAA,eAAe,EAAE,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,SAAS,EAAQ,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,IAAI,EAAa,KAAK;AACtB,QAAA,QAAQ,EAAS,KAAK;AACvB,KAAA;AACD,IAAA,GAAG,EAAY;AACb,QAAA,OAAO,EAAU,KAAK;AACtB,QAAA,SAAS,EAAQ,QAAQ;AACzB,QAAA,KAAK,EAAY,KAAK;AACtB,QAAA,eAAe,EAAE,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,SAAS,EAAQ,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,IAAI,EAAa,GAAG;AACpB,QAAA,QAAQ,EAAS,GAAG;AACrB,KAAA;AACD,IAAA,CAAC,EAAc;AACb,QAAA,OAAO,EAAU,GAAG;AACpB,QAAA,SAAS,EAAQ,QAAQ;AACzB,QAAA,KAAK,EAAY,KAAK;AACtB,QAAA,eAAe,EAAE,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,SAAS,EAAQ,GAAG;AACpB,QAAA,UAAU,EAAO,EAAE;AACnB,QAAA,IAAI,EAAa,IAAI;AACrB,QAAA,QAAQ,EAAS,KAAK;AACvB,KAAA;AACD,IAAA,EAAE,EAAa;AACb,QAAA,OAAO,EAAU,IAAI;AACrB,QAAA,SAAS,EAAQ,aAAa;AAC9B,QAAA,KAAK,EAAY,IAAI;AACrB,QAAA,eAAe,EAAE,EAAE;AACnB,QAAA,UAAU,EAAO,GAAG;AACpB,QAAA,SAAS,EAAQ,IAAI;AACrB,QAAA,UAAU,EAAO,CAAC;AAClB,QAAA,IAAI,EAAa,SAAS;AAC1B,QAAA,QAAQ,EAAS,GAAG;AACrB,KAAA;EACF;MAEY,eAAe,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAAI;AAC9E,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AAC1D;;MClFa,KAAK,CAAA;IAChB,OAAO,6BAA6B,CAAC,cAAiC,EAAA;QACpE,UAAU,CAAC,MAAK;YACd,cAAc,CAAC,YAAY,EAAE,CAAA;SAC9B,EAAE,GAAG,CAAC,CAAA;KACR;AACF;;MCPY,gBAAgB,CAAA;AAE3B,IAAA,OAAO,gBAAgB,GAAA;AACrB,QAAA,IAAI,SAAkB,CAAA;AACtB,QAAA,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;AAC1B,YAAA,SAAS,GAAG,SAAS,CAAC,WAAW,CAAa,CAAA;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AACjC,SAAA;AAED,QAAA,OAAO,SAAS,CAAA;KACjB;AAEF;;ACbD,MAAM,UAAU,GAAa;AAC3B,IAAA,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;AAC9G,IAAA,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY;IACjH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;AACrH,IAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;AACnH,IAAA,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ;AACrH,IAAA,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;AAChH,IAAA,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY;AACzG,IAAA,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;AAC7G,IAAA,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc;AACpH,IAAA,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ;AAC5G,IAAA,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO;AACrH,IAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC5G,IAAA,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;AAClH,IAAA,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;AACnH,IAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;AAC3G,IAAA,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;AACpH,IAAA,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa;AAChH,IAAA,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW;AAC7G,IAAA,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;AAC9G,IAAA,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAClH,IAAA,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IAChH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IAClH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;AACrH,IAAA,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa;IAC3G,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;AACpH,IAAA,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;AACpH,IAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;IAC5G,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;CAAC,CAAC;AAGzE,MAAM,KAAK,GAAa;AACtB,IAAA,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU;AACnH,IAAA,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU;IACnH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;AAC7G,IAAA,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;AAC9G,IAAA,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS;AAC1G,IAAA,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK;AAC/G,IAAA,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;AAC5G,IAAA,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;IAC/G,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;IACpH,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;AAC3G,IAAA,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ;AAC3G,IAAA,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AAC3G,IAAA,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACjH,IAAA,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;AACjH,IAAA,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAC3G,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;AAClH,IAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ;AACrH,IAAA,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ;AACrH,IAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa;IACnH,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;AACpH,IAAA,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AACrH,IAAA,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW;AAClH,IAAA,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;AAC9G,IAAA,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;AAC7G,IAAA,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO;IACjH,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS;AACnH,IAAA,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;AACnH,IAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;IAChH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO;AACpH,IAAA,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;AACpH,IAAA,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ;AACrH,IAAA,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS;CACxF,CAAA;MAGY,aAAa,CAAA;AAIxB,IAAA,OAAO,QAAQ,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AACxE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAEnE,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;KAC9C;;AARM,aAAA,CAAA,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAA;AACpC,aAAA,CAAA,WAAW,GAAG,KAAK,CAAC,MAAM;;MC/DtB,MAAM,CAAA;IAEjB,OAAO,KAAK,CAAC,KAAqB,EAAA;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;YACvC,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;SACrD,CAAC,CAAC,CAAA;KACJ;IAED,OAAO,IAAI,CAAC,KAA6B,EAAA;QACvC,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;KAC5C;IAED,OAAO,MAAM,CAAC,KAA6B,EAAA;QACzC,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAC7C;AAED,IAAA,OAAO,gBAAgB,CAAC,KAA6B,EAAE,IAAa,EAAA;AAClE,QAAA,MAAM,KAAK,GAAU,CAAC,EAAE,CAAC,CAAA;AACzB,QAAA,IAAI,KAAK,GAA+B,KAAK,CAAC,IAAI,CAAA;AAClD,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;AAC7C,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACtB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAA;AACzB,SAAA;;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAY,CAAQ,CAAA;KACxD;IAED,OAAO,OAAO,CAAC,KAAqB,EAAA;QAClC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;YAC3C,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;SACtD,CAAC,CAAC,CAAA;KACJ;IAED,OAAO,SAAS,CAAC,KAA0B,EAAA;AACzC,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;QAEtB,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAA;AACzB,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb;IAED,OAAO,UAAU,CAAC,KAA0B,EAAA;QAC1C,OAAO,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CACzC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;KAC7E;AAED;;;;;AAKG;IACH,OAAO,YAAY,CAAC,GAAW,EAAA;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAA;AACjB,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACnD,KAAK,GAAG,IAAI,CAAA;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAA;KACb;AAEF;;MCnEY,aAAa,CAAA;AAGxB,IAAA,OAAO,aAAa,CAAC,GAAG,GAAU,EAAA;AAChC,QAAA,IAAI,MAAM,CAAA;AACV,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC;AAC3B,gBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBACf,MAAK;AACN,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AACF;;ACTD;;AAEG;MACmB,IAAI,CAAA;AAIxB,IAAA,WAAA,CAAgC,GAAc,EAAA;AAAd,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAW;QAC5C,IAAI,CAAC,SAAS,GAAG;AACf,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAChC,aAAA;AACD,YAAA,OAAO,EAAE,KAAK;SACf,CAAA;KACF;AAEF;;ACrBD;;AAEG;;ACFH;;AAEG;;;;"}