{"version":3,"names":["LocationCache","AExprRegistryClass","normalizeLocation","url","indexOf","substring","EventTarget","Preferences","constructor","unknownLocations","counter","aes","files","Map","add","ae","meta","has","location","get","file","locationArray","_getColumn","start","line","column","push","remove","aesInLocation","getAEsInLocation","splice","clear","getLoggingMode","undefined","_getLine","loggingMode","LoggingModes","DEFAULT","_getFile","setLoggingModeIfDefault","fileObj","ALL","setLoggingMode","mode","getAEsInColumn","getAEsInFile","extractAEsRecursive","getAEsInLine","fileID","getOrCreate","lines","columns","map","values","flatMap","v","SMART","NONE","oldRegistry","aexprs","aesPerLocation","eventTarget","callbackStack","evaluationStack","Set","addAExpr","aexpr","buildIdFor","dispatchEvent","removeAExpr","deleted","delete","updateAExpr","on","type","callback","addEventListener","off","removeEventListener","addToCallbackStack","popCallbackStack","pop","addToEvaluationStack","popEvaluationStack","locationId","id","purge","each","_isDisposed","callbacks","allAsArray","Array","from","getLocationCache","reference","listeners","filter","listener","eventListeners","fileSaved","toggleLoggingLocation","setLoggingLocation","shouldLog","enable","isInteresting","openURLs","document","body","querySelectorAll","c","getAttribute","self","__aeRegistry__","AExprRegistry"],"sources":["ae-registry.js"],"sourcesContent":["\nimport EventTarget from '../utils/event-target.js';\nimport Preferences from 'src/client/preferences.js';\n\n  \nfunction normalizeLocation(url) {\n  if(!url || !url.indexOf) return url;\n  return url.substring(url.indexOf(\"/src/\"));\n}\n\nclass LocationCache {\n   \n  constructor() {\n    this.unknownLocations = { counter: 0, aes: [] };\n    this.files = new Map();\n  }\n\n  // adds an AE into the cache and returns an unique identifier for this AE.\n  add(ae) {\n    if (ae.meta().has('location')) {\n      let location = ae.meta().get('location');\n      let file = normalizeLocation(location.file);\n      let locationArray = this._getColumn(file, location.start.line, location.start.column);\n      locationArray.aes.push(ae);\n      return file + '@' + location.start.line + ':' + location.start.column + \"#\" + ++locationArray.counter;\n    } else {\n      this.unknownLocations.aes.push(ae);\n      return 'unknown_location#' + ++this.unknownLocations.counter;\n    }\n  }\n\n  remove(ae) {\n    if (ae.meta().has('location')) {\n      let location = ae.meta().get('location');\n      const aesInLocation = this.getAEsInLocation(location);\n      aesInLocation.splice(aesInLocation.indexOf(ae));\n    } else {\n      this.unknownLocations.aes.splice(this.unknownLocations.aes.indexOf(ae));\n    }\n  }\n  \n  clear() {\n    this.files.clear();\n    this.unknownLocations = { counter: 0, aes: [] };\n  }\n  \n  getLoggingMode(file, line = undefined) {\n    if(line) {\n      if(this._getLine(file, line).loggingMode !== LoggingModes.DEFAULT) {\n        return this._getLine(file, line).loggingMode;\n      }\n    }\n    return this._getFile(file).loggingMode;\n  }\n  \n  setLoggingModeIfDefault(file) {\n    const fileObj = this._getFile(file);\n    if(fileObj.loggingMode === LoggingModes.DEFAULT) {\n      fileObj.loggingMode = LoggingModes.ALL;\n    }\n  }\n  \n  setLoggingMode(mode, file, line = undefined) {\n    if(line) {\n      this._getLine(file, line).loggingMode = mode;\n    } else {\n      this._getFile(file).loggingMode = mode;\n    }\n  }\n\n  getAEsInLocation(location) {\n    let file = normalizeLocation(location.file);\n    return this.getAEsInColumn(file, location.start.line, location.start.column);\n  }\n\n  getAEsInFile(file) {\n    return this.extractAEsRecursive(this._getFile(file));\n  }\n\n  getAEsInLine(file, line) {\n    return this.extractAEsRecursive(this._getLine(file, line));\n  }\n\n  getAEsInColumn(file, line, column) {\n    return this.extractAEsRecursive(this._getColumn(file, line, column));\n  }\n  \n  _getFile(file) {\n    let fileID = normalizeLocation(file);\n    return this.files.getOrCreate(fileID, () => {return {loggingMode: LoggingModes.DEFAULT, lines: new Map()}});\n  }\n  \n  _getLine(file, line) {\n    return this._getFile(file).lines.getOrCreate(line, () => {return {loggingMode: LoggingModes.DEFAULT, columns: new Map()}})\n  }\n  \n  _getColumn(file, line, column) {\n    return this._getLine(file, line).columns.getOrCreate(column, () => {return {counter: 0, aes: []}});\n  }\n  \n  extractAEsRecursive(map) {\n    if(!map) return [];\n    if(map.lines) return this.extractAEsRecursive(map.lines);\n    if(map.columns) return this.extractAEsRecursive(map.columns);\n    if (map instanceof Map) {\n      return [...map.values()].flatMap((v) => this.extractAEsRecursive(v));\n    } else {\n      return map.aes;\n    }\n  }\n}\n\n\nexport const LoggingModes = {\n  ALL: \"ALL\",\n  SMART: \"SMART\",\n  NONE: \"NONE\",\n  DEFAULT: \"DEFAULT\",\n}\n/*MD ## Registry of Active Expressions MD*/\nclass AExprRegistryClass {\n  \n  constructor(oldRegistry) {\n    if(oldRegistry) {\n      this.aexprs = oldRegistry.aexprs;\n      this.aesPerLocation = oldRegistry.aesPerLocation;\n      this.eventTarget = oldRegistry.eventTarget;\n      this.callbackStack = oldRegistry.callbackStack;\n      this.evaluationStack = oldRegistry.evaluationStack;\n    } else {\n      this.aexprs = new Set();\n      this.aesPerLocation = new LocationCache();\n      this.eventTarget = new EventTarget();\n      this.callbackStack = [];\n      this.evaluationStack = [];\n    }\n  }\n\n  get loggingMode() {\n    return Preferences.get(\"EnableAEDebugging\") ? (Preferences.get(\"SmartAELogging\") ? LoggingModes.SMART : LoggingModes.ALL) : LoggingModes.NONE;\n  }\n  \n  /**\n   * Handling membership\n   */\n  addAExpr(aexpr) {\n    this.aexprs.add(aexpr);\n    this.buildIdFor(aexpr);\n    this.eventTarget.dispatchEvent('add', aexpr);\n  }\n  \n  removeAExpr(aexpr) {\n    const deleted = this.aexprs.delete(aexpr);\n    this.aesPerLocation.remove(aexpr);\n    if (deleted) {\n      this.eventTarget.dispatchEvent('remove', aexpr);\n    }\n  }\n  \n  updateAExpr(aexpr) {\n    this.eventTarget.dispatchEvent('update', aexpr);\n  }\n  \n\n  on(type, callback) {\n    return this.eventTarget.addEventListener(type, callback);\n  }\n  \n  off(type, callback) {\n    return this.eventTarget.removeEventListener(type, callback);\n  }\n\n  addToCallbackStack(ae, callback) {\n    this.callbackStack.push({ ae, callback });\n  }\n\n  popCallbackStack() {\n    this.callbackStack.pop();\n  }\n\n  addToEvaluationStack(ae) {\n    this.evaluationStack.push(ae);\n  }\n\n  popEvaluationStack() {\n    this.evaluationStack.pop();\n  }\n\n  evaluationStack() {\n    return this.evaluationStack;\n  }\n\n  buildIdFor(ae) {\n    let locationId = this.aesPerLocation.add(ae);\n    ae.meta({ id: locationId });\n  }\n\n  /**\n   * For Development purpose if the registry gets into inconsistent state\n   */\n  purge() {\n    for (let each of this.aexprs) {\n      each._isDisposed = true;\n    }\n    this.eventTarget.callbacks.clear();\n    this.aexprs.clear();\n    this.aesPerLocation.clear();\n  }\n\n  /**\n   * Access\n   */\n  allAsArray() {\n    return Array.from(this.aexprs);\n  }\n  \n  getLocationCache() {\n    return this.aesPerLocation;\n  }\n\n  addEventListener(reference, callback) {\n    if (!this.listeners) this.listeners = [];\n    this.listeners.push({ reference, callback });\n  }\n\n  removeEventListener(reference) {\n    if (!this.listeners) return;\n    this.listeners = this.listeners.filter(listener => listener.reference !== reference);\n  }\n\n  eventListeners() {\n    if (!this.listeners) return [];\n    return this.listeners;\n  }\n  \n  fileSaved(url) {\n    if(this.loggingMode === LoggingModes.SMART) {\n      this.aesPerLocation.setLoggingModeIfDefault(url);\n    }\n  }\n  \n  toggleLoggingLocation(url, line = undefined) {\n    this.setLoggingLocation(!this.shouldLog(url, line), url, line);\n  }\n  \n  setLoggingLocation(enable, url, line = undefined) {\n    this.aesPerLocation.setLoggingMode(enable ? LoggingModes.ALL : LoggingModes.NONE, url, line);\n  }\n  \n  shouldLog(url, line = undefined) {\n    let mode = this.aesPerLocation.getLoggingMode(url, line);\n    mode = mode === LoggingModes.DEFAULT ? this.loggingMode : mode;\n    switch(mode) {\n      case LoggingModes.ALL:\n        return true;\n      case LoggingModes.NONE:\n        return false;\n      case LoggingModes.SMART:\n        return this.isInteresting(url);\n      default:\n        return false;\n    }\n  }\n  \n  isInteresting(url) {\n    //is currently open\n    url = normalizeLocation(url);\n    const openURLs = new Set((Array.from(document.body.querySelectorAll('lively-container')).map(c => normalizeLocation(c.getAttribute('src')))));\n    return openURLs.has(url);\n  }\n}\nself.__aeRegistry__ = new AExprRegistryClass(self.__aeRegistry__);\nexport const AExprRegistry = self.__aeRegistry__;"],"mappings":";;;gCAUMA,aAAa,EA8GbC,kBAAkB;EAnHxB,SAASC,iBAAiB,CAACC,GAAG,EAAE;IAC9B,IAAG,CAACA,GAAG,IAAI,CAACA,GAAG,CAACC,OAAO,EAAE,OAAOD,GAAG;IACnC,OAAOA,GAAG,CAACE,SAAS,CAACF,GAAG,CAACC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC5C;EAAC;IAAA;MAPME,WAAW;IAAA;MACXC,WAAW;IAAA;IAAA;MAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAGTL,kDAAiB;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UAJnBI,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA;QAAA;UAAA;QAAA;QAAA;UACXC,4CAAW;UAAA;QAAA;QAAA;QAAA;MAAA;MAQZP,aAAa,GAAnB,MAAMA,aAAa,CAAC;QAElBQ,WAAW,GAAG;UACZ,IAAI,CAACC,gBAAgB,GAAG;YAAEC,OAAO,EAAE,CAAC;YAAEC,GAAG,EAAE;UAAG,CAAC;UAC/C,IAAI,CAACC,KAAK,GAAG,IAAIC,GAAG,EAAE;QACxB;;QAEA;QACAC,GAAG,CAACC,EAAE,EAAE;UACN,IAAIA,EAAE,CAACC,IAAI,EAAE,CAACC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAIC,QAAQ,GAAGH,EAAE,CAACC,IAAI,EAAE,CAACG,GAAG,CAAC,UAAU,CAAC;YACxC,IAAIC,IAAI,GAAGlB,iBAAiB,CAACgB,QAAQ,CAACE,IAAI,CAAC;YAC3C,IAAIC,aAAa,GAAG,IAAI,CAACC,UAAU,CAACF,IAAI,EAAEF,QAAQ,CAACK,KAAK,CAACC,IAAI,EAAEN,QAAQ,CAACK,KAAK,CAACE,MAAM,CAAC;YACrFJ,aAAa,CAACV,GAAG,CAACe,IAAI,CAACX,EAAE,CAAC;YAC1B,OAAOK,IAAI,GAAG,GAAG,GAAGF,QAAQ,CAACK,KAAK,CAACC,IAAI,GAAG,GAAG,GAAGN,QAAQ,CAACK,KAAK,CAACE,MAAM,GAAG,GAAG,GAAG,EAAEJ,aAAa,CAACX,OAAO;UACvG,CAAC,MAAM;YACL,IAAI,CAACD,gBAAgB,CAACE,GAAG,CAACe,IAAI,CAACX,EAAE,CAAC;YAClC,OAAO,mBAAmB,GAAG,EAAE,IAAI,CAACN,gBAAgB,CAACC,OAAO;UAC9D;QACF;QAEAiB,MAAM,CAACZ,EAAE,EAAE;UACT,IAAIA,EAAE,CAACC,IAAI,EAAE,CAACC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAIC,QAAQ,GAAGH,EAAE,CAACC,IAAI,EAAE,CAACG,GAAG,CAAC,UAAU,CAAC;YACxC,MAAMS,aAAa,GAAG,IAAI,CAACC,gBAAgB,CAACX,QAAQ,CAAC;YACrDU,aAAa,CAACE,MAAM,CAACF,aAAa,CAACxB,OAAO,CAACW,EAAE,CAAC,CAAC;UACjD,CAAC,MAAM;YACL,IAAI,CAACN,gBAAgB,CAACE,GAAG,CAACmB,MAAM,CAAC,IAAI,CAACrB,gBAAgB,CAACE,GAAG,CAACP,OAAO,CAACW,EAAE,CAAC,CAAC;UACzE;QACF;QAEAgB,KAAK,GAAG;UACN,IAAI,CAACnB,KAAK,CAACmB,KAAK,EAAE;UAClB,IAAI,CAACtB,gBAAgB,GAAG;YAAEC,OAAO,EAAE,CAAC;YAAEC,GAAG,EAAE;UAAG,CAAC;QACjD;QAEAqB,cAAc,CAACZ,IAAI,EAAEI,IAAI,GAAGS,SAAS,EAAE;UACrC,IAAGT,IAAI,EAAE;YACP,IAAG,IAAI,CAACU,QAAQ,CAACd,IAAI,EAAEI,IAAI,CAAC,CAACW,WAAW,KAAKC,YAAY,CAACC,OAAO,EAAE;cACjE,OAAO,IAAI,CAACH,QAAQ,CAACd,IAAI,EAAEI,IAAI,CAAC,CAACW,WAAW;YAC9C;UACF;UACA,OAAO,IAAI,CAACG,QAAQ,CAAClB,IAAI,CAAC,CAACe,WAAW;QACxC;QAEAI,uBAAuB,CAACnB,IAAI,EAAE;UAC5B,MAAMoB,OAAO,GAAG,IAAI,CAACF,QAAQ,CAAClB,IAAI,CAAC;UACnC,IAAGoB,OAAO,CAACL,WAAW,KAAKC,YAAY,CAACC,OAAO,EAAE;YAC/CG,OAAO,CAACL,WAAW,GAAGC,YAAY,CAACK,GAAG;UACxC;QACF;QAEAC,cAAc,CAACC,IAAI,EAAEvB,IAAI,EAAEI,IAAI,GAAGS,SAAS,EAAE;UAC3C,IAAGT,IAAI,EAAE;YACP,IAAI,CAACU,QAAQ,CAACd,IAAI,EAAEI,IAAI,CAAC,CAACW,WAAW,GAAGQ,IAAI;UAC9C,CAAC,MAAM;YACL,IAAI,CAACL,QAAQ,CAAClB,IAAI,CAAC,CAACe,WAAW,GAAGQ,IAAI;UACxC;QACF;QAEAd,gBAAgB,CAACX,QAAQ,EAAE;UACzB,IAAIE,IAAI,GAAGlB,iBAAiB,CAACgB,QAAQ,CAACE,IAAI,CAAC;UAC3C,OAAO,IAAI,CAACwB,cAAc,CAACxB,IAAI,EAAEF,QAAQ,CAACK,KAAK,CAACC,IAAI,EAAEN,QAAQ,CAACK,KAAK,CAACE,MAAM,CAAC;QAC9E;QAEAoB,YAAY,CAACzB,IAAI,EAAE;UACjB,OAAO,IAAI,CAAC0B,mBAAmB,CAAC,IAAI,CAACR,QAAQ,CAAClB,IAAI,CAAC,CAAC;QACtD;QAEA2B,YAAY,CAAC3B,IAAI,EAAEI,IAAI,EAAE;UACvB,OAAO,IAAI,CAACsB,mBAAmB,CAAC,IAAI,CAACZ,QAAQ,CAACd,IAAI,EAAEI,IAAI,CAAC,CAAC;QAC5D;QAEAoB,cAAc,CAACxB,IAAI,EAAEI,IAAI,EAAEC,MAAM,EAAE;UACjC,OAAO,IAAI,CAACqB,mBAAmB,CAAC,IAAI,CAACxB,UAAU,CAACF,IAAI,EAAEI,IAAI,EAAEC,MAAM,CAAC,CAAC;QACtE;QAEAa,QAAQ,CAAClB,IAAI,EAAE;UACb,IAAI4B,MAAM,GAAG9C,iBAAiB,CAACkB,IAAI,CAAC;UACpC,OAAO,IAAI,CAACR,KAAK,CAACqC,WAAW,CAACD,MAAM,EAAE,MAAM;YAAC,OAAO;cAACb,WAAW,EAAEC,YAAY,CAACC,OAAO;cAAEa,KAAK,EAAE,IAAIrC,GAAG;YAAE,CAAC;UAAA,CAAC,CAAC;QAC7G;QAEAqB,QAAQ,CAACd,IAAI,EAAEI,IAAI,EAAE;UACnB,OAAO,IAAI,CAACc,QAAQ,CAAClB,IAAI,CAAC,CAAC8B,KAAK,CAACD,WAAW,CAACzB,IAAI,EAAE,MAAM;YAAC,OAAO;cAACW,WAAW,EAAEC,YAAY,CAACC,OAAO;cAAEc,OAAO,EAAE,IAAItC,GAAG;YAAE,CAAC;UAAA,CAAC,CAAC;QAC5H;QAEAS,UAAU,CAACF,IAAI,EAAEI,IAAI,EAAEC,MAAM,EAAE;UAC7B,OAAO,IAAI,CAACS,QAAQ,CAACd,IAAI,EAAEI,IAAI,CAAC,CAAC2B,OAAO,CAACF,WAAW,CAACxB,MAAM,EAAE,MAAM;YAAC,OAAO;cAACf,OAAO,EAAE,CAAC;cAAEC,GAAG,EAAE;YAAE,CAAC;UAAA,CAAC,CAAC;QACpG;QAEAmC,mBAAmB,CAACM,GAAG,EAAE;UACvB,IAAG,CAACA,GAAG,EAAE,OAAO,EAAE;UAClB,IAAGA,GAAG,CAACF,KAAK,EAAE,OAAO,IAAI,CAACJ,mBAAmB,CAACM,GAAG,CAACF,KAAK,CAAC;UACxD,IAAGE,GAAG,CAACD,OAAO,EAAE,OAAO,IAAI,CAACL,mBAAmB,CAACM,GAAG,CAACD,OAAO,CAAC;UAC5D,IAAIC,GAAG,YAAYvC,GAAG,EAAE;YACtB,OAAO,CAAC,GAAGuC,GAAG,CAACC,MAAM,EAAE,CAAC,CAACC,OAAO,CAAEC,CAAC,IAAK,IAAI,CAACT,mBAAmB,CAACS,CAAC,CAAC,CAAC;UACtE,CAAC,MAAM;YACL,OAAOH,GAAG,CAACzC,GAAG;UAChB;QACF;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UApGKX,8CAAa;UAAA;QAAA;QAAA;QAAA;MAAA;MAAA,wBAuGNoC,YAAY,GAAG;QAC1BK,GAAG,EAAE,KAAK;QACVe,KAAK,EAAE,OAAO;QACdC,IAAI,EAAE,MAAM;QACZpB,OAAO,EAAE;MACX,CAAC;MACD;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,wBANaD,6CAAY;UAAA;QAAA;QAAA;QAAA;MAAA;MAOnBnC,kBAAkB,GAAxB,MAAMA,kBAAkB,CAAC;QAEvBO,WAAW,CAACkD,WAAW,EAAE;UACvB,IAAGA,WAAW,EAAE;YACd,IAAI,CAACC,MAAM,GAAGD,WAAW,CAACC,MAAM;YAChC,IAAI,CAACC,cAAc,GAAGF,WAAW,CAACE,cAAc;YAChD,IAAI,CAACC,WAAW,GAAGH,WAAW,CAACG,WAAW;YAC1C,IAAI,CAACC,aAAa,GAAGJ,WAAW,CAACI,aAAa;YAC9C,IAAI,CAACC,eAAe,GAAGL,WAAW,CAACK,eAAe;UACpD,CAAC,MAAM;YACL,IAAI,CAACJ,MAAM,GAAG,IAAIK,GAAG,EAAE;YACvB,IAAI,CAACJ,cAAc,GAAG,IAAI5D,aAAa,EAAE;YACzC,IAAI,CAAC6D,WAAW,GAAG,IAAIvD,WAAW,EAAE;YACpC,IAAI,CAACwD,aAAa,GAAG,EAAE;YACvB,IAAI,CAACC,eAAe,GAAG,EAAE;UAC3B;QACF;QAEA,IAAI5B,WAAW,GAAG;UAChB,OAAO5B,WAAW,CAACY,GAAG,CAAC,mBAAmB,CAAC,GAAIZ,WAAW,CAACY,GAAG,CAAC,gBAAgB,CAAC,GAAGiB,YAAY,CAACoB,KAAK,GAAGpB,YAAY,CAACK,GAAG,GAAIL,YAAY,CAACqB,IAAI;QAC/I;;QAEA;AACF;AACA;QACEQ,QAAQ,CAACC,KAAK,EAAE;UACd,IAAI,CAACP,MAAM,CAAC7C,GAAG,CAACoD,KAAK,CAAC;UACtB,IAAI,CAACC,UAAU,CAACD,KAAK,CAAC;UACtB,IAAI,CAACL,WAAW,CAACO,aAAa,CAAC,KAAK,EAAEF,KAAK,CAAC;QAC9C;QAEAG,WAAW,CAACH,KAAK,EAAE;UACjB,MAAMI,OAAO,GAAG,IAAI,CAACX,MAAM,CAACY,MAAM,CAACL,KAAK,CAAC;UACzC,IAAI,CAACN,cAAc,CAACjC,MAAM,CAACuC,KAAK,CAAC;UACjC,IAAII,OAAO,EAAE;YACX,IAAI,CAACT,WAAW,CAACO,aAAa,CAAC,QAAQ,EAAEF,KAAK,CAAC;UACjD;QACF;QAEAM,WAAW,CAACN,KAAK,EAAE;UACjB,IAAI,CAACL,WAAW,CAACO,aAAa,CAAC,QAAQ,EAAEF,KAAK,CAAC;QACjD;QAGAO,EAAE,CAACC,IAAI,EAAEC,QAAQ,EAAE;UACjB,OAAO,IAAI,CAACd,WAAW,CAACe,gBAAgB,CAACF,IAAI,EAAEC,QAAQ,CAAC;QAC1D;QAEAE,GAAG,CAACH,IAAI,EAAEC,QAAQ,EAAE;UAClB,OAAO,IAAI,CAACd,WAAW,CAACiB,mBAAmB,CAACJ,IAAI,EAAEC,QAAQ,CAAC;QAC7D;QAEAI,kBAAkB,CAAChE,EAAE,EAAE4D,QAAQ,EAAE;UAC/B,IAAI,CAACb,aAAa,CAACpC,IAAI,CAAC;YAAEX,EAAE;YAAE4D;UAAS,CAAC,CAAC;QAC3C;QAEAK,gBAAgB,GAAG;UACjB,IAAI,CAAClB,aAAa,CAACmB,GAAG,EAAE;QAC1B;QAEAC,oBAAoB,CAACnE,EAAE,EAAE;UACvB,IAAI,CAACgD,eAAe,CAACrC,IAAI,CAACX,EAAE,CAAC;QAC/B;QAEAoE,kBAAkB,GAAG;UACnB,IAAI,CAACpB,eAAe,CAACkB,GAAG,EAAE;QAC5B;QAEAlB,eAAe,GAAG;UAChB,OAAO,IAAI,CAACA,eAAe;QAC7B;QAEAI,UAAU,CAACpD,EAAE,EAAE;UACb,IAAIqE,UAAU,GAAG,IAAI,CAACxB,cAAc,CAAC9C,GAAG,CAACC,EAAE,CAAC;UAC5CA,EAAE,CAACC,IAAI,CAAC;YAAEqE,EAAE,EAAED;UAAW,CAAC,CAAC;QAC7B;;QAEA;AACF;AACA;QACEE,KAAK,GAAG;UACN,KAAK,IAAIC,IAAI,IAAI,IAAI,CAAC5B,MAAM,EAAE;YAC5B4B,IAAI,CAACC,WAAW,GAAG,IAAI;UACzB;UACA,IAAI,CAAC3B,WAAW,CAAC4B,SAAS,CAAC1D,KAAK,EAAE;UAClC,IAAI,CAAC4B,MAAM,CAAC5B,KAAK,EAAE;UACnB,IAAI,CAAC6B,cAAc,CAAC7B,KAAK,EAAE;QAC7B;;QAEA;AACF;AACA;QACE2D,UAAU,GAAG;UACX,OAAOC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACjC,MAAM,CAAC;QAChC;QAEAkC,gBAAgB,GAAG;UACjB,OAAO,IAAI,CAACjC,cAAc;QAC5B;QAEAgB,gBAAgB,CAACkB,SAAS,EAAEnB,QAAQ,EAAE;UACpC,IAAI,CAAC,IAAI,CAACoB,SAAS,EAAE,IAAI,CAACA,SAAS,GAAG,EAAE;UACxC,IAAI,CAACA,SAAS,CAACrE,IAAI,CAAC;YAAEoE,SAAS;YAAEnB;UAAS,CAAC,CAAC;QAC9C;QAEAG,mBAAmB,CAACgB,SAAS,EAAE;UAC7B,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE;UACrB,IAAI,CAACA,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,MAAM,CAACC,QAAQ,IAAIA,QAAQ,CAACH,SAAS,KAAKA,SAAS,CAAC;QACtF;QAEAI,cAAc,GAAG;UACf,IAAI,CAAC,IAAI,CAACH,SAAS,EAAE,OAAO,EAAE;UAC9B,OAAO,IAAI,CAACA,SAAS;QACvB;QAEAI,SAAS,CAAChG,GAAG,EAAE;UACb,IAAG,IAAI,CAACgC,WAAW,KAAKC,YAAY,CAACoB,KAAK,EAAE;YAC1C,IAAI,CAACI,cAAc,CAACrB,uBAAuB,CAACpC,GAAG,CAAC;UAClD;QACF;QAEAiG,qBAAqB,CAACjG,GAAG,EAAEqB,IAAI,GAAGS,SAAS,EAAE;UAC3C,IAAI,CAACoE,kBAAkB,CAAC,CAAC,IAAI,CAACC,SAAS,CAACnG,GAAG,EAAEqB,IAAI,CAAC,EAAErB,GAAG,EAAEqB,IAAI,CAAC;QAChE;QAEA6E,kBAAkB,CAACE,MAAM,EAAEpG,GAAG,EAAEqB,IAAI,GAAGS,SAAS,EAAE;UAChD,IAAI,CAAC2B,cAAc,CAAClB,cAAc,CAAC6D,MAAM,GAAGnE,YAAY,CAACK,GAAG,GAAGL,YAAY,CAACqB,IAAI,EAAEtD,GAAG,EAAEqB,IAAI,CAAC;QAC9F;QAEA8E,SAAS,CAACnG,GAAG,EAAEqB,IAAI,GAAGS,SAAS,EAAE;UAC/B,IAAIU,IAAI,GAAG,IAAI,CAACiB,cAAc,CAAC5B,cAAc,CAAC7B,GAAG,EAAEqB,IAAI,CAAC;UACxDmB,IAAI,GAAGA,IAAI,KAAKP,YAAY,CAACC,OAAO,GAAG,IAAI,CAACF,WAAW,GAAGQ,IAAI;UAC9D,QAAOA,IAAI;YACT,KAAKP,YAAY,CAACK,GAAG;cACnB,OAAO,IAAI;YACb,KAAKL,YAAY,CAACqB,IAAI;cACpB,OAAO,KAAK;YACd,KAAKrB,YAAY,CAACoB,KAAK;cACrB,OAAO,IAAI,CAACgD,aAAa,CAACrG,GAAG,CAAC;YAChC;cACE,OAAO,KAAK;UAAC;QAEnB;QAEAqG,aAAa,CAACrG,GAAG,EAAE;UACjB;UACAA,GAAG,GAAGD,iBAAiB,CAACC,GAAG,CAAC;UAC5B,MAAMsG,QAAQ,GAAG,IAAIzC,GAAG,CAAE2B,KAAK,CAACC,IAAI,CAACc,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAACxD,GAAG,CAACyD,CAAC,IAAI3G,iBAAiB,CAAC2G,CAAC,CAACC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE;UAC7I,OAAOL,QAAQ,CAACxF,GAAG,CAACd,GAAG,CAAC;QAC1B;MACF,CAAC;MAAA;QAAA;UAAA;QAAA;QAAA;UAtJKF,mDAAkB;UAAA;QAAA;QAAA;QAAA;MAAA;MAuJxB8G,IAAI,CAACC,cAAc,GAAG,IAAI/G,kBAAkB,CAAC8G,IAAI,CAACC,cAAc,CAAC;MAAC,yBACrDC,aAAa,GAAGF,IAAI,CAACC,cAAc;MAAA;QAAA;UAAA;QAAA;QAAA;UAAA,yBAAnCC,8CAAa;UAAA;QAAA;QAAA;QAAA;MAAA;IAAA;EAAA;AAAA"}