@stemy/ngx-utils 19.2.24 → 19.2.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"stemy-ngx-utils.mjs","sources":["../../src/ngx-utils/utils/object.utils.ts","../../src/ngx-utils/utils/reflect.utils.ts","../../src/ngx-utils/common-types.ts","../../src/ngx-utils/utils/ajax-request-handler.ts","../../src/ngx-utils/utils/array.utils.ts","../../src/ngx-utils/services/universal.service.ts","../../src/ngx-utils/services/state.service.ts","../../src/ngx-utils/utils/auth.guard.ts","../../src/ngx-utils/utils/cached-factory.ts","../../src/ngx-utils/utils/canvas.utils.ts","../../src/ngx-utils/utils/date.utils.ts","../../src/ngx-utils/utils/file.utils.ts","../../src/ngx-utils/utils/generic-value.ts","../../src/ngx-utils/utils/file-system.ts","../../src/ngx-utils/utils/geometry.ts","../../src/ngx-utils/utils/initializer.ts","../../src/ngx-utils/utils/jsonfn.ts","../../src/ngx-utils/utils/loader.utils.ts","../../src/ngx-utils/utils/math.utils.ts","../../src/ngx-utils/utils/misc.ts","../../src/ngx-utils/utils/timer.utils.ts","../../src/ngx-utils/utils/observable.utils.ts","../../src/ngx-utils/utils/promise.utils.ts","../../src/ngx-utils/utils/string.utils.ts","../../src/ngx-utils/utils/set.utils.ts","../../src/ngx-utils/utils/socket-client.ts","../../src/ngx-utils/utils/unique.utils.ts","../../src/ngx-utils/utils/vector.ts","../../src/ngx-utils/utils/with-options-provider.ts","../../src/ngx-utils/utils/wasm-worker-proxy.ts","../../src/ngx-utils/services/base-http.client.ts","../../src/ngx-utils/services/storage.service.ts","../../src/ngx-utils/services/base-http.service.ts","../../src/ngx-utils/services/local-http.service.ts","../../src/ngx-utils/services/wasm.service.ts","../../src/ngx-utils/services/acl.service.ts","../../src/ngx-utils/services/api.service.ts","../../src/ngx-utils/services/auth.service.ts","../../src/ngx-utils/services/config.service.ts","../../src/ngx-utils/services/base-dialog.service.ts","../../src/ngx-utils/services/error-handler.service.ts","../../src/ngx-utils/services/events.service.ts","../../src/ngx-utils/services/formatter.service.ts","../../src/ngx-utils/services/global-template.service.ts","../../src/ngx-utils/services/icon.service.ts","../../src/ngx-utils/services/static-language.service.ts","../../src/ngx-utils/services/language.service.ts","../../src/ngx-utils/services/open-api.service.ts","../../src/ngx-utils/services/base-toaster.service.ts","../../src/ngx-utils/services/component-loader.service.ts","../../src/ngx-utils/services/translated-url.serializer.ts","../../src/ngx-utils/services/promise.service.ts","../../src/ngx-utils/services/socket.service.ts","../../src/ngx-utils/plugins/drag-drop-handler.ts","../../src/ngx-utils/plugins/drag-drop-event.plugin.ts","../../src/ngx-utils/plugins/resize-event.plugin.ts","../../src/ngx-utils/plugins/scroll-event.plugin.ts","../../src/ngx-utils/pipes/chunk.pipe.ts","../../src/ngx-utils/pipes/entries.pipe.ts","../../src/ngx-utils/pipes/extra-item-properties.pipe.ts","../../src/ngx-utils/pipes/filter.pipe.ts","../../src/ngx-utils/pipes/find.pipe.ts","../../src/ngx-utils/pipes/format-number.pipe.ts","../../src/ngx-utils/pipes/get-offset.pipe.ts","../../src/ngx-utils/pipes/get-type.pipe.ts","../../src/ngx-utils/pipes/get-value.pipe.ts","../../src/ngx-utils/pipes/global-template.pipe.ts","../../src/ngx-utils/pipes/group-by.pipe.ts","../../src/ngx-utils/pipes/includes.pipe.ts","../../src/ngx-utils/pipes/is-type.pipe.ts","../../src/ngx-utils/pipes/join.pipe.ts","../../src/ngx-utils/pipes/keys.pipe.ts","../../src/ngx-utils/pipes/map.pipe.ts","../../src/ngx-utils/pipes/max.pipe.ts","../../src/ngx-utils/pipes/min.pipe.ts","../../src/ngx-utils/pipes/pop.pipe.ts","../../src/ngx-utils/pipes/reduce.pipe.ts","../../src/ngx-utils/pipes/remap.pipe.ts","../../src/ngx-utils/pipes/replace.pipe.ts","../../src/ngx-utils/pipes/reverse.pipe.ts","../../src/ngx-utils/pipes/round.pipe.ts","../../src/ngx-utils/pipes/safe-html.pipe.ts","../../src/ngx-utils/pipes/shift.pipe.ts","../../src/ngx-utils/pipes/split.pipe.ts","../../src/ngx-utils/pipes/translate.pipe.ts","../../src/ngx-utils/pipes/values.pipe.ts","../../src/ngx-utils/directives/async-method.base.ts","../../src/ngx-utils/directives/async-method.directive.ts","../../src/ngx-utils/directives/background.directive.ts","../../src/ngx-utils/directives/component-loader.directive.ts","../../src/ngx-utils/directives/dynamic-table-template.directive.ts","../../src/ngx-utils/directives/global-template.directive.ts","../../src/ngx-utils/directives/icon.directive.ts","../../src/ngx-utils/directives/ngx-template-outlet.directive.ts","../../src/ngx-utils/directives/pagination.directive.ts","../../src/ngx-utils/directives/pagination-item.directive.ts","../../src/ngx-utils/directives/resource-if.directive.ts","../../src/ngx-utils/directives/sticky.directive.ts","../../src/ngx-utils/directives/sticky-class.directive.ts","../../src/ngx-utils/directives/dropdown.directive.ts","../../src/ngx-utils/directives/dropdown-content.directive.ts","../../src/ngx-utils/directives/dropdown-toggle.directive.ts","../../src/ngx-utils/directives/unordered-list-item.directive.ts","../../src/ngx-utils/directives/unordered-list-template.directive.ts","../../src/ngx-utils/components/drop-list/drop-list.component.ts","../../src/ngx-utils/components/drop-list/drop-list.component.html","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.ts","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.html","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.ts","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.html","../../src/ngx-utils/components/fake-module/fake-module.component.ts","../../src/ngx-utils/components/unordered-list/unordered-list.component.ts","../../src/ngx-utils/components/unordered-list/unordered-list.component.html","../../src/ngx-utils/components/upload/upload.component.ts","../../src/ngx-utils/components/upload/upload.component.html","../../src/ngx-utils/ngx-utils.imports.ts","../../src/ngx-utils/utils/wasi.ts","../../src/ngx-utils/ngx-utils.module.ts","../../src/stemy-ngx-utils.ts"],"sourcesContent":["import {ReflectUtils} from \"./reflect.utils\";\r\n\r\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\r\nexport type IterateCallback = (value: any, key?: any) => void;\r\n\r\nexport function defaultPredicate(value: any, key?: any, target?: any, source?: any): boolean {\r\n return true;\r\n}\r\n\r\nexport function shouldCopyDefault(key: any, value: any): boolean {\r\n return true;\r\n}\r\n\r\nconst hasBlob = typeof Blob !== \"undefined\" && !!Blob;\r\nconst hasFile = typeof File !== \"undefined\" && !!File;\r\n\r\nexport class ObjectUtils {\r\n\r\n static compare(a: any, b: any): number {\r\n if ((a === null || b === null) || (typeof a != typeof b)) {\r\n return null;\r\n }\r\n if (typeof a === \"string\") {\r\n return (a).localeCompare(b);\r\n } else {\r\n if (a instanceof Date) {\r\n a = a.getTime();\r\n b = b.getTime();\r\n }\r\n if (a > b) {\r\n return 1;\r\n } else if (a < b) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n }\r\n\r\n static getProperties(obj: any): string[] {\r\n if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj)) return [];\r\n const props = new Set<string>();\r\n Object.keys(obj).forEach(p => props.add(p));\r\n Object.getOwnPropertyNames(obj).forEach(p => props.add(p));\r\n return Array.from(props);\r\n }\r\n\r\n static equals(a: any, b: any, visited: Set<any> = null): boolean {\r\n visited = visited || new Set();\r\n if (visited.has(a) && visited.has(b)) return true;\r\n if (a === b) return true;\r\n if (a === null || b === null) return false;\r\n if (a !== a && b !== b) return true; // NaN === NaN\r\n const at = typeof a, bt = typeof b;\r\n let length: number, key: any, keySet: any;\r\n if (at == bt && at == \"object\") {\r\n visited.add(a);\r\n visited.add(b);\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) return false;\r\n if ((length = a.length) == b.length) {\r\n for (key = 0; key < length; key++) {\r\n if (!ObjectUtils.equals(a[key], b[key], visited)) return false;\r\n }\r\n return true;\r\n }\r\n } else {\r\n if (Array.isArray(b)) {\r\n return false;\r\n }\r\n keySet = Object.create(null);\r\n for (key in a) {\r\n if (a.hasOwnProperty(key)) {\r\n if (!ObjectUtils.equals(a[key], b[key], visited)) {\r\n return false;\r\n }\r\n keySet[key] = true;\r\n }\r\n }\r\n for (key in b) {\r\n if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== \"undefined\") {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static evaluate(expr: string, context: any = {}, res: any = {}): any {\r\n expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\\n${res}`, expr);\r\n const lines = expr.split(\"\\n\");\r\n const lastLine = \"return \" + lines.pop().replace(\"return \", \"\");\r\n lines.push(lastLine);\r\n expr = lines.join(\"\\n\");\r\n let result = null;\r\n try {\r\n result = new Function(expr).call(context);\r\n } catch (e) {\r\n res.exception = e;\r\n console.log(`Failed to parse expression: ${e.message}`, expr, context);\r\n }\r\n res.result = result;\r\n return result;\r\n }\r\n\r\n static empty(obj: any): boolean {\r\n return !obj || Object.keys(obj).length == 0;\r\n }\r\n\r\n static iterate(obj: any, cb: IterateCallback): void {\r\n if (!obj) return;\r\n const keys: any[] = Array.isArray(obj) ? Array.from(obj.keys()) : Object.keys(obj);\r\n keys.forEach(\r\n // @dynamic\r\n key => {\r\n cb(obj[key], key);\r\n }\r\n );\r\n }\r\n\r\n static getValue(obj: Object, key: string, defaultValue?: any, treeFallback: boolean = false): any {\r\n key = key || \"\";\r\n const keys = key.split(\".\");\r\n let curKey = \"\";\r\n do {\r\n curKey += keys.shift();\r\n if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\r\n obj = obj[curKey];\r\n curKey = \"\";\r\n } else if (!keys.length) {\r\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\r\n obj = treeFallback ? obj || defaultValue : defaultValue;\r\n } else {\r\n curKey += \".\";\r\n }\r\n } while (keys.length);\r\n return obj;\r\n }\r\n\r\n static mapToPath(target: any, source: any, path: string[]): any {\r\n if (typeof source === \"undefined\") return target;\r\n if (path.length == 0) return source;\r\n const key: any = path.shift();\r\n if (key == \"*\") {\r\n if (ObjectUtils.isArray(source)) {\r\n target = ObjectUtils.isArray(target) ? target : [];\r\n return source.map((item, index) => {\r\n return ObjectUtils.mapToPath(target[index], item, Array.from(path));\r\n });\r\n }\r\n if (ObjectUtils.isObject(source)) {\r\n target = ObjectUtils.isObject(target) ? target : {};\r\n return Object.keys(source).reduce((result, key) => {\r\n result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));\r\n return result;\r\n }, {});\r\n }\r\n return ObjectUtils.isNullOrUndefined(target) ? null : target;\r\n }\r\n const isArray = ObjectUtils.isArray(target);\r\n target = ObjectUtils.isObject(target) || isArray ? target : {};\r\n target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));\r\n return isNaN(key) || isArray ? target : Object.values(target);\r\n }\r\n\r\n static filter(obj: any, predicate: FilterPredicate): any {\r\n return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());\r\n }\r\n\r\n static copy<T>(obj: T): T {\r\n return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());\r\n }\r\n\r\n static assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\r\n return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());\r\n }\r\n\r\n static getType(obj: any): string {\r\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\r\n const target = !obj ? null : obj.constructor;\r\n const type = !target ? null : Reflect.getMetadata(\"objectType\", target);\r\n return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();\r\n }\r\n\r\n static isPrimitive(value: any): boolean {\r\n const type = typeof value;\r\n return value == null || (type !== \"object\" && type !== \"function\");\r\n }\r\n\r\n static isObject(value: any): boolean {\r\n return ObjectUtils.getType(value) === \"object\";\r\n }\r\n\r\n static isDefined(value: any): boolean {\r\n return typeof value !== \"undefined\" && value !== null;\r\n }\r\n\r\n static isNullOrUndefined(value: any): boolean {\r\n return typeof value == \"undefined\" || value == null;\r\n }\r\n\r\n static isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n }\r\n\r\n static isFunction(value: any): value is Function {\r\n return typeof value === \"function\";\r\n }\r\n\r\n static isDate(value: any): value is Date {\r\n return null !== value && !isNaN(value) && \"undefined\" !== typeof value.getDate;\r\n }\r\n\r\n static isBlob(value: any): value is Blob {\r\n return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);\r\n }\r\n\r\n static isBoolean(value: any): value is boolean {\r\n return typeof(value) == typeof(true);\r\n }\r\n\r\n static isNumber(value: any): value is number {\r\n if (typeof value !== \"number\") return false;\r\n const num = +value;\r\n if ((num - num) !== 0) {\r\n return false;\r\n }\r\n if (num === value) {\r\n return true;\r\n }\r\n }\r\n\r\n static isArray(value: any): value is Array<any> {\r\n return Array.isArray(value);\r\n }\r\n\r\n static isSet(value: any): value is Set<any> {\r\n return value instanceof Set;\r\n }\r\n\r\n static isConstructor(value: any): boolean {\r\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\r\n }\r\n\r\n static checkInterface(obj: any, interFaceObject: any): boolean {\r\n return ObjectUtils.isInterface(obj, interFaceObject);\r\n }\r\n\r\n static isInterface(obj: any, interFaceObject: any): boolean {\r\n if (!obj || typeof obj !== \"object\" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject)) return false;\r\n const keys = Object.keys(interFaceObject);\r\n for (const key of keys) {\r\n let type = interFaceObject[key] || \"\";\r\n if (type.startsWith(\"*\")) {\r\n type = type.substr(1);\r\n if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type) return false;\r\n } else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static pad(obj: any, width: number, chr: string = \"0\"): string {\r\n const str = ObjectUtils.isDefined(obj) ? obj.toString() : \"\";\r\n return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;\r\n }\r\n\r\n private static copyRecursive(target: any, source: any, predicate: FilterPredicate, copies: Map<any, any>): any {\r\n if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source)) return source;\r\n if (copies.has(source)) return copies.get(source);\r\n if (ObjectUtils.isArray(source)) {\r\n target = ObjectUtils.isArray(target) ? Array.from(target) : [];\r\n copies.set(source, target);\r\n for (let index = 0; index < source.length; index++) {\r\n const item = source[index];\r\n if (!predicate(item, index, target, source)) continue;\r\n if (target.length > index)\r\n target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);\r\n else\r\n target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));\r\n }\r\n return target;\r\n }\r\n\r\n // If object defines __shouldCopy as false, then don't copy it\r\n if (source.__shouldCopy === false) return source;\r\n // Copy object\r\n const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;\r\n if (ObjectUtils.isConstructor(source.constructor)) {\r\n if (!target) {\r\n try {\r\n target = new source.constructor();\r\n } catch (e) {\r\n const proto = source.constructor.prototype || source.prototype;\r\n target = Object.create(proto);\r\n }\r\n }\r\n } else {\r\n target = Object.assign({}, target || {});\r\n }\r\n // Set to copies to prevent circular references\r\n copies.set(source, target);\r\n\r\n // Copy map entries\r\n if (target instanceof Map) {\r\n if (source instanceof Map) {\r\n for (const [key, value] of source.entries()) {\r\n if (!predicate(value, key, target, source)) continue;\r\n target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n // Copy object members\r\n const keys = Object.keys(source);\r\n for (const key of keys) {\r\n if (!predicate(source[key], key, target, source)) continue;\r\n target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);\r\n }\r\n\r\n // Copy object properties\r\n const descriptors = Object.getOwnPropertyDescriptors(source);\r\n for (const key of Object.keys(descriptors)) {\r\n if (keys.indexOf(key) >= 0) continue;\r\n Object.defineProperty(target, key, descriptors[key]);\r\n }\r\n return target;\r\n }\r\n}\r\n","import \"reflect-metadata\";\r\nimport {Injector, TypeProvider} from \"@angular/core\";\r\nimport {IResolveFactory} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ReflectUtils {\r\n\r\n static defineMetadata(key: string, data: any, target: any, name?: string): void {\r\n Reflect.defineMetadata(key, data, target, name);\r\n }\r\n\r\n static getMetadata(key: string, target: any, name?: string): any {\r\n return Reflect.getMetadata(key, target, name);\r\n }\r\n\r\n static getOwnMetadata(key: string, target: any, name?: string): any {\r\n return Reflect.getOwnMetadata(key, target, name);\r\n }\r\n\r\n static resolve<T>(obj: IResolveFactory | T, injector: Injector): T {\r\n if (!ObjectUtils.checkInterface(obj, {func: \"function\"})) return <T>obj;\r\n const factory = <IResolveFactory>obj;\r\n let depends: TypeProvider[] = [];\r\n if (factory.type) {\r\n const method = ObjectUtils.getProperties(factory.type).find(function (key) {\r\n return factory.type[key] === factory.func;\r\n });\r\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.type, method) || [];\r\n } else {\r\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.func) || [];\r\n }\r\n const parameters = depends.map(function (dep) {\r\n return injector.get(dep);\r\n }).concat(factory.params);\r\n return factory.func.apply(null, parameters);\r\n }\r\n}\r\n","import {EventEmitter, InjectionToken, Injector, NgZone, Provider, TemplateRef, Type} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from \"@angular/common/http\";\r\nimport {ActivatedRouteSnapshot, Data, LoadChildrenCallback, Route, Routes, UrlTree} from \"@angular/router\";\r\nimport {Request} from \"express\";\r\nimport {ReflectUtils} from \"./utils/reflect.utils\";\r\nimport {ObjectUtils} from \"./utils/object.utils\";\r\n\r\n// --- Util\r\nexport interface TypedFactoryProvider<T> {\r\n useFactory: (...args: any[]) => T;\r\n deps: any[];\r\n}\r\n\r\nexport interface TypedValueProvider<T> {\r\n useValue: T;\r\n}\r\n\r\nexport type CachedProvider<T> = Type<T> | TypedFactoryProvider<T> | TypedValueProvider<T>;\r\n\r\nexport type CachedFactory<T> = (injector: Injector) => ReadonlyArray<T>;\r\n\r\nexport const OPTIONS_TOKEN = new InjectionToken(\"custom-options-token\");\r\n\r\nexport interface IResolveFactory {\r\n func: Function;\r\n type?: any;\r\n params?: any[];\r\n}\r\n\r\nexport class CanvasColor {\r\n constructor(public r: number, public g: number, public b: number, public a: number = 255) {\r\n\r\n }\r\n}\r\n\r\n// --- Icon service ---\r\nexport interface IIconService {\r\n isDisabled: boolean;\r\n iconsLoaded: EventEmitter<any>;\r\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string>;\r\n}\r\n\r\nexport const ICON_SERVICE: InjectionToken<IIconService> = new InjectionToken<IIconService>(\"icon-service\");\r\n\r\n// --- Language service ---\r\nexport interface ITranslation {\r\n lang: string;\r\n translation: string;\r\n}\r\n\r\nexport interface ITranslations {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ILanguageSetting {\r\n unavailable?: string;\r\n [key: string]: string | boolean | number;\r\n}\r\n\r\nexport interface ILanguageSettings {\r\n languages: string[];\r\n devLanguages: string[];\r\n defaultLanguage: string;\r\n settings?: {[lang: string]: ILanguageSetting};\r\n}\r\n\r\nexport interface ILanguageService {\r\n currentLanguage: string;\r\n editLanguage: string;\r\n disableTranslations: boolean;\r\n defaultLanguage: string;\r\n dictionary: ITranslations;\r\n readonly languages: ReadonlyArray<string>;\r\n readonly httpClient: HttpClient;\r\n replaceLanguages(languages: string[]): void;\r\n addLanguages(languages: string[]): void;\r\n getTranslationSync(key: string, params?: Object): string;\r\n getTranslation(key: string, params?: Object): Promise<string>;\r\n getTranslations(...keys: string[]): Promise<ITranslations>;\r\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string;\r\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string;\r\n}\r\n\r\nexport const LANGUAGE_SERVICE: InjectionToken<ILanguageService> = new InjectionToken<ILanguageService>(\"language-service\");\r\n\r\n// --- Auth Service ---\r\nexport interface IAuthService {\r\n isAuthenticated: boolean;\r\n userChanged: EventEmitter<any>;\r\n checkAuthenticated(): Promise<boolean>;\r\n}\r\n\r\nexport type RouteValidator = (auth: IAuthService, route?: IRoute, next?: ActivatedRouteSnapshot) => Promise<boolean>;\r\n\r\nexport interface IRouteData extends Data {\r\n returnState?: string[];\r\n guards?: Array<IResolveFactory | RouteValidator>;\r\n}\r\n\r\nexport interface IRoute extends Route {\r\n data?: IRouteData;\r\n}\r\n\r\nexport const AUTH_SERVICE: InjectionToken<IAuthService> = new InjectionToken<IAuthService>(\"auth-service\");\r\n\r\n// --- Acl Service ---\r\nexport interface IAclComponent {\r\n onUserInitialized(): void;\r\n onUserChanged(): void;\r\n}\r\n\r\nexport interface IRouteStateInfo {\r\n route: IRoute;\r\n guard: any;\r\n dirty: boolean;\r\n first: boolean;\r\n component?: any;\r\n}\r\n\r\n// --- State Service ---\r\nexport type NavigationUrlParam = any[] | string | UrlTree;\r\n\r\n// --- Storage Service ---\r\nexport enum StorageMode {\r\n Local,\r\n Session\r\n}\r\n\r\n// --- Toaster Service ---\r\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\nexport interface IToasterService {\r\n error(message: string, params?: any): void;\r\n info(message: string, params?: any): void;\r\n success(message: string, params?: any): void;\r\n warning(message: string, params?: any): void;\r\n handleAsyncMethod(method: AsyncMethod, context?: any): void\r\n}\r\n\r\nexport const TOASTER_SERVICE: InjectionToken<IToasterService> = new InjectionToken<IToasterService>(\"toaster-service\");\r\n\r\n// --- Dialog service ---\r\nexport interface IDialogButtonConfig {\r\n icon?: string;\r\n text?: string;\r\n classes?: string;\r\n method?: AsyncMethod;\r\n}\r\n\r\nexport interface IDialogConfig {\r\n id?: string;\r\n title?: string;\r\n message: string;\r\n messageContext?: any;\r\n buttons?: IDialogButtonConfig[];\r\n onClose?: AsyncMethod;\r\n size?: string;\r\n type?: string;\r\n templates?: { [id: string]: TemplateRef<any> };\r\n}\r\n\r\nexport interface IConfirmDialogConfig {\r\n id?: string;\r\n title?: string;\r\n message: string;\r\n messageContext?: any;\r\n buttons?: IDialogButtonConfig[];\r\n method?: AsyncMethod;\r\n cancelMethod?: AsyncMethod;\r\n size?: string;\r\n templates?: { [id: string]: TemplateRef<any> };\r\n okText?: string;\r\n okClasses?: string;\r\n cancelText?: string;\r\n cancelClasses?: string;\r\n}\r\n\r\nexport interface IDialogService<DR = any> {\r\n dialog(config: IDialogConfig): DR;\r\n confirm(config: IConfirmDialogConfig): DR\r\n}\r\n\r\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>(\"dialog-service\");\r\n\r\n// --- Socket service ---\r\n\r\nexport const SOCKET_IO_PATH = new InjectionToken<string>(\"socket-io-path\");\r\n\r\n// --- Promise Service ---\r\n\r\nexport interface IPromiseService {\r\n zone: NgZone;\r\n count: number;\r\n onChanged: EventEmitter<number>;\r\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\r\n all(promises: Promise<any>[]): Promise<any>;\r\n resolve<T>(value: T | PromiseLike<T>): Promise<T>;\r\n reject<T>(value: T | PromiseLike<T>): Promise<T>;\r\n}\r\n\r\nexport const PROMISE_SERVICE = new InjectionToken<IPromiseService>(\"promise-service\");\r\n\r\n// --- Wasm service ---\r\nexport type TypedArray =\r\n | Int8Array\r\n | Int16Array\r\n | Int32Array\r\n | Uint8Array\r\n | Uint8ClampedArray\r\n | Uint16Array\r\n | Uint32Array\r\n | Float32Array\r\n | Float64Array;\r\n\r\nexport interface IWasmExports {\r\n HEAP8: Int8Array;\r\n HEAP16: Int16Array,\r\n HEAP32: Int32Array,\r\n HEAPU8: Uint8Array;\r\n HEAPU16: Uint16Array,\r\n HEAPU32: Uint32Array,\r\n HEAPF32: Float32Array,\r\n HEAPF64: Float64Array,\r\n memory: WebAssembly.Memory;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IWasi {\r\n instantiate(bytes: ArrayBuffer): Promise<IWasmExports>;\r\n}\r\n\r\nexport interface IWasm {\r\n writeArrayToMemory(array: TypedArray): Promise<number> | number;\r\n readArrayFromMemory<T = TypedArray>(pointer: number, array: T): Promise<T> | T;\r\n [key: string]: (...args: any[]) => any;\r\n}\r\n\r\nexport interface IWasmAsync {\r\n writeArrayToMemory(array: TypedArray): Promise<number>;\r\n readArrayFromMemory<T = TypedArray>(pointer: number, array: T): T;\r\n [key: string]: (...args: any[]) => Promise<any>;\r\n}\r\n\r\nexport const WASI_IMPLEMENTATION = new InjectionToken<Type<IWasi>>(\"wasi-implementation\");\r\n\r\n// --- Async method ---\r\nexport interface IAsyncMessage {\r\n message: string;\r\n context?: any;\r\n}\r\n\r\nexport type AsyncMethod = (context?: any) => Promise<IAsyncMessage>;\r\n\r\n// --- Unordered list ---\r\nexport interface UnorderedListTemplate {\r\n readonly type: string;\r\n readonly selector: string;\r\n readonly templateRef: TemplateRef<any>\r\n}\r\n\r\nexport interface UnorderedListTemplates {\r\n [type: string]: TemplateRef<any>;\r\n}\r\n\r\nexport type UnorderedListStyle = \"table\" | \"list\";\r\n\r\n// --- Upload ---\r\nexport interface IFileUploadResult {\r\n _id?: string;\r\n id?: string;\r\n contentType?: string;\r\n createdAt?: Date;\r\n filename?: string;\r\n}\r\n\r\nexport interface IFileUploadProcess {\r\n file: File;\r\n progress: number;\r\n preview?: string;\r\n promise?: Promise<void>;\r\n}\r\n\r\n// --- Ajax request ---\r\nexport interface IAjaxRequestDetails {\r\n request: XMLHttpRequest,\r\n method: string;\r\n url: string;\r\n}\r\n\r\nexport type AjaxRequestCallback = (details: IAjaxRequestDetails, params: any) => void;\r\n\r\n// --- Loader utils ---\r\nexport type ScriptType = \"text/javascript\" | \"module\";\r\n\r\nexport interface IScriptPromises {\r\n [src: string]: Promise<HTMLScriptElement>;\r\n}\r\nexport interface IStylePromises {\r\n [src: string]: Promise<HTMLLinkElement>;\r\n}\r\n\r\n// --- Observable utils ---\r\nexport interface ISearchObservable {\r\n search: string;\r\n getSearchResults(token: string): Promise<any[]>;\r\n}\r\n\r\n// --- Reflect utils ---\r\nexport function FactoryDependencies(...dependencies: Array<InjectionToken<any> | Provider>): MethodDecorator {\r\n return function (target: any, method: string): void {\r\n ReflectUtils.defineMetadata(\"factoryDependencies\", dependencies, target, method);\r\n };\r\n}\r\n\r\nexport function ObjectType(type: string): ClassDecorator {\r\n return function (target: any): void {\r\n ReflectUtils.defineMetadata(\"objectType\", type, target);\r\n };\r\n}\r\n\r\n// --- Timer utils ---\r\nexport interface ITimer {\r\n id?: any;\r\n func?: Function;\r\n time?: number;\r\n run?: () => void;\r\n set?: (func: Function, time: number) => void;\r\n clear?: () => void;\r\n}\r\n\r\n// --- ExtraItemProperties ---\r\nexport interface IExtraProperties {\r\n [prop: string]: any;\r\n}\r\n\r\n// --- Group by ---\r\nexport interface IGroupMap {\r\n [column: string]: any;\r\n}\r\n\r\n// --- Translate ---\r\nexport type TranslationQuery = string | ITranslations | ITranslation[];\r\n\r\n// --- Pagination ---\r\nexport interface IPageInfo {\r\n text: string;\r\n number: number;\r\n active: boolean;\r\n}\r\n\r\nexport interface IPaginationData {\r\n total: number;\r\n items: any[];\r\n meta?: any;\r\n}\r\n\r\nexport type PaginationDataLoader = (page: number, itemsPerPage: number) => Promise<IPaginationData>;\r\n\r\nexport class PaginationItemContext {\r\n\r\n constructor(public item: any, public parallelItem: any, public count: number, public index: number, public dataIndex: number) {\r\n }\r\n\r\n get first(): boolean {\r\n return this.index === 0;\r\n }\r\n\r\n get last(): boolean {\r\n return this.index === this.count - 1;\r\n }\r\n\r\n get even(): boolean {\r\n return this.index % 2 === 0;\r\n }\r\n\r\n get odd(): boolean {\r\n return !this.even;\r\n }\r\n\r\n // Support for old dynamic table implementation\r\n get row(): any {\r\n console.log(\"DynamicTable row is deprecated use item instead\");\r\n return this.item;\r\n }\r\n\r\n // Support for old dynamic table implementation\r\n get parallelRow(): any {\r\n console.log(\"DynamicTable parallelRow is deprecated use parallelItem instead\");\r\n return this.parallelItem;\r\n }\r\n\r\n filter(filterRx: RegExp): boolean {\r\n const keys = Object.keys(this.item);\r\n for (const key of keys) {\r\n const value = this.item[key];\r\n if (ObjectUtils.isNullOrUndefined(value) || ObjectUtils.isObject(value)) continue;\r\n const testValue = ObjectUtils.isString(value) ? value : value.toString();\r\n if (testValue.match(filterRx)) return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// --- Http service ---\r\nexport interface IHttpHeaders {\r\n [header: string]: string | string[];\r\n}\r\n\r\nexport interface IHttpParams {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IRequestOptions {\r\n method?: string;\r\n body?: any;\r\n headers?: IHttpHeaders | HttpHeaders;\r\n originalHeaders?: IHttpHeaders;\r\n params?: IHttpParams;\r\n observe?: \"body\" | \"response\";\r\n reportProgress?: boolean;\r\n responseType?: \"arraybuffer\" | \"blob\" | \"json\" | \"text\";\r\n withCredentials?: boolean;\r\n timeout?: number;\r\n}\r\n\r\nexport interface IIssueContext {\r\n url: string;\r\n}\r\n\r\nexport interface IProgress {\r\n percentage?: number;\r\n loaded?: number;\r\n total?: number;\r\n}\r\n\r\nexport type ProgressListener = (progress: IProgress) => void;\r\n\r\nexport type PromiseExecutor = (resolve: (value?: any | PromiseLike<any>) => void, reject: (reason?: any) => void) => void;\r\n\r\nexport class HttpPromise extends Promise<any> {\r\n\r\n protected rejectHandler: (reason?: HttpErrorResponse) => void;\r\n protected hasRejectHandler: boolean;\r\n protected attachCount: number;\r\n protected runCount: number;\r\n\r\n constructor(rejectHandler: (reason?: HttpErrorResponse) => void, executor: PromiseExecutor) {\r\n super(executor);\r\n this.rejectHandler = rejectHandler;\r\n this.attachCount = 0;\r\n this.runCount = 0;\r\n }\r\n\r\n then<TResult1, TResult2>(onFulfilled?: ((value: any) => (PromiseLike<TResult1> | TResult1)) | null | undefined,\r\n onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult2> | TResult2)) | null | undefined): Promise<TResult1 | TResult2> {\r\n this.attachCount++;\r\n return super.then(value => {\r\n this.runCount++;\r\n return onFulfilled ? onFulfilled(value) : null;\r\n }, (reason: HttpErrorResponse) => {\r\n const result: any = onRejected ? onRejected(reason) : null;\r\n this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);\r\n this.runCount++;\r\n this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);\r\n return result;\r\n });\r\n }\r\n\r\n catch<TResult = never>(onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult> | TResult)) | null | undefined): Promise<any | TResult> {\r\n return this.then(null, onRejected);\r\n }\r\n}\r\n\r\nexport interface IHttpService {\r\n language: ILanguageService;\r\n url(url: string): string;\r\n makeListParams(page: number, itemsPerPage: number, orderBy?: string, orderDescending?: boolean, filter?: string): IHttpParams;\r\n}\r\n\r\nexport const EXPRESS_REQUEST = new InjectionToken<Request>(\"express-request\");\r\n\r\n// --- Api service ---\r\n\r\nexport interface IBaseHttpClient extends HttpClient {\r\n readonly requestHeaders: IHttpHeaders;\r\n readonly requestParams: IHttpParams;\r\n}\r\n\r\nexport interface IApiService extends IHttpService {\r\n cache: any;\r\n client: IBaseHttpClient;\r\n get(url: string, options?: IRequestOptions): Promise<any>;\r\n delete(url: string, options?: IRequestOptions): Promise<any>;\r\n post(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n put(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n patch(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n upload(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): Promise<any>;\r\n list(url: string, params: IHttpParams): Promise<IPaginationData>;\r\n}\r\n\r\nexport const API_SERVICE: InjectionToken<IApiService> = new InjectionToken<IApiService>(\"api-service\");\r\n\r\n// --- OpenApi service ---\r\nexport interface IOpenApiSchemaProperty {\r\n id: string;\r\n type?: string;\r\n format?: string;\r\n column?: boolean;\r\n additionalProperties?: any;\r\n $ref?: string;\r\n allOf?: ReadonlyArray<{$ref?: string}>\r\n items?: IOpenApiSchemaProperty;\r\n enum?: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IOpenApiSchema {\r\n properties: {\r\n [name: string]: IOpenApiSchemaProperty;\r\n };\r\n required: string[];\r\n}\r\n\r\nexport interface IOpenApiSchemas {\r\n [name: string]: IOpenApiSchema;\r\n}\r\n\r\n// --- Dynamic table ---\r\nexport type TableFilterType = \"text\" | \"enum\" | \"checkbox\";\r\n\r\nexport interface ITableOrders {\r\n [column: string]: string;\r\n}\r\n\r\nexport interface ITableColumn {\r\n title?: string;\r\n sort?: string;\r\n filter?: boolean;\r\n filterType?: TableFilterType;\r\n enum?: string[];\r\n enumPrefix?: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ITableColumns {\r\n [column: string]: ITableColumn;\r\n}\r\n\r\nexport type TableColumns = ITableOrders | ITableColumns | string[];\r\n\r\nexport interface ITableTemplate {\r\n column: string | string[];\r\n pure: boolean;\r\n ref: TemplateRef<any>;\r\n}\r\n\r\nexport interface ITableTemplates {\r\n [column: string]: ITableTemplate;\r\n}\r\n\r\nexport interface ITableDataQuery {\r\n [column: string]: string | string[] | boolean;\r\n}\r\n\r\nexport type TableDataLoader = (\r\n page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean,\r\n filter: string, query: ITableDataQuery\r\n) => Promise<IPaginationData>;\r\n\r\nexport type DragDropEvent<K extends string = \"item\", T = any> = {\r\n [key in K]: T;\r\n} & {\r\n ev: DragEvent;\r\n elem: HTMLElement;\r\n source?: T;\r\n};\r\n\r\nexport type DragEventHandler<R = boolean, K extends string = \"item\"> = (ev: DragDropEvent<K>) => R;\r\n\r\n// Back compatibility\r\nexport type ITableDragEvent = DragDropEvent;\r\nexport type DynamicTableDragHandler<R = boolean> = DragEventHandler<R>;\r\n\r\n// --- Resource if ---\r\nexport class ResourceIfContext {\r\n resource: string;\r\n url: string;\r\n}\r\n\r\n// --- ComponentLoaderService ---\r\n\r\nexport type CssSelector = [tagName: string, attrName?: string, attrValue?: string];\r\n\r\nexport type CssSelectorList = CssSelector[];\r\n\r\nexport interface DynamicModuleInfo {\r\n moduleId: string;\r\n loadChildren: LoadChildrenCallback;\r\n routes?: Routes;\r\n initialNavigation?: boolean;\r\n}\r\n\r\nexport interface DynamicComponentLocation {\r\n moduleId: string;\r\n selector: string;\r\n}\r\n\r\nexport interface DynamicEntryComponents {\r\n components: Type<any>[];\r\n moduleId: string;\r\n}\r\n\r\nexport const DYNAMIC_ENTRY_COMPONENTS = new InjectionToken<DynamicEntryComponents[]>(\"dynamic-entry-components\");\r\n\r\nexport const DYNAMIC_MODULE_INFO = new InjectionToken<DynamicModuleInfo[]>(\"dynamic-module-info\");\r\n\r\n// --- ConfigService ---\r\nexport const APP_BASE_URL = new InjectionToken<string>(\"app-base-url\");\r\n\r\nexport class IConfiguration {\r\n cdnUrl?: string;\r\n baseUrl?: string;\r\n baseDomain?: string;\r\n translationUrl?: string;\r\n translationExt?: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IConfigService {\r\n readonly config: IConfiguration;\r\n readonly injector: Injector;\r\n readonly load: () => Promise<IConfiguration>;\r\n readonly rootElement: any;\r\n cloneRootElem(): any;\r\n prepareUrl(url: string, ending: string): string;\r\n getConfigValue(key: string): any;\r\n getQueryParameter(name: string, url?: string): string;\r\n}\r\n\r\nexport const CONFIG_SERVICE = new InjectionToken<IConfigService>(\"config-service\");\r\n\r\nexport const BASE_CONFIG = new InjectionToken<IConfiguration>(\"base-config\");\r\n\r\nexport const SCRIPT_PARAMS = new InjectionToken<any>(\"script-params\");\r\n\r\nexport const ROOT_ELEMENT = new InjectionToken<HTMLElement>(\"app-root-element\");\r\n\r\nexport const RESIZE_DELAY = new InjectionToken<number>(\"resize-event-delay\");\r\n\r\nexport type ResizeEventStrategy = \"scroll\" | \"object\";\r\n\r\nexport const RESIZE_STRATEGY = new InjectionToken<ResizeEventStrategy>(\"resize-event-strategy\");\r\n\r\n// --- Error handler service ---\r\nexport type ErrorHandlerCallback = (error: string) => any;\r\n\r\nexport const ERROR_HANDLER = new InjectionToken<ErrorHandlerCallback>(\"error-handler-callback\");\r\n\r\n// --- Global templates service\r\n\r\nexport type GlobalComponentModifier = (component: any) => any;\r\n\r\n// --- Module ---\r\nexport type AppInitializerFunc = () => Promise<void> | void;\r\n\r\nexport interface IModuleConfig {\r\n apiService?: Type<IApiService>\r\n authService?: Type<IAuthService>;\r\n iconService?: Type<IIconService>;\r\n languageService?: Type<ILanguageService>;\r\n toasterService?: Type<IToasterService>;\r\n promiseService?: Type<IPromiseService>;\r\n configService?: Type<IConfigService>;\r\n dialogService?: Type<IDialogService>;\r\n wasiImplementation?: Type<IWasi>;\r\n initializeApp?: (injector: Injector) => AppInitializerFunc;\r\n baseUrl?: (injector: Injector) => string;\r\n resizeDelay?: number;\r\n resizeStrategy?: ResizeEventStrategy;\r\n socketPath?: string;\r\n}\r\n\r\n// --- Valued promise ---\r\nexport class ValuedPromise<T> extends Promise<T> {\r\n value: T;\r\n}\r\n","import {AjaxRequestCallback, IAjaxRequestDetails} from \"../common-types\";\r\n\r\nexport class AjaxRequestHandler {\r\n\r\n private static isOverridden: boolean = false;\r\n\r\n public params: any;\r\n\r\n constructor(private pattern: RegExp, private callback: AjaxRequestCallback) {\r\n this.params = {};\r\n if (typeof XMLHttpRequest !== \"undefined\" && !AjaxRequestHandler.isOverridden) {\r\n AjaxRequestHandler.isOverridden = true;\r\n const originalOpen = XMLHttpRequest.prototype.open;\r\n XMLHttpRequest.prototype.open = function (method: string, url: string): void {\r\n originalOpen.apply(this, arguments);\r\n window.dispatchEvent(new CustomEvent(\"ajaxRequest\", {\r\n detail: {\r\n request: this,\r\n method: method,\r\n url: url\r\n }\r\n }))\r\n };\r\n }\r\n }\r\n\r\n listen(): AjaxRequestHandler {\r\n if (typeof window === \"undefined\") return this;\r\n window.addEventListener(\"ajaxRequest\", this.listener);\r\n return this;\r\n }\r\n\r\n forget(): AjaxRequestHandler {\r\n if (typeof window === \"undefined\") return;\r\n window.removeEventListener(\"ajaxRequest\", this.listener);\r\n return this;\r\n }\r\n\r\n private listener = (event: CustomEvent): void => {\r\n const details: IAjaxRequestDetails = event.detail;\r\n if (this.pattern.test(details.url)) this.callback(details, this.params);\r\n };\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ArrayUtils {\r\n\r\n static has(arr: any[], ...items: any[]): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items)) return false;\r\n for (let i = 0; i < items.length; i++) {\r\n if (arr.indexOf(items[i]) >= 0) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static match(arr: any[], str: string): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str)) return false;\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[i] instanceof RegExp) {\r\n const regex = <RegExp>arr[i];\r\n if (regex.test(str)) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static any<T>(arr: T[], cb: (item: T) => boolean): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb)) return false;\r\n for (let i = 0; i < arr.length; i++) {\r\n if (cb(arr[i])) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static move<T>(arr: T[], oldIndex: number, newIndex: number): T[] {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n const length = arr.length;\r\n while (oldIndex < 0) {\r\n oldIndex += length;\r\n }\r\n while (newIndex < 0) {\r\n newIndex += length;\r\n }\r\n if (newIndex >= length) {\r\n let k = newIndex - length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n return arr;\r\n }\r\n\r\n static reversed(arr: any[]): any[] {\r\n const result = [];\r\n if (!ObjectUtils.isArray(arr)) return result;\r\n for (let i = arr.length - 1; i >= 0; i--) {\r\n result.push(arr[i]);\r\n }\r\n return result;\r\n }\r\n\r\n static min<T>(arr: T[], cb: (item: T, index?: number) => number): T {\r\n if (!ObjectUtils.isArray(arr)) return null;\r\n let min = Number.MAX_SAFE_INTEGER;\r\n let result = null;\r\n for (let i = 0; i < arr.length; i++) {\r\n const current = cb(arr[i], i);\r\n if (current < min || result === null) {\r\n min = current;\r\n result = arr[i];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static max<T>(arr: T[], cb: (item: T, index?: number) => number): T {\r\n if (!ObjectUtils.isArray(arr)) return null;\r\n let max = Number.MIN_SAFE_INTEGER;\r\n let result = null;\r\n for (let i = 0; i < arr.length; i++) {\r\n const current = cb(arr[i], i);\r\n if (current > max || result === null) {\r\n max = current;\r\n result = arr[i];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static chunk<T>(arr: T[], size: number): Array<T[]> {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n size = Math.max(1, size);\r\n const result = []\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size))\r\n }\r\n return result\r\n }\r\n\r\n static unique<T>(arr: T[]): T[] {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n return arr.filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n }\r\n}\r\n","import {Inject, Injectable, PLATFORM_ID} from \"@angular/core\";\r\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\r\nimport {DeviceDetectorService, DeviceInfo} from \"ngx-device-detector\";\r\n\r\n/**\r\n * Use this service to determine which is the current environment\r\n */\r\n@Injectable()\r\nexport class UniversalService {\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get isServer(): boolean {\r\n return isPlatformServer(this.platformId);\r\n }\r\n\r\n get deviceInfo(): DeviceInfo {\r\n return this.isServer\r\n ? {\r\n userAgent: \"angular-universal\",\r\n os: \"unknown\",\r\n browser: \"node\",\r\n device: \"node\",\r\n os_version: \"unknown\",\r\n browser_version: \"unknown\",\r\n deviceType: \"unknown\",\r\n orientation: \"landscape\"\r\n } as any\r\n : this.dds.getDeviceInfo();\r\n }\r\n\r\n get browserName(): string {\r\n return (this.dds.browser || \"\").toLowerCase();\r\n }\r\n\r\n get browserVersion(): string {\r\n return this.dds.browser_version;\r\n }\r\n\r\n get isExplorer(): boolean {\r\n return this.checkBrowser(\"ie\");\r\n }\r\n\r\n get isEdge(): boolean {\r\n return this.checkBrowser(\"edge\");\r\n }\r\n\r\n get isChrome(): boolean {\r\n return this.checkBrowser(\"chrome\");\r\n }\r\n\r\n get isFirefox(): boolean {\r\n return this.checkBrowser(\"firefox\");\r\n }\r\n\r\n get isSafari(): boolean {\r\n return this.checkBrowser(\"safari\");\r\n }\r\n\r\n get isTablet(): boolean {\r\n return this.dds.isTablet();\r\n }\r\n\r\n get isMobile(): boolean {\r\n return this.dds.isMobile();\r\n }\r\n\r\n get isDesktop(): boolean {\r\n return this.dds.isDesktop();\r\n }\r\n\r\n get isCrawler(): boolean {\r\n return this.crawler;\r\n }\r\n\r\n private readonly crawler: boolean;\r\n\r\n constructor(@Inject(PLATFORM_ID) readonly platformId: string, readonly dds: DeviceDetectorService) {\r\n const info = this.dds.getDeviceInfo();\r\n this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);\r\n }\r\n\r\n protected checkBrowser(name: string): boolean {\r\n return this.browserName.includes(name) || false;\r\n }\r\n}\r\n","import {Injectable, Injector, NgZone, Optional} from \"@angular/core\";\r\nimport {\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n Data,\r\n NavigationEnd,\r\n NavigationExtras,\r\n OutletContext,\r\n Params,\r\n Resolve,\r\n Route,\r\n Router,\r\n Scroll,\r\n UrlSegment,\r\n UrlTree\r\n} from \"@angular/router\";\r\nimport {BehaviorSubject, firstValueFrom, Observable, Observer, Subscription} from \"rxjs\";\r\nimport {debounceTime, distinctUntilChanged, filter, map, skipWhile,} from \"rxjs/operators\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {IRoute, NavigationUrlParam} from \"../common-types\";\r\nimport {UniversalService} from \"./universal.service\";\r\n\r\nexport const emptySnapshot = new ActivatedRouteSnapshot();\r\nexport const emptyData: Data = {id: \"\"};\r\nexport const emptyParams: Params = {};\r\nexport const emptySegments: UrlSegment[] = [];\r\nexport const emptyComponents: any[] = [];\r\n\r\nexport interface IStateInfo {\r\n url: string;\r\n segments: UrlSegment[];\r\n components: any[];\r\n}\r\n\r\n@Injectable()\r\nexport class StateService {\r\n\r\n readonly globalExtras: NavigationExtras;\r\n\r\n protected $snapshot: BehaviorSubject<ActivatedRouteSnapshot>;\r\n protected $component: BehaviorSubject<any>;\r\n protected stateInfo: IStateInfo;\r\n\r\n static toPath(route: Route, params: any): string {\r\n let path = route.path || \"\";\r\n ObjectUtils.iterate(params, (value: any, key: string) => {\r\n path = path.replace(`:${key}`, `${value}`);\r\n });\r\n return path;\r\n }\r\n\r\n get snapshot(): ActivatedRouteSnapshot {\r\n return this.$snapshot.value;\r\n }\r\n\r\n get component(): any {\r\n return this.$component.value;\r\n }\r\n\r\n get route(): IRoute {\r\n return this.snapshot.routeConfig;\r\n }\r\n\r\n get data(): Data {\r\n return this.snapshot.data || emptyData;\r\n }\r\n\r\n get params(): Params {\r\n return this.snapshot.params || emptyParams;\r\n }\r\n\r\n get queryParams(): Params {\r\n return this.snapshot.queryParams || emptyParams;\r\n }\r\n\r\n get url(): string {\r\n return this.stateInfo.url || \"\";\r\n }\r\n\r\n get urlSegments(): UrlSegment[] {\r\n return this.stateInfo.segments || emptySegments;\r\n }\r\n\r\n get components(): any[] {\r\n return this.stateInfo.components || emptyComponents;\r\n }\r\n\r\n get routerConfig(): IRoute[] {\r\n return this.router.config;\r\n }\r\n\r\n get $observable(): Observable<ActivatedRouteSnapshot> {\r\n return this.$snapshot.pipe(\r\n skipWhile(snapshot => snapshot === emptySnapshot),\r\n debounceTime(25)\r\n )\r\n }\r\n\r\n constructor(readonly injector: Injector,\r\n readonly zone: NgZone,\r\n readonly universal: UniversalService,\r\n @Optional() readonly router: Router = null,\r\n @Optional() readonly contexts: ChildrenOutletContexts = null) {\r\n this.globalExtras = {\r\n queryParamsHandling: \"merge\"\r\n };\r\n this.$snapshot = new BehaviorSubject(emptySnapshot);\r\n this.$component = new BehaviorSubject(null);\r\n this.stateInfo = {\r\n url: \"\",\r\n segments: [],\r\n components: []\r\n };\r\n this.router?.events\r\n .pipe(\r\n distinctUntilChanged(),\r\n map(event => {\r\n if (event instanceof Scroll) {\r\n return event.routerEvent;\r\n }\r\n return event;\r\n }),\r\n filter(e => e instanceof NavigationEnd),\r\n )\r\n .subscribe(() => {\r\n const routerStateSnapshot = this.router.routerState.snapshot;\r\n let context: OutletContext = this.contexts?.getContext(\"primary\");\r\n let segments = [];\r\n const components: any[] = [];\r\n const snapshots: ActivatedRouteSnapshot[] = [];\r\n while (context) {\r\n const snapshot = context.route.snapshot;\r\n snapshots.push(snapshot);\r\n segments = segments.concat(snapshot.url);\r\n if (context.outlet && context.outlet.component)\r\n components.push(context.outlet.component);\r\n context = context.children.getContext(\"primary\");\r\n }\r\n this.stateInfo = {\r\n url: segments.map(s => s.url).join(\"/\"),\r\n segments: segments,\r\n components: components\r\n };\r\n this.$snapshot.next(snapshots[snapshots.length - 1]);\r\n this.$component.next(components[components.length - 1]);\r\n });\r\n }\r\n\r\n async reload(): Promise<any> {\r\n const routerStateSnapshot = this.router.routerState.snapshot;\r\n const resolvers = this.route.resolve || {};\r\n const keys = Object.keys(resolvers);\r\n for (const key of keys) {\r\n const resolver = this.injector.get(resolvers[key]) as Resolve<any>;\r\n let resolved = resolver.resolve(this.snapshot, routerStateSnapshot);\r\n if (resolved instanceof Observable) {\r\n resolved = firstValueFrom(resolved);\r\n }\r\n if (resolved instanceof Promise) {\r\n resolved = await resolved;\r\n }\r\n this.data[key] = resolved;\r\n }\r\n }\r\n\r\n async navigateByUrl(url: string | UrlTree, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n return this.navigate(url, navigationExtras);\r\n }\r\n\r\n async navigate(url: NavigationUrlParam, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n if (!this.router) return false;\r\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n return this.zone.run(() => {\r\n return this.router.navigateByUrl(tree, extras);\r\n });\r\n }\r\n\r\n async open(url: NavigationUrlParam, target = \"_blank\", navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n if (!this.router) return false;\r\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n return this.zone.run(() => {\r\n return this.openInNewWindow(tree, target) || this.router.navigateByUrl(tree, extras);\r\n });\r\n }\r\n\r\n subscribeImmediately(\r\n next?: (value: ActivatedRouteSnapshot) => void,\r\n error?: (error: any) => void\r\n ): Subscription {\r\n return this.subscribe({\r\n next, error\r\n });\r\n }\r\n\r\n subscribe(osOrNext?: Partial<Observer<ActivatedRouteSnapshot>> | ((value: ActivatedRouteSnapshot) => void)): Subscription {\r\n return this.$observable.subscribe(osOrNext);\r\n }\r\n\r\n protected openInNewWindow(tree: UrlTree, target: string): boolean {\r\n if (!this.universal.isBrowser) return false;\r\n const baseUrl = window.location.href.replace(this.router.url, \"\");\r\n try {\r\n const serialized = this.router.serializeUrl(tree);\r\n const separator = serialized.startsWith(\"/\") ? \"\" : \"/\";\r\n window.open(baseUrl + separator + serialized, target);\r\n return true;\r\n } catch (e) {\r\n console.log(`Can't open new window: ${e}`);\r\n return false;\r\n }\r\n }\r\n\r\n protected createUrlTree(url: NavigationUrlParam, extras?: NavigationExtras): [UrlTree, NavigationExtras] {\r\n if (!this.router) return null;\r\n extras = Object.assign(extras, this.globalExtras, extras || {});\r\n if (ObjectUtils.isArray(url)) {\r\n return [this.router.createUrlTree(url, extras), extras]\r\n }\r\n if (ObjectUtils.isString(url)) {\r\n return [this.router.parseUrl(url), extras];\r\n }\r\n return [url, extras];\r\n }\r\n}\r\n","import {Inject, Injectable, Injector} from \"@angular/core\";\r\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlSegment} from \"@angular/router\";\r\nimport {AUTH_SERVICE, FactoryDependencies, IAuthService, IRoute, RouteValidator} from \"../common-types\";\r\nimport {ReflectUtils} from \"./reflect.utils\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\nimport {StateService} from \"../services/state.service\";\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n static guardAuthenticated(auth: IAuthService): Promise<boolean> {\r\n return Promise.resolve(auth.isAuthenticated);\r\n }\r\n\r\n static guardNotAuthenticated(auth: IAuthService): Promise<boolean> {\r\n return Promise.resolve(!auth.isAuthenticated);\r\n }\r\n\r\n static guardNothing(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n }\r\n\r\n @FactoryDependencies(AUTH_SERVICE)\r\n static guardAuthField(auth: IAuthService, expression: string = `auth.isAuthenticated`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth}));\r\n };\r\n return lambda;\r\n }\r\n\r\n @FactoryDependencies(StateService)\r\n static guardStateField(state: StateService, expression: string = `state.data`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {state}));\r\n };\r\n return lambda;\r\n }\r\n\r\n @FactoryDependencies(AUTH_SERVICE, StateService)\r\n static guardAuthStateField(auth: IAuthService, state: StateService, expression: string = `auth.isAuthenticated`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth, state}));\r\n };\r\n return lambda;\r\n }\r\n\r\n static wildRouteMatch(segments: UrlSegment[]) {\r\n return {consumed: segments};\r\n }\r\n\r\n static noRouteMatch() {\r\n return null;\r\n }\r\n\r\n constructor(@Inject(Injector) readonly injector: Injector,\r\n @Inject(StateService) readonly state: StateService,\r\n @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\r\n }\r\n\r\n checkRouteMenu(route: IRoute): Promise<boolean> {\r\n if (!route.data || !route.data.name) return Promise.resolve(false);\r\n return this.checkRoute(route);\r\n }\r\n\r\n checkRoute(route: IRoute, next?: ActivatedRouteSnapshot): Promise<boolean> {\r\n const routeData = route.data || {};\r\n if (!routeData.guards)\r\n return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);\r\n return new Promise<boolean>(resolve => {\r\n const guards = routeData.guards.map(g => {\r\n const guard = ReflectUtils.resolve<RouteValidator>(g, this.injector);\r\n return guard(this.auth, route, next);\r\n });\r\n Promise.all(guards).then(results => {\r\n resolve(results.indexOf(false) < 0);\r\n });\r\n });\r\n }\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\r\n const route = <IRoute>next.routeConfig;\r\n return new Promise<boolean>(resolve => {\r\n this.auth.checkAuthenticated().then(() => {\r\n this.checkRoute(route, next).then(hasRights => {\r\n resolve(hasRights);\r\n if (!hasRights) {\r\n this.getReturnState(route).then(returnState => {\r\n if (!returnState) return;\r\n this.state.navigate(returnState, {queryParams: next.queryParams});\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n getConfig(route: IRoute, config: IRoute[], path: string[]): IRoute[] {\r\n if (!config) return null;\r\n const match = config.findIndex(t => t == route);\r\n if (match >= 0) return config;\r\n for (const subConfig of config) {\r\n if (subConfig.path)\r\n path.push(subConfig.path);\r\n const loadedChildren = (subConfig[\"_loadedConfig\"] || {routes: null}).routes || subConfig[\"_loadedRoutes\"];\r\n const match = this.getConfig(route, subConfig.children || loadedChildren, path);\r\n if (!match) {\r\n if (subConfig.path)\r\n path.length -= 1;\r\n continue;\r\n }\r\n return match;\r\n }\r\n return null;\r\n }\r\n\r\n getReturnState(route: IRoute): Promise<string[]> {\r\n if (!route) return Promise.resolve(null);\r\n if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {\r\n return Promise.resolve(route.data.returnState);\r\n }\r\n const path = [];\r\n const config = this.getConfig(route, this.state.routerConfig, path);\r\n return new Promise<string[]>(resolve => {\r\n this.getReturnStateRecursive(config).then(rs => {\r\n if (!ObjectUtils.isArray(rs)) {\r\n resolve(rs);\r\n return;\r\n }\r\n resolve(path.concat(rs));\r\n });\r\n });\r\n }\r\n\r\n private getReturnStateRecursive(config: IRoute[], c: number = 0): Promise<string[]> {\r\n if (!config || c >= config.length) return Promise.resolve(null);\r\n return new Promise<string[]>(resolve => {\r\n const route = config[c];\r\n const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);\r\n check.then(res => {\r\n if (res) {\r\n resolve([route.path]);\r\n return;\r\n }\r\n this.getReturnStateRecursive(config, c + 1).then(resolve);\r\n });\r\n });\r\n }\r\n}\r\n","import {InjectionToken, Injector, Type} from \"@angular/core\";\r\nimport {CachedFactory, CachedProvider} from \"../common-types\";\r\n\r\nconst CACHED_TOKEN = new InjectionToken(\"cached-factory-token\");\r\n\r\nexport function cachedFactory<T>(providers: CachedProvider<T>[]): CachedFactory<T> {\r\n let cached: ReadonlyArray<T> = null;\r\n return (injector: Injector) => {\r\n if (cached !== null) {\r\n return cached;\r\n }\r\n const subInjector = Injector.create({\r\n providers: providers.map(p => {\r\n if ((\"useFactory\" in p && \"deps\" in p) || \"useValue\" in p) {\r\n return {\r\n provide: CACHED_TOKEN,\r\n multi: true,\r\n ...p\r\n } as any;\r\n }\r\n return {\r\n provide: CACHED_TOKEN,\r\n multi: true,\r\n useClass: p as Type<T>\r\n };\r\n }),\r\n parent: injector\r\n });\r\n cached = subInjector.get(CACHED_TOKEN) as ReadonlyArray<T>;\r\n return cached;\r\n };\r\n}\r\n","import {CanvasColor} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const netscape: any;\r\n\r\nclass BlurStack {\r\n r: number = 0;\r\n g: number = 0;\r\n b: number = 0;\r\n a: number = 0;\r\n next: BlurStack = null;\r\n}\r\n\r\nconst mul_table = [\r\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512,\r\n 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512,\r\n 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456,\r\n 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512,\r\n 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328,\r\n 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456,\r\n 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335,\r\n 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512,\r\n 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405,\r\n 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328,\r\n 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271,\r\n 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456,\r\n 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388,\r\n 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335,\r\n 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\r\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\r\n\r\nconst shg_table = [\r\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\r\n 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\r\n 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\r\n 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\r\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\r\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\r\n\r\nexport class CanvasUtils {\r\n\r\n static manipulatePixels(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, colorTransformer: (color: CanvasColor, greyscale?: number) => CanvasColor): void {\r\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const pixels = imgData.data;\r\n for (let i = 0, n = pixels.length; i < n; i += 4) {\r\n const clr = new CanvasColor(pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]);\r\n const greyscale = clr.r * .3 + clr.g * .59 + clr.b * .11;\r\n const color = colorTransformer(clr, greyscale);\r\n pixels[i] = color.r;\r\n pixels[i + 1] = color.g;\r\n pixels[i + 2] = color.b;\r\n pixels[i + 3] = color.a;\r\n }\r\n ctx.putImageData(imgData, 0, 0);\r\n }\r\n\r\n static thresholding(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, threshold: number = 50, colorTransformer: (color: CanvasColor, limit: boolean, greyscale?: number) => CanvasColor): void {\r\n const min = new CanvasColor(0, 0, 0, 255);\r\n const max = new CanvasColor(0, 0, 0, 0);\r\n colorTransformer = ObjectUtils.isFunction(colorTransformer) ? colorTransformer : ((color: CanvasColor, limit: boolean): CanvasColor => {\r\n return limit ? max : min;\r\n });\r\n CanvasUtils.manipulatePixels(canvas, ctx, (color, greyscale) => {\r\n return colorTransformer(color, greyscale > threshold, greyscale);\r\n });\r\n }\r\n\r\n static stackBlur(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, radius: number = 10): void {\r\n if (isNaN(radius) || radius < 1) return;\r\n radius |= 0;\r\n\r\n const top_x = 0;\r\n const top_y = 0;\r\n const width = canvas.width;\r\n const height = canvas.height;\r\n\r\n let imageData = null;\r\n\r\n try {\r\n try {\r\n imageData = ctx.getImageData(top_x, top_y, width, height);\r\n } catch (e) {\r\n\r\n // NOTE: this part is supposedly only needed if you want to work with local files\r\n // so it might be okay to remove the whole try/catch block and just use\r\n // imageData = ctx.getImageData( top_x, top_y, width, height );\r\n try {\r\n netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\r\n imageData = ctx.getImageData(top_x, top_y, width, height);\r\n } catch (e) {\r\n alert(\"Cannot access local image\");\r\n throw new Error(\"unable to access local image data: \" + e);\r\n }\r\n }\r\n } catch (e) {\r\n alert(\"Cannot access image\");\r\n throw new Error(\"unable to access image data: \" + e);\r\n }\r\n\r\n const pixels = imageData.data;\r\n\r\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\r\n r_out_sum, g_out_sum, b_out_sum, a_out_sum,\r\n r_in_sum, g_in_sum, b_in_sum, a_in_sum,\r\n pr, pg, pb, pa, rbs;\r\n\r\n const div = radius + radius + 1;\r\n const widthMinus1 = width - 1;\r\n const heightMinus1 = height - 1;\r\n const radiusPlus1 = radius + 1;\r\n const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\r\n\r\n const stackStart = new BlurStack();\r\n let stackEnd = null;\r\n let stack = stackStart;\r\n\r\n for (i = 1; i < div; i++) {\r\n stack = stack.next = new BlurStack();\r\n if (i == radiusPlus1) {\r\n stackEnd = stack;\r\n }\r\n }\r\n stack.next = stackStart;\r\n let stackIn = null;\r\n let stackOut = null;\r\n\r\n yw = yi = 0;\r\n\r\n const mul_sum = mul_table[radius];\r\n const shg_sum = shg_table[radius];\r\n\r\n for (y = 0; y < height; y++) {\r\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n\r\n stack = stackStart;\r\n\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n\r\n for (i = 1; i < radiusPlus1; i++) {\r\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;\r\n b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;\r\n a_sum += (stack.a = (pa = pixels[p + 3])) * rbs;\r\n\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n\r\n stack = stack.next;\r\n }\r\n\r\n\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (x = 0; x < width; x++) {\r\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa != 0) {\r\n pa = 255 / pa;\r\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n } else {\r\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\r\n }\r\n\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n\r\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\r\n\r\n r_in_sum += (stackIn.r = pixels[p]);\r\n g_in_sum += (stackIn.g = pixels[p + 1]);\r\n b_in_sum += (stackIn.b = pixels[p + 2]);\r\n a_in_sum += (stackIn.a = pixels[p + 3]);\r\n\r\n r_sum += r_in_sum;\r\n g_sum += g_in_sum;\r\n b_sum += b_in_sum;\r\n a_sum += a_in_sum;\r\n\r\n stackIn = stackIn.next;\r\n\r\n r_out_sum += (pr = stackOut.r);\r\n g_out_sum += (pg = stackOut.g);\r\n b_out_sum += (pb = stackOut.b);\r\n a_out_sum += (pa = stackOut.a);\r\n\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n\r\n stackOut = stackOut.next;\r\n\r\n yi += 4;\r\n }\r\n yw += width;\r\n }\r\n\r\n\r\n for (x = 0; x < width; x++) {\r\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n\r\n yi = x << 2;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n\r\n stack = stackStart;\r\n\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n\r\n yp = width;\r\n\r\n for (i = 1; i <= radius; i++) {\r\n yi = (yp + x) << 2;\r\n\r\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;\r\n b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;\r\n a_sum += (stack.a = (pa = pixels[yi + 3])) * rbs;\r\n\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n\r\n stack = stack.next;\r\n\r\n if (i < heightMinus1) {\r\n yp += width;\r\n }\r\n }\r\n\r\n yi = x;\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (y = 0; y < height; y++) {\r\n p = yi << 2;\r\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa > 0) {\r\n pa = 255 / pa;\r\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n } else {\r\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\r\n }\r\n\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n\r\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\r\n\r\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\r\n g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));\r\n b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));\r\n a_sum += (a_in_sum += (stackIn.a = pixels[p + 3]));\r\n\r\n stackIn = stackIn.next;\r\n\r\n r_out_sum += (pr = stackOut.r);\r\n g_out_sum += (pg = stackOut.g);\r\n b_out_sum += (pb = stackOut.b);\r\n a_out_sum += (pa = stackOut.a);\r\n\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n\r\n stackOut = stackOut.next;\r\n\r\n yi += width;\r\n }\r\n }\r\n\r\n ctx.putImageData(imageData, top_x, top_y);\r\n }\r\n\r\n static measureTextFontSize(maxWidth: number, maxHeight: number, lines: string[], font: string, lineHeightPercent: number = 1.1, canvas?: HTMLCanvasElement): number {\r\n\r\n const startSize: number = maxHeight;\r\n const context: CanvasRenderingContext2D = canvas.getContext(\"2d\");\r\n\r\n if (!canvas) {\r\n canvas = <HTMLCanvasElement>document.createElement(\"canvas\");\r\n document.body.appendChild(canvas);\r\n }\r\n\r\n canvas.width = maxWidth + maxHeight;\r\n canvas.height = maxHeight * 2;\r\n\r\n let fontSize: number = CanvasUtils.halveValidateFontSize(startSize, (size: number) => {\r\n CanvasUtils.setFontProps(context, font, size);\r\n const maxTextLinesWidth = CanvasUtils.getTextWidth(context, lines);\r\n return maxWidth - maxTextLinesWidth;\r\n });\r\n\r\n const bitmapHeight: number = CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, fontSize, lineHeightPercent);\r\n if (bitmapHeight > maxHeight) {\r\n fontSize = CanvasUtils.halveValidateFontSize(fontSize, (size: number) => {\r\n return maxHeight - CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, size, lineHeightPercent);\r\n });\r\n }\r\n\r\n return fontSize;\r\n }\r\n\r\n static drawLines(context: CanvasRenderingContext2D, lines: string[], font: string, size: number, lineHeightPercent: number = 1.1, align: string = \"left\", baseLine: string = \"top\", x: number = 0, y: number = 0): number {\r\n CanvasUtils.setFontProps(context, font, size, align, baseLine);\r\n for (let i: number = 0; i < lines.length; i++) {\r\n const line: string = lines[i];\r\n context.fillText(line, x, y);\r\n if (i < lines.length - 1) {\r\n y += size * lineHeightPercent;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n static wrapText(context: CanvasRenderingContext2D, text: string, x: number, y: number, maxWidth: number): void {\r\n const words = text.split(\" \");\r\n const lineHeight = context.measureText(\"M\").width * 1.3;\r\n const lines: string[] = [];\r\n let line = \"\";\r\n for (let n = 0; n < words.length; n++) {\r\n const testLine = line + words[n] + \" \";\r\n const metrics = context.measureText(testLine);\r\n const testWidth = metrics.width;\r\n if (testWidth > maxWidth && n > 0) {\r\n lines.push(line);\r\n line = words[n] + \" \";\r\n }\r\n else {\r\n line = testLine;\r\n }\r\n }\r\n lines.push(line);\r\n y -= lineHeight * .5 * lines.length;\r\n lines.forEach(l => {\r\n context.fillText(l, x, y);\r\n y += lineHeight;\r\n });\r\n }\r\n\r\n static setFontProps(context: CanvasRenderingContext2D, font: string, fontSize: number, align: string = \"left\", baseLine: string = \"top\"): void {\r\n context.font = `${fontSize}px ${font}`;\r\n context.textAlign = <any>align;\r\n context.textBaseline = <any>baseLine;\r\n }\r\n\r\n private static getTextWidth(context: CanvasRenderingContext2D, lines: string[]): number {\r\n let maxWidth: number = 0;\r\n for (let i: number = 0; i < lines.length; i++) {\r\n const line: string = lines[i];\r\n maxWidth = Math.max(maxWidth, context.measureText(line).width);\r\n }\r\n return maxWidth;\r\n }\r\n\r\n private static getTextBitmapHeight(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, lines: string[], font: string, fontSize: number, lineHeightPercent: number): number {\r\n const width: number = canvas.width;\r\n const height: number = canvas.height;\r\n context.clearRect(0, 0, width, height);\r\n\r\n const textY = CanvasUtils.drawLines(context, lines, font, fontSize, lineHeightPercent, \"left\", \"top\", fontSize * .5, fontSize * .5);\r\n const imageData: ImageData = context.getImageData(0, 0, width, height);\r\n\r\n let textHeight: number = 0;\r\n\r\n yLoop:for (let y: number = 0; y < height; y++) {\r\n for (let x: number = 0; x < width; x++) {\r\n const index: number = (x + y * width) * 4;\r\n if (imageData.data[index + 3] > 0) {\r\n textHeight = y + 1;\r\n continue yLoop;\r\n }\r\n }\r\n }\r\n\r\n return Math.max(textHeight, textY + fontSize);\r\n }\r\n\r\n private static halveValidateFontSize(startSize: number, callback: (size: number) => number): number {\r\n let fontSize: number = startSize;\r\n let lastFontSize: number = 0;\r\n let direction: number;\r\n\r\n for (let i: number = 0; i < 20; i++) {\r\n direction = callback(fontSize);\r\n const tempSize: number = fontSize;\r\n if (direction < 0) {\r\n fontSize = fontSize - (Math.abs(fontSize - lastFontSize) / 2);\r\n } else {\r\n fontSize = fontSize + (Math.abs(fontSize - lastFontSize) / 2);\r\n }\r\n lastFontSize = tempSize;\r\n if (Math.abs(fontSize - lastFontSize) < 0.1) {\r\n break;\r\n }\r\n }\r\n fontSize = Math.floor(fontSize);\r\n return fontSize;\r\n }\r\n}\r\n","import {DurationInputArg1, DurationInputArg2} from \"moment\";\r\nimport moment from \"moment\";\r\n\r\nexport class DateUtils {\r\n\r\n static isHoliday(date: Date): boolean {\r\n return moment(date).isoWeekday() > 5;\r\n }\r\n\r\n static isBusinessDay(date: Date): boolean {\r\n return moment(date).isoWeekday() < 6;\r\n }\r\n\r\n static add(date: Date, amount?: DurationInputArg1, unit?: DurationInputArg2): Date {\r\n return moment(date).add(amount, unit).toDate();\r\n }\r\n\r\n static businessAdd(date: Date, amount: number, unit?: DurationInputArg2, freeDays: Date[] = []): Date {\r\n const signal = amount < 0 ? -1 : 1;\r\n const freeMoments = freeDays.map(d => moment(d));\r\n let remaining = Math.abs(amount);\r\n let day = date;\r\n while (remaining) {\r\n day = DateUtils.add(day, signal, unit);\r\n if (DateUtils.isBusinessDay(day) && !freeMoments.some(m => m.isSame(day, \"day\"))) {\r\n remaining--;\r\n }\r\n }\r\n return day;\r\n }\r\n\r\n static businessSubtract(date: Date, amount: number, unit?: DurationInputArg2): Date {\r\n return DateUtils.businessAdd(date, -amount, unit);\r\n }\r\n}\r\n","import {HttpClient} from \"@angular/common/http\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const saveAs: any;\r\n\r\nexport class FileUtils {\r\n\r\n static readonly base64: RegExp = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/g;\r\n\r\n static getExtension(file: File): string {\r\n return file ? file.name.substring(file.name.lastIndexOf(\".\")).toLowerCase() : null;\r\n }\r\n\r\n static getName(file: File): string {\r\n return file ? file.name.substring(0, file.name.lastIndexOf(\".\")) : null;\r\n }\r\n\r\n static toFile(blob: Blob, fileName: string): File {\r\n const data: any = blob;\r\n data.lastModifiedDate = new Date();\r\n data.name = fileName.split(/\\\\|\\//g).pop();\r\n return <File>data;\r\n }\r\n\r\n static dataToBlob(data: string): Blob {\r\n const parts = data.split(\",\");\r\n const byteString = atob(parts[1]);\r\n const mimeString = parts[0].split(\":\")[1].split(\";\")[0];\r\n\r\n const ab = new ArrayBuffer(byteString.length);\r\n const ia = new Uint8Array(ab);\r\n for (let i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ab], {type: mimeString});\r\n }\r\n\r\n static saveBlob(blob: Blob, fileName: string): void {\r\n if (typeof saveAs == \"undefined\") {\r\n throw Error(\"FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver\");\r\n }\r\n saveAs(blob, fileName);\r\n }\r\n\r\n static saveJson(json: any, fileName: string): void {\r\n if (!ObjectUtils.isObject(json)) return;\r\n FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);\r\n }\r\n\r\n static readFileAsText(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsText(file)\r\n );\r\n }\r\n\r\n static readFileAsBinaryString(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsBinaryString(file)\r\n );\r\n }\r\n\r\n static readFileAsDataURL(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsDataURL(file)\r\n );\r\n }\r\n\r\n static base64ToBlob(base64: string, mimeType = \"application/octet-stream\") {\r\n // Decode the Base64 string into a binary string\r\n const byteCharacters = atob(base64);\r\n\r\n // Convert the binary string into an array of bytes\r\n const byteNumbers = Array.from(byteCharacters, char => char.charCodeAt(0));\r\n const byteArray = new Uint8Array(byteNumbers);\r\n\r\n // Create a Blob with the byte array and the specified MIME type\r\n return new Blob([byteArray], { type: mimeType });\r\n }\r\n\r\n static async readBlobFromUrl(http: HttpClient, url: string): Promise<Blob> {\r\n if (!url) {\r\n throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n }\r\n if (url.match(FileUtils.base64)) {\r\n return FileUtils.base64ToBlob(url);\r\n }\r\n return firstValueFrom(http.get(url, {\r\n responseType: \"blob\"\r\n }));\r\n }\r\n\r\n static async readDataFromUrl(http: HttpClient, url: string): Promise<string> {\r\n if (!url) {\r\n throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n }\r\n if (url.match(FileUtils.base64)) {\r\n return url;\r\n }\r\n const blob = await firstValueFrom(http.get(url, {\r\n responseType: \"blob\"\r\n }));\r\n return FileUtils.readFileAsDataURL(blob);\r\n }\r\n\r\n static getVideoCover(file: File, seekTo: number = null, quality: number = .75) {\r\n return new Promise<string>((resolve, reject) => {\r\n // load the file to a video player\r\n const videoPlayer = document.createElement(\"video\");\r\n videoPlayer.setAttribute(\"src\", URL.createObjectURL(file));\r\n videoPlayer.load();\r\n videoPlayer.addEventListener(\"error\", (ex) => {\r\n reject(\"error when loading video file\");\r\n });\r\n // load metadata of the video to get video duration and dimensions\r\n videoPlayer.addEventListener(\"loadedmetadata\", () => {\r\n if (isNaN(seekTo)) {\r\n seekTo = videoPlayer.duration / 2;\r\n }\r\n // seek to user defined timestamp (in seconds) if possible\r\n if (videoPlayer.duration < seekTo) {\r\n reject(\"video is too short.\");\r\n return;\r\n }\r\n // delay seeking or else \"seeked\" event won\"t fire on Safari\r\n setTimeout(() => {\r\n videoPlayer.currentTime = seekTo;\r\n }, 200);\r\n // extract video thumbnail once seeking is complete\r\n videoPlayer.addEventListener(\"seeked\", () => {\r\n // define a canvas to have the same dimension as the video\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = videoPlayer.videoWidth;\r\n canvas.height = videoPlayer.videoHeight;\r\n // draw the video frame to canvas\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\r\n // return the canvas image as a blob\r\n resolve(ctx.canvas.toDataURL(\r\n \"image/jpeg\",\r\n quality\r\n ));\r\n });\r\n });\r\n });\r\n }\r\n\r\n static async getFilePreview(file: File): Promise<string> {\r\n const type = file.type.toLowerCase();\r\n if (type.startsWith(\"image/\")) {\r\n return URL.createObjectURL(file);\r\n }\r\n if (type.startsWith(\"video/\")) {\r\n return FileUtils.getVideoCover(file);\r\n }\r\n return null;\r\n }\r\n\r\n private static readFile(callback: (reader: FileReader) => void): Promise<string> {\r\n return new Promise<string>(\r\n // @dynamic\r\n (resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => resolve(event.target.result);\r\n reader.onerror = reject;\r\n callback(reader);\r\n }\r\n );\r\n }\r\n}\r\n","import {Subject} from \"rxjs\";\r\n\r\nexport class GenericValue<T> extends Subject<T> {\r\n\r\n get value(): T {\r\n return this._value;\r\n }\r\n\r\n set value(value: T) {\r\n if (value == this._value) return;\r\n this._value = value;\r\n this.next(value);\r\n }\r\n\r\n private _value: T;\r\n\r\n constructor(value: T = null) {\r\n super();\r\n this._value = value;\r\n }\r\n\r\n setJustValue(value: T): void {\r\n this._value = value;\r\n }\r\n}\r\n","export type FileSystemEntryOpenResult = ReadonlyArray<FileSystemEntry> | null;\r\n\r\nexport type FileSystemEntryOpenCb = (data: any, parent: FileSystemEntry) => Promise<FileSystemEntryOpenResult>;\r\n\r\nexport class FileSystemEntry {\r\n\r\n protected result: Promise<FileSystemEntryOpenResult>;\r\n\r\n readonly path: ReadonlyArray<FileSystemEntry>;\r\n readonly level: number;\r\n readonly classes: ReadonlyArray<string>;\r\n\r\n constructor(readonly label: string,\r\n readonly meta: string,\r\n readonly image: string,\r\n readonly data: any,\r\n readonly parent: FileSystemEntry,\r\n protected openCb: FileSystemEntryOpenCb) {\r\n this.path = !parent ? [this] : parent.path.concat([this]);\r\n this.level = this.path.length - 1;\r\n this.classes = this.path\r\n .filter(t => typeof t.data === \"string\" && t.data.length > 0).map(t => t.data)\r\n .concat([`level-${this.level}`]);\r\n }\r\n\r\n open(): Promise<FileSystemEntryOpenResult> {\r\n this.result = this.result || this.openCb(this.data, this);\r\n this.result.then(res => {\r\n if (Array.isArray(res)) return;\r\n this.result = null;\r\n });\r\n return this.result;\r\n }\r\n}\r\n","export interface IShape {\r\n x: number;\r\n y: number;\r\n\r\n distance(shape: IShape): number;\r\n}\r\n\r\nexport class Rect implements IShape {\r\n\r\n get center(): Point {\r\n return new Point(this.x, this.y);\r\n }\r\n\r\n get left(): number {\r\n return this.x - this.width * .5;\r\n }\r\n\r\n get right(): number {\r\n return this.x + this.width * .5;\r\n }\r\n\r\n get bottom(): number {\r\n return this.y - this.height * .5;\r\n }\r\n\r\n get top(): number {\r\n return this.y + this.height * .5;\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number, readonly width: number, readonly height: number, readonly rotation: number = 0) {\r\n\r\n }\r\n\r\n distance(p: Point): number {\r\n p = p.rotateAround(this.center, -this.rotation);\r\n const x = Math.max(this.left - p.x, 0, p.x - this.right);\r\n const y = Math.max(this.bottom - p.y, 0, p.y - this.top);\r\n return Math.sqrt(x*x + y*y);\r\n }\r\n}\r\n\r\nexport class Circle implements IShape {\r\n\r\n get center(): Point {\r\n return new Point(this.x, this.y);\r\n }\r\n\r\n get left(): Point {\r\n return new Point(this.x - this.radius, this.y);\r\n }\r\n\r\n get right(): Point {\r\n return new Point(this.x + this.radius, this.y);\r\n }\r\n\r\n get top(): Point {\r\n return new Point(this.x, this.y + this.radius);\r\n }\r\n\r\n get bottom(): Point {\r\n return new Point(this.x, this.y - this.radius);\r\n }\r\n\r\n get rect(): Rect {\r\n return new Rect(this.x, this.y, this.radius * 2, this.radius * 2);\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number, readonly radius: number) {\r\n\r\n }\r\n\r\n distance(p: Point): number {\r\n return this.center.distance(p) - this.radius;\r\n }\r\n}\r\n\r\nexport class Point implements IShape {\r\n\r\n static Zero: Point = new Point(0, 0);\r\n\r\n get length(): number {\r\n return this.distance(Point.Zero);\r\n }\r\n\r\n get perpendicular(): Point {\r\n return new Point(this.y, -this.x);\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number) {\r\n }\r\n\r\n add(p: Point): Point {\r\n return new Point(this.x + p.x, this.y + p.y);\r\n }\r\n\r\n subtract(p: Point): Point {\r\n return new Point(this.x - p.x, this.y - p.y);\r\n }\r\n\r\n multiply(p: Point | number): Point {\r\n if (p instanceof Point) {\r\n return new Point(this.x * p.x, this.y * p.y);\r\n }\r\n return new Point(this.x * p, this.y * p);\r\n }\r\n\r\n distance(b: Point): number {\r\n const x = b.x - this.x;\r\n const y = b.y - this.y;\r\n return Math.sqrt(x * x + y * y);\r\n }\r\n\r\n lerp(p: Point, ratio: number): Point {\r\n const diff = p.subtract(this);\r\n return this.add(diff.multiply(ratio));\r\n }\r\n\r\n perpendicularTo(p: Point, length: number): Point {\r\n const diff = p.perpendicular.subtract(this.perpendicular);\r\n const ratio = length / diff.length;\r\n const center = this.lerp(p, .5);\r\n return center.add(diff.multiply(ratio));\r\n }\r\n\r\n circleWith(a: Point, b: Point): Circle {\r\n const yDelta_a = b.y - a.y;\r\n const xDelta_a = b.x - a.x;\r\n const yDelta_b = this.y - b.y;\r\n const xDelta_b = this.x - b.x;\r\n\r\n const aSlope = yDelta_a / xDelta_a;\r\n const bSlope = yDelta_b / xDelta_b;\r\n\r\n const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));\r\n const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;\r\n const center = new Point(x, y);\r\n return new Circle(center.x, center.y, center.distance(this));\r\n }\r\n\r\n tangents(c: Circle): Point[] {\r\n const pd = c.center.subtract(this);\r\n const a = Math.asin(c.radius / pd.length);\r\n const b = Math.atan2(pd.y, pd.x);\r\n // Tangent points\r\n let t = b - a;\r\n const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));\r\n t = b + a;\r\n const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));\r\n return [t1, t2];\r\n }\r\n\r\n angle(p: Point): number {\r\n const diff = p.subtract(this);\r\n return Math.atan2(diff.y, diff.x) * 180 / Math.PI;\r\n }\r\n\r\n rotateAround(p: Point, angle: number): Point {\r\n const rotation = (p.angle(this) + angle) * Math.PI / 180;\r\n const distance = p.distance(this);\r\n const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);\r\n return p.add(rotated);\r\n }\r\n}\r\n","import {Invokable} from \"invokable\";\r\n\r\nexport class Initializer<T> {\r\n\r\n private initialized: boolean;\r\n\r\n get isInitialized(): boolean {\r\n return this.initialized;\r\n }\r\n\r\n constructor(private callback: () => T, private shouldInit: boolean = true) {\r\n this.initialized = !this.shouldInit;\r\n // @ts-ignore\r\n return Invokable.create(this);\r\n }\r\n\r\n [Invokable.call](): T {\r\n if (this.initialized) return null;\r\n this.initialized = true;\r\n return this.callback();\r\n }\r\n}\r\n\r\nexport interface Initializer<T> {\r\n (): T;\r\n}\r\n","export class JSONfn {\r\n\r\n static parse(text: string): any {\r\n return JSON.parse(text, JSONfn.reviver);\r\n }\r\n\r\n static stringify(obj: any): string {\r\n return JSON.stringify(obj, JSONfn.replacer);\r\n }\r\n\r\n static reviver(key: string, value: any): any {\r\n const iso8061 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:.\\d+)?(?:Z|[+-]\\d\\d:\\d\\d)$/;\r\n if (typeof value !== \"string\") return value;\r\n if (value.length < 8) {\r\n return value;\r\n }\r\n if (value.match(iso8061)) {\r\n return new Date(value);\r\n }\r\n const prefix = value.substring(0, 8);\r\n if (prefix === \"function\") {\r\n return new Function(`return ${value}`)();\r\n }\r\n if (prefix === \"_NuFrRa_\") {\r\n return new Function(`return ${value.slice(8)}`)();\r\n }\r\n if (prefix === \"_PxEgEr_\") {\r\n return new Function(`return ${value.slice(8)}`)();\r\n }\r\n return value;\r\n }\r\n\r\n static replacer(key: string, value: any): any {\r\n if (value instanceof Function || typeof value === \"function\") {\r\n const fnBody = value.toString();\r\n if (fnBody.length < 8 || fnBody.substring(0, 8) !== \"function\") {\r\n // this is ES6 Arrow Function\r\n return \"_NuFrRa_\" + fnBody;\r\n }\r\n return fnBody;\r\n }\r\n if (value instanceof RegExp) {\r\n return \"_PxEgEr_\" + value;\r\n }\r\n return value;\r\n }\r\n}\r\n","import {ScriptType, IScriptPromises, IStylePromises} from \"../common-types\";\r\n\r\nexport class LoaderUtils {\r\n\r\n static scriptPromises: IScriptPromises = {};\r\n static stylePromises: IStylePromises = {};\r\n\r\n static loadScript(src: string, async: boolean = false, type: ScriptType = \"text/javascript\", parent?: Node): Promise<HTMLScriptElement> {\r\n this.scriptPromises[src] = this.scriptPromises[src] || new Promise<any>((resolve, reject) => {\r\n // Load script\r\n const script: any = document.createElement(\"script\");\r\n script.type = type;\r\n script.src = src;\r\n script.async = async;\r\n if (script.readyState) {\r\n // Internet explorer\r\n script.onreadystatechange = () => {\r\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n script.onreadystatechange = null;\r\n resolve(script);\r\n }\r\n };\r\n } else {\r\n // Other browsers\r\n script.onload = () => resolve(script);\r\n }\r\n script.onerror = (error: any) => reject(error);\r\n (parent || document.body).appendChild(script);\r\n });\r\n return this.scriptPromises[src];\r\n }\r\n\r\n static loadStyle(src: string, parent?: Node): Promise<HTMLLinkElement> {\r\n this.stylePromises[src] = this.stylePromises[src] || new Promise<any>((resolve, reject) => {\r\n // Load script\r\n const link: any = document.createElement(\"link\");\r\n link.rel = \"stylesheet\";\r\n link.type = \"text/css\";\r\n link.href = src;\r\n\r\n if (link.readyState) {\r\n // Internet explorer\r\n link.onreadystatechange = () => {\r\n if (link.readyState === \"loaded\" || link.readyState === \"complete\") {\r\n link.onreadystatechange = null;\r\n resolve(link);\r\n }\r\n };\r\n } else {\r\n // Other browsers\r\n link.onload = () => resolve(link);\r\n }\r\n link.onerror = (error: any) => reject(error);\r\n (parent || document.body).appendChild(link);\r\n });\r\n return this.stylePromises[src];\r\n }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class MathUtils {\r\n\r\n static readonly EPSILON: number = 1e-9;\r\n\r\n static equal(a: number, b: number, epsilon: number = null): boolean {\r\n epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : MathUtils.EPSILON;\r\n return Math.abs(a - b) < epsilon;\r\n }\r\n\r\n static clamp(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min)\r\n }\r\n\r\n static round(value: number, precision: number = 2, divider: number = 1): number {\r\n precision = Math.pow(10, precision);\r\n return Math.round(value * precision / divider) / precision;\r\n }\r\n\r\n static approxIndex(x: number, values: number[], epsilon: number = null): number {\r\n if (!Array.isArray(values) || values.length == 0) {\r\n return -1;\r\n }\r\n let s = 0;\r\n let e = values.length - 1;\r\n while (s <= e) {\r\n const i = Math.floor((s + e) / 2);\r\n const v = values[i];\r\n if (MathUtils.equal(v, x, epsilon)) {\r\n return i;\r\n }\r\n if (v < x) {\r\n s = i + 1;\r\n } else {\r\n e = i - 1;\r\n }\r\n }\r\n const m = Math.max(e, 0);\r\n const a = values[s];\r\n const b = values[m];\r\n return Math.abs(a - x) < Math.abs(b - x) ? s : m;\r\n }\r\n\r\n static approximate(x: number, values: number[], epsilon: number = null): number {\r\n const index = MathUtils.approxIndex(x, values, epsilon);\r\n return values[index] ?? null;\r\n }\r\n}\r\n","import {Type, ValueProvider, ɵComponentDef as ComponentDef} from \"@angular/core\";\r\nimport {CssSelector, CssSelectorList, DYNAMIC_ENTRY_COMPONENTS} from \"../common-types\";\r\n\r\nexport function checkTransitions(el: HTMLElement, cb: () => any): void {\r\n let hasTransitions = false;\r\n let called = false;\r\n const end = () => {\r\n if (called) return;\r\n called = true;\r\n cb();\r\n };\r\n el.onanimationstart = () => hasTransitions = true;\r\n el.ontransitionstart = () => hasTransitions = true;\r\n el.onanimationend = end;\r\n el.ontransitionend = end;\r\n setTimeout(() => {\r\n if (hasTransitions) return;\r\n end();\r\n }, 100);\r\n}\r\n\r\nexport function getComponentDef<T>(type: Type<T>): ComponentDef<T> {\r\n const def = type[\"ɵcmp\"] as ComponentDef<T>;\r\n if (!def) {\r\n throw new Error(`No Angular definition found for ${type.name}`);\r\n }\r\n return def;\r\n}\r\n\r\n// Helper function to match a search selector to a stored selector\r\nexport function parseSelector(selector: string | CssSelector): CssSelector {\r\n if (Array.isArray(selector)) {\r\n if (selector.length !== 1 && selector.length !== 3) {\r\n throw new Error(\"CSSSelector should contain 1 or 3 parts!\");\r\n }\r\n if (selector.some(t => typeof t !== \"string\")) {\r\n throw new Error(\"CSSSelector parts can only be strings\");\r\n }\r\n return selector;\r\n }\r\n if (selector.indexOf(\"#\") > 0) {\r\n const parts = selector.split(\"#\");\r\n selector = `${parts[0]}[id=${parts[1]}]`;\r\n }\r\n if (selector.indexOf(\".\") > 0) {\r\n const parts = selector.split(\".\");\r\n selector = `${parts[0]}[class=${parts[1]}]`;\r\n }\r\n const start = selector.indexOf(\"[\");\r\n const end = Math.max(selector.indexOf(\"]\"), Math.min(selector.length, start + 1));\r\n if (start >= 0) {\r\n const parts = selector.substring(start + 1, end).split(\"=\");\r\n return [\r\n selector.substring(0, start),\r\n parts[0],\r\n parts[1] || \"\"\r\n ]\r\n }\r\n return [selector];\r\n}\r\n\r\nexport function selectorMatchesList(list: CssSelectorList, selector: CssSelector) {\r\n for (const item of list) {\r\n if (selector.length === item.length && selector.every((s, i) => s === item[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function provideEntryComponents(components: Type<any>[], moduleId?: string): ValueProvider {\r\n return {\r\n provide: DYNAMIC_ENTRY_COMPONENTS,\r\n useValue: {\r\n components,\r\n moduleId\r\n },\r\n multi: true\r\n };\r\n}\r\n","import {ITimer} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ntype TimerFunc = (timer: ITimer) => void;\r\n\r\nexport class TimerUtils {\r\n\r\n static createTimeout(func?: Function, time?: number): ITimer {\r\n // @dynamic\r\n const run = (timer: ITimer) => {\r\n timer.clear();\r\n timer.id = setTimeout(() => {\r\n timer.id = null;\r\n timer.func();\r\n }, timer.time);\r\n };\r\n // @dynamic\r\n const clear = (timer: ITimer) => {\r\n if (!timer.id) return;\r\n clearTimeout(timer.id);\r\n timer.id = null;\r\n };\r\n return TimerUtils.createTimer(run, clear, func, time);\r\n }\r\n\r\n static createInterval(func?: Function, time?: number): ITimer {\r\n // @dynamic\r\n const run = (timer: ITimer) => {\r\n timer.clear();\r\n timer.id = setInterval(timer.func, timer.time);\r\n };\r\n // @dynamic\r\n const clear = (timer: ITimer) => {\r\n if (!timer.id) return;\r\n clearInterval(timer.id);\r\n timer.id = null;\r\n };\r\n return TimerUtils.createTimer(run, clear, func, time);\r\n }\r\n\r\n private static createTimer(run: TimerFunc, clear: TimerFunc, func: Function, time: number): ITimer {\r\n const timer: ITimer = {};\r\n const setParams = (func: Function, time: number) => {\r\n timer.func = !ObjectUtils.isFunction(func) ? (() => {}) : func;\r\n timer.time = !ObjectUtils.isNumber(time) ? 100 : time;\r\n };\r\n timer.run = () => run(timer);\r\n timer.clear = () => clear(timer);\r\n timer.set = (func: Function, time: number) => {\r\n setParams(func, time);\r\n timer.run();\r\n };\r\n setParams(func, time);\r\n return timer;\r\n }\r\n}\r\n","import {from, Observable, Subject, Subscription} from \"rxjs\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\n\r\nimport {ISearchObservable} from \"../common-types\";\r\nimport {TimerUtils} from \"./timer.utils\";\r\n\r\nexport interface ISubscriberInfo {\r\n subjects: Observable<any>[];\r\n cb: (ev?: Observable<any>, ...args: any[]) => any;\r\n timeout?: number;\r\n}\r\n\r\nexport class ObservableUtils {\r\n\r\n static toSearch(search: ISearchObservable): Observable<any> {\r\n return mergeMap(\r\n // @dynamic\r\n (token: string) => search.getSearchResults(token)\r\n )(\r\n Observable.create(\r\n // @dynamic\r\n (observer: any) => {\r\n observer.next(search.search);\r\n }\r\n )\r\n );\r\n }\r\n\r\n static multiSubscription(...subscriptions: Subscription[]): Subscription {\r\n // @dynamic\r\n const lambda = () => {\r\n subscriptions.forEach(s => {\r\n s?.unsubscribe();\r\n });\r\n };\r\n return new Subscription(lambda);\r\n }\r\n\r\n static subscribe(...subscribers: ISubscriberInfo[]): Subscription {\r\n const subscriptions: Subscription[] = [];\r\n subscribers.forEach(info => {\r\n let alreadyCalled = false;\r\n const timer = TimerUtils.createTimeout();\r\n info.subjects.forEach(subject => {\r\n const ss = subject.subscribe((value) => {\r\n alreadyCalled = true;\r\n timer.set(() => {\r\n info.cb(subject, value);\r\n }, info.timeout ?? 0);\r\n });\r\n subscriptions.push(ss);\r\n });\r\n if (alreadyCalled) return;\r\n info.cb();\r\n });\r\n return ObservableUtils.multiSubscription(...subscriptions);\r\n }\r\n\r\n static fromFunction(callbackFunc: () => any): Observable<any> {\r\n let subject: any;\r\n return new Observable<any>((subscriber) => {\r\n if (!subject) {\r\n subject = new Subject();\r\n try {\r\n subject = from(callbackFunc());\r\n } catch (err) {\r\n subject.error(err);\r\n }\r\n }\r\n return subject.subscribe(subscriber);\r\n });\r\n }\r\n}\r\n","export interface CancelablePromise<T> extends Promise<T> {\r\n cancel: () => void;\r\n}\r\n\r\nexport function cancelablePromise<T>(source: Promise<T>): CancelablePromise<T> {\r\n let isCanceled = false;\r\n const cancelable = new Promise<T>((resolve, reject) => {\r\n source.then(res => {\r\n if (isCanceled) return;\r\n resolve(res);\r\n }).catch(reject);\r\n }) as CancelablePromise<T>;\r\n cancelable.cancel = () => {\r\n isCanceled = true;\r\n };\r\n return cancelable;\r\n}\r\n\r\nexport function impatientPromise<T>(factory: () => Promise<T>): () => Promise<T> {\r\n let lastPromise: CancelablePromise<T> = null;\r\n return () => {\r\n lastPromise?.cancel();\r\n lastPromise = cancelablePromise(factory());\r\n return lastPromise\r\n };\r\n}\r\n","export class StringUtils {\r\n\r\n static concat(separator: string, ...strings: string[]): string {\r\n return strings.filter(\r\n // @dynamic\r\n str => !!str\r\n ).join(separator);\r\n }\r\n\r\n static startsWith(str: string, ...starts: string[]): boolean {\r\n for (let i = 0; i < starts.length; i++) {\r\n if (str.startsWith(starts[i])) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static has(str: string, ...parts: string[]): boolean {\r\n for (let i = 0; i < parts.length; i++) {\r\n if (str.indexOf(parts[i]) >= 0) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static lcFirst(str: string): string {\r\n return str ? str.charAt(0).toLowerCase() + str.substring(1) : \"\";\r\n }\r\n\r\n static ucFirst(str: string): string {\r\n return str ? str.charAt(0).toUpperCase() + str.substring(1) : \"\";\r\n }\r\n\r\n static isObjectId(id: string): boolean {\r\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\r\n }\r\n\r\n static parseDomain(baseUrl: string): string {\r\n try {\r\n const url = new URL(baseUrl);\r\n const port = url.port && url.port !== \"443\" && url.port !== \"80\" ? `:${url.port}` : ``;\r\n return `${url.protocol}//${url.hostname}${port}/`;\r\n } catch {\r\n return \"/\";\r\n }\r\n }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class SetUtils {\r\n static equals(set: Set<any>, obj: any): boolean {\r\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))\r\n return false;\r\n if (set.size != obj.size)\r\n return false;\r\n for (const item in set) {\r\n if (!obj.has(item)) return false;\r\n }\r\n return true;\r\n }\r\n\r\n static addArray(set: Set<any>, items: any[]): void {\r\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items)) return;\r\n items.forEach(i => set.add(i));\r\n }\r\n}\r\n","import {BehaviorSubject, Subject, Subscription} from \"rxjs\";\r\nimport type {ManagerOptions, SocketOptions, Socket} from \"socket.io-client\";\r\n\r\nexport type SocketFactory = (uri?: string, opts?: Partial<ManagerOptions & SocketOptions>) => Socket;\r\n\r\nexport type SocketDataValue = string | number | boolean | Date | Array<SocketDataValue> | Array<SocketDataObj>;\r\n\r\nexport interface SocketDataObj {\r\n [key: string]: SocketDataValue | SocketDataObj;\r\n}\r\n\r\nexport type SocketData = SocketDataValue | SocketDataObj;\r\n\r\nexport type ExtraHeaders = Record<string, string>;\r\n\r\nexport interface ResponseHandler {\r\n resolve: (data: SocketData) => void,\r\n reject: (error: SocketData) => void\r\n}\r\n\r\nfunction uuid(): string {\r\n if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\r\n const buf = new Uint16Array(8);\r\n window.crypto.getRandomValues(buf);\r\n return Array.from(buf).map(pad4).join(\"\");\r\n }\r\n return new Array(8).fill(0).map(random4).join(\"\");\r\n}\r\n\r\nfunction pad4(num: number, index: number): string {\r\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n let ret = num.toString(16);\r\n while (ret.length < 4) {\r\n ret = \"0\" + ret;\r\n }\r\n return prefix + ret;\r\n}\r\n\r\nfunction random4(_: number, index: number): string {\r\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n return prefix + Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n}\r\n\r\nexport class SocketClient {\r\n\r\n readonly status: BehaviorSubject<boolean>;\r\n\r\n protected readonly channels: Map<string, Subject<SocketData>>;\r\n protected readonly responseHandlers: Map<string, ResponseHandler>;\r\n protected sid: string;\r\n protected open: boolean;\r\n\r\n protected factory: Promise<SocketFactory>;\r\n protected ws: Promise<Socket>;\r\n\r\n get id(): string {\r\n return this.open ? this.sid : null;\r\n }\r\n\r\n constructor(readonly url: string,\r\n protected ioLoader: () => Promise<SocketFactory>) {\r\n this.status = new BehaviorSubject(false);\r\n this.channels = new Map([\r\n [\"connect\", new Subject<SocketData>()],\r\n [\"disconnect\", new Subject<SocketData>()],\r\n [\"error\", new Subject<SocketData>()]\r\n ]);\r\n this.responseHandlers = new Map();\r\n this.sid = null;\r\n this.open = false;\r\n }\r\n\r\n connect(extraHeaders: ExtraHeaders = {}): void {\r\n if (this.ws) return;\r\n const url = new URL(this.url);\r\n this.factory = this.factory || this.ioLoader();\r\n this.ws = new Promise((resolve, reject) => {\r\n this.factory.then(io => {\r\n const protocol = url.protocol.replace(\"http\", \"ws\");\r\n const ws = io(`${protocol}//${url.host}`, {\r\n extraHeaders,\r\n timeout: 5000,\r\n path: url.pathname\r\n });\r\n console.log(`socket connecting to: ${protocol}//${url.host}`, url.pathname);\r\n ws.on(`connect`, () => {\r\n console.log(`socket connected`);\r\n this.open = true;\r\n this.sid = ws.id;\r\n this.status.next(true);\r\n });\r\n ws.on(`disconnect`, () => {\r\n this.open = false;\r\n this.status.next(false);\r\n });\r\n Object.keys(this.channels).map(event => {\r\n ws.on(event, (data: SocketData) => {\r\n this.handleResponse(event, data);\r\n this.channels[event].next(data);\r\n });\r\n });\r\n resolve(ws);\r\n }, reject);\r\n });\r\n }\r\n\r\n disconnect(): void {\r\n if (!this.ws) return;\r\n this.ws.then(ws => ws.disconnect());\r\n this.ws = null;\r\n }\r\n\r\n subscribe<T = SocketData>(event: string, cb: (value: T) => void): Subscription {\r\n if (!this.channels[event]) {\r\n this.channels[event] = new Subject();\r\n this.ws?.then(ws => {\r\n ws.on(event, (data: SocketData) => {\r\n this.handleResponse(event, data);\r\n this.channels[event].next(data);\r\n });\r\n });\r\n }\r\n return this.channels[event].subscribe(cb);\r\n }\r\n\r\n emit(event: string, content: SocketData): void {\r\n this.ws.then(ws => ws.emit(event, content));\r\n }\r\n\r\n async request(event: string, content: SocketDataObj): Promise<any> {\r\n const id = uuid();\r\n const ws = await this.ws;\r\n const promise = new Promise((resolve, reject) => {\r\n this.responseHandlers.set(id, {resolve, reject});\r\n setTimeout(() => {\r\n this.responseHandlers.delete(id);\r\n reject(`Timeout for ${event} request ${JSON.stringify(content)}`);\r\n }, 5000);\r\n });\r\n ws.emit(event, {...content, immediate_response_id: id});\r\n return promise;\r\n }\r\n\r\n protected handleResponse(event: string, content: SocketData): void {\r\n if (typeof content !== \"object\" || Array.isArray(content) || content instanceof Date) return;\r\n const id = content.immediate_response_id as string;\r\n const handler = this.responseHandlers.get(id);\r\n if (!handler) return;\r\n this.responseHandlers.delete(id);\r\n if (event === \"error\") {\r\n handler.reject(content);\r\n return;\r\n }\r\n handler.resolve(content);\r\n }\r\n}\r\n","export class UniqueUtils {\r\n\r\n static uuid(): string {\r\n if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\r\n const buf = new Uint16Array(8);\r\n window.crypto.getRandomValues(buf);\r\n return (this.pad4(buf[0]) + this.pad4(buf[1]) + \"-\" + this.pad4(buf[2]) + \"-\" + this.pad4(buf[3]) + \"-\" + this.pad4(buf[4]) + \"-\" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));\r\n }\r\n return this.random4() + this.random4() + \"-\" + this.random4() + \"-\" + this.random4() + \"-\" +\r\n this.random4() + \"-\" + this.random4() + this.random4() + this.random4();\r\n }\r\n\r\n private static pad4(num: number): string {\r\n let ret = num.toString(16);\r\n while (ret.length < 4) {\r\n ret = \"0\" + ret;\r\n }\r\n return ret;\r\n }\r\n\r\n private static random4(): string {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n}\r\n","export class Vector {\r\n\r\n get negative(): Vector {\r\n return new Vector(-this.x, -this.y, -this.z);\r\n }\r\n\r\n get length(): number {\r\n return Math.sqrt(this.dot(this));\r\n }\r\n\r\n get unit(): Vector {\r\n return this.divide(this.length);\r\n }\r\n\r\n get min(): number {\r\n return Math.min(Math.min(this.x, this.y), this.z);\r\n }\r\n\r\n get max(): number {\r\n return Math.max(Math.max(this.x, this.y), this.z);\r\n }\r\n\r\n get angles(): any {\r\n return {\r\n theta: Math.atan2(this.z, this.x),\r\n phi: Math.asin(this.y / this.length)\r\n };\r\n }\r\n\r\n constructor(public x: number, public y: number, public z: number) {\r\n }\r\n\r\n add(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x + v.x, this.y + v.y, this.z + v.z);\r\n else return new Vector(this.x + v, this.y + v, this.z + v);\r\n }\r\n\r\n subtract(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x - v.x, this.y - v.y, this.z - v.z);\r\n else return new Vector(this.x - v, this.y - v, this.z - v);\r\n }\r\n\r\n multiply(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x * v.x, this.y * v.y, this.z * v.z);\r\n else return new Vector(this.x * v, this.y * v, this.z * v);\r\n }\r\n\r\n divide(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x / v.x, this.y / v.y, this.z / v.z);\r\n else return new Vector(this.x / v, this.y / v, this.z / v);\r\n }\r\n\r\n equals(v: Vector): boolean {\r\n return this.x == v.x && this.y == v.y && this.z == v.z;\r\n }\r\n\r\n dot(v: Vector): number {\r\n return this.x * v.x + this.y * v.y + this.z * v.z;\r\n }\r\n\r\n cross(v: Vector): Vector {\r\n return new Vector(\r\n this.y * v.z - this.z * v.y,\r\n this.z * v.x - this.x * v.z,\r\n this.x * v.y - this.y * v.x\r\n );\r\n }\r\n\r\n angleTo(v: Vector): number {\r\n return Math.acos(this.dot(v) / (this.length * v.length));\r\n }\r\n\r\n toArray(n?: number): number[] {\r\n return [this.x, this.y, this.z].slice(0, n || 3);\r\n }\r\n\r\n clone(): Vector {\r\n return new Vector(this.x, this.y, this.z);\r\n }\r\n\r\n init(x: number, y: number, z: number): Vector {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n return this;\r\n }\r\n}\r\n","import {Injector, Type} from \"@angular/core\";\r\nimport {OPTIONS_TOKEN, TypedFactoryProvider} from \"../common-types\";\r\n\r\nexport function provideWithOptions<O extends Object, T = any>(type: Type<T>, options: O): TypedFactoryProvider<T> {\r\n return {\r\n useFactory: function (injector: Injector) {\r\n const subInjector = Injector.create({\r\n providers: [\r\n {\r\n provide: OPTIONS_TOKEN,\r\n useValue: options\r\n },\r\n {\r\n provide: type,\r\n useClass: type\r\n }\r\n ],\r\n parent: injector\r\n });\r\n return subInjector.get(type);\r\n },\r\n deps: [Injector]\r\n }\r\n}\r\n","import {IWasi, IWasmExports} from \"../common-types\";\r\nimport {Type} from \"@angular/core\";\r\nimport {JSONfn} from \"./jsonfn\";\r\n\r\ninterface IPromiseExecutor {\r\n resolve: (value?: any) => void;\r\n reject: (reason?: any) => void;\r\n}\r\n\r\nexport function workerFunction(JSONfn: any, logTimes: boolean): void {\r\n\r\n let wasmResolve: (instance: IWasmExports) => void = null;\r\n const wasmInstance: Promise<IWasmExports> = new Promise<IWasmExports>(resolve => {\r\n wasmResolve = resolve;\r\n });\r\n\r\n self.onmessage = function (e) {\r\n const data = e.data;\r\n const {type, payload} = data;\r\n switch (type) {\r\n case \"wasm\":\r\n const {url, wasi} = payload;\r\n fetch(url).then(response => response.arrayBuffer()).then(bytes => {\r\n const wasiImpl = JSONfn.parse(wasi);\r\n return new wasiImpl().instantiate(bytes);\r\n }).then(instance => {\r\n wasmResolve(instance);\r\n const methods = Object.getOwnPropertyNames(instance).filter(key => typeof instance[key] === \"function\");\r\n self.postMessage({type: \"methods\", payload: methods});\r\n });\r\n break;\r\n case \"call\":\r\n wasmInstance.then(instance => {\r\n const {name, id, args} = payload;\r\n if (logTimes) {\r\n console.time(id);\r\n console.timeLog(id, `Calling ${name} ...`);\r\n }\r\n const func = (instance[name] as Function);\r\n const result = func(...args);\r\n if (logTimes) {\r\n console.timeLog(id, `Called ${name}`);\r\n console.timeEnd(id);\r\n }\r\n self.postMessage({type: \"result\", payload: {id, result}});\r\n });\r\n break;\r\n }\r\n };\r\n}\r\n\r\nexport class WasmWorkerProxy {\r\n\r\n protected methods: Promise<string[]>;\r\n protected onMethods: (methods: string[]) => void;\r\n protected worker: Worker;\r\n protected promises: Map<string, IPromiseExecutor>;\r\n\r\n constructor(wasmPath: string, wasi: Type<IWasi>, logTimes: boolean = false) {\r\n this.methods = new Promise<string[]>(resolve => {\r\n this.onMethods = resolve;\r\n });\r\n const lt = logTimes ? \"true\" : \"false\";\r\n const blob = new Blob(\r\n [`${JSONfn.toString()} (${workerFunction.toString()})(JSONfn, ${lt})`],\r\n {type: 'application/javascript'}\r\n );\r\n this.worker = new Worker(URL.createObjectURL(blob));\r\n this.worker.postMessage({\r\n type: \"wasm\",\r\n payload: {url: wasmPath, wasi: JSONfn.stringify(wasi), logTimes}\r\n });\r\n this.worker.onmessage = this.onMessage.bind(this);\r\n this.promises = new Map<string, IPromiseExecutor>();\r\n return new Proxy(this, {\r\n get: (target, prop, receiver) => {\r\n const res = Reflect.get(target, prop, receiver);\r\n if (res) {\r\n return res;\r\n }\r\n return (...args: any[]) => {\r\n return this.call(prop.toString(), args);\r\n };\r\n }\r\n });\r\n }\r\n\r\n onMessage(e: MessageEvent): void {\r\n const data = e.data;\r\n const {type, payload} = data;\r\n switch (type) {\r\n case \"methods\":\r\n this.onMethods(payload);\r\n break;\r\n case \"result\":\r\n const {id, result} = payload;\r\n const promise = this.promises.get(id);\r\n if (promise) {\r\n promise.resolve(result);\r\n this.promises.delete(id);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n async call(method: string, args: any[]): Promise<any> {\r\n const methods = await this.methods;\r\n if (!methods.includes(method)) {\r\n throw new Error(`Method ${method} not found`);\r\n }\r\n return new Promise<any>((resolve, reject) => {\r\n const id = Math.random().toString(36).substring(2, 9);\r\n this.worker.postMessage({\r\n type: \"call\",\r\n payload: {name: method, id, args}\r\n });\r\n this.promises.set(id, {resolve, reject});\r\n });\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {HttpClient, HttpHandler, HttpHeaders, HttpParams, HttpUrlEncodingCodec} from \"@angular/common/http\";\r\nimport {IHttpHeaders, IHttpParams} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Injectable()\r\nexport class BaseHttpClient extends HttpClient {\r\n\r\n requestHeaders: IHttpHeaders;\r\n requestParams: IHttpParams;\r\n renewTokenFunc: () => void;\r\n\r\n protected extraRequestParams: IHttpParams;\r\n\r\n constructor(handler: HttpHandler) {\r\n super(handler);\r\n this.requestHeaders = {};\r\n this.requestParams = {};\r\n this.extraRequestParams = {\r\n language: \"en\"\r\n };\r\n }\r\n\r\n makeHeaders(headers?: IHttpHeaders, withCredentials: boolean = true): HttpHeaders {\r\n headers = Object.assign({}, this.requestHeaders, headers);\r\n const authHeader = headers[\"Authorization\"] as string || \"\";\r\n if (!withCredentials && !authHeader.startsWith(\"Bearer\")) {\r\n delete headers[\"Authorization\"];\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n makeParams(params?: IHttpParams): HttpParams {\r\n params = Object.assign({}, this.extraRequestParams, this.requestParams, params);\r\n return new HttpParams({\r\n encoder: new HttpUrlEncodingCodec(),\r\n fromObject: Object.keys(params || {}).reduce((result, key) => {\r\n const value = params[key];\r\n result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? \"\" : value.toString());\r\n return result;\r\n }, {})\r\n });\r\n }\r\n\r\n setExtraRequestParam(name: string, value?: any): void {\r\n if (typeof value == \"undefined\") {\r\n delete this.extraRequestParams[name];\r\n return;\r\n }\r\n this.extraRequestParams[name] = value;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {StorageMode} from \"../common-types\";\r\nimport {UniversalService} from \"./universal.service\";\r\n\r\n/**\r\n * Use this service instead of Storage to avoid Angular Universal breaks on server environment\r\n */\r\n@Injectable()\r\nexport class StorageService {\r\n\r\n constructor(readonly universal: UniversalService) {\r\n }\r\n\r\n get(key: string, defaultValue?: any, mode: StorageMode = StorageMode.Local): any {\r\n if (!this.universal.isBrowser) return defaultValue;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n const item = storage.getItem(key);\r\n if (!item) return defaultValue;\r\n try {\r\n return JSON.parse(item);\r\n } catch (e) {\r\n return item;\r\n }\r\n }\r\n\r\n set(key: string, value: any, mode: StorageMode = StorageMode.Local): void {\r\n if (!this.universal.isBrowser) return;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n if (typeof value == \"string\") {\r\n storage.setItem(key, value);\r\n return;\r\n }\r\n storage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n remove(key: string, mode: StorageMode = StorageMode.Local): void {\r\n if (!this.universal.isBrowser) return;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n storage.removeItem(key);\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, Optional} from \"@angular/core\";\r\nimport {HttpErrorResponse, HttpEventType, HttpHeaders, HttpParams, HttpResponse} from \"@angular/common/http\";\r\nimport {Request} from \"express\";\r\n\r\nimport {\r\n CONFIG_SERVICE,\r\n EXPRESS_REQUEST,\r\n HttpPromise,\r\n IConfigService,\r\n IHttpHeaders,\r\n IHttpParams,\r\n IHttpService,\r\n IIssueContext,\r\n ILanguageService,\r\n IPaginationData,\r\n IRequestOptions,\r\n IToasterService,\r\n LANGUAGE_SERVICE,\r\n ProgressListener,\r\n TOASTER_SERVICE\r\n} from \"../common-types\";\r\n\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {MathUtils} from \"../utils/math.utils\";\r\n\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {timeout} from \"rxjs/operators\";\r\nimport {TimeoutError} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class BaseHttpService implements IHttpService {\r\n\r\n protected static failedRequests: Array<() => void> = [];\r\n\r\n get name(): string {\r\n return \"base\";\r\n }\r\n\r\n protected get withCredentials(): boolean {\r\n return true;\r\n }\r\n\r\n requestHeaders: IHttpHeaders;\r\n requestParams: IHttpParams;\r\n cache: any;\r\n\r\n protected static retryFailedRequests(): void {\r\n BaseHttpService.failedRequests.forEach(r => r());\r\n BaseHttpService.failedRequests = [];\r\n }\r\n\r\n get universal(): UniversalService {\r\n return this.storage.universal;\r\n }\r\n\r\n constructor(@Inject(Injector) readonly injector: Injector,\r\n @Inject(BaseHttpClient) readonly client: BaseHttpClient,\r\n @Inject(StorageService) readonly storage: StorageService,\r\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\r\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService,\r\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n @Optional() @Inject(EXPRESS_REQUEST) readonly request: Request = null\r\n ) {\r\n this.requestHeaders = {};\r\n this.requestParams = {};\r\n this.cache = {};\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n url(url: string): string {\r\n return url;\r\n }\r\n\r\n createUrl(url: string, params: IHttpParams): string {\r\n const httpParams = this.client.makeParams(params);\r\n const query = httpParams.keys().map(key => {\r\n return `${key}=${httpParams.get(key)}`;\r\n }).join(\"&\");\r\n return `${this.url(url)}?${query}`;\r\n }\r\n\r\n makeListParams(page: number, itemsPerPage: number, orderBy: string = null, orderDescending: boolean = null, filter: string = null): IHttpParams {\r\n const params: IHttpParams = {\r\n page: (page - 1),\r\n limit: itemsPerPage\r\n };\r\n if (!ObjectUtils.isNullOrUndefined(orderBy) && !ObjectUtils.isNullOrUndefined(orderDescending)) {\r\n params.sort = `${orderDescending ? \"-\" : \"\"}${orderBy}`;\r\n }\r\n if (!ObjectUtils.isNullOrUndefined(filter)) {\r\n params.filter = filter;\r\n }\r\n return params;\r\n }\r\n\r\n protected getPromise(url: string, options?: IRequestOptions, body?: any): HttpPromise {\r\n options = this.makeOptions(options, \"GET\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected deletePromise(url: string, options?: IRequestOptions, body?: any): HttpPromise {\r\n options = this.makeOptions(options, \"DELETE\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected postPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"POST\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected putPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"PUT\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected patchPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"PATCH\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected uploadPromise(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): HttpPromise {\r\n const headers: any = {};\r\n if (body instanceof Blob) {\r\n headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n options = this.makeOptions(Object.assign({\r\n headers: headers,\r\n reportProgress: true\r\n }, options), \"POST\", body);\r\n return this.toPromise(url, options, listener);\r\n }\r\n\r\n protected listPromise(url: string, params: IHttpParams): Promise<IPaginationData> {\r\n return new Promise<IPaginationData>(resolve => {\r\n this.getPromise(url, {params: params}).then(data => {\r\n if (ObjectUtils.isArray(data)) {\r\n resolve({\r\n total: data.length,\r\n items: data,\r\n meta: {}\r\n });\r\n return;\r\n }\r\n resolve({\r\n total: data.meta?.total || data?.total || data.items?.length || 0,\r\n items: data.items || [],\r\n meta: data.meta || {}\r\n });\r\n }, response => {\r\n if (response.status == 0 || response.status == 301) {\r\n resolve({\r\n total: 1,\r\n items: [{\r\n id: null,\r\n label: \"Not implemented.\"\r\n }],\r\n meta: {}\r\n });\r\n return true;\r\n }\r\n resolve({\r\n total: 0,\r\n items: [],\r\n meta: {}\r\n });\r\n return false;\r\n });\r\n });\r\n }\r\n\r\n protected handleUnauthorizedError(absoluteUrl: string, options: IRequestOptions, reject: () => void): void {\r\n reject();\r\n if (BaseHttpService.failedRequests.length > 1) {\r\n return;\r\n }\r\n if (this.universal.isServer) return;\r\n console.log(\"User auth error\", absoluteUrl, options);\r\n }\r\n\r\n protected toastWarning(message: string, issueContext: IIssueContext, reason: any, options: IRequestOptions): void {\r\n this.toaster.warning(message, {issueContext, reason, options});\r\n }\r\n\r\n protected toastError(message: string, issueContext: IIssueContext, reason: any, options: IRequestOptions): void {\r\n this.toaster.warning(message, {issueContext, reason, options});\r\n }\r\n\r\n protected toPromise(url: string, options: IRequestOptions, listener?: ProgressListener): HttpPromise {\r\n const issueContext: IIssueContext = {url: \"\"};\r\n\r\n return new HttpPromise(response => {\r\n if (!response) {\r\n if (this.universal.isServer) return;\r\n console.log(\"You may not need a reject Handler for this request!\", this.name, url, options);\r\n return;\r\n }\r\n const reason = response.error || {};\r\n if (response.status == 0 || response.status == 301) {\r\n this.toastWarning(`${url} endpoint is not implemented! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n return;\r\n }\r\n const regex = /((E11000 duplicate key error collection: (.)+\\.)|(_1 dup key:(.)+))/g;\r\n if (reason.message && regex.test(reason.message)) {\r\n this.toastError(\"message.duplicate-key.error.\" + reason.message.replace(regex, \"\").replace(\" index: \", \"-\"), issueContext, reason, options);\r\n return;\r\n }\r\n this.toastWarning(`${url} endpoint error is not handled properly! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n }, (resolve, reject) => {\r\n this.absoluteUrl(url, options).then(absoluteUrl => {\r\n issueContext.url = absoluteUrl;\r\n const request = this.client.request(options.method, absoluteUrl, options);\r\n const finalRequest = ObjectUtils.isNumber(options.timeout) && options.timeout > 0\r\n ? request.pipe(timeout(options.timeout)) : request;\r\n finalRequest.subscribe((event: any) => {\r\n if (options.reportProgress && event?.type === HttpEventType.UploadProgress) {\r\n const progress = {\r\n percentage: MathUtils.round(event.loaded / event.total, 2, 0.01),\r\n loaded: event.loaded,\r\n total: event.total\r\n };\r\n if (listener) {\r\n listener(progress);\r\n }\r\n return;\r\n }\r\n resolve(this.parseResponse(event, url, options));\r\n const headers = options.headers as HttpHeaders;\r\n const authKey = \"Authorization\";\r\n // If we use token auth\r\n if (this.client.renewTokenFunc && headers.has(authKey)) {\r\n const currentTime = new Date().getTime();\r\n const userTokenTime = this.getUserTokenTime() || currentTime;\r\n // And the last request was a long-long time ago\r\n if (currentTime - 600000 > userTokenTime) {\r\n this.client.renewTokenFunc();\r\n }\r\n }\r\n }, (response: HttpErrorResponse | TimeoutError) => {\r\n if (response instanceof TimeoutError || response.status == 0 || response.status == 301) {\r\n reject(response);\r\n return;\r\n }\r\n const headers = options.headers as HttpHeaders;\r\n const authKey = \"Authorization\";\r\n // If an authorization header exists, and we still have an Unauthorized response prompt the user to log in again\r\n if (headers.has(authKey) && response.status == 401) {\r\n const pushed = this.pushFailedRequest(url, options, () => {\r\n options.headers = this.makeHeaders(options.originalHeaders);\r\n this.toPromise(url, options, listener).then(resolve, reject);\r\n });\r\n if (pushed) {\r\n this.handleUnauthorizedError(absoluteUrl, options, () => reject(response));\r\n return;\r\n }\r\n }\r\n reject(response);\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected getUserTokenTime(): number {\r\n return this.storage.get(\"userTokenTime\");\r\n }\r\n\r\n protected pushFailedRequest(url: string, options: IRequestOptions, req: () => void): boolean {\r\n if (url.indexOf(\"token\") >= 0 || url === \"user\") return false;\r\n BaseHttpService.failedRequests.push(req);\r\n return true;\r\n }\r\n\r\n protected checkHeaders(headers: any): boolean {\r\n if (!headers || !headers.cookie || !headers.referer || !headers.host) {\r\n return false;\r\n }\r\n return headers.referer.indexOf(headers.host) >= 0;\r\n }\r\n\r\n protected makeOptions(options?: IRequestOptions, method: string = \"GET\", body?: any): IRequestOptions {\r\n // Set base options\r\n options = options ? {...options} : {};\r\n options.method = method;\r\n options.observe = options.observe || \"body\";\r\n options.originalHeaders = options.originalHeaders || (options.headers as IHttpHeaders) || {};\r\n options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;\r\n options.body = body || {};\r\n // Set cookies from server side request\r\n const headers = !this.request ? null : this.request.headers;\r\n if (this.checkHeaders(headers)) {\r\n options.headers[\"Cookie\"] = headers.cookie;\r\n }\r\n options.headers = this.makeHeaders(options);\r\n options.params = this.makeParams(options);\r\n return options;\r\n }\r\n\r\n protected makeHeaders(options: IRequestOptions): HttpHeaders {\r\n return this.client.makeHeaders(Object.assign({}, this.requestHeaders, options?.headers || {}));\r\n }\r\n\r\n protected makeParams(options: IRequestOptions): HttpParams {\r\n return this.client.makeParams(Object.assign({}, this.requestParams, options?.params || {}));\r\n }\r\n\r\n protected parseResponse(response: any, url: string, options: IRequestOptions): any {\r\n return response;\r\n }\r\n\r\n protected parseUrl(url: string): string {\r\n return this.url(url).replace(/(?:((?!:).\\/)\\/)/g, \"$1\");\r\n }\r\n\r\n protected async absoluteUrl(url: string, options: IRequestOptions): Promise<string> {\r\n return this.parseUrl(url);\r\n }\r\n\r\n protected expressRequestUrl(url: string): string {\r\n const req = this.request;\r\n if (!req || !url || url.startsWith(\"http\") || url.startsWith(\"//\")) return url;\r\n const separator = url.startsWith(\"/\") ? \"\" : \"/\";\r\n return `${req.protocol}://${req.get(\"host\")}${separator}${url}`;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {IRequestOptions} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\n\r\n@Injectable()\r\nexport class LocalHttpService extends BaseHttpService {\r\n\r\n private images: { [url: string]: Promise<HTMLImageElement> };\r\n\r\n get name(): string {\r\n return \"local-http\";\r\n }\r\n\r\n protected get withCredentials(): boolean {\r\n return false;\r\n }\r\n\r\n protected initService(): void {\r\n this.images = {};\r\n }\r\n\r\n url(url: string): string {\r\n if (!url) return url;\r\n const config = this.configs.config;\r\n const baseUrl = config.cdnUrl || config.baseUrl || \"\";\r\n return url.startsWith(\"data:\") || url.startsWith(\"http\") || url.startsWith(\"//\")\r\n ? url\r\n : `${baseUrl}${url}`;\r\n }\r\n\r\n get(url: string, options?: IRequestOptions): Promise<any> {\r\n this.cache[url] = this.cache[url] || this.getPromise(url, options);\r\n return this.cache[url];\r\n }\r\n\r\n getImage(url: string): Promise<HTMLImageElement> {\r\n if (this.universal.isServer)\r\n return Promise.resolve(null);\r\n if (!url)\r\n return Promise.resolve(new Image());\r\n\r\n this.images[url] = this.images[url] || new Promise<HTMLImageElement>((resolve, reject) => {\r\n const image = new Image();\r\n image.crossOrigin = \"Anonymous\";\r\n image.src = this.url(url);\r\n image.onload = () => resolve(image);\r\n image.onerror = reject;\r\n });\r\n\r\n return this.images[url];\r\n }\r\n}\r\n","import {Inject, Injectable, Type} from \"@angular/core\";\r\nimport {IWasi, IWasm, IWasmAsync, WASI_IMPLEMENTATION} from \"../common-types\";\r\nimport {WasmWorkerProxy} from \"../utils/wasm-worker-proxy\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {LocalHttpService} from \"./local-http.service\";\r\nimport {Wasi} from \"../utils/wasi\";\r\n\r\n/**\r\n * Use this service to load WebAssembly modules\r\n */\r\n@Injectable()\r\nexport class WasmService {\r\n\r\n protected wasi: Type<Wasi>\r\n protected modules: { [url: string]: Promise<any> };\r\n protected workerModules: { [url: string]: any };\r\n\r\n constructor(protected universal: UniversalService,\r\n protected http: LocalHttpService,\r\n @Inject(WASI_IMPLEMENTATION) wasi: IWasi) {\r\n this.wasi = wasi.constructor as any;\r\n }\r\n\r\n async getModule<T = IWasm>(name: string): Promise<T> {\r\n if (!this.universal.isBrowser || !name)\r\n return null;\r\n this.modules = this.modules || {};\r\n this.modules[name] = this.modules[name] || this.http.get(`wasm/${name}.wasm`, {\r\n responseType: \"arraybuffer\"\r\n }).then(async (bytes) => {\r\n const wasi = new this.wasi();\r\n return await wasi.instantiate(bytes);\r\n });\r\n return this.modules[name] as Promise<any>;\r\n }\r\n\r\n getWorkerModule<T = IWasmAsync>(name: string): T {\r\n if (!this.universal.isBrowser || !name)\r\n return null;\r\n this.workerModules = this.workerModules || {};\r\n this.workerModules[name] = new WasmWorkerProxy(\r\n this.http.url(`wasm/${name}.wasm`),\r\n this.wasi\r\n );\r\n return this.workerModules[name] ;\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, Type} from \"@angular/core\";\nimport {StateService} from \"./state.service\";\nimport {AUTH_SERVICE, IAclComponent, IAuthService, IRouteStateInfo} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {AuthGuard} from \"../utils/auth.guard\";\n\nconst emptyGuards: any[] = [];\n\n@Injectable()\nexport class AclService {\n\n protected components: IRouteStateInfo[];\n\n constructor(readonly injector: Injector, readonly state: StateService, @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\n this.components = [];\n this.auth.userChanged.subscribe(() => {\n this.components.forEach(t => t.dirty = true);\n const info = this.getStateInfo();\n const check: Promise<boolean> = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);\n check.then(result => {\n if (result) {\n if (!info || !info.dirty) return;\n info.dirty = false;\n const component: IAclComponent = info.component;\n if (!info.component) return;\n if (info.first) {\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n return;\n }\n if (ObjectUtils.isFunction(component.onUserChanged)) {\n component.onUserChanged();\n }\n return;\n }\n (info.guard as AuthGuard).getReturnState(info.route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState);\n });\n });\n });\n this.state.subscribe(() => {\n const info = this.getStateInfo();\n if (!info?.component) return;\n const component: IAclComponent = info.component;\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n });\n }\n\n protected getStateInfo(): IRouteStateInfo {\n const route = this.state.route;\n if (!route) return null;\n let info = this.components.find(t => t.route == this.state.route);\n if (!info) {\n const guardType: Type<AuthGuard> = (route.canActivate || emptyGuards)[0];\n info = {\n route: this.state.route,\n guard: guardType ? this.injector.get(guardType) : null,\n dirty: true,\n first: true\n };\n this.components.push(info);\n }\n info.component = this.state.component;\n return info;\n }\n}\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {IApiService, IHttpParams, IRequestOptions, ProgressListener} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\nimport {IPaginationData} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class ApiService extends BaseHttpService implements IApiService {\r\n\r\n get name(): string {\r\n return \"api\";\r\n }\r\n\r\n url(url: string): string {\r\n const baseUrl = this.expressRequestUrl(`/api/${url}`);\r\n if (url == \"api-docs\" || url == \"socket\") {\r\n return baseUrl.replace(\"/api/\", \"/\");\r\n }\r\n return baseUrl;\r\n }\r\n\r\n get(url: string, options?: IRequestOptions, body?: any): Promise<any> {\r\n return this.getPromise(url, options, body);\r\n }\r\n\r\n delete(url: string, options?: IRequestOptions, body?: any): Promise<any> {\r\n return this.deletePromise(url, options, body);\r\n }\r\n\r\n post(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.postPromise(url, body, options);\r\n }\r\n\r\n put(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.putPromise(url, body, options);\r\n }\r\n\r\n patch(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.patchPromise(url, body, options);\r\n }\r\n\r\n upload(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): Promise<any> {\r\n return this.uploadPromise(url, body, listener, options);\r\n }\r\n\r\n list(url: string, params: IHttpParams): Promise<IPaginationData> {\r\n return this.listPromise(url, params);\r\n }\r\n}\r\n","import {EventEmitter} from \"@angular/core\";\r\nimport {IRoute, IAuthService} from \"../common-types\";\r\n\r\nexport class StaticAuthService implements IAuthService {\r\n\r\n isAuthenticated: boolean = true;\r\n userChanged: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n checkAuthenticated(): Promise<boolean> {\r\n return Promise.resolve(this.isAuthenticated);\r\n }\r\n\r\n getReturnState(route: IRoute): string[] {\r\n return null;\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, isDevMode, Optional} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport JSON5 from \"json5\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {APP_BASE_URL, BASE_CONFIG, IConfigService, IConfiguration, ROOT_ELEMENT, SCRIPT_PARAMS} from \"../common-types\";\r\nimport {StringUtils} from \"../utils/string.utils\";\r\n\r\n@Injectable()\r\nexport class ConfigService implements IConfigService {\r\n\r\n protected baseConfig: IConfiguration;\r\n protected loadedConfig: IConfiguration;\r\n protected scriptParameters: any;\r\n protected loader: Promise<IConfiguration>;\r\n protected readonly loaderFunc: () => Promise<IConfiguration>;\r\n\r\n get load(): () => Promise<IConfiguration> {\r\n return this.loaderFunc;\r\n }\r\n\r\n get config(): IConfiguration {\r\n return this.loadedConfig;\r\n }\r\n\r\n get configUrl(): string {\r\n return `${this.loadedConfig.baseUrl}config/config.json`;\r\n }\r\n\r\n constructor(readonly http: HttpClient,\r\n readonly universal: UniversalService,\r\n readonly injector: Injector,\r\n @Inject(ROOT_ELEMENT) readonly rootElement: HTMLElement,\r\n @Inject(APP_BASE_URL) readonly baseUrl: string,\r\n @Optional() @Inject(BASE_CONFIG) baseConfig: IConfiguration = null,\r\n @Optional() @Inject(SCRIPT_PARAMS) scriptParams: any = null) {\r\n for (const key in []) {\r\n Object.defineProperty(Array.prototype, key, {\r\n enumerable: false\r\n });\r\n }\r\n this.baseConfig = baseConfig || {};\r\n this.loadedConfig = Object.assign(\r\n !this.baseUrl ? {} : {baseUrl: this.baseUrl, baseDomain: StringUtils.parseDomain(this.baseUrl)},\r\n this.baseConfig\r\n );\r\n this.scriptParameters = scriptParams || {};\r\n this.loaderFunc = () => {\r\n this.loader = this.loader || new Promise<any>((resolve, reject) => {\r\n this.loadJson().then(config => {\r\n this.loadedConfig = config = Object.assign(this.loadedConfig, config);\r\n this.prepareConfig(config).then(c => {\r\n this.loadedConfig = c;\r\n c.baseUrl = c.baseUrl || \"/\";\r\n resolve(c);\r\n });\r\n }, reject);\r\n });\r\n return this.loader;\r\n };\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n protected async loadJson(): Promise<IConfiguration> {\r\n if (this.universal.isServer) {\r\n return Promise.resolve(this.loadedConfig);\r\n }\r\n const configUrl = this.configUrl;\r\n try {\r\n const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, {responseType: \"text\"}).toPromise();\r\n return JSON5.parse(config5);\r\n } catch (e) {\r\n try {\r\n const config = await this.http.get(configUrl).toPromise();\r\n console.log(`Can't parse json5 config: ${e}`);\r\n return config;\r\n } catch (e) {\r\n throw new Error(`Config file not found at: ${configUrl}`);\r\n }\r\n }\r\n }\r\n\r\n protected prepareConfig(config: IConfiguration): Promise<IConfiguration> {\r\n return Promise.resolve(config);\r\n }\r\n\r\n cloneRootElem(): any {\r\n if (this.rootElement instanceof HTMLElement) {\r\n const clone = this.rootElement.cloneNode(true) as HTMLElement\r\n const children = Array.from(clone.childNodes);\r\n children.forEach(child => {\r\n if (child instanceof HTMLElement) {\r\n child.remove();\r\n }\r\n });\r\n return clone;\r\n }\r\n return this.rootElement;\r\n }\r\n\r\n prepareUrl(url: string, ending: string): string {\r\n const project = !this.loadedConfig ? \"\" : this.loadedConfig.project;\r\n const needsProtocol = url?.startsWith(\"//\") ?? false;\r\n url = !needsProtocol && url?.startsWith(\"/\") ? this.loadedConfig.baseDomain + url.substr(1) : url || \"\";\r\n url = `${url.replace(/\\/+$/, \"\")}${ending}`.replace(\"[project]\", project);\r\n return this.universal.isServer && needsProtocol ? `http:${url}` : url;\r\n }\r\n\r\n getConfigValue(key: string): any {\r\n return this.loadedConfig[key];\r\n }\r\n\r\n getQueryParameter(name: string, url?: string): string {\r\n url = url || (this.universal.isBrowser ? window.location.href : \"\");\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return \"\";\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {IConfirmDialogConfig, IDialogConfig, IDialogService, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class BaseDialogService<DR = any> implements IDialogService<DR> {\r\n\r\n constructor(@Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\r\n }\r\n\r\n dialog(config: IDialogConfig): DR {\r\n if (!config) return null;\r\n const button = !config.buttons ? null : config.buttons[0];\r\n if (!button) return null;\r\n this.toaster.handleAsyncMethod(button.method);\r\n return null;\r\n }\r\n\r\n confirm(config: IConfirmDialogConfig): DR {\r\n return this.dialog({\r\n id: config.id,\r\n title: config.title,\r\n message: config.message,\r\n messageContext: config.messageContext,\r\n size: config.size,\r\n buttons: config.buttons || [\r\n {\r\n text: config.okText,\r\n classes: config.okClasses,\r\n method: config.method\r\n },\r\n {\r\n text: config.cancelText || \"button.cancel\",\r\n classes: config.cancelClasses || \"btn-default\",\r\n method: config.cancelMethod\r\n }\r\n ],\r\n onClose: config.cancelMethod,\r\n templates: config.templates\r\n });\r\n }\r\n}\r\n","import {ErrorHandler, Injectable, Injector} from \"@angular/core\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {ERROR_HANDLER, ErrorHandlerCallback, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class ErrorHandlerService extends ErrorHandler {\r\n\r\n private toaster: IToasterService;\r\n private universal: UniversalService;\r\n private errorCb: ErrorHandlerCallback;\r\n private readonly errorMap: any;\r\n\r\n constructor(readonly injector: Injector) {\r\n super();\r\n this.errorMap = {};\r\n }\r\n\r\n handleError(error: Error): void {\r\n try {\r\n this.universal = this.universal || this.injector.get(UniversalService);\r\n } catch (e) {\r\n return;\r\n }\r\n const date = new Date();\r\n try {\r\n this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);\r\n this.errorCb(`[${date}]: ${error.message}\\n${error.stack}`);\r\n } catch (e) {\r\n if (this.universal.isServer) {\r\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n return;\r\n }\r\n }\r\n if (this.universal.isServer) return;\r\n const key = typeof btoa !== \"undefined\" ? btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`))) : error.message;\r\n if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000) return;\r\n this.errorMap[key] = date;\r\n try {\r\n this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);\r\n this.toaster.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n } catch (e) {\r\n }\r\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EventsService {\r\n\r\n readonly eventForwarded: EventEmitter<Event>;\r\n readonly stickyUpdated: EventEmitter<boolean>;\r\n readonly languageChanged: EventEmitter<string>;\r\n\r\n private sticky: boolean;\r\n\r\n public get isSticky(): boolean {\r\n return this.sticky;\r\n }\r\n\r\n constructor() {\r\n this.eventForwarded = new EventEmitter<Event>();\r\n this.stickyUpdated = new EventEmitter<boolean>();\r\n this.languageChanged = new EventEmitter<string>();\r\n this.sticky = false;\r\n }\r\n\r\n event(e: Event): void {\r\n this.eventForwarded.emit(e);\r\n }\r\n\r\n updateSticky(sticky: boolean): void {\r\n this.sticky = sticky;\r\n this.stickyUpdated.emit(sticky);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {ILanguageService, LANGUAGE_SERVICE} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {MathUtils} from \"../utils/math.utils\";\r\n\r\n@Injectable()\r\nexport class FormatterService {\r\n\r\n get defaultPrecision(): number {\r\n return 2;\r\n }\r\n\r\n get defaultNumberFormat(): string {\r\n return `num + ' mm'`;\r\n }\r\n\r\n get defaultDivider(): number {\r\n return 1;\r\n }\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) public language: ILanguageService) {\r\n\r\n }\r\n\r\n roundNumber(value: number, precision?: number, divider?: number): number {\r\n return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);\r\n }\r\n\r\n formatNumber(value: number | string, format?: string, precision?: number, divider?: number, minDigits?: number): string {\r\n precision = this.getPrecision(precision);\r\n minDigits = minDigits ?? precision;\r\n divider = divider || this.defaultDivider;\r\n const num = ObjectUtils.isNumber(value) ? <number>value : parseFloat(<string>value) || 0;\r\n const str = (num / divider).toLocaleString(this.language.currentLanguage, {\r\n minimumFractionDigits: minDigits,\r\n maximumFractionDigits: precision,\r\n useGrouping: false\r\n });\r\n return ObjectUtils.evaluate(format || this.defaultNumberFormat, {num: str});\r\n }\r\n\r\n formatMillimeter(value: number, precision?: number, divider?: number): string {\r\n return this.formatNumber(value, `num + ' mm'`, precision, divider);\r\n }\r\n\r\n protected getPrecision(precision: number): number {\r\n return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;\r\n }\r\n}\r\n","import {EventEmitter, Injectable, TemplateRef} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {GlobalComponentModifier} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class GlobalTemplateService {\r\n\r\n readonly templatesUpdated: EventEmitter<void>;\r\n\r\n protected globalTemplates: { [id: string]: TemplateRef<any> };\r\n protected componentModifiers: { [id: string]: GlobalComponentModifier };\r\n\r\n constructor() {\r\n this.templatesUpdated = new EventEmitter<any>();\r\n this.globalTemplates = {};\r\n this.componentModifiers = {};\r\n }\r\n\r\n get(id: string, component?: any): TemplateRef<any> {\r\n const template = this.globalTemplates[id];\r\n if (!template) return undefined;\r\n const modifier = this.componentModifiers[id];\r\n if (ObjectUtils.isFunction(modifier) && component) {\r\n modifier(component);\r\n }\r\n return template;\r\n }\r\n\r\n add(id: string, template: TemplateRef<any>): void {\r\n this.globalTemplates[id] = template;\r\n this.templatesUpdated.emit();\r\n }\r\n\r\n remove(id: string): void {\r\n delete this.globalTemplates[id];\r\n this.templatesUpdated.emit();\r\n }\r\n\r\n addComponentModifier(id: string, modifier: GlobalComponentModifier): void {\r\n this.componentModifiers[id] = modifier;\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {IIconService} from \"../common-types\";\r\n\r\ndeclare const icons: {\r\n [icon: string]: string;\r\n};\r\n\r\n@Injectable()\r\nexport class IconService implements IIconService {\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n set isDisabled(value: boolean) {\r\n this.disabled = value;\r\n this.iconsLoaded.emit();\r\n }\r\n\r\n public readonly iconsLoaded: EventEmitter<any>;\r\n\r\n protected disabled: boolean;\r\n\r\n constructor() {\r\n this.iconsLoaded = new EventEmitter<any>();\r\n this.disabled = false;\r\n }\r\n\r\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string> {\r\n icon = typeof icons == \"undefined\" ? icon : (icons[icon] || icon);\r\n activeIcon = typeof icons == \"undefined\" ? activeIcon : (icons[activeIcon] || icon);\r\n return Promise.resolve(active ? activeIcon : icon);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {\r\n CONFIG_SERVICE,\r\n IConfigService,\r\n IConfiguration,\r\n ILanguageService,\r\n IPromiseService,\r\n ITranslation,\r\n ITranslations,\r\n PROMISE_SERVICE\r\n} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {EventsService} from \"./events.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class StaticLanguageService implements ILanguageService {\r\n\r\n get defaultLanguage(): string {\r\n return this.configs.getQueryParameter(\"lang\") || this.storage.get(\"language\", this.getDefaultLanguage());\r\n }\r\n\r\n get dictionary(): ITranslations {\r\n return this.translations[this.currentLanguage] || {};\r\n }\r\n\r\n set dictionary(value: ITranslations) {\r\n this.translations[this.currentLanguage] = value;\r\n }\r\n\r\n get languages(): ReadonlyArray<string> {\r\n return this.languageList;\r\n }\r\n\r\n get currentLanguage(): string {\r\n return this.currentLang || this.defaultLanguage;\r\n }\r\n\r\n set currentLanguage(lang: string) {\r\n this.currentLang = lang;\r\n this.events.languageChanged.emit(lang);\r\n }\r\n\r\n get editLanguage(): string {\r\n return this.editLang || this.currentLanguage;\r\n }\r\n\r\n set editLanguage(lang: string) {\r\n this.editLang = lang || this.currentLanguage;\r\n }\r\n\r\n get disableTranslations(): boolean {\r\n return this.disableTrans;\r\n }\r\n\r\n set disableTranslations(value: boolean) {\r\n this.disableTrans = value;\r\n this.events.languageChanged.emit(this.currentLang);\r\n }\r\n\r\n get httpClient(): HttpClient {\r\n return this.client;\r\n }\r\n\r\n get config(): IConfiguration {\r\n return this.configs.config;\r\n }\r\n\r\n get universal(): UniversalService {\r\n return this.storage.universal;\r\n }\r\n\r\n protected editLang: string;\r\n protected currentLang: string;\r\n protected disableTrans: boolean;\r\n protected languageList: string[];\r\n protected readonly translations: ITranslations;\r\n\r\n constructor(@Inject(EventsService) readonly events: EventsService,\r\n @Inject(StorageService) readonly storage: StorageService,\r\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n @Inject(PROMISE_SERVICE) protected promises: IPromiseService,\r\n @Inject(BaseHttpClient) protected client: BaseHttpClient) {\r\n this.editLang = null;\r\n this.currentLang = null;\r\n this.disableTrans = false;\r\n this.languageList = [];\r\n this.translations = {\r\n none: {}\r\n };\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n replaceLanguages(languages: string[]): void {\r\n languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;\r\n this.languageList = Array.from(new Set<string>(languages));\r\n this.languageList.forEach(lang => {\r\n this.translations[lang] = this.translations[lang] || {};\r\n });\r\n }\r\n\r\n addLanguages(languages: string[]): void {\r\n if (!Array.isArray(languages) || languages.length == 0) return;\r\n this.replaceLanguages(this.languageList.concat(languages));\r\n }\r\n\r\n getTranslationSync(key: string, params: Object = null): string {\r\n const lowerKey = (key || \"\").toLocaleLowerCase();\r\n const translation = this.dictionary[lowerKey] || lowerKey;\r\n return this.interpolate(translation == lowerKey ? key : translation, params);\r\n }\r\n\r\n getTranslation(key: string, params?: Object): Promise<string> {\r\n if (!ObjectUtils.isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n const translation = ObjectUtils.getValue(this.dictionary, key, key) || key;\r\n return this.promises.resolve(this.interpolate(translation, params));\r\n }\r\n\r\n getTranslations(...keys: string[]): Promise<ITranslations> {\r\n return this.promises.create<ITranslations>(resolve => {\r\n this.promises.all(keys.map(key => this.getTranslation(key))).then(translations => {\r\n resolve(keys.reduce((result, key, i) => {\r\n result[key] = translations[i];\r\n return result;\r\n }, {}));\r\n });\r\n });\r\n }\r\n\r\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string {\r\n lang = lang || this.currentLanguage;\r\n return this.interpolate(translations ? (translations[lang] || \"\") : \"\")\r\n }\r\n\r\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string {\r\n lang = lang || this.currentLanguage;\r\n const translation = translations ? translations.find(t => t.lang == lang) : null;\r\n return this.interpolate(translation ? translation.translation : \"\", params);\r\n }\r\n\r\n protected interpolate(expr: string | Function, params?: Object): string {\r\n if (typeof expr === \"string\") {\r\n return this.interpolateString(expr, params);\r\n }\r\n if (typeof expr === \"function\") {\r\n return expr(params);\r\n }\r\n return expr as string;\r\n }\r\n\r\n protected interpolateString(expr: string, params?: Object) {\r\n if (!expr || !params) return expr;\r\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\r\n const r = ObjectUtils.getValue(params, b, \"\");\r\n return ObjectUtils.isDefined(r) ? r : substring;\r\n });\r\n }\r\n\r\n protected getDefaultLanguage(): string {\r\n if (!this.universal.isBrowser || typeof window.navigator === \"undefined\") {\r\n return \"de\";\r\n }\r\n let browserLang: string = (window.navigator.languages ? window.navigator.languages[0] : null)\r\n || window.navigator.language || window.navigator[\"browserLanguage\"] || window.navigator[\"userLanguage\"] || null;\r\n if (!browserLang) return browserLang;\r\n\r\n [\"-\", \"_\"].forEach(splitter => {\r\n if (browserLang.indexOf(splitter) >= 0) {\r\n browserLang = browserLang.split(splitter)[0];\r\n }\r\n })\r\n return browserLang;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, combineLatest, Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {ILanguageSetting, ILanguageSettings, ITranslations} from \"../common-types\";\r\nimport {StaticLanguageService} from \"./static-language.service\";\r\n\r\n@Injectable()\r\nexport class LanguageService extends StaticLanguageService {\r\n\r\n protected translationRequests: ITranslations;\r\n protected settingsPromise: Promise<ILanguageSettings>;\r\n protected languageSettings: BehaviorSubject<ILanguageSettings>;\r\n\r\n get currentLanguage(): string {\r\n return this.currentLang || this.defaultLanguage;\r\n }\r\n\r\n set currentLanguage(lang: string) {\r\n this.useLanguage(lang).then(() => {\r\n this.events.languageChanged.emit(lang);\r\n });\r\n }\r\n\r\n get settings(): ILanguageSetting {\r\n const settings = this.languageSettings.value;\r\n return !settings ? {} : settings.settings[this.currentLanguage] || {};\r\n }\r\n\r\n get $settings(): Observable<ILanguageSetting> {\r\n this.loadSettings().then(s => this.languageSettings.next(s));\r\n return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {\r\n return !settings ? {} : settings.settings[lang as string] || {};\r\n }));\r\n }\r\n\r\n protected initService(): void {\r\n this.client.setExtraRequestParam(\"language\", \"de\");\r\n this.translationRequests = {};\r\n this.languageSettings = new BehaviorSubject<ILanguageSettings>(null);\r\n if (this.universal.isServer) return;\r\n window[\"setLanguage\"] = (lang: string) => {\r\n this.currentLanguage = lang;\r\n };\r\n }\r\n\r\n async initFromSettings(): Promise<any> {\r\n const defaultLanguage = this.defaultLanguage;\r\n const settings = await this.loadSettings();\r\n this.languageSettings.next(settings);\r\n const devLanguages = settings.devLanguages || [];\r\n this.languageList = (settings.languages || []).filter(lang => {\r\n const unavailable = settings.settings[lang]?.unavailable;\r\n if (unavailable) {\r\n const parts = unavailable.split(\"/\");\r\n const value = parts[0] || parts[1];\r\n const flags = parts.length > 1 ? parts[parts.length - 1] : \"g\";\r\n if (new RegExp(value, flags).test(this.config.baseDomain)) return false;\r\n }\r\n return devLanguages.indexOf(lang) < 0;\r\n });\r\n if (this.languageList.length === 0) {\r\n this.languageList = [defaultLanguage];\r\n }\r\n const lang = this.languages.indexOf(defaultLanguage) < 0 ? settings.defaultLanguage || this.languageList[0] : defaultLanguage;\r\n await this.useLanguage(lang);\r\n this.events.languageChanged.emit(lang);\r\n }\r\n\r\n async getTranslation(key: string, params: any = null): Promise<string> {\r\n if (!key) return \"\";\r\n try {\r\n const lowerKey = key.toLocaleLowerCase();\r\n const dict = await this.loadDictionary();\r\n if (lowerKey in dict) {\r\n return this.interpolate(dict[lowerKey], params);\r\n }\r\n return this.interpolate(key, params);\r\n } catch (reason) {\r\n console.log(\"ERROR IN TRANSLATIONS\", reason);\r\n return key;\r\n }\r\n }\r\n\r\n protected async useLanguage(lang: string): Promise<ITranslations> {\r\n lang = this.languages.indexOf(lang) < 0 ? this.languages[0] : lang;\r\n this.client.setExtraRequestParam(\"language\", lang);\r\n if (lang == this.currentLang) return this.dictionary;\r\n this.storage.set(\"language\", lang);\r\n this.currentLang = lang;\r\n const dict = await this.loadDictionary();\r\n this.translations[lang] = dict;\r\n return dict;\r\n }\r\n\r\n protected loadDictionary(): Promise<any> {\r\n const lang = this.currentLanguage;\r\n this.translationRequests[lang] = this.translationRequests[lang] || new Promise(resolve => {\r\n const ext = this.config.translationExt || ``;\r\n this.httpClient.get(`${this.config.translationUrl}${lang}${ext}`).toPromise().then(response => {\r\n response = response || {};\r\n resolve(Object.keys(response).reduce((result, key) => {\r\n result[key.toLocaleLowerCase()] = response[key];\r\n return result;\r\n }, {}));\r\n }, () => {\r\n resolve({});\r\n });\r\n });\r\n return this.translationRequests[lang];\r\n }\r\n\r\n protected loadSettings(): Promise<ILanguageSettings> {\r\n const ext = this.config.translationExt || ``;\r\n this.settingsPromise = this.settingsPromise || (this.client.get(`${this.config.translationUrl}languageSettings${ext}`).toPromise())\r\n .then(\r\n (settings: ILanguageSettings) => {\r\n return settings;\r\n }, () => {\r\n return {\r\n languages: [\"de\", \"en\", \"hu\"],\r\n devLanguages: [],\r\n defaultLanguage: \"de\",\r\n settings: {\r\n de: {},\r\n hu: {},\r\n en: {}\r\n }\r\n };\r\n }\r\n );\r\n return this.settingsPromise;\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {API_SERVICE, IApiService, IOpenApiSchema, IOpenApiSchemas} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class OpenApiService {\r\n\r\n private schemasPromise: Promise<IOpenApiSchemas>;\r\n\r\n constructor(@Inject(API_SERVICE) readonly api: IApiService) {\r\n\r\n }\r\n\r\n getSchemas(): Promise<IOpenApiSchemas> {\r\n this.schemasPromise = this.schemasPromise || new Promise((resolve => {\r\n this.api.get(\"api-docs\").then(res => {\r\n const schemas: IOpenApiSchemas = res.components?.schemas || res.definitions || {};\r\n Object.values(schemas).forEach(schema => {\r\n Object.keys(schema.properties || {}).forEach(p => {\r\n schema.properties[p].id = p;\r\n });\r\n });\r\n resolve(schemas);\r\n }, () => {\r\n resolve({});\r\n });\r\n }));\r\n return this.schemasPromise;\r\n }\r\n\r\n async getSchema(name: string): Promise<IOpenApiSchema> {\r\n const schemas = await this.getSchemas();\r\n const schema = schemas[name];\r\n if (!schema) return null;\r\n return schemas[name];\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {AsyncMethod, ILanguageService, IToasterService, LANGUAGE_SERVICE, ToastType} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class BaseToasterService<T = any, P extends Record<string, any> = {}> implements IToasterService {\r\n\r\n protected colorMap: Record<ToastType, string>;\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) protected language: ILanguageService) {\r\n this.colorMap = {\r\n info: \"#2F96B4\",\r\n success: \"#51A351\",\r\n warning: \"#F89406\",\r\n error: \"#BD362F\"\r\n };\r\n }\r\n\r\n info(message: string, params?: P) {\r\n this.translate(message, params, \"info\");\r\n }\r\n\r\n success(message: string, params?: P) {\r\n this.translate(message, params, \"success\");\r\n }\r\n\r\n warning(message: string, params?: P){\r\n this.translate(message, params, \"warning\");\r\n }\r\n\r\n error(message: string, params?: P) {\r\n this.translate(message, params, \"error\");\r\n }\r\n\r\n infoPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"info\");\r\n }\r\n\r\n successPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"success\");\r\n }\r\n\r\n warningPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"warning\");\r\n }\r\n\r\n errorPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"error\");\r\n }\r\n\r\n handleAsyncMethod(method: AsyncMethod): void {\r\n if (!method) return;\r\n method().then(result => {\r\n if (result) {\r\n this.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.error(reason.message, reason.context);\r\n });\r\n }\r\n\r\n protected translate(message: string, params: P, type: ToastType): void {\r\n this.language.getTranslation(message, params).then(str => {\r\n this.show(str, type, params);\r\n });\r\n }\r\n\r\n protected async translatePromised(message: string, params: P, type: ToastType): Promise<T> {\r\n const str = await this.language.getTranslation(message, params);\r\n return this.show(str, type, params);\r\n }\r\n\r\n protected show(message: string, type: ToastType, params: P): T | Promise<T> {\r\n console.log(message, `background: ${this.colorMap[type]}; color: #ffffff`, params);\r\n return null;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n NgModuleRef,\r\n Optional,\r\n Type,\r\n ViewRef\r\n} from \"@angular/core\";\r\nimport {Route, Router} from \"@angular/router\";\r\nimport {firstValueFrom, Observable} from \"rxjs\";\r\n\r\nimport {\r\n CssSelectorList,\r\n DYNAMIC_ENTRY_COMPONENTS,\r\n DYNAMIC_MODULE_INFO,\r\n DynamicComponentLocation,\r\n DynamicModuleInfo,\r\n ROOT_ELEMENT\r\n} from \"../common-types\";\r\nimport {getComponentDef, parseSelector, selectorMatchesList} from \"../utils/misc\";\r\n\r\ninterface LoadedRouterConfig {\r\n routes: Route[];\r\n injector: EnvironmentInjector | undefined;\r\n}\r\n\r\ninterface RouterConfigLoader {\r\n loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig>;\r\n}\r\n\r\ninterface NavigationTransitions {\r\n configLoader: RouterConfigLoader;\r\n}\r\n\r\n@Injectable()\r\nexport class ComponentLoaderService {\r\n\r\n private readonly typeMap: Array<[string, CssSelectorList, Type<any>]>;\r\n private readonly moduleRegistry: DynamicModuleInfo[];\r\n private readonly moduleMap: Map<string, Promise<EnvironmentInjector>>;\r\n\r\n get injector(): Injector {\r\n return this.ngModule.injector;\r\n }\r\n\r\n constructor(\r\n protected appRef: ApplicationRef,\r\n protected ngModule: NgModuleRef<any>,\r\n @Inject(ROOT_ELEMENT) protected rootElement: HTMLElement,\r\n @Optional() @Inject(DYNAMIC_MODULE_INFO) moduleRegistry: DynamicModuleInfo[]\r\n ) {\r\n this.typeMap = [];\r\n this.moduleRegistry = moduleRegistry || [];\r\n this.moduleMap = new Map();\r\n this.populateTypeMap(\"root\", this.ngModule.injector);\r\n }\r\n\r\n findComponentType<T>(selector: string, moduleId: string = \"root\"): Type<T> {\r\n const cssSelector = parseSelector(selector);\r\n const results = new Map<string, Type<any>>();\r\n for (const item of this.typeMap) {\r\n if (selectorMatchesList(item[1], cssSelector)) {\r\n results.set(item[0], item[2]);\r\n }\r\n }\r\n const keys = Array.from(results.keys());\r\n const result = results.get(moduleId) || results.get(keys[0]);\r\n if (!result) {\r\n throw new Error(`Cannot find component by selector: ${selector} in module '${moduleId}' nor in any other module`);\r\n }\r\n return result;\r\n }\r\n\r\n async getComponentType(location: DynamicComponentLocation): Promise<Type<any>> {\r\n\r\n // Find module info\r\n const moduleInfoList = this.moduleRegistry\r\n .filter(info => info.moduleId === location.moduleId);\r\n\r\n if (moduleInfoList.length > 1) {\r\n throw new Error(`Module with id '${location.moduleId}' has been declared more than once.`)\r\n }\r\n\r\n const moduleInfo = moduleInfoList[0];\r\n\r\n if (!moduleInfo) {\r\n throw new Error(`Module with id '${location.moduleId}' not found.`);\r\n }\r\n\r\n await this.loadModule(moduleInfo);\r\n\r\n return this.findComponentType(location.selector, location.moduleId);\r\n }\r\n\r\n createComponent(componentType: Type<any>, projectableNodes?: any[], injector?: Injector, split?: boolean): ComponentRef<any> {\r\n if (projectableNodes) {\r\n projectableNodes = split ? projectableNodes.filter(node => {\r\n return node && node.nodeType !== Node.COMMENT_NODE;\r\n }).map(node => [node]) : [projectableNodes];\r\n } else {\r\n projectableNodes = [];\r\n }\r\n return createComponent(componentType, {\r\n environmentInjector: this.appRef.injector,\r\n elementInjector: injector || this.injector,\r\n projectableNodes\r\n });\r\n }\r\n\r\n bootstrap<T>(componentType: Type<T>, rootSelectorOrNode?: string | any): ComponentRef<T> {\r\n rootSelectorOrNode = rootSelectorOrNode || this.rootElement;\r\n return !rootSelectorOrNode ? null : this.appRef.bootstrap(componentType, rootSelectorOrNode);\r\n }\r\n\r\n attachView(viewRef: ViewRef): void {\r\n if (!viewRef) return;\r\n this.appRef.attachView(viewRef);\r\n }\r\n\r\n detachView(viewRef: ViewRef): void {\r\n if (!viewRef) return;\r\n this.appRef.detachView(viewRef);\r\n try {\r\n viewRef.destroy();\r\n } catch (e) {\r\n console.log(`Can't destroy view, maybe it is already destroyed?`);\r\n }\r\n }\r\n\r\n private populateTypeMap(moduleId: string, injector: EnvironmentInjector): void {\r\n const entries = injector.get(DYNAMIC_ENTRY_COMPONENTS) || [];\r\n if (entries.length == 0) {\r\n console.warn(\"Entry components not found in the module\", injector);\r\n }\r\n entries.forEach(entryComponents => {\r\n entryComponents.components.forEach(type => {\r\n const def = getComponentDef(type);\r\n this.typeMap.push([entryComponents.moduleId || moduleId, def.selectors as any, type]);\r\n });\r\n });\r\n }\r\n\r\n private async loadModule(moduleInfo: DynamicModuleInfo): Promise<EnvironmentInjector> {\r\n if (this.moduleMap.has(moduleInfo.moduleId)) {\r\n return this.moduleMap.get(moduleInfo.moduleId);\r\n }\r\n this.moduleMap.set(moduleInfo.moduleId, new Promise(async resolve => {\r\n const router = this.injector.get(Router);\r\n const loader = (router[\"navigationTransitions\"] as NavigationTransitions).configLoader;\r\n const loaded = await firstValueFrom(loader.loadChildren(this.injector, {\r\n loadChildren: moduleInfo.loadChildren\r\n }));\r\n if (moduleInfo.routes) {\r\n router.resetConfig(moduleInfo.routes);\r\n if (moduleInfo.initialNavigation !== false) {\r\n router.initialNavigation();\r\n }\r\n }\r\n this.populateTypeMap(moduleInfo.moduleId, loaded.injector);\r\n resolve(loaded.injector);\r\n }));\r\n return this.moduleMap.get(moduleInfo.moduleId);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlTree} from \"@angular/router\";\r\nimport {ILanguageService, LANGUAGE_SERVICE} from \"../common-types\";\r\n\r\nexport interface IUrlDictionary {\r\n [key: string]: string\r\n}\r\n\r\n@Injectable()\r\nexport class TranslatedUrlSerializer extends DefaultUrlSerializer {\r\n\r\n protected cache: {[lang: string]: IUrlDictionary};\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n super();\r\n this.cache = {};\r\n }\r\n\r\n serialize(tree: UrlTree): string {\r\n const copy = new UrlTree();\r\n const dictionary = this.getDictionary(true);\r\n copy.root = this.modifyTreeRecursive(tree.root, segment => {\r\n segment.path = dictionary[segment.path] || segment.path;\r\n });\r\n copy.queryParams = tree.queryParams;\r\n return super.serialize(copy);\r\n }\r\n\r\n parse(url: string): UrlTree {\r\n const tree = super.parse(url);\r\n const dictionary = this.getDictionary(false);\r\n tree.root = this.modifyTreeRecursive(tree.root, segment => {\r\n segment.path = dictionary[segment.path] || segment.path;\r\n });\r\n return tree;\r\n }\r\n\r\n getDictionary(serialize: boolean): IUrlDictionary {\r\n const method = serialize ? `serialize` : `parse`;\r\n const key = `${this.language.currentLanguage}-${method}`;\r\n if (!this.cache[key]) {\r\n const dict = this.language.dictionary;\r\n this.cache[key] = Object.keys(dict).reduce((res, key) => {\r\n if (!key.startsWith(\"route.\")) return res;\r\n const value = dict[key];\r\n key = key.replace(\"route.\", \"\");\r\n res[serialize ? key : value] = serialize ? value : key;\r\n return res;\r\n }, {});\r\n }\r\n return this.cache[key];\r\n }\r\n\r\n modifyTreeRecursive(segmentGroup: UrlSegmentGroup, cb: (segment: UrlSegment) => void): UrlSegmentGroup {\r\n if (!segmentGroup) return null;\r\n const childrenArr = [];\r\n const children = Object.keys(segmentGroup.children || {}).reduce((res, key) => {\r\n const child = this.modifyTreeRecursive(segmentGroup.children[key], cb);\r\n childrenArr.push(child);\r\n res[key] = child;\r\n return res;\r\n }, {});\r\n const newGroup = new UrlSegmentGroup(segmentGroup.segments.map(s => {\r\n s = new UrlSegment(s.path, Object.assign({}, s.parameters));\r\n cb(s);\r\n return s;\r\n }), children);\r\n childrenArr.forEach(c => {\r\n c.parent = newGroup;\r\n });\r\n return newGroup;\r\n }\r\n}\r\n","import {EventEmitter, Inject, Injectable, NgZone} from \"@angular/core\";\r\nimport {IPromiseService} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class PromiseService implements IPromiseService {\r\n\r\n get count(): number {\r\n return this.promiseCount;\r\n }\r\n\r\n get onChanged(): EventEmitter<number> {\r\n return this.promiseChanged;\r\n }\r\n\r\n protected promiseCount: number;\r\n protected readonly promiseChanged: EventEmitter<number>;\r\n\r\n constructor(@Inject(NgZone) readonly zone: NgZone) {\r\n this.promiseCount = 0;\r\n this.promiseChanged = new EventEmitter<number>();\r\n }\r\n\r\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => new Promise<T>(executor)));\r\n }\r\n\r\n all(promises: Promise<any>[]): Promise<any> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.all(promises)));\r\n }\r\n\r\n resolve<T>(value: T | PromiseLike<T>): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.resolve(value)));\r\n }\r\n\r\n reject<T>(value: T | PromiseLike<T>): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.reject(value)));\r\n }\r\n\r\n protected promiseFinished(): void {\r\n if (this.promiseCount == 0) return;\r\n this.promiseCount--;\r\n this.promiseChanged.emit(this.promiseCount);\r\n }\r\n\r\n protected add<T>(promise: Promise<T>): Promise<T> {\r\n this.promiseCount++;\r\n this.promiseChanged.emit(this.promiseCount);\r\n return new Promise<any>((resolve, reject) => {\r\n promise.then(v => {\r\n resolve(v);\r\n this.promiseFinished();\r\n }, r => {\r\n reject(r);\r\n this.promiseFinished();\r\n });\r\n });\r\n }\r\n}\r\n","import {Inject, Injectable, OnDestroy} from \"@angular/core\";\r\nimport {BehaviorSubject, Subscription} from \"rxjs\";\r\nimport {API_SERVICE, AUTH_SERVICE, IApiService, IAuthService, SOCKET_IO_PATH} from \"../common-types\";\r\nimport {ExtraHeaders, SocketClient, SocketData, SocketDataObj} from \"../utils/socket-client\";\r\nimport {LoaderUtils} from \"../utils/loader.utils\";\r\n\r\n@Injectable()\r\nexport class SocketService implements OnDestroy {\r\n\r\n protected client: SocketClient;\r\n protected authSub: Subscription;\r\n\r\n get status(): BehaviorSubject<boolean> {\r\n return this.client.status;\r\n }\r\n\r\n get id(): string {\r\n return this.client.id;\r\n }\r\n\r\n constructor(@Inject(AUTH_SERVICE) readonly auth: IAuthService,\r\n @Inject(API_SERVICE) readonly api: IApiService,\r\n @Inject(SOCKET_IO_PATH) protected ioPath: string) {\r\n const url = this.api.url(this.ioPath);\r\n this.client = new SocketClient(url, async () => {\r\n let script: HTMLScriptElement = null;\r\n try {\r\n script = await LoaderUtils.loadScript(`${url}/socket.io.js`);\r\n } catch (e) {\r\n script?.remove();\r\n await LoaderUtils.loadScript(`https://cdn.socket.io/4.7.4/socket.io.min.js`);\r\n }\r\n return window[\"io\"];\r\n });\r\n }\r\n\r\n withAuth(extraHeaders: ExtraHeaders = {}): void {\r\n this.authSub = this.auth.userChanged.subscribe(user => {\r\n if (user) {\r\n this.connect(extraHeaders);\r\n return;\r\n }\r\n this.disconnect();\r\n });\r\n if (this.auth.isAuthenticated) {\r\n this.connect(extraHeaders);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.authSub?.unsubscribe();\r\n this.disconnect();\r\n }\r\n\r\n connect(extraHeaders: ExtraHeaders = {}): void {\r\n if (this.authSub && this.auth.isAuthenticated) {\r\n extraHeaders = {\r\n ...(extraHeaders || {}),\r\n ...Object.entries(this.api.client.requestHeaders || {}).reduce((res, entry) => {\r\n res[entry[0]] = Array.isArray(entry[1]) ? entry[1].join(\", \") : entry[1];\r\n return res;\r\n }, {})\r\n };\r\n }\r\n this.client.connect(extraHeaders);\r\n }\r\n\r\n disconnect(): void {\r\n this.client.disconnect();\r\n }\r\n\r\n subscribe(event: string, cb: (value: SocketData) => void): Subscription {\r\n return this.client.subscribe(event, cb);\r\n }\r\n\r\n emit(event: string, content: SocketData): void {\r\n this.client.emit(event, content);\r\n }\r\n\r\n request(event: string, content: SocketDataObj): Promise<any> {\r\n return this.client.request(event, content);\r\n }\r\n}\r\n","import {KeyValue} from \"@angular/common\";\r\n\r\nexport type DragHandlerEvents = \"dragstart\" | \"dragenter\" | \"dragleave\" | \"drop\";\r\nexport type DragEventListener = (ev: DragEvent) => boolean | void;\r\n\r\nexport class DragDropHandler {\r\n\r\n protected static handlers: Map<HTMLElement, DragDropHandler>;\r\n\r\n protected readonly onDragStart: DragEventListener;\r\n protected readonly onDragEnter: DragEventListener;\r\n protected readonly onDragOver: DragEventListener;\r\n protected readonly onDragLeave: DragEventListener;\r\n protected readonly onDrop: DragEventListener;\r\n\r\n protected first: boolean;\r\n protected second: boolean;\r\n protected dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\r\n protected effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\r\n protected listeners: Array<KeyValue<DragHandlerEvents, DragEventListener>>;\r\n\r\n static get(el: HTMLElement) {\r\n if (DragDropHandler.handlers?.has(el)) {\r\n return DragDropHandler.handlers.get(el);\r\n }\r\n return new DragDropHandler(el);\r\n }\r\n\r\n protected static add(el: HTMLElement, inst: DragDropHandler) {\r\n DragDropHandler.handlers = DragDropHandler.handlers || new Map();\r\n DragDropHandler.handlers.set(el, inst);\r\n }\r\n\r\n protected constructor(protected el: HTMLElement) {\r\n this.first = false;\r\n this.second = false;\r\n this.listeners = [];\r\n this.onDragStart = ev => {\r\n this.fireEvent(\"dragstart\", ev);\r\n this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n this.dropEffect = ev.dataTransfer.dropEffect;\r\n };\r\n this.onDragEnter = ev => {\r\n if (this.first) {\r\n this.second = true;\r\n } else {\r\n this.first = true;\r\n this.fireEvent(\"dragenter\", ev);\r\n this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n this.dropEffect = ev.dataTransfer.dropEffect;\r\n }\r\n };\r\n this.onDragOver = ev => {\r\n ev.preventDefault();\r\n ev.dataTransfer.effectAllowed = this.effectAllowed;\r\n ev.dataTransfer.dropEffect = this.dropEffect;\r\n };\r\n this.onDragLeave = ev => {\r\n if (this.second) {\r\n this.second = false\r\n } else if (this.first) {\r\n this.first = false\r\n }\r\n if (!this.first && !this.second) {\r\n this.fireEvent(\"dragleave\", ev);\r\n }\r\n };\r\n this.onDrop = ev => {\r\n this.first = false;\r\n this.second = false;\r\n this.fireEvent(\"drop\", ev);\r\n };\r\n this.el.addEventListener(\"dragstart\", this.onDragStart);\r\n this.el.addEventListener(\"dragenter\", this.onDragEnter);\r\n this.el.addEventListener(\"dragover\", this.onDragOver);\r\n this.el.addEventListener(\"dragleave\", this.onDragLeave);\r\n this.el.addEventListener(\"drop\", this.onDrop);\r\n DragDropHandler.add(this.el, this);\r\n }\r\n\r\n addListener(key: DragHandlerEvents, value: DragEventListener): void {\r\n this.listeners = [\r\n ...this.listeners,\r\n {key, value}\r\n ];\r\n }\r\n\r\n removeListener(type: DragHandlerEvents, listener: DragEventListener): void {\r\n this.listeners = this.listeners.filter(entry => entry.key !== type || entry.value !== listener);\r\n if (this.listeners.length > 0) return;\r\n this.destroy();\r\n }\r\n\r\n protected fireEvent(type: DragHandlerEvents, ev: DragEvent): void {\r\n this.listeners.forEach(entry => {\r\n if (entry.key !== type) return;\r\n entry.value(ev);\r\n });\r\n }\r\n\r\n protected destroy(): void {\r\n this.el.removeEventListener(\"dragstart\", this.onDragStart);\r\n this.el.removeEventListener(\"dragenter\", this.onDragEnter);\r\n this.el.removeEventListener(\"dragover\", this.onDragOver);\r\n this.el.removeEventListener(\"dragleave\", this.onDragLeave);\r\n this.el.removeEventListener(\"drop\", this.onDrop);\r\n DragDropHandler.handlers?.delete(this.el);\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {DragDropHandler, DragHandlerEvents} from \"./drag-drop-handler\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class DragDropEventPlugin extends EventManagerPlugin {\r\n\r\n private static EVENT_NAMES: DragHandlerEvents[] = [\"dragstart\", \"dragenter\", \"dragleave\", \"drop\"];\r\n\r\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n super(doc);\r\n }\r\n\r\n supports(eventName: DragHandlerEvents) {\r\n return DragDropEventPlugin.EVENT_NAMES.includes(eventName);\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: DragHandlerEvents, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer) return emptyRemove;\r\n const callback = (e: DragEvent) => {\r\n zone.run(() => handler(e));\r\n };\r\n const dd = DragDropHandler.get(element);\r\n dd.addListener(eventName, callback);\r\n return () => dd.removeListener(eventName, callback);\r\n });\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport elementResizeDetectorMaker from \"element-resize-detector\";\r\nimport type {Erd} from \"element-resize-detector\";\r\n\r\nimport {RESIZE_DELAY, RESIZE_STRATEGY, ResizeEventStrategy} from \"../common-types\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\n\r\nfunction emptyRemove(): void {\r\n\r\n}\r\n\r\nfunction isWindow(el: any): boolean {\r\n return typeof window !== \"undefined\" && el === window;\r\n}\r\n\r\n@Injectable()\r\nexport class ResizeEventPlugin extends EventManagerPlugin {\r\n\r\n static readonly EVENT_NAME: string = \"resize\";\r\n\r\n readonly detector: Erd;\r\n\r\n constructor(@Inject(DOCUMENT) doc: any,\r\n @Inject(RESIZE_DELAY) protected resizeDelay: number,\r\n @Inject(RESIZE_STRATEGY) protected resizeStrategy: ResizeEventStrategy,\r\n readonly universal: UniversalService) {\r\n super(doc);\r\n this.detector = elementResizeDetectorMaker({\r\n strategy: resizeStrategy\r\n });\r\n }\r\n\r\n supports(eventName: string) {\r\n return eventName === ResizeEventPlugin.EVENT_NAME;\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer)\r\n return emptyRemove;\r\n const timer = TimerUtils.createTimeout();\r\n const cb = el => {\r\n timer.set(() => {\r\n zone.run(() => handler(el));\r\n }, this.resizeDelay);\r\n };\r\n if (isWindow(element)) {\r\n element.addEventListener(eventName, cb);\r\n }\r\n else {\r\n this.detector.listenTo(element, cb);\r\n }\r\n return () => {\r\n try {\r\n if (isWindow(element)) {\r\n element.removeEventListener(eventName, cb);\r\n }\r\n else {\r\n this.detector.uninstall(element);\r\n }\r\n }\r\n catch (e) {\r\n } finally {\r\n timer.clear();\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class ScrollEventPlugin extends EventManagerPlugin {\r\n\r\n private static EVENT_NAME: string = \"scroll\";\r\n\r\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n super(doc);\r\n }\r\n\r\n supports(eventName: string) {\r\n return eventName === ScrollEventPlugin.EVENT_NAME;\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer) return emptyRemove;\r\n const callback = (e: Event) => {\r\n zone.run(() => handler(e));\r\n };\r\n element.addEventListener(eventName, callback);\r\n return () => element.removeEventListener(eventName, callback);\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"chunk\"\r\n})\r\nexport class ChunkPipe implements PipeTransform {\r\n transform(items: any[], count: number): any[] {\r\n const result: any[] = [];\r\n let subResult: any[] = null;\r\n items.forEach((item, index) => {\r\n if (index % count == 0) {\r\n subResult = [];\r\n result.push(subResult);\r\n }\r\n subResult.push(item);\r\n });\r\n return result;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport interface IEntry {\r\n key: string;\r\n value: any;\r\n index: number;\r\n}\r\n\r\nconst emptyEntries: IEntry[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"entries\"\r\n})\r\nexport class EntriesPipe implements PipeTransform {\r\n\r\n transform(value: any): IEntry[] {\r\n if (!value) return emptyEntries;\r\n const entries: IEntry[] = [];\r\n ObjectUtils.iterate(value, (val, key) => {\r\n entries.push({\r\n key: key,\r\n value: val,\r\n index: entries.length\r\n });\r\n });\r\n return entries;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IExtraProperties} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"extraItemProperties\"\r\n})\r\nexport class ExtraItemPropertiesPipe implements PipeTransform {\r\n transform(items: any[], properties: IExtraProperties, params: any = {}): any[] {\r\n const keys = Object.keys(properties);\r\n keys.forEach(key => {\r\n const value = properties[key];\r\n properties[key] = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(value, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n });\r\n return (items || []).map((item, index) => keys.reduce((result, key) => {\r\n result[key] = properties[key](item, index, params);\r\n return result;\r\n }, {...item}));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"filter\"\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n transform(values: any, filter: any = defaultFilter, params: any = {}): any {\r\n const isObject = ObjectUtils.isObject(values);\r\n if (!isObject && !ObjectUtils.isArray(values)) return [];\r\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {\r\n const index = key;\r\n return ObjectUtils.evaluate(filter, {value, key, params, values, index});\r\n };\r\n if (isObject) {\r\n return Object.keys(values).filter(key => {\r\n return filterFunc(values[key], key, params, values);\r\n }).reduce((result, key) => {\r\n result[key] = values[key];\r\n return result;\r\n }, {})\r\n }\r\n return values.filter((value, key) => {\r\n return filterFunc(value, key, params, values);\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"find\"\r\n})\r\nexport class FindPipe implements PipeTransform {\r\n transform(values: any[], filter: any = defaultFilter, params?: any): any {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n params = params || {};\r\n if (ObjectUtils.isObject(params)) {\r\n params.values = values;\r\n }\r\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {\r\n return ObjectUtils.evaluate(filter, {value, index, params, values});\r\n };\r\n return values.find((value, index) => filterFunc(value, index, params, values));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"formatNumber\"\r\n})\r\nexport class FormatNumberPipe implements PipeTransform {\r\n\r\n constructor(private formatter: FormatterService) {\r\n }\r\n\r\n transform(value: number, format?: string, precision?: number, divider?: number): string {\r\n return this.formatter.formatNumber(value, format, precision, divider);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getOffset\"\r\n})\r\nexport class GetOffsetPipe implements PipeTransform {\r\n transform(value: any, offset: any): any {\r\n return value ? (ObjectUtils.isNullOrUndefined(offset) ? value : value[offset]) : null;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getType\"\r\n})\r\nexport class GetTypePipe implements PipeTransform {\r\n transform(value: any): any {\r\n return typeof value;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getValue\"\r\n})\r\nexport class GetValuePipe implements PipeTransform {\r\n\r\n transform(value: any, path: string, defaultVal: any = \"\"): any {\r\n return !value ? value : ObjectUtils.getValue(value, path, defaultVal);\r\n }\r\n}\r\n","import {OnDestroy, OnInit, Pipe, PipeTransform, TemplateRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n pure: false,\r\n name: \"globalTemplate\"\r\n})\r\nexport class GlobalTemplatePipe implements PipeTransform, OnInit, OnDestroy {\r\n\r\n protected templatesUpdated: Subscription;\r\n\r\n protected cachedTemplateId: string;\r\n protected cachedTemplate: TemplateRef<any>;\r\n\r\n constructor(protected globalTemplates: GlobalTemplateService) {\r\n this.cachedTemplateId = null;\r\n this.cachedTemplate = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.templatesUpdated = this.globalTemplates.templatesUpdated.subscribe(() => {\r\n this.cachedTemplate = null;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.templatesUpdated)\r\n this.templatesUpdated.unsubscribe();\r\n }\r\n\r\n transform(templateId: string, component?: any): TemplateRef<string> {\r\n if (!templateId) return null;\r\n if (this.cachedTemplate === null || this.cachedTemplateId !== templateId) {\r\n this.cachedTemplateId = templateId;\r\n this.cachedTemplate = this.globalTemplates.get(templateId, component);\r\n }\r\n return this.cachedTemplate;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IGroupMap} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"groupBy\"\r\n})\r\nexport class GroupByPipe implements PipeTransform {\r\n\r\n transform(records: any[], column: string, map: IGroupMap = null): any {\r\n const groups = (records || []).reduce((result: any, item: any) => {\r\n const key = ObjectUtils.getValue(item, column) || \"\";\r\n const col = map ? (map[key] || \"\") : key;\r\n const group: any[] = result[col] || [];\r\n group.push(item);\r\n result[col] = group;\r\n return result;\r\n }, {});\r\n return Object.keys(groups).map(key => {\r\n return {group: key, items: groups[key]};\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"includes\"\r\n})\r\nexport class IncludesPipe implements PipeTransform {\r\n transform(array: any, ...values: any[]): boolean {\r\n return ObjectUtils.isArray(array) && values.some(v => array.includes(v));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"isType\"\r\n})\r\nexport class IsTypePipe implements PipeTransform {\r\n transform(value: any, type: string): any {\r\n return (typeof value) === type;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"join\"\r\n})\r\nexport class JoinPipe implements PipeTransform {\r\n\r\n transform(value: any, separator: string = \", \"): string {\r\n return (ObjectUtils.isArray(value))\r\n ? value.join(separator)\r\n : \"\";\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyKeys: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"keys\"\r\n})\r\nexport class KeysPipe implements PipeTransform {\r\n\r\n transform(value: any): any[] {\r\n if (!value) return emptyKeys;\r\n return ObjectUtils.isArray(value)\r\n ? Array.from(value.keys())\r\n : Object.keys(value);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultMapper(item) {\r\n return item;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"map\"\r\n})\r\nexport class MapPipe implements PipeTransform {\r\n transform(values: any[], mapper: any = defaultMapper, params: any = {}): any[] {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {\r\n return ObjectUtils.evaluate(mapper, {\r\n value: value,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return values.map((value, index) => mapperFunc(value, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"max\"\r\n})\r\nexport class MaxPipe implements PipeTransform {\r\n transform(value: any[], selector: any = null, params: any = {}): number {\r\n selector = selector || (item => <number>item);\r\n const maxSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(selector, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"min\"\r\n})\r\nexport class MinPipe implements PipeTransform {\r\n transform(value: any, selector: any = null, params: any = {}): number {\r\n selector = selector || (item => <number>item);\r\n const minSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(selector, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"pop\"\r\n})\r\nexport class PopPipe implements PipeTransform {\r\n\r\n transform(value: any[]): any {\r\n return !Array.isArray(value) ? null : Array.from(value).pop();\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultReducer(result) {\r\n return result;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"reduce\"\r\n})\r\nexport class ReducePipe implements PipeTransform {\r\n transform(values: any[], source: any, reducer: any = defaultReducer, params: any = {}): any {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {\r\n return ObjectUtils.evaluate(reducer, {\r\n result: result,\r\n value: value,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst empty: any = {};\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"remap\"\r\n})\r\nexport class RemapPipe implements PipeTransform {\r\n\r\n transform(map: any, source: any, defaultValue: string = \"key\"): any {\r\n if (!map) return empty;\r\n if (!source) return map;\r\n const remapped = ObjectUtils.filter({map: ObjectUtils.copy(map)}, (value, key, target) => {\r\n if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {\r\n target[key] = value.reduce((result, k) => {\r\n result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, {key: k, map: map, source: source}));\r\n return result;\r\n }, {});\r\n return false;\r\n }\r\n return true;\r\n });\r\n return remapped.map;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"replace\"\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n transform(value: string, from: string | RegExp, to: string): string {\r\n return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyArray: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"reverse\"\r\n})\r\nexport class ReversePipe implements PipeTransform {\r\n\r\n transform(value: any[]): any[] {\r\n if (!ObjectUtils.isArray(value)) return emptyArray;\r\n const result = [];\r\n for (let i = value.length - 1; i >= 0; i--) {\r\n result.push(value[i]);\r\n }\r\n return result;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"round\"\r\n})\r\nexport class RoundPipe implements PipeTransform {\r\n\r\n constructor(private formatter: FormatterService) {\r\n }\r\n\r\n transform(value: number, precision: number = 2, divider: number = 1): number {\r\n return this.formatter.roundNumber(value, precision, divider);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"safe\"\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n\r\n }\r\n\r\n transform(value: string, type: string = \"html\"): SafeHtml {\r\n switch (type) {\r\n case \"html\":\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case \"style\":\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case \"script\":\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case \"url\":\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case \"resourceUrl\":\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n default:\r\n throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"shift\"\r\n})\r\nexport class ShiftPipe implements PipeTransform {\r\n\r\n transform(value: any[]): any {\r\n return !Array.isArray(value) ? null : Array.from(value).shift();\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"split\"\r\n})\r\nexport class SplitPipe implements PipeTransform {\r\n\r\n transform(value: any, separator: string = \".\"): any[] {\r\n return `${value}`.split(separator);\r\n }\r\n}\r\n","import {ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ILanguageService, LANGUAGE_SERVICE, TranslationQuery} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Injectable()\r\n@Pipe({\r\n standalone: false,\r\n name: \"translate\",\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n\r\n private lang: string;\r\n private disabled: boolean;\r\n private query: TranslationQuery;\r\n private args: any[];\r\n private params: any;\r\n private lastValue: string;\r\n\r\n get currentLang(): string {\r\n return this.language.currentLanguage\r\n }\r\n\r\n constructor(readonly cdr: ChangeDetectorRef, @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n\r\n }\r\n\r\n transform(query: TranslationQuery, ...args: any[]): string {\r\n if (!query) return \"\";\r\n let dirty = false;\r\n const lang = this.currentLang;\r\n if (this.lang !== lang) {\r\n this.lang = lang;\r\n dirty = true;\r\n }\r\n const disabled = this.language.disableTranslations;\r\n if (this.disabled !== disabled) {\r\n this.disabled = disabled;\r\n dirty = true;\r\n }\r\n if (!ObjectUtils.equals(this.query, query)) {\r\n this.query = query;\r\n dirty = true;\r\n }\r\n if (!ObjectUtils.equals(this.args, args)) {\r\n this.args = args;\r\n this.params = null;\r\n if (ObjectUtils.isDefined(args[0]) && args.length) {\r\n if (typeof args[0] === \"string\" && args[0].length) {\r\n const validArgs: string = args[0]\r\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, `\"$2\":`)\r\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, `:\"$3\"`);\r\n try {\r\n this.params = JSON.parse(validArgs);\r\n } catch (e) {\r\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\r\n }\r\n } else if (typeof args[0] === \"object\" && !Array.isArray(args[0])) {\r\n this.params = args[0];\r\n }\r\n }\r\n dirty = true;\r\n }\r\n if (dirty) {\r\n if (typeof query === \"object\") {\r\n this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);\r\n return this.lastValue;\r\n }\r\n if (this.disabled) {\r\n this.lastValue = query;\r\n return this.lastValue;\r\n }\r\n this.language.getTranslation(query, this.params).then(value => {\r\n this.lastValue = value;\r\n if (!this.cdr[\"destroyed\"]) {\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n return this.lastValue;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyValues: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"values\"\r\n})\r\nexport class ValuesPipe implements PipeTransform {\r\n\r\n transform(value: any): any[] {\r\n if (!value) return emptyValues;\r\n return ObjectUtils.isArray(value)\r\n ? value\r\n : Object.keys(value).map(key => value[key]);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input, OnChanges,\r\n Output\r\n} from \"@angular/core\";\r\nimport {AsyncMethod, IAsyncMessage, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[__asmb__]\"\r\n})\r\nexport class AsyncMethodBase implements OnChanges {\r\n\r\n @Input() disabled: boolean;\r\n @Input() context: any;\r\n\r\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\r\n @Output() onError: EventEmitter<IAsyncMessage>;\r\n\r\n protected loading: boolean;\r\n\r\n @HostBinding(\"class.disabled\")\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding(\"class.loading\")\r\n get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n constructor(@Inject(TOASTER_SERVICE) protected toaster: IToasterService, protected cdr: ChangeDetectorRef) {\r\n this.onSuccess = new EventEmitter<IAsyncMessage>();\r\n this.onError = new EventEmitter<IAsyncMessage>();\r\n }\r\n\r\n protected getMethod(): AsyncMethod {\r\n return async () => null;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n click(ev: Event): void {\r\n if (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n if (this.disabled) return;\r\n this.callMethod();\r\n }\r\n\r\n callMethod(): boolean {\r\n if (this.loading) return true;\r\n this.loading = true;\r\n const method = this.getMethod();\r\n const result = !method ? null : method(this.context);\r\n if (!(result instanceof Promise)) {\r\n this.loading = false;\r\n return false;\r\n }\r\n result.then(result => {\r\n this.loading = false;\r\n if (result) {\r\n this.onSuccess.emit(result);\r\n this.toaster.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.loading = false;\r\n this.onError.emit(reason);\r\n this.toaster.error(reason.message, reason.context);\r\n }).finally(() => {\r\n if (!this.cdr[\"destroyed\"]) {\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n return true;\r\n }\r\n}\r\n","import {Directive, Input} from \"@angular/core\";\r\nimport {AsyncMethod} from \"../common-types\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[async-method]\",\r\n exportAs: \"async-method\"\r\n})\r\nexport class AsyncMethodDirective extends AsyncMethodBase {\r\n\r\n @Input(\"async-method\") method: AsyncMethod;\r\n\r\n protected getMethod(): AsyncMethod {\r\n return this.method;\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nconst defaultClass = \"default-image\";\r\nconst loadingClass = \"loading-image\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[background]\"\r\n})\r\nexport class BackgroundDirective implements OnChanges {\r\n\r\n @Input() background: string;\r\n @Input() backgroundSize: string;\r\n\r\n constructor(private http: HttpClient, private element: ElementRef, private renderer: Renderer2, private universal: UniversalService) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.universal.isServer) {\r\n this.setBackground(this.background);\r\n return;\r\n }\r\n this.renderer.removeClass(this.element.nativeElement, defaultClass);\r\n this.renderer.addClass(this.element.nativeElement, loadingClass);\r\n FileUtils.readDataFromUrl(this.http, this.background).then(url => {\r\n this.setBackground(url);\r\n }, () => {\r\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n this.renderer.addClass(this.element.nativeElement, defaultClass);\r\n });\r\n }\r\n\r\n private setBackground(url: string): void {\r\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n this.renderer.setStyle(this.element.nativeElement, \"background-image\", `url('${url}')`);\r\n if (!this.backgroundSize) return;\r\n this.renderer.setStyle(this.element.nativeElement, \"background-size\", this.backgroundSize);\r\n }\r\n}\r\n","import {Directive, Input, ViewContainerRef, OnChanges, SimpleChanges, ComponentRef, OnDestroy} from \"@angular/core\";\r\nimport {ComponentLoaderService} from \"../services/component-loader.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[loadComponent]\"\r\n})\r\nexport class ComponentLoaderDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() module: string;\r\n @Input(\"loadComponent\") selector: string;\r\n\r\n private cr: ComponentRef<any>;\r\n\r\n constructor(private vcr: ViewContainerRef, private loader: ComponentLoaderService) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.module || !this.selector) return;\r\n this.ngOnDestroy();\r\n this.loader.getComponentType({\r\n moduleId: this.module,\r\n selector: this.selector\r\n }).then(type => {\r\n this.cr = this.vcr.createComponent(type);\r\n this.cr.changeDetectorRef.markForCheck();\r\n this.cr.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.cr) return;\r\n this.cr.destroy();\r\n const index = this.vcr.indexOf(this.cr.hostView);\r\n if (index >= 0) {\r\n this.vcr.remove(index);\r\n }\r\n this.cr.hostView.destroy();\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {ITableTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"ng-template[column]\"\r\n})\r\n\r\nexport class DynamicTableTemplateDirective implements ITableTemplate {\r\n\r\n @Input() column: string | string[];\r\n @Input() pure: boolean;\r\n\r\n constructor(readonly ref: TemplateRef<any>) {\r\n }\r\n}\r\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef} from \"@angular/core\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[globalTemplate]\"\r\n})\r\nexport class GlobalTemplateDirective implements OnInit, OnDestroy {\r\n\r\n @Input(\"globalTemplate\") id: string;\r\n\r\n constructor(readonly globalTemplates: GlobalTemplateService,\r\n readonly template: TemplateRef<any>) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.globalTemplates.add(this.id, this.template);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.globalTemplates.remove(this.id);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ICON_SERVICE, IIconService} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[icon]\"\r\n})\r\nexport class IconDirective implements OnChanges, OnInit, OnDestroy {\r\n\r\n @Input() icon: string;\r\n @Input() activeIcon: string;\r\n @Input() active: boolean;\r\n @Output() activeChange: EventEmitter<boolean>;\r\n\r\n @HostBinding(\"class.active\")\r\n get isActive() {\r\n return this.active;\r\n }\r\n\r\n protected iconsLoaded: Subscription;\r\n\r\n constructor(private element: ElementRef, private renderer: Renderer2, @Inject(ICON_SERVICE) private icons: IIconService) {\r\n this.renderer.addClass(this.element.nativeElement, \"svg-icon\");\r\n this.activeChange = new EventEmitter<boolean>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.iconsLoaded)\r\n this.iconsLoaded.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.icon) {\r\n this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);\r\n this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);\r\n }\r\n this.changeIcon();\r\n }\r\n\r\n @HostListener(\"click\")\r\n click(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n this.changeIcon();\r\n }\r\n\r\n private changeIcon(): void {\r\n this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {\r\n if (this.icons.isDisabled) return;\r\n this.element.nativeElement.innerHTML = icon;\r\n });\r\n }\r\n}\r\n","import {\r\n Directive, DoCheck,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChange,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[ngxTemplateOutlet]\"\r\n})\r\nexport class NgxTemplateOutletDirective implements OnChanges, DoCheck {\r\n\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input() public context: Object;\r\n @Input() public additionalContext: Object;\r\n @Input() public ngxTemplateOutlet: TemplateRef<any>;\r\n\r\n private static hasContextShapeChanged(ctxChange: SimpleChange): boolean {\r\n const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\r\n const currCtxKeys = Object.keys(ctxChange.currentValue || {});\r\n\r\n if (prevCtxKeys.length === currCtxKeys.length) {\r\n for (const propName of currCtxKeys) {\r\n if (prevCtxKeys.indexOf(propName) === -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n constructor(private _viewContainerRef: ViewContainerRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const recreateView = this.shouldRecreateView(changes);\r\n if (recreateView) {\r\n if (this.viewRef)\r\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));\r\n if (this.ngxTemplateOutlet)\r\n this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});\r\n }\r\n this.ngDoCheck();\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (!this.viewRef) return;\r\n const context = this.viewRef.context;\r\n this.updateExistingContext(this.context, context);\r\n this.updateExistingContext(this.additionalContext, context);\r\n context.$implicit = context;\r\n }\r\n\r\n private shouldRecreateView(changes: SimpleChanges): boolean {\r\n const ctxChange = changes[\"context\"];\r\n const aCtxChange = changes[\"additionalContext\"];\r\n return !!changes[\"ngxTemplateOutlet\"]\r\n || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))\r\n || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));\r\n }\r\n\r\n private updateExistingContext(ctx: any, context: any): void {\r\n if (!ctx) return;\r\n let ctxProto = Object.getPrototypeOf(ctx);\r\n if (ctxProto == Object.prototype) {\r\n ctxProto = ctx;\r\n }\r\n const props = Object.getOwnPropertyNames(ctxProto);\r\n for (const propName of props) {\r\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n // Copy if its a getter and it is not $implicit\r\n if (desc.get && propName !== \"$implicit\") {\r\n Object.defineProperty(context, propName, desc);\r\n continue;\r\n }\r\n const func: Function = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;\r\n if (func && func !== ctxProto.constructor) {\r\n context[propName] = func;\r\n }\r\n }\r\n for (const propName of Object.keys(ctx)) {\r\n\r\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n if (desc && desc.get && !desc.set) continue;\r\n context[propName] = ctx[propName];\r\n }\r\n }\r\n}\r\n","import {Directive, EventEmitter, Input, NgZone, OnChanges, Output, SimpleChanges} from \"@angular/core\";\r\nimport {IPaginationData, ITimer, PaginationDataLoader, PaginationItemContext} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[pagination]\",\r\n exportAs: \"pagination\"\r\n})\r\nexport class PaginationDirective implements OnChanges {\r\n\r\n get total(): number {\r\n return this.data ? this.data.total : 0;\r\n }\r\n\r\n get items(): any[] {\r\n return this.data ? this.data.items : [];\r\n }\r\n\r\n @Input(\"pagination\") loader: PaginationDataLoader;\r\n @Input() page: number;\r\n @Input() itemsPerPage: number;\r\n @Input() updateTime: number;\r\n @Input() waitFor: Promise<any>;\r\n\r\n @Output() pageChange: EventEmitter<number>;\r\n @Output() onRefresh: EventEmitter<PaginationDirective>;\r\n\r\n maxPage: number;\r\n\r\n private data: IPaginationData;\r\n private updateTimer: ITimer;\r\n\r\n constructor(private zone: NgZone) {\r\n this.pageChange = new EventEmitter<number>();\r\n this.onRefresh = new EventEmitter<PaginationDirective>();\r\n this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!changes.loader && !changes.itemsPerPage && !changes.page) return;\r\n this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;\r\n this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;\r\n this.waitFor = this.waitFor || Promise.resolve(true);\r\n this.refresh();\r\n }\r\n\r\n refresh(time?: number): void {\r\n time = isNaN(time) || time <= 0 ? this.updateTime : time;\r\n this.updateTimer.time = isNaN(time) || time <= 0 ? 100 : time;\r\n Promise.resolve(this.waitFor).then(() => {\r\n this.updateTimer.run();\r\n });\r\n }\r\n\r\n paginate(page: number): void {\r\n this.page = page;\r\n this.pageChange.emit(page);\r\n this.refresh();\r\n }\r\n\r\n private loadData(): void {\r\n if (!this.loader) return;\r\n this.loader(this.page, this.itemsPerPage).then(data => {\r\n this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;\r\n this.data = data;\r\n const baseIndex = (this.page - 1) * this.itemsPerPage;\r\n const items = (data.items || []);\r\n data.items = items.map((item, index) => {\r\n const ix = baseIndex + index;\r\n return item instanceof PaginationItemContext\r\n ? item\r\n : new PaginationItemContext(item, items, items.length, index, ix);\r\n });\r\n if (this.page > this.maxPage) {\r\n this.paginate(this.maxPage);\r\n return;\r\n }\r\n this.zone.run(() => this.onRefresh.emit(this));\r\n });\r\n }\r\n}\r\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {PaginationDirective} from \"./pagination.directive\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[paginationItem]\"\r\n})\r\nexport class PaginationItemDirective implements OnInit, OnDestroy {\r\n\r\n private onRefresh: Subscription;\r\n\r\n constructor(private pagination: PaginationDirective, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.onRefresh.unsubscribe();\r\n }\r\n\r\n private renderView(): void {\r\n this.viewContainer.clear();\r\n this.pagination.items.forEach((item: any, ix: number) => {\r\n item.$implicit = item;\r\n item.rowIndex = ix;\r\n this.viewContainer.createEmbeddedView(this.templateRef, item);\r\n });\r\n }\r\n}\r\n","import {Directive, ViewContainerRef, TemplateRef, Input} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ResourceIfContext} from \"../common-types\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[resourceIf]\",\r\n exportAs: \"resourceIf\"\r\n})\r\nexport class ResourceIfDirective {\r\n\r\n private context: ResourceIfContext;\r\n private resource: string;\r\n\r\n @Input()\r\n set resourceIf(resource: string) {\r\n this.resource = resource;\r\n this.renderView();\r\n }\r\n\r\n get resourceIf(): string {\r\n return this.resource;\r\n }\r\n\r\n get url(): string {\r\n return this.context.url;\r\n }\r\n\r\n constructor(private http: HttpClient, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>, private universal: UniversalService) {\r\n this.context = new ResourceIfContext();\r\n }\r\n\r\n private renderView(): void {\r\n this.context = new ResourceIfContext();\r\n this.context.resource = this.resource;\r\n this.viewContainer.clear();\r\n if (this.universal.isBrowser && this.resource) {\r\n FileUtils.readDataFromUrl(this.http, this.resource).then(url => {\r\n this.context.url = url;\r\n this.viewContainer.createEmbeddedView(this.templateRef, this.context);\r\n }, console.log);\r\n }\r\n }\r\n}\r\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ITimer} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[sticky]\"\r\n})\r\nexport class StickyDirective implements OnInit, OnDestroy {\r\n\r\n @HostBinding(\"class.sticky\") isSticky: boolean;\r\n @HostBinding(\"class.sticky-update\") isUpdating: boolean;\r\n parentElement: HTMLElement;\r\n\r\n private updateTimer: ITimer;\r\n private eventForwarded: Subscription;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private events: EventsService, private element: ElementRef) {\r\n this.parentElement = this.element.nativeElement.parentElement;\r\n this.updateTimer = TimerUtils.createTimeout(() => {\r\n this.isUpdating = false;\r\n this.cdr.detectChanges();\r\n this.events.updateSticky(this.isSticky);\r\n }, 10);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.eventForwarded = this.events.eventForwarded.subscribe((e: Event) => {\r\n if (e && e.type === \"scroll\") this.updateSticky();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.eventForwarded.unsubscribe();\r\n }\r\n\r\n @HostListener(\"window:resize\")\r\n @HostListener(\"window:scroll\")\r\n updateSticky(): void {\r\n const distanceToTop = this.parentElement.getBoundingClientRect().top;\r\n this.isSticky = distanceToTop < 1;\r\n this.isUpdating = true;\r\n this.cdr.detectChanges();\r\n this.updateTimer.run();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[stickyClass]\"\r\n})\r\nexport class StickyClassDirective implements OnInit, OnDestroy {\r\n\r\n @Input() stickyClass: string;\r\n\r\n private stickyUpdated: Subscription;\r\n\r\n constructor(private events: EventsService, private element: ElementRef, private renderer: Renderer2) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {\r\n if (this.events.isSticky) {\r\n this.renderer.addClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n return;\r\n }\r\n this.renderer.removeClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stickyUpdated.unsubscribe();\r\n }\r\n}\r\n","import {Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output} from \"@angular/core\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dd],[drop-down]\",\r\n exportAs: \"dropdown\"\r\n})\r\nexport class DropdownDirective implements OnDestroy {\r\n\r\n protected static active: DropdownDirective = null;\r\n\r\n protected opened: boolean;\r\n protected disabled: boolean;\r\n\r\n @Input() closeInside: boolean;\r\n @Input() keyboardHandler: boolean;\r\n @Output() onShown: EventEmitter<DropdownDirective>;\r\n @Output() onHidden: EventEmitter<DropdownDirective>;\r\n @Output() onKeyboard: EventEmitter<KeyboardEvent>;\r\n\r\n private readonly onTap: (event: Event) => void;\r\n private readonly onKeyDown: (event: KeyboardEvent) => void;\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.element.nativeElement;\r\n }\r\n\r\n @HostBinding(\"class.open\")\r\n get isOpened(): boolean {\r\n return this.opened;\r\n }\r\n\r\n @HostBinding(\"class.disabled\")\r\n get getDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @Input()\r\n set isDisabled(value: boolean) {\r\n this.disabled = value;\r\n if (!value) return;\r\n this.hide();\r\n }\r\n\r\n constructor(protected element: ElementRef<HTMLElement>) {\r\n this.opened = false;\r\n this.disabled = false;\r\n this.closeInside = true;\r\n this.keyboardHandler = true;\r\n this.onShown = new EventEmitter<any>();\r\n this.onHidden = new EventEmitter<any>();\r\n this.onKeyboard = new EventEmitter<KeyboardEvent>();\r\n this.onTap = (event: Event): void => {\r\n const target = event.target as Node;\r\n if (event[\"button\"]) return;\r\n if (this.nativeElement && this.nativeElement.contains(target) && !this.closeInside) {\r\n return;\r\n }\r\n setTimeout(() => this.hide(), event.type == \"touchend\" ? 250 : 100);\r\n };\r\n this.onKeyDown = (event: KeyboardEvent): void => {\r\n const input = event.target as HTMLInputElement;\r\n const notInput = input && input.tagName !== \"INPUT\" && input.tagName !== \"TEXTAREA\";\r\n if (\"Tab\" === event.key || !input || notInput) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n if (\"Esc\" === event.key || \"Escape\" === event.key) {\r\n this.hide();\r\n return;\r\n }\r\n this.onKeyboard.emit(event);\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (DropdownDirective.active === this) {\r\n DropdownDirective.active = null;\r\n this.onHidden.emit(this);\r\n }\r\n }\r\n\r\n showEvent(): void {\r\n this.onShown.emit(this);\r\n }\r\n\r\n hideEvent(): void {\r\n this.onHidden.emit(this);\r\n }\r\n\r\n setProperty(name: string, value: any): void {\r\n const elem = this.element.nativeElement;\r\n if (!elem) return;\r\n elem.style.setProperty(`--${name}`, value);\r\n }\r\n\r\n @HostListener(\"keydown.enter\", [\"$event\"])\r\n @HostListener(\"keydown.space\", [\"$event\"])\r\n show($event?: Event): void {\r\n if (this.opened) return;\r\n if ($event) {\r\n if (!this.keyboardHandler) return;\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n }\r\n if (this.disabled) return;\r\n this.opened = true;\r\n this.showEvent();\r\n DropdownDirective.active = this;\r\n // Prevent toggle from selecting an item right after it is shown\r\n setTimeout(() => {\r\n if (!this.opened) return;\r\n document.addEventListener(\"touchend\", this.onTap);\r\n document.addEventListener(\"mouseup\", this.onTap);\r\n document.addEventListener(\"keydown\", this.onKeyDown);\r\n }, 10);\r\n }\r\n\r\n hide(): void {\r\n if (!this.opened) return;\r\n this.opened = false;\r\n this.hideEvent();\r\n document.removeEventListener(\"touchend\", this.onTap);\r\n document.removeEventListener(\"mouseup\", this.onTap);\r\n document.removeEventListener(\"keydown\", this.onKeyDown);\r\n // Prevent toggle from refocus itself after it is hidden because of another toggle\r\n setTimeout(() => {\r\n if (DropdownDirective.active === this) {\r\n DropdownDirective.active = null;\r\n this.nativeElement?.focus();\r\n }\r\n }, 10);\r\n }\r\n}\r\n","import {Directive, ElementRef, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dropdownContent]\",\r\n exportAs: \"dropdown-content\",\r\n})\r\nexport class DropdownContentDirective implements OnInit, OnDestroy {\r\n\r\n protected observer: ResizeObserver;\r\n\r\n constructor(readonly element: ElementRef<HTMLElement>,\r\n readonly dropdown: DropdownDirective) {\r\n }\r\n\r\n ngOnInit() {\r\n if (typeof ResizeObserver === \"undefined\") {\r\n return;\r\n }\r\n this.observer = new ResizeObserver(entries => {\r\n let width = 0;\r\n let height = 0;\r\n entries.forEach(entry => {\r\n if (!entry.contentRect) return;\r\n width = Math.max(width, entry.contentRect.width);\r\n height = Math.max(height, entry.contentRect.height);\r\n });\r\n this.dropdown.setProperty(\"list-width\", `${width}px`);\r\n this.dropdown.setProperty(\"list-height\", `${height}px`);\r\n });\r\n this.observer.observe(this.element.nativeElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.observer?.unobserve(this.element.nativeElement);\r\n }\r\n}\r\n","import {ChangeDetectorRef, Directive, ElementRef, Inject, Input} from \"@angular/core\";\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\nimport {AsyncMethod, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dropdownToggle]\",\r\n exportAs: \"dropdown-toggle\",\r\n})\r\nexport class DropdownToggleDirective extends AsyncMethodBase {\r\n\r\n @Input() beforeOpen: AsyncMethod;\r\n\r\n constructor(readonly element: ElementRef,\r\n readonly dropdown: DropdownDirective,\r\n @Inject(TOASTER_SERVICE) toaster: IToasterService,\r\n cdr: ChangeDetectorRef) {\r\n super(toaster, cdr);\r\n }\r\n\r\n protected getMethod(): AsyncMethod {\r\n return this.beforeOpen;\r\n }\r\n\r\n callMethod(): boolean {\r\n if (this.dropdown.isOpened) {\r\n this.dropdown.hide();\r\n } else if (!super.callMethod()) {\r\n this.dropdown.show();\r\n }\r\n return true;\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {StringUtils} from \"../utils/string.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[unorderedListItem]\"\r\n})\r\nexport class UnorderedListItemDirective implements OnChanges {\r\n\r\n @Input(\"unorderedListItem\") item: any;\r\n @Input() type: string;\r\n @Input() data: any;\r\n @Input() keyPrefix: string;\r\n @Input() listStyle: UnorderedListStyle;\r\n @Input() path: string;\r\n @Input() level: number;\r\n @Input() templates: UnorderedListTemplate[];\r\n @Input() defaultTemplates: UnorderedListTemplates;\r\n\r\n isArray: boolean;\r\n isObject: boolean;\r\n valueIsArray: boolean;\r\n valueIsObject: boolean;\r\n valueType: string;\r\n\r\n get elem(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private viewContainer: ViewContainerRef) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.templates || !this.defaultTemplates || !this.item) return;\r\n const promise = this.item.value instanceof Promise ? this.item.value : Promise.resolve(this.item.value);\r\n promise.then(value => {\r\n this.item.value = value;\r\n this.path = ObjectUtils.isNullOrUndefined(this.path) ? \"\" : this.path.toString();\r\n this.isArray = ObjectUtils.isArray(this.data);\r\n this.isObject = ObjectUtils.isObject(this.data);\r\n this.valueIsArray = ObjectUtils.isArray(this.item.value);\r\n this.valueIsObject = ObjectUtils.isObject(this.item.value);\r\n this.valueType = ObjectUtils.getType(this.item.value);\r\n const context: any = this;\r\n const template = this\r\n .templates\r\n .find(t => t.type == this.type && ObjectUtils.evaluate(t.selector, context))?.templateRef || this.defaultTemplates[this.type];\r\n // Set view\r\n this.viewContainer.clear();\r\n this.viewContainer.createEmbeddedView(template, context);\r\n // Set classes\r\n if (this.type !== \"item\") return;\r\n this.item.classList = [];\r\n this.isClass(\"is-array\", this.valueIsArray);\r\n this.isClass(\"is-object\", this.valueIsObject);\r\n this.isClass(\"is-value\", !this.valueIsObject && !this.valueIsArray);\r\n this.isClass(`type-${this.valueType}`);\r\n this.isClass(`path-${this.path.replace(/\\./g, \"-\")}`);\r\n this.isClass(`key-${this.item.key}`);\r\n }, reason => {\r\n console.log(\"Can't handle promise rejection\", reason);\r\n });\r\n }\r\n\r\n private isClass(className: string, value: boolean = true): void {\r\n if (!value) return;\r\n this.item.classList.push(className);\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {UnorderedListTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"ng-template[type][selector]\"\r\n})\r\n\r\nexport class UnorderedListTemplateDirective implements UnorderedListTemplate {\r\n\r\n @Input() type: string;\r\n @Input() selector: string;\r\n\r\n constructor(readonly templateRef: TemplateRef<any>) {\r\n\r\n }\r\n}\r\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\n\nimport {DragEventHandler} from \"../../common-types\";\nimport {checkTransitions} from \"../../utils/misc\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\n\ntype DropListItem = Record<string, any>;\n\ntype DropListId = string | number;\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"drop-list\",\n styleUrls: [\"./drop-list.component.scss\"],\n templateUrl: \"./drop-list.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropListComponent),\n multi: true,\n }],\n})\nexport class DropListComponent implements OnChanges, ControlValueAccessor {\n\n @Input() disabled: boolean;\n @Input() unique: boolean;\n @Input() message: string;\n @Input() idField: string;\n @Input() labelField: string;\n @Input() value: DropListId[];\n @Input() context: DropListItem[];\n @Input() prepareItem: (i: DropListItem) => void;\n @Input() checkFn: DragEventHandler<boolean, \"data\">;\n @Input() dropFn: DragEventHandler<boolean, \"data\">;\n\n @ContentChild(\"itemTemplate\")\n itemTemplate: TemplateRef<any>;\n\n onChange: Function;\n onTouched: Function;\n valueMap: Record<DropListId, DropListItem>;\n\n remove: (index: number) => void;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.disabled = false;\n this.unique = false;\n this.idField = \"id\";\n this.labelField = \"label\";\n this.value = [];\n this.context = [];\n this.prepareItem = () => {};\n this.checkFn = () => false;\n this.dropFn = () => false;\n this.valueMap = {};\n this.remove = index => {\n this.changeValue(this.value.filter((_, i) => i !== index));\n };\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, data: any) {\n ev.preventDefault();\n if (!elem || !ObjectUtils.isFunction(this.checkFn) || !this.checkFn({ev, elem, data})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem) {\n return;\n }\n const data = JSON.parse(ev.dataTransfer.getData(\"itemData\") || \"{}\");\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n if (elem && ObjectUtils.isFunction(this.dropFn) && this.dropFn({ev, elem, data})) {\n // If drop is handled from outside function\n return;\n }\n const id = data[this.idField] || data.id;\n this.changeValue(this.value.concat([id]));\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.context || changes.idField) {\n this.valueMap = this.context?.reduce((res, item) => {\n // In case this is a dynamic form option which stores real value under props\n item = Object.assign({}, item, item.props || {});\n // Prepare item\n this.prepareItem(item);\n\n const id = item[this.idField] || item.id;\n res[id] = item;\n return res;\n }, {}) || {};\n this.cdr.detectChanges();\n }\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.value = Array.isArray(obj) ? obj : this.value;\n this.cdr.detectChanges();\n }\n\n protected changeValue(value: DropListId[]): void {\n this.value = this.unique ? ArrayUtils.unique(value) : value;\n this.onChange?.(value);\n this.onTouched?.();\n }\n}\n","<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n","import {Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {StateService} from \"../../services/state.service\";\r\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\r\nimport {ICON_SERVICE, IIconService} from \"../../common-types\";\r\n\r\n@Component({\r\n standalone: false,\r\n selector: \"pagination-menu\",\r\n templateUrl: \"./pagination-menu.component.html\"\r\n})\r\nexport class PaginationMenuComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n @Input() maxSize: number;\r\n @Input() urlParam: string;\r\n @Input() directionLinks: boolean;\r\n @Input() boundaryLinks: boolean;\r\n\r\n pages: number[];\r\n firstLabel: string;\r\n prevLabel: string;\r\n nextLabel: string;\r\n lastLabel: string;\r\n\r\n get hasPrev(): boolean {\r\n return this.pagination.page > 1;\r\n }\r\n\r\n get hasNext(): boolean {\r\n return this.pagination.page < this.pagination.maxPage\r\n }\r\n\r\n private onRefresh: Subscription;\r\n\r\n constructor(public state: StateService, public pagination: PaginationDirective, @Inject(ICON_SERVICE) public icons: IIconService) {\r\n this.maxSize = 5;\r\n this.directionLinks = true;\r\n this.boundaryLinks = true;\r\n this.firstLabel = `<<`;\r\n this.prevLabel = `<`;\r\n this.nextLabel = `>`;\r\n this.lastLabel = `>>`;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.setPages());\r\n this.setIcon(\"firstLabel\", \"first-page\");\r\n this.setIcon(\"prevLabel\", \"prev-page\");\r\n this.setIcon(\"nextLabel\", \"next-page\");\r\n this.setIcon(\"lastLabel\", \"last-page\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.onRefresh) return;\r\n this.onRefresh.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.maxSize = isNaN(this.maxSize) || this.maxSize <= 0 ? 5 : this.maxSize;\r\n this.directionLinks = ObjectUtils.isBoolean(this.directionLinks) ? this.directionLinks : true;\r\n this.boundaryLinks = ObjectUtils.isBoolean(this.boundaryLinks) ? this.boundaryLinks : true;\r\n this.setPages();\r\n }\r\n\r\n paginate(page: number): void {\r\n if (this.pagination.page == page || this.pagination.maxPage < page || page < 1) return;\r\n if (!this.urlParam) {\r\n this.pagination.paginate(page);\r\n return;\r\n }\r\n const params = Object.assign({}, this.state.params);\r\n params[this.urlParam] = page.toString();\r\n const path = StateService.toPath(this.state.route, params);\r\n this.state.navigateByUrl(path);\r\n }\r\n\r\n protected setIcon(labelName: string, icon: string): void {\r\n this.icons.getIcon(icon, icon, false).then(i => {\r\n if (i == icon) return;\r\n this[labelName] = i;\r\n });\r\n }\r\n\r\n protected setPages(): number {\r\n if (!this.pagination) return;\r\n const totalPages = this.pagination.maxPage;\r\n let startPage = Math.max(this.pagination.page - Math.floor(this.maxSize / 2), 1);\r\n let endPage = startPage + this.maxSize - 1;\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = Math.max(endPage - this.maxSize + 1, 1);\r\n }\r\n const pages: number[] = [];\r\n for (let num = startPage; num <= endPage; num++) {\r\n pages.push(num);\r\n }\r\n this.pages = pages;\r\n }\r\n}\r\n","<div class=\"pagination-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(1)\" [innerHTML]=\"firstLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page - 1)\" [innerHTML]=\"prevLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\r\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page + 1)\" [innerHTML]=\"nextLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.maxPage)\" [innerHTML]=\"lastLabel | safe\"></a>\r\n </li>\r\n </ul>\r\n</div>\r\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren, ElementRef,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild, ViewEncapsulation\n} from \"@angular/core\";\n\nimport {\n DragEventHandler,\n IPaginationData,\n ITableColumns,\n ITableDataQuery,\n ITableTemplates,\n PaginationItemContext,\n TableColumns,\n TableDataLoader\n} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UniqueUtils} from \"../../utils/unique.utils\";\nimport {checkTransitions} from \"../../utils/misc\";\n\nimport {DynamicTableTemplateDirective} from \"../../directives/dynamic-table-template.directive\";\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\nimport {MathUtils} from \"../../utils/math.utils\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"dynamic-table\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n templateUrl: \"./dynamic-table.component.html\",\n})\nexport class DynamicTableComponent implements AfterContentInit, AfterViewInit, OnChanges {\n\n @Input() dataLoader: TableDataLoader;\n @Input() data: any[];\n @Input() selected: any;\n @Input() page: number;\n @Input() urlParam: string;\n @Input() parallelData: any[];\n @Input() columns: TableColumns;\n\n /**\n * Parameter for displaying a simple filter search box\n */\n @Input() showFilter: boolean;\n\n /**\n * Parameter for specifying a label for filter\n */\n @Input() filterLabel: string;\n\n /**\n * Parameter for specifying a placeholder for filter\n */\n @Input() placeholder: string;\n\n /**\n * Parameter for displaying an item per page selector dropdown with the specified numbers\n */\n @Input() showItems: number[];\n\n /**\n * Parameter for setting how many items should be displayed by default\n */\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() filterTime: number;\n @Input() maxPages: number;\n @Input() directionLinks: boolean;\n @Input() boundaryLinks: boolean;\n @Input() orderBy: string;\n @Input() orderDescending: boolean;\n @Input() testId: string;\n @Input() titlePrefix: string;\n\n @Input() dragStartFn: DragEventHandler;\n @Input() dragEnterFn: DragEventHandler;\n @Input() dropFn: DragEventHandler<void>;\n\n tableId: string;\n templates: ITableTemplates;\n filter: string;\n query: ITableDataQuery;\n hasQuery: boolean;\n realColumns: ITableColumns;\n cols: string[];\n\n get items(): any[] {\n return !this.pagination ? [] : this.pagination.items;\n }\n\n @ContentChild(\"rowTemplate\", {static: true})\n rowTemplate: TemplateRef<any>;\n\n @ContentChild(\"wrapperTemplate\", {static: true})\n wrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"columnsTemplate\", {static: true})\n columnsTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultRowTemplate\", {static: true})\n defaultRowTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultWrapperTemplate\", {static: true})\n defaultWrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"pagination\")\n protected pagination: PaginationDirective;\n\n @ContentChildren(DynamicTableTemplateDirective)\n protected templateDirectives: QueryList<DynamicTableTemplateDirective>;\n\n protected static compare(orderBy: string, a: PaginationItemContext, b: PaginationItemContext): number {\n a = a.item ? a.item[orderBy] : null;\n b = b.item ? b.item[orderBy] : null;\n return ObjectUtils.compare(a, b);\n }\n\n constructor(protected element: ElementRef<HTMLElement>) {\n this.dataLoader = this.loadLocalData;\n this.placeholder = \"\";\n this.tableId = UniqueUtils.uuid();\n this.templates = {};\n this.filter = \"\";\n this.query = {};\n this.hasQuery = false;\n this.testId = \"table\";\n this.titlePrefix = \"label\";\n this.realColumns = {};\n }\n\n setProperty(name: string, value: any): void {\n const elem = this.element.nativeElement;\n if (!elem) return;\n elem.style.setProperty(`--${name}`, value);\n }\n\n ngAfterContentInit(): void {\n this.templates = this.templateDirectives.reduce((result, directive) => {\n if (ObjectUtils.isArray(directive.column)) {\n directive.column.forEach(column => {\n result[column] = directive;\n });\n return result;\n }\n if (!ObjectUtils.isString(directive.column) || directive.column.length == 0) return result;\n result[directive.column] = directive;\n return result;\n }, {});\n }\n\n ngAfterViewInit(): void {\n this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columns) {\n const columns = changes.columns.currentValue || [];\n this.realColumns = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {\n if (!ObjectUtils.isString(column) || column.length == 0)\n return result;\n result[column] = {title: `${this.titlePrefix}.${column}`, sort: column};\n return result;\n }, {}) : Object.keys(columns).reduce((result, key) => {\n const value = columns[key];\n result[key] = !value || ObjectUtils.isString(value)\n ? {title: `${this.titlePrefix}.${key}`, sort: value}\n : value;\n return result;\n }, {} as ITableColumns);\n this.cols = Object.keys(this.realColumns);\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n this.query = {};\n this.setProperty(\"cell-width\", MathUtils.round(100 / this.cols.length, 4) + \"%\");\n }\n this.hasQuery = this.cols.some(col => this.realColumns[col].filter);\n if (changes.orderBy && this.realColumns && this.cols) {\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.orderBy = this.orderBy in sortable ? this.orderBy : sortable[0] || null;\n }\n if (!changes.data && !changes.parallelData && !changes.itemsPerPage && !changes.orderBy && !changes.orderDescending) return;\n this.refresh();\n }\n\n onDragStart(ev: DragEvent, elem: HTMLElement, item: any) {\n if (!elem || !item || !ObjectUtils.isFunction(this.dragStartFn) || !this.dragStartFn({ev, elem, item})) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n ev.dataTransfer.setData(\"itemData\", JSON.stringify(item));\n ev.dataTransfer.setData(item.type, \"type\");\n ev.dataTransfer.setData(item.id, \"id\");\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n if (!elem || !item || !ObjectUtils.isFunction(this.dragEnterFn) || !this.dragEnterFn({ev, elem, item})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem || !item || !ObjectUtils.isFunction(this.dropFn)) {\n return;\n }\n const source = JSON.parse(ev.dataTransfer.getData(\"itemData\"));\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n this.dropFn({ev, elem, item, source});\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n refresh(time?: number): void {\n if (!this.pagination) return;\n this.pagination.refresh(time);\n }\n\n setFilter(filter: string) {\n this.filter = filter;\n this.refresh(this.filterTime ?? 300);\n }\n\n setSorting(column: string, toggle: DropdownDirective) {\n if (toggle) {\n return;\n }\n this.orderDescending = column == this.orderBy && !this.orderDescending;\n this.orderBy = column;\n this.refresh();\n }\n\n setQueryValue(c: string, value: string | boolean) {\n const col = this.realColumns[c];\n if (!col?.filter) return;\n switch (col.filterType) {\n case \"enum\":\n const set = new Set((this.query[c] || []) as string[]);\n const val = `${value}`;\n if (set.has(val)) {\n set.delete(val);\n if (set.size === 0) {\n delete this.query[c];\n break;\n }\n } else {\n set.add(val);\n }\n this.query[c] = Array.from(set);\n break;\n case \"checkbox\":\n if (this.query[c]) {\n delete this.query[c];\n break;\n }\n this.query[c] = true;\n break;\n default:\n if (!value) {\n delete this.query[c];\n break;\n }\n this.query[c] = value;\n break;\n }\n this.refresh(this.filterTime ?? 300);\n }\n\n setItemsPerPage(count: number) {\n this.itemsPerPage = count;\n this.refresh();\n }\n\n loadData = (page: number, itemsPerPage: number): Promise<IPaginationData> => {\n const orderBy = this.realColumns[this.orderBy]?.sort;\n return this.dataLoader(page, itemsPerPage, orderBy, this.orderDescending, this.filter, this.query);\n };\n\n protected loadLocalData(page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean, filter: string): Promise<IPaginationData> {\n if (!this.data) {\n return Promise.resolve({\n total: 0,\n items: []\n });\n }\n const compare: (a: any, b: any) => number = orderDescending\n ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)\n : (a, b) => DynamicTableComponent.compare(orderBy, a, b);\n const from = (page - 1) * rowsPerPage;\n const dataLength = this.data.length;\n const length = Math.min(rowsPerPage, dataLength - from);\n const parallelData = this.parallelData || [];\n let data = this.data.map((item, ix) => {\n return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);\n });\n if (ObjectUtils.isString(filter) && filter.length > 0) {\n const filterRx = new RegExp(filter, \"gi\");\n data = data.filter(c => c.filter(filterRx));\n }\n const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);\n items.forEach((context, ix) => {\n context.index = from + ix;\n });\n return Promise.resolve({\n total: dataLength,\n items: items\n });\n }\n}\n","<ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\r\n <ng-template #defaultTemplate let-column=\"column\" let-item=\"item\">\r\n <span>{{ item[column] == undefined || item[column] == null ? '-' : item[column] }}</span>\r\n </ng-template>\r\n <ng-template #pureTemplate>\r\n <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\r\n </ng-template>\r\n <td [ngClass]=\"'column-' + column\"\r\n [attr.data-testid]=\"testId + '-' + column + '-' + context.rowIndex\" *ngIf=\"!template || !template.pure; else pureTemplate\">\r\n <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\" [context]=\"context\"></ng-container>\r\n </td>\r\n</ng-template>\r\n\r\n<ng-template #columnsTemplate let-context>\r\n <ng-container *ngFor=\"let column of cols\"\r\n [ngxTemplateOutlet]=\"columnTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"{\r\n template: templates[column],\r\n column: column\r\n }\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultRowTemplate let-context>\r\n <tr draggable=\"true\"\r\n #elem\r\n [ngClass]=\"{active: selected === context.item}\"\r\n (dragstart)=\"onDragStart($event, elem, context.item)\"\r\n (dragenter)=\"onDragEnter($event, elem, context.item)\"\r\n (dragleave)=\"onDragLeave($event, elem)\"\r\n (drop)=\"onDrop($event, elem, context.item)\">\r\n <ng-container [ngxTemplateOutlet]=\"columnsTemplate\" [context]=\"context\"></ng-container>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #headerTemplate let-column=\"column\" let-toggle=\"toggle\">\r\n <ng-template #defaultCol>\r\n <span>{{ realColumns[column].title | translate }}</span>\r\n </ng-template>\r\n <a *ngIf=\"realColumns[column].sort; else defaultCol\"\r\n [ngClass]=\"['sort', orderBy !== column ? '' : (orderDescending ? 'sort-desc' : 'sort-asc')]\"\r\n (click)=\"setSorting(column, toggle)\">\r\n <span>{{ realColumns[column].title | translate }}</span>\r\n </a>\r\n</ng-template>\r\n\r\n<div class=\"dynamic-table\" #pagination=\"pagination\" [pagination]=\"loadData\" [page]=\"page\" [itemsPerPage]=\"itemsPerPage\" [updateTime]=\"updateTime\">\r\n <div class=\"table-features-row\">\r\n <ng-content select=\"[table-features-before]\"></ng-content>\r\n <div class=\"table-input-wrap table-search-filter\" *ngIf=\"showFilter\">\r\n <label *ngIf=\"filterLabel\" [attr.for]=\"tableId\">\r\n {{ filterLabel | translate }}\r\n </label>\r\n <input type=\"text\"\r\n class=\"search-input\"\r\n [attr.id]=\"tableId\"\r\n [attr.data-testid]=\"testId + '-filter-input'\"\r\n [placeholder]=\"placeholder | translate\"\r\n [ngModel]=\"filter\"\r\n (ngModelChange)=\"setFilter($event)\"/>\r\n </div>\r\n <div class=\"table-dropdown table-sort-dropdown\" dd #sortDd=\"dropdown\" *ngIf=\"orderBy\">\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: orderBy, toggle: sortDd}\"></ng-container>\r\n </div>\r\n <ul dropdownContent>\r\n <ng-container *ngFor=\"let column of cols\">\r\n <li [ngClass]=\"'sort-column sort-' + column\" *ngIf=\"realColumns[column].sort\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"table-input-wrap table-items-count\" *ngIf=\"showItems\">\r\n <label>\r\n {{ 'label.items.before' | translate }}\r\n </label>\r\n <div class=\"table-dropdown normal-dropdown\" dd>\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <a class=\"dropdown-link\">{{ itemsPerPage }}</a>\r\n </div>\r\n <ul dropdownContent>\r\n <ng-container *ngFor=\"let count of showItems\">\r\n <li [ngClass]=\"'item-count count-' + count\" (click)=\"setItemsPerPage(count)\">\r\n {{ count }}\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <label>\r\n {{ 'label.items.after' | translate }}\r\n </label>\r\n </div>\r\n <ng-content select=\"[table-features-after]\"></ng-content>\r\n </div>\r\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n <div class=\"table-responsive\">\r\n <ng-template #defaultWrapperTemplate>\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of cols\" [ngClass]=\"'header-column column-' + column\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"hasQuery\">\r\n <th *ngFor=\"let column of cols\" [ngClass]=\"['column-' + column, 'filter-column']\">\r\n <ng-container *ngIf=\"realColumns[column].filter\" [ngSwitch]=\"realColumns[column].filterType\">\r\n <ng-container *ngSwitchCase=\"'enum'\">\r\n <ng-template #optionItem let-option=\"option\">\r\n {{ (realColumns[column].enumPrefix ? realColumns[column].enumPrefix + '.' + option : option) | translate }}\r\n </ng-template>\r\n <div class=\"table-dropdown normal-dropdown\" dd [closeInside]=\"false\">\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <a [ngClass]=\"'dropdown-link filter-link-' + column\">\r\n <span class=\"toggle-placeholder\" *ngIf=\"!query[column]\">\r\n {{ realColumns[column].title | translate }}\r\n </span>\r\n <span [ngClass]=\"['option-' + option, column + '-option-' + option, option]\"\r\n *ngFor=\"let option of query[column] | values; let ix = index\">\r\n <ng-container *ngIf=\"ix > 0\">, </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n </span>\r\n </a>\r\n </div>\r\n <ul dropdownContent>\r\n <li [ngClass]=\"[column + '-option', 'option-' + option, option]\"\r\n (click)=\"setQueryValue(column, option)\"\r\n *ngFor=\"let option of realColumns[column].enum\">\r\n <a [ngClass]=\"'toggle-link-' + column\">\r\n <input type=\"checkbox\" [checked]=\"query[column] | includes: option\">\r\n <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <input type=\"checkbox\"\r\n [attr.data-testid]=\"testId + '-filter-' + column\"\r\n [placeholder]=\"realColumns[column].title | translate\"\r\n [ngModel]=\"query[column]\"\r\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <input class=\"search-input\"\r\n type=\"text\"\r\n [attr.data-testid]=\"testId + '-filter-' + column\"\r\n [placeholder]=\"realColumns[column].title | translate\"\r\n [ngModel]=\"query[column]\"\r\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *paginationItem=\"let context\"\r\n [ngxTemplateOutlet]=\"rowTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"this\"></ng-container>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n\r\n <div class=\"table-wrapper\">\r\n <ng-content select=\"[table-top]\"></ng-content>\r\n <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n [context]=\"this\"></ng-container>\r\n <ng-content select=\"[table-bottom]\"></ng-content>\r\n </div>\r\n </div>\r\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n</div>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"fake-module-component\",\r\n template: \"\",\r\n})\r\nexport class FakeModuleComponent {\r\n\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges, TemplateRef, ViewChild\r\n} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../../common-types\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {UnorderedListTemplateDirective} from \"../../directives/unordered-list-template.directive\";\r\n\r\n@Component({\r\n standalone: false,\r\n selector: \"unordered-list\",\r\n templateUrl: \"./unordered-list.component.html\"\r\n})\r\nexport class UnorderedListComponent implements OnChanges, AfterContentInit, AfterViewInit {\r\n\r\n @Input() data: any;\r\n @Input() keyPrefix: string;\r\n @Input() listStyle: UnorderedListStyle;\r\n @Input() path: string;\r\n @Input() level: number;\r\n @Input() templates: UnorderedListTemplate[];\r\n\r\n isArray: boolean;\r\n isObject: boolean;\r\n defaultTemplates: UnorderedListTemplates;\r\n\r\n @ContentChildren(UnorderedListTemplateDirective)\r\n private templateDirectives: QueryList<UnorderedListTemplateDirective>;\r\n\r\n @ViewChild(\"defaultKeyTemplate\")\r\n private defaultKeyTemplate: TemplateRef<any>;\r\n @ViewChild(\"defaultValueTemplate\")\r\n private defaultValueTemplate: TemplateRef<any>;\r\n @ViewChild(\"defaultItemTemplate\")\r\n private defaultItemTemplate: TemplateRef<any>;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n this.keyPrefix = \"\";\r\n this.listStyle = \"table\";\r\n this.path = \"\";\r\n this.level = 0;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.isArray = ObjectUtils.isArray(this.data);\r\n this.isObject = ObjectUtils.isObject(this.data);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n const templates = this.templateDirectives.toArray();\r\n this.templates = this.templates ? this.templates.concat(templates) : templates;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.defaultTemplates = {\r\n key: this.defaultKeyTemplate,\r\n value: this.defaultValueTemplate,\r\n item: this.defaultItemTemplate\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" let-isArray=\"isArray\" #defaultKeyTemplate>\r\n {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\r\n</ng-template>\r\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-val=\"item.value\" let-path=\"path\"\r\n let-templates=\"templates\" let-isObject=\"valueIsObject\" let-isArray=\"valueIsArray\" #defaultValueTemplate>\r\n <ng-template #value>\r\n <span [innerHTML]=\"val\"></span>\r\n </ng-template>\r\n <unordered-list [data]=\"val\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level + 1\"\r\n [templates]=\"templates\"\r\n *ngIf=\"(isObject || isArray); else value\"></unordered-list>\r\n</ng-template>\r\n<ng-template let-item=\"item\" let-data=\"data\" let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-path=\"path\" let-level=\"level\" let-templates=\"templates\" #defaultItemTemplate>\r\n <ng-template #itemKey>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"key\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-template #itemValue>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"value\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-container *ngIf=\"!isArray\">\r\n <th *ngIf=\"listStyle == 'table'; else itemKey\">\r\n <ng-container [ngTemplateOutlet]=\"itemKey\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <td *ngIf=\"listStyle == 'table'; else itemValue\">\r\n <ng-container [ngTemplateOutlet]=\"itemValue\"></ng-container>\r\n </td>\r\n</ng-template>\r\n<ng-template #value>\r\n <span [innerHTML]=\"data\"></span>\r\n</ng-template>\r\n<ng-container *ngIf=\"(isObject || isArray); else value\" [ngSwitch]=\"listStyle\">\r\n <ul [ngClass]=\"'level-' + level\" *ngSwitchCase=\"'list'\">\r\n <li *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </li>\r\n </ul>\r\n <table [ngClass]=\"'level-' + level\" *ngSwitchDefault>\r\n <tr *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </tr>\r\n </table>\r\n</ng-container>\r\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild, EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges, Output,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {HttpErrorResponse, HttpEventType, HttpResponse} from \"@angular/common/http\";\nimport {lastValueFrom} from \"rxjs\";\n\nimport {\n API_SERVICE,\n IApiService,\n IFileUploadProcess,\n IFileUploadResult,\n IToasterService,\n TOASTER_SERVICE\n} from \"../../common-types\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {FileUtils} from \"../../utils/file.utils\";\nimport {BaseHttpClient} from \"../../services/base-http.client\";\n\n@Component({\n standalone: false,\n selector: \"upload\",\n styleUrls: [\"./upload.component.scss\"],\n templateUrl: \"./upload.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadComponent),\n multi: true,\n }],\n})\nexport class UploadComponent implements ControlValueAccessor, OnChanges {\n\n @Input() value: string | string[];\n @Input() disabled: boolean;\n @Input() accept: string | string[];\n @Input() baseUrl: string;\n @Input() message: string;\n @Input() multiple: boolean;\n @Input() buttonText: string;\n @Input() makeUpload: (f: File) => any;\n @Input() preProcess: (f: File) => boolean;\n @Output() onUploaded: EventEmitter<IFileUploadResult[]>;\n @Output() onRemove: EventEmitter<string[]>;\n\n acceptAttr: string;\n isImage: boolean;\n dropAllowed: boolean;\n processing: IFileUploadProcess[];\n\n onChange: Function;\n onTouched: Function;\n remove: (index?: number) => void;\n\n @ContentChild(\"uploadButton\")\n uploadButton: TemplateRef<any>;\n\n protected fileImageCache: any[];\n protected acceptTypes: string[];\n\n get http(): BaseHttpClient {\n return this.api.client as BaseHttpClient;\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n @Inject(API_SERVICE) private api: IApiService,\n @Inject(TOASTER_SERVICE) private toaster: IToasterService\n ) {\n this.value = null;\n this.disabled = false;\n this.fileImageCache = [];\n this.buttonText = \"button.select-files\";\n this.onUploaded = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n this.remove = index => {\n if (this.multiple) {\n const current = Array.from(this.value || []);\n current.splice(index, 1);\n this.writeValue(current);\n this.onRemove.emit(current);\n }\n this.writeValue(null);\n this.onRemove.emit([]);\n };\n }\n\n onDragEnter(ev: DragEvent): void {\n const types = Array.from(ev.dataTransfer.items || [])\n .filter(t => t.kind == \"file\")\n .map(t => t.type.toLowerCase());\n types.push(...Array.from(ev.dataTransfer.files || []).map(f => f.type.toLowerCase()));\n if (!types.some(type => ArrayUtils.has(this.acceptTypes, type))) {\n ev.preventDefault();\n return;\n }\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n }\n\n onDrop(): void {\n this.dropAllowed = false;\n }\n\n ngOnChanges(): void {\n this.accept = this.accept || \"\";\n this.acceptAttr = ObjectUtils.isString(this.accept) ? this.accept : this.accept.join(\",\");\n this.acceptTypes = ObjectUtils.isString(this.accept) && this.accept.length > 0\n ? this.accept.toLowerCase().split(\",\")\n : (ObjectUtils.isArray(this.accept) ? this.accept : []);\n this.isImage = /(png|jpg|jpeg|webp|gif)/gi.test(this.acceptAttr);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string | string[]) {\n this.value = value;\n this.cdr.markForCheck();\n this.onChange(this.value);\n this.onTouched(this.value);\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n onInputClick(ev: MouseEvent): void {\n const top = document.elementFromPoint(ev.clientX, ev.clientY);\n if (ev.target !== top && !this.processing) return;\n ev.preventDefault();\n }\n\n onInputChange(ev: Event): void {\n const input = ev.currentTarget as HTMLInputElement;\n if (this.processing) {\n input.value = \"\";\n return;\n }\n const length = input.files.length;\n if (length == 0) {\n this.writeValue(this.multiple ? [] : null);\n return;\n }\n const files: File[] = [];\n for (let i = 0; i <length; i++) {\n const file = input.files.item(i);\n if (this.acceptTypes.length == 0) {\n files.push(file);\n continue;\n }\n const type = file.type.toLowerCase();\n const ext = FileUtils.getExtension(file);\n if (!ArrayUtils.has(this.acceptTypes, type, ext)) continue;\n files.push(file);\n }\n if (files.length == 0) {\n this.toaster.error(\"message.invalid-files.error\");\n return;\n }\n this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {\n const ids = results.map(t => t._id || t.id);\n this.writeValue(this.multiple ? ids : (ids[0] || null));\n this.onUploaded.emit(results);\n });\n input.value = \"\";\n }\n\n getUrl(image: any): string {\n if (ObjectUtils.isBlob(image)) {\n let cache = this.fileImageCache.find(t => t.file == image);\n if (!cache) {\n cache = {file: image, url: URL.createObjectURL(image)};\n this.fileImageCache.push(cache);\n }\n return cache.url;\n }\n const url = !image ? null : image.imageUrl || image;\n if (!ObjectUtils.isString(url)) return null;\n if (url.startsWith(\"data:\")) return url;\n const baseUrl = this.baseUrl;\n const query = this.isImage ? `?type=preview` : ``;\n if (!baseUrl) {\n return `${url}${query}`;\n }\n return `${baseUrl}/${url}${query}`;\n }\n\n getBgUrl(image: any): string {\n return `url('${this.getUrl(image)}')`;\n }\n\n async processFiles(files: File[]): Promise<IFileUploadResult[]> {\n if (this.processing) return null;\n const headers = this.http.makeHeaders();\n const makeUpload = ObjectUtils.isFunction(this.makeUpload) ? this.makeUpload : f => {\n const form = new FormData();\n form.append(\"file\", f);\n return form;\n };\n const preProcess = ObjectUtils.isFunction(this.preProcess) ? this.preProcess : () => {\n return false;\n };\n this.processing = files.filter(f => !preProcess(f)).map(file => {\n const process: IFileUploadProcess = {\n file,\n progress: 0\n };\n process.promise = FileUtils.getFilePreview(file).then(preview => {\n process.preview = `url('${preview}')`;\n this.cdr.detectChanges();\n });\n return process;\n });\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const requests = this.processing.map(async p => {\n await p.promise;\n const request = this.http.post(baseUrl, makeUpload(p.file), {\n headers, observe: \"events\", reportProgress: true\n });\n request.subscribe(value => {\n if (value.type === HttpEventType.UploadProgress) {\n p.progress = Math.round(value.loaded / value.total * 100);\n this.cdr.detectChanges();\n }\n });\n return lastValueFrom(request)\n .then((res: HttpResponse<any>) => {\n const body = res.body;\n if (!ObjectUtils.isObject(body)) {\n return {id: body};\n }\n return body;\n }, (e: HttpErrorResponse) => {\n this.toaster.error(e.error?.message || e.message || `Can\"t upload file: ${p.file.name}`);\n return null;\n });\n });\n const results = await Promise.all(requests);\n this.processing = null;\n this.cdr.detectChanges();\n return results.filter(r => r !== null);\n }\n}\n","<ng-template #defaultUploadBtn let-loading=\"loading\">\r\n <a class=\"btn btn-primary\" [ngClass]=\"{loading: loading}\">\r\n {{ buttonText | translate }}\r\n </a>\r\n</ng-template>\r\n<ng-template #defaultDownloadBtn let-loading=\"loading\">\r\n <a class=\"btn btn-primary\" [ngClass]=\"{loading: loading}\">\r\n {{ 'button.download' | translate }}\r\n </a>\r\n</ng-template>\r\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\r\n <div class=\"upload-item\" [ngStyle]=\"!isImage ? {} : {backgroundImage: getBgUrl(item)}\">\r\n <a class=\"remove-item-btn\" (click)=\"remove(index)\"></a>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"upload\">\r\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\r\n <input type=\"file\"\r\n #input\r\n [multiple]=\"multiple\"\r\n [accept]=\"acceptAttr\"\r\n (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDrop()\"\r\n (drop)=\"onDrop()\"\r\n (click)=\"onInputClick($event)\"\r\n (blur)=\"onTouched($event)\"\r\n (change)=\"onInputChange($event)\"/>\r\n <div class=\"upload-message\"\r\n [ngClass]=\"{'has-value': value?.length}\"\r\n [innerHTML]=\"message | translate | safe:'html'\"\r\n *ngIf=\"message\">\r\n </div>\r\n <div class=\"upload-container\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\r\n *ngIf=\"!multiple && value\">\r\n </ng-container>\r\n <ng-container *ngIf=\"multiple\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: image, index: ix}\"\r\n *ngFor=\"let image of value; let ix = index\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"upload-item\"\r\n [ngStyle]=\"!proc.preview ? {} : {backgroundImage: proc.preview}\"\r\n *ngFor=\"let proc of processing\">\r\n <div class=\"upload-progress\">\r\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\r\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"upload-btn\" (click)=\"input.click()\">\r\n <ng-container [ngTemplateOutlet]=\"uploadButton || defaultUploadBtn\"\r\n [ngTemplateOutletContext]=\"{loading: !!processing, buttonText: buttonText}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import {ErrorHandler} from \"@angular/core\";\r\nimport {EVENT_MANAGER_PLUGINS} from \"@angular/platform-browser\";\r\nimport {UrlSerializer} from \"@angular/router\";\r\nimport {DeviceDetectorService} from \"ngx-device-detector\";\r\n\r\nimport {IConfigService} from \"./common-types\";\r\n\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {AclService} from \"./services/acl.service\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {BaseHttpClient} from \"./services/base-http.client\";\r\nimport {BaseHttpService} from \"./services/base-http.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ErrorHandlerService} from \"./services/error-handler.service\";\r\nimport {EventsService} from \"./services/events.service\";\r\nimport {FormatterService} from \"./services/formatter.service\";\r\nimport {GlobalTemplateService} from \"./services/global-template.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {LanguageService} from \"./services/language.service\";\r\nimport {LocalHttpService} from \"./services/local-http.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {SocketService} from \"./services/socket.service\";\r\nimport {OpenApiService} from \"./services/open-api.service\";\r\nimport {StateService} from \"./services/state.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {StorageService} from \"./services/storage.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {ComponentLoaderService} from \"./services/component-loader.service\";\r\nimport {TranslatedUrlSerializer} from \"./services/translated-url.serializer\";\r\nimport {UniversalService} from \"./services/universal.service\";\r\nimport {WasmService} from \"./services/wasm.service\";\r\nimport {DragDropEventPlugin} from \"./plugins/drag-drop-event.plugin\";\r\nimport {ResizeEventPlugin} from \"./plugins/resize-event.plugin\";\r\nimport {ScrollEventPlugin} from \"./plugins/scroll-event.plugin\";\r\nimport {AsyncMethodBase} from \"./directives/async-method.base\";\r\nimport {AsyncMethodDirective} from \"./directives/async-method.directive\";\r\nimport {BackgroundDirective} from \"./directives/background.directive\";\r\nimport {ComponentLoaderDirective} from \"./directives/component-loader.directive\";\r\nimport {DynamicTableTemplateDirective} from \"./directives/dynamic-table-template.directive\";\r\nimport {GlobalTemplateDirective} from \"./directives/global-template.directive\";\r\nimport {IconDirective} from \"./directives/icon.directive\";\r\nimport {NgxTemplateOutletDirective} from \"./directives/ngx-template-outlet.directive\";\r\nimport {PaginationDirective} from \"./directives/pagination.directive\";\r\nimport {PaginationItemDirective} from \"./directives/pagination-item.directive\";\r\nimport {ResourceIfDirective} from \"./directives/resource-if.directive\";\r\nimport {StickyDirective} from \"./directives/sticky.directive\";\r\nimport {StickyClassDirective} from \"./directives/sticky-class.directive\";\r\nimport {DropdownDirective} from \"./directives/dropdown.directive\";\r\nimport {DropdownContentDirective} from \"./directives/dropdown-content.directive\";\r\nimport {DropdownToggleDirective} from \"./directives/dropdown-toggle.directive\";\r\nimport {UnorderedListItemDirective} from \"./directives/unordered-list-item.directive\";\r\nimport {UnorderedListTemplateDirective} from \"./directives/unordered-list-template.directive\";\r\n\r\nimport {ChunkPipe} from \"./pipes/chunk.pipe\";\r\nimport {EntriesPipe} from \"./pipes/entries.pipe\";\r\nimport {ExtraItemPropertiesPipe} from \"./pipes/extra-item-properties.pipe\";\r\nimport {FilterPipe} from \"./pipes/filter.pipe\";\r\nimport {FindPipe} from \"./pipes/find.pipe\";\r\nimport {FormatNumberPipe} from \"./pipes/format-number.pipe\";\r\nimport {GetOffsetPipe} from \"./pipes/get-offset.pipe\";\r\nimport {GetTypePipe} from \"./pipes/get-type.pipe\";\r\nimport {GetValuePipe} from \"./pipes/get-value.pipe\";\r\nimport {GlobalTemplatePipe} from \"./pipes/global-template.pipe\";\r\nimport {GroupByPipe} from \"./pipes/group-by.pipe\";\r\nimport {IncludesPipe} from \"./pipes/includes.pipe\";\r\nimport {IsTypePipe} from \"./pipes/is-type.pipe\";\r\nimport {JoinPipe} from \"./pipes/join.pipe\";\r\nimport {KeysPipe} from \"./pipes/keys.pipe\";\r\nimport {MapPipe} from \"./pipes/map.pipe\";\r\nimport {MaxPipe} from \"./pipes/max.pipe\";\r\nimport {MinPipe} from \"./pipes/min.pipe\";\r\nimport {PopPipe} from \"./pipes/pop.pipe\";\r\nimport {ReducePipe} from \"./pipes/reduce.pipe\";\r\nimport {RemapPipe} from \"./pipes/remap.pipe\";\r\nimport {ReplacePipe} from \"./pipes/replace.pipe\";\r\nimport {ReversePipe} from \"./pipes/reverse.pipe\";\r\nimport {RoundPipe} from \"./pipes/round.pipe\";\r\nimport {SafeHtmlPipe} from \"./pipes/safe-html.pipe\";\r\nimport {ShiftPipe} from \"./pipes/shift.pipe\";\r\nimport {SplitPipe} from \"./pipes/split.pipe\";\r\nimport {TranslatePipe} from \"./pipes/translate.pipe\";\r\nimport {ValuesPipe} from \"./pipes/values.pipe\";\r\n\r\nimport {DropListComponent} from \"./components/drop-list/drop-list.component\";\r\nimport {DynamicTableComponent} from \"./components/dynamic-table/dynamic-table.component\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\nimport {PaginationMenuComponent} from \"./components/pagination-menu/pagination-menu.component\";\r\nimport {UnorderedListComponent} from \"./components/unordered-list/unordered-list.component\";\r\nimport {UploadComponent} from \"./components/upload/upload.component\";\r\n\r\n// --- Pipes ---\r\nexport const pipes = [\r\n ChunkPipe,\r\n EntriesPipe,\r\n ExtraItemPropertiesPipe,\r\n FilterPipe,\r\n FindPipe,\r\n FormatNumberPipe,\r\n GetOffsetPipe,\r\n GetTypePipe,\r\n GetValuePipe,\r\n GlobalTemplatePipe,\r\n GroupByPipe,\r\n IncludesPipe,\r\n IsTypePipe,\r\n JoinPipe,\r\n KeysPipe,\r\n MapPipe,\r\n MaxPipe,\r\n MinPipe,\r\n PopPipe,\r\n ReducePipe,\r\n RemapPipe,\r\n ReplacePipe,\r\n ReversePipe,\r\n RoundPipe,\r\n SafeHtmlPipe,\r\n ShiftPipe,\r\n SplitPipe,\r\n TranslatePipe,\r\n ValuesPipe\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n AsyncMethodBase,\r\n AsyncMethodDirective,\r\n BackgroundDirective,\r\n ComponentLoaderDirective,\r\n DynamicTableTemplateDirective,\r\n GlobalTemplateDirective,\r\n IconDirective,\r\n NgxTemplateOutletDirective,\r\n PaginationDirective,\r\n PaginationItemDirective,\r\n ResourceIfDirective,\r\n StickyDirective,\r\n StickyClassDirective,\r\n DropdownDirective,\r\n DropdownContentDirective,\r\n DropdownToggleDirective,\r\n UnorderedListItemDirective,\r\n UnorderedListTemplateDirective\r\n];\r\n\r\n// --- Components ---\r\nexport const components = [\r\n DropListComponent,\r\n DynamicTableComponent,\r\n FakeModuleComponent,\r\n PaginationMenuComponent,\r\n UnorderedListComponent,\r\n UploadComponent\r\n];\r\n\r\nexport const providers = [\r\n ...pipes,\r\n BaseHttpClient,\r\n BaseHttpService,\r\n AuthGuard,\r\n AclService,\r\n ApiService,\r\n StaticAuthService,\r\n ConfigService,\r\n BaseDialogService,\r\n ErrorHandlerService,\r\n EventsService,\r\n FormatterService,\r\n GlobalTemplateService,\r\n IconService,\r\n LanguageService,\r\n LocalHttpService,\r\n OpenApiService,\r\n PromiseService,\r\n SocketService,\r\n StateService,\r\n StaticLanguageService,\r\n StorageService,\r\n BaseToasterService,\r\n ComponentLoaderService,\r\n TranslatedUrlSerializer,\r\n UniversalService,\r\n WasmService,\r\n DeviceDetectorService,\r\n GlobalTemplateService,\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: DragDropEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: ResizeEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: ScrollEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: UrlSerializer,\r\n useExisting: TranslatedUrlSerializer\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useExisting: ErrorHandlerService\r\n }\r\n\r\n];\r\n\r\nexport function loadConfig(config: IConfigService): any {\r\n return config.load;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {IWasi, IWasmExports, TypedArray} from \"../common-types\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class Wasi implements IWasi {\r\n\r\n protected env: {[key: string]: string};\r\n protected instantiated: boolean;\r\n protected wasi: any;\r\n protected wasm: IWasmExports;\r\n protected envStrings: string[];\r\n\r\n constructor() {\r\n this.env = {};\r\n this.instantiated = false;\r\n this.wasi = [\r\n \"emscripten_notify_memory_growth\",\r\n \"proc_exit\",\r\n \"environ_get\",\r\n \"environ_sizes_get\",\r\n \"fd_close\",\r\n \"fd_write\",\r\n \"fd_read\",\r\n \"fd_seek\",\r\n ].reduce((res, key) => {\r\n if (typeof this[key] === \"function\") {\r\n res[key] = this[key].bind(this);\r\n }\r\n return res;\r\n }, {});\r\n }\r\n\r\n instantiate(bytes: ArrayBuffer): Promise<IWasmExports> {\r\n if (this.instantiated) {\r\n throw new Error(\"WASI already instantiated\");\r\n }\r\n this.instantiated = true;\r\n return WebAssembly.instantiate(bytes, {\r\n wasi_snapshot_preview1: this.wasi,\r\n env: this.wasi\r\n }).then(module => {\r\n const exports = module.instance.exports as any;\r\n this.wasm = {\r\n ...exports,\r\n writeArrayToMemory: (array: TypedArray) => {\r\n const bytes = array.length * array.BYTES_PER_ELEMENT;\r\n const pointer = exports.malloc(bytes);\r\n const ctr = array.constructor as any;\r\n const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);\r\n heapArray.set(array);\r\n return pointer;\r\n },\r\n readArrayFromMemory: (pointer: number, array: TypedArray) => {\r\n const ctr = array.constructor as any;\r\n const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);\r\n array.set(heapArray);\r\n return array;\r\n }\r\n } as IWasmExports;\r\n this.updateMemoryViews();\r\n return this.wasm;\r\n });\r\n }\r\n\r\n protected updateMemoryViews(): void {\r\n const buffer = this.wasm.memory.buffer;\r\n this.wasm.HEAP8 = new Int8Array(buffer);\r\n this.wasm.HEAP16 = new Int16Array(buffer);\r\n this.wasm.HEAP32 = new Int32Array(buffer);\r\n this.wasm.HEAPU8 = new Uint8Array(buffer);\r\n this.wasm.HEAPU16 = new Uint16Array(buffer);\r\n this.wasm.HEAPU32 = new Uint32Array(buffer);\r\n this.wasm.HEAPF32 = new Float32Array(buffer);\r\n this.wasm.HEAPF64 = new Float64Array(buffer);\r\n }\r\n\r\n protected getEnvStrings(): string[] {\r\n if (!this.envStrings) {\r\n let x;\r\n const env = {};\r\n for (x in this.env) {\r\n if (this.env[x] === undefined) delete env[x]; else env[x] = this.env[x]\r\n }\r\n const strings = [];\r\n for (x in env) {\r\n strings.push(x + \"=\" + env[x])\r\n }\r\n this.envStrings = strings\r\n }\r\n return this.envStrings;\r\n }\r\n\r\n protected stringToAscii(str, buffer) {\r\n const HEAP8 = this.wasm.HEAP8;\r\n for (let i = 0; i < str.length; ++i) {\r\n HEAP8[buffer++ >> 0] = str.charCodeAt(i)\r\n }\r\n HEAP8[buffer >> 0] = 0\r\n }\r\n\r\n emscripten_notify_memory_growth(memoryIndex: number): void {\r\n this.updateMemoryViews();\r\n }\r\n\r\n proc_exit(rval: number): void {\r\n console.log(\"proc_exit\", rval);\r\n }\r\n\r\n environ_get(environ: number, environ_buf: number): number {\r\n if (!this.wasm.HEAP8.byteLength) {\r\n this.emscripten_notify_memory_growth(0);\r\n }\r\n const HEAPU32 = this.wasm.HEAPU32;\r\n let bufSize = 0;\r\n this.getEnvStrings().forEach((str: string, i: number) => {\r\n const ptr = environ_buf + bufSize;\r\n HEAPU32[environ + i * 4 >> 2] = ptr;\r\n this.stringToAscii(str, ptr);\r\n bufSize += str.length + 1\r\n });\r\n return 0\r\n }\r\n\r\n environ_sizes_get(penviron_count: number, penviron_buf_size: number): number {\r\n if (!this.wasm.HEAP8.byteLength) {\r\n this.emscripten_notify_memory_growth(0);\r\n }\r\n const HEAPU32 = this.wasm.HEAPU32;\r\n const strings = this.getEnvStrings();\r\n HEAPU32[penviron_count >> 2] = strings.length;\r\n let bufSize = 0;\r\n strings.forEach(function (string) {\r\n bufSize += string.length + 1\r\n });\r\n HEAPU32[penviron_buf_size >> 2] = bufSize;\r\n // WASI_ESUCCESS\r\n return 0\r\n }\r\n\r\n fd_close(fd: number): number {\r\n // WASI_ESUCCESS\r\n return 0;\r\n }\r\n\r\n fd_write(fd: number, iovs: number, iovs_len: number, nwritten: number): number {\r\n if (fd !== 1) {\r\n // WASI_EBADF\r\n return 8;\r\n }\r\n if (iovs_len !== 1) {\r\n // WASI_ENOSYS\r\n return 52;\r\n }\r\n this.wasm.HEAPU32[nwritten >> 2] = this.wasm.HEAPU32[iovs + 4 >> 2];\r\n // WASI_ESUCCESS\r\n return 0;\r\n }\r\n\r\n fd_read(fd: number, iovs: number, iovs_len: number, nread: number): number {\r\n // WASI_EINVAL\r\n return 28;\r\n }\r\n\r\n fd_seek(fd: number, offset: number, whence: number, newOffset: number): number {\r\n // WASI_EINVAL\r\n return 28;\r\n }\r\n}\r\n","import {\r\n APP_INITIALIZER,\r\n EnvironmentProviders,\r\n Injector,\r\n makeEnvironmentProviders,\r\n ModuleWithProviders,\r\n NgModule,\r\n Provider\r\n} from \"@angular/core\";\r\nimport {APP_BASE_HREF, CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {\r\n API_SERVICE,\r\n APP_BASE_URL,\r\n AUTH_SERVICE,\r\n CONFIG_SERVICE,\r\n DIALOG_SERVICE, DYNAMIC_MODULE_INFO, DynamicModuleInfo,\r\n ICON_SERVICE,\r\n IModuleConfig,\r\n LANGUAGE_SERVICE,\r\n PROMISE_SERVICE,\r\n RESIZE_DELAY,\r\n RESIZE_STRATEGY,\r\n ROOT_ELEMENT,\r\n SOCKET_IO_PATH,\r\n TOASTER_SERVICE,\r\n WASI_IMPLEMENTATION\r\n} from \"./common-types\";\r\nimport {components, directives, loadConfig, pipes, providers} from \"./ngx-utils.imports\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {Wasi} from \"./utils/wasi\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ROUTES} from \"@angular/router\";\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\n\r\nexport function loadBaseUrl(): string {\r\n if (typeof (document) === \"undefined\" || typeof (location) === \"undefined\") return \"/\";\r\n const scripts = Array.from(document.scripts);\r\n const currentScript = (document.currentScript as HTMLScriptElement);\r\n let currentUrl = new URL(currentScript?.src ?? \"http://localhost:4200/\");\r\n if (!currentScript) {\r\n try {\r\n // noinspection ExceptionCaughtLocallyJS\r\n throw new Error();\r\n } catch (e) {\r\n const qualifiedUrl = location.protocol + \"//\" + location.host;\r\n const stack = (e.stack || \"\") as string;\r\n const srcUrl = (\r\n stack.match(new RegExp(qualifiedUrl + \".*?\\\\.js\", \"g\")) ||\r\n stack.match(/http([A-Z0-9:\\/\\-.]+)\\.js/gi) ||\r\n [`${qualifiedUrl}/main.js`]\r\n ).shift();\r\n currentUrl = new URL(srcUrl ?? \"\");\r\n }\r\n }\r\n const mainScript = scripts.find(s => {\r\n if (!s.src) return false;\r\n const sUrl = new URL(s.src);\r\n return currentUrl.host === sUrl.host && sUrl.pathname.includes(\"main\");\r\n });\r\n const scriptUrl = !mainScript ? currentUrl : new URL(mainScript.src);\r\n const path = scriptUrl.pathname?.split(\"/\") ?? [];\r\n path.pop();\r\n return `${scriptUrl.protocol}//${scriptUrl.host}${path.join(\"/\")}/`;\r\n}\r\n\r\nexport function loadBaseHref(baseUrl: string): string {\r\n try {\r\n return new URL(baseUrl).pathname;\r\n } catch (e) {\r\n console.log(e);\r\n return \"/\";\r\n }\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n ...pipes,\r\n ...directives,\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n exports: [\r\n ...pipes,\r\n ...directives,\r\n ...components,\r\n FormsModule\r\n ],\r\n providers: pipes\r\n})\r\nexport class NgxUtilsModule {\r\n\r\n private static getProviders(config?: IModuleConfig): Provider[] {\r\n return [\r\n ...providers,\r\n {\r\n provide: API_SERVICE,\r\n useExisting: (!config ? null : config.apiService) || ApiService\r\n },\r\n {\r\n provide: AUTH_SERVICE,\r\n useExisting: (!config ? null : config.authService) || StaticAuthService\r\n },\r\n {\r\n provide: ICON_SERVICE,\r\n useExisting: (!config ? null : config.iconService) || IconService\r\n },\r\n {\r\n provide: LANGUAGE_SERVICE,\r\n useExisting: (!config ? null : config.languageService) || StaticLanguageService\r\n },\r\n {\r\n provide: TOASTER_SERVICE,\r\n useExisting: (!config ? null : config.toasterService) || BaseToasterService\r\n },\r\n {\r\n provide: PROMISE_SERVICE,\r\n useExisting: (!config ? null : config.promiseService) || PromiseService\r\n },\r\n {\r\n provide: CONFIG_SERVICE,\r\n useExisting: (!config ? null : config.configService) || ConfigService\r\n },\r\n {\r\n provide: DIALOG_SERVICE,\r\n useExisting: (!config ? null : config.dialogService) || BaseDialogService\r\n },\r\n {\r\n provide: WASI_IMPLEMENTATION,\r\n useExisting: (!config ? null : config.wasiImplementation) || Wasi\r\n },\r\n {\r\n provide: APP_BASE_URL,\r\n useFactory: (!config ? null : config.baseUrl) || loadBaseUrl,\r\n deps: [Injector]\r\n },\r\n {\r\n provide: ROOT_ELEMENT,\r\n useValue: null\r\n },\r\n {\r\n provide: RESIZE_DELAY,\r\n useValue: (!config ? null : config.resizeDelay) ?? 50,\r\n },\r\n {\r\n provide: RESIZE_STRATEGY,\r\n useValue: (!config ? null : config.resizeStrategy) ?? \"object\",\r\n },\r\n {\r\n provide: SOCKET_IO_PATH,\r\n useValue: (!config ? null : config.socketPath) ?? \"/socket\",\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (!config ? null : config.initializeApp) || loadConfig,\r\n multi: true,\r\n deps: [(!config ? null : config.initializeApp) ? Injector : CONFIG_SERVICE]\r\n },\r\n {\r\n provide: APP_BASE_HREF,\r\n useFactory: loadBaseHref,\r\n deps: [APP_BASE_URL]\r\n }\r\n ];\r\n }\r\n\r\n static forRoot(config?: IModuleConfig): ModuleWithProviders<NgxUtilsModule> {\r\n return {\r\n ngModule: NgxUtilsModule,\r\n providers: NgxUtilsModule.getProviders(config)\r\n };\r\n }\r\n\r\n static provideUtils(config?: IModuleConfig): EnvironmentProviders {\r\n return makeEnvironmentProviders(NgxUtilsModule.getProviders(config));\r\n }\r\n\r\n static useDynamic(moduleInfo: DynamicModuleInfo): ModuleWithProviders<NgxUtilsModule> {\r\n return {\r\n ngModule: NgxUtilsModule,\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useValue: [\r\n {\r\n loadChildren: moduleInfo.loadChildren,\r\n matcher: AuthGuard.noRouteMatch\r\n },\r\n {\r\n component: FakeModuleComponent,\r\n matcher: AuthGuard.wildRouteMatch\r\n }\r\n ]\r\n },\r\n {\r\n provide: DYNAMIC_MODULE_INFO,\r\n useValue: moduleInfo,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UniversalService","i1","emptyRemove","EventManagerPlugin","defaultFilter","i1.FormatterService","i1.GlobalTemplateService","i2.UniversalService","i1.ComponentLoaderService","i1.PaginationDirective","i1.EventsService","i1.DropdownDirective","i2.GetValuePipe","i3.SafeHtmlPipe","i4.TranslatePipe","i3","i4.SafeHtmlPipe","i2","i3.NgxTemplateOutletDirective","i4.PaginationDirective","i5.PaginationItemDirective","i6.DropdownDirective","i7.DropdownContentDirective","i8.DropdownToggleDirective","i9.PaginationMenuComponent","i10.IncludesPipe","i11.TranslatePipe","i12.ValuesPipe","i3.EntriesPipe","i2.SafeHtmlPipe","i3.TranslatePipe"],"mappings":"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,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAAI;AAE9E,MAAM,SAAS,GAAG;AACd,IAAA,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9D,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAAG;MAElD,WAAW,CAAA;AAEpB,IAAA,OAAO,gBAAgB,CAAC,MAAyB,EAAE,GAA6B,EAAE,gBAAyE,EAAA;AACvJ,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACnE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG;YACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9C,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACvB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACvB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;;QAE3B,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;;IAGnC,OAAO,YAAY,CAAC,MAAyB,EAAE,GAA6B,EAAE,SAAA,GAAoB,EAAE,EAAE,gBAAyF,EAAA;AAC3L,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvC,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,IAAI,CAAC,KAAkB,EAAE,KAAc,KAAiB;YAClI,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG;AAC5B,SAAC,CAAC;AACF,QAAA,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,KAAI;YAC3D,OAAO,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;AACpE,SAAC,CAAC;;IAGN,OAAO,SAAS,CAAC,MAAyB,EAAE,GAA6B,EAAE,SAAiB,EAAE,EAAA;AAC1F,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;YAAE;QACjC,MAAM,IAAI,CAAC;QAEX,MAAM,KAAK,GAAG,CAAC;QACf,MAAM,KAAK,GAAG,CAAC;AACf,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAE5B,IAAI,SAAS,GAAG,IAAI;AAEpB,QAAA,IAAI;AACA,YAAA,IAAI;AACA,gBAAA,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;;YAC3D,OAAO,CAAC,EAAE;;;;AAKR,gBAAA,IAAI;oBACA,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAC1E,oBAAA,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;;gBAC3D,OAAO,CAAC,EAAE;oBACR,KAAK,CAAC,2BAA2B,CAAC;AAClC,oBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,CAAC,CAAC;;;;QAGpE,OAAO,CAAC,EAAE;YACR,KAAK,CAAC,qBAAqB,CAAC;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,CAAC;;AAGxD,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI;QAE7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAClD,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAC1C,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EACtC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;AAEvB,QAAA,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC;AAErD,QAAA,MAAM,UAAU,GAAG,IAAI,SAAS,EAAE;QAClC,IAAI,QAAQ,GAAG,IAAI;QACnB,IAAI,KAAK,GAAG,UAAU;QAEtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,WAAW,EAAE;gBAClB,QAAQ,GAAG,KAAK;;;AAGxB,QAAA,KAAK,CAAC,IAAI,GAAG,UAAU;QACvB,IAAI,OAAO,GAAG,IAAI;QAClB,IAAI,QAAQ,GAAG,IAAI;AAEnB,QAAA,EAAE,GAAG,EAAE,GAAG,CAAC;AAEX,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;QAEjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzB,YAAA,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC;YAE7E,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAE/C,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;YAEvB,KAAK,GAAG,UAAU;YAElB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC9B,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,IAAI;;YAGtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;gBAC9B,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnD,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;AAC/D,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AAC/C,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AAC/C,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;gBAE/C,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;AAEd,gBAAA,KAAK,GAAG,KAAK,CAAC,IAAI;;YAItB,OAAO,GAAG,UAAU;YACpB,QAAQ,GAAG,QAAQ;YACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACxB,gBAAA,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,EAAE;AACT,oBAAA,EAAE,GAAG,GAAG,GAAG,EAAE;AACb,oBAAA,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;AAChD,oBAAA,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;AACpD,oBAAA,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;;qBACjD;AACH,oBAAA,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;;gBAGpD,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;AAElB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AAEtB,gBAAA,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;gBAEtE,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAA,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,gBAAA,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,gBAAA,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEvC,KAAK,IAAI,QAAQ;gBACjB,KAAK,IAAI,QAAQ;gBACjB,KAAK,IAAI,QAAQ;gBACjB,KAAK,IAAI,QAAQ;AAEjB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI;gBAEtB,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAE9B,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;AAEd,gBAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI;gBAExB,EAAE,IAAI,CAAC;;YAEX,EAAE,IAAI,KAAK;;QAIf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACxB,YAAA,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC;AAE7E,YAAA,EAAE,GAAG,CAAC,IAAI,CAAC;YACX,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAA,SAAS,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAE/C,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;AACvB,YAAA,KAAK,IAAI,SAAS,GAAG,EAAE;YAEvB,KAAK,GAAG,UAAU;YAElB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC9B,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,gBAAA,KAAK,GAAG,KAAK,CAAC,IAAI;;YAGtB,EAAE,GAAG,KAAK;YAEV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1B,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;gBAElB,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;AAChE,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AAChD,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AAChD,gBAAA,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;gBAEhD,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;AAEd,gBAAA,KAAK,GAAG,KAAK,CAAC,IAAI;AAElB,gBAAA,IAAI,CAAC,GAAG,YAAY,EAAE;oBAClB,EAAE,IAAI,KAAK;;;YAInB,EAAE,GAAG,CAAC;YACN,OAAO,GAAG,UAAU;YACpB,QAAQ,GAAG,QAAQ;YACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACzB,gBAAA,CAAC,GAAG,EAAE,IAAI,CAAC;AACX,gBAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO;AACjD,gBAAA,IAAI,EAAE,GAAG,CAAC,EAAE;AACR,oBAAA,EAAE,GAAG,GAAG,GAAG,EAAE;AACb,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;AAC/C,oBAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;AACnD,oBAAA,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,KAAK,OAAO,IAAI,EAAE;;qBAChD;AACH,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;;gBAGjD,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;gBAClB,KAAK,IAAI,SAAS;AAElB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AACtB,gBAAA,SAAS,IAAI,OAAO,CAAC,CAAC;AAEtB,gBAAA,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,YAAY,GAAG,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC;AAElF,gBAAA,KAAK,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAA,KAAK,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAA,KAAK,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAA,KAAK,KAAK,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAElD,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI;gBAEtB,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAC9B,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAE9B,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;gBACd,QAAQ,IAAI,EAAE;AAEd,gBAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI;gBAExB,EAAE,IAAI,KAAK;;;QAInB,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;;AAG7C,IAAA,OAAO,mBAAmB,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAAe,EAAE,IAAY,EAAE,iBAA4B,GAAA,GAAG,EAAE,MAA0B,EAAA;QAEtJ,MAAM,SAAS,GAAW,SAAS;QACnC,MAAM,OAAO,GAA6B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAEjE,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5D,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAGrC,QAAA,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS;AACnC,QAAA,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC;QAE7B,IAAI,QAAQ,GAAW,WAAW,CAAC,qBAAqB,CAAC,SAAS,EAAE,CAAC,IAAY,KAAI;YACjF,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;YAClE,OAAO,QAAQ,GAAG,iBAAiB;AACvC,SAAC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAW,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC;AACvH,QAAA,IAAI,YAAY,GAAG,SAAS,EAAE;YAC1B,QAAQ,GAAG,WAAW,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,IAAY,KAAI;AACpE,gBAAA,OAAO,SAAS,GAAG,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC;AAC7G,aAAC,CAAC;;AAGN,QAAA,OAAO,QAAQ;;IAGnB,OAAO,SAAS,CAAC,OAAiC,EAAE,KAAe,EAAE,IAAY,EAAE,IAAY,EAAE,iBAAA,GAA4B,GAAG,EAAE,KAAA,GAAgB,MAAM,EAAE,QAAmB,GAAA,KAAK,EAAE,CAAY,GAAA,CAAC,EAAE,CAAA,GAAY,CAAC,EAAA;AAC5M,QAAA,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC9D,QAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAW,KAAK,CAAC,CAAC,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,gBAAA,CAAC,IAAI,IAAI,GAAG,iBAAiB;;;AAGrC,QAAA,OAAO,CAAC;;IAGZ,OAAO,QAAQ,CAAC,OAAiC,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,QAAgB,EAAA;QACnG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG;QACvD,MAAM,KAAK,GAAa,EAAE;QAC1B,IAAI,IAAI,GAAG,EAAE;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC7C,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK;YAC/B,IAAI,SAAS,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;AAC/B,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,gBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;;iBAEpB;gBACD,IAAI,GAAG,QAAQ;;;AAGvB,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAChB,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM;AACnC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;YACd,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC,IAAI,UAAU;AACnB,SAAC,CAAC;;AAGN,IAAA,OAAO,YAAY,CAAC,OAAiC,EAAE,IAAY,EAAE,QAAgB,EAAE,KAAA,GAAgB,MAAM,EAAE,WAAmB,KAAK,EAAA;QACnI,OAAO,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAM,GAAA,EAAA,IAAI,EAAE;AACtC,QAAA,OAAO,CAAC,SAAS,GAAQ,KAAK;AAC9B,QAAA,OAAO,CAAC,YAAY,GAAQ,QAAQ;;AAGhC,IAAA,OAAO,YAAY,CAAC,OAAiC,EAAE,KAAe,EAAA;QAC1E,IAAI,QAAQ,GAAW,CAAC;AACxB,QAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAW,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;;AAElE,QAAA,OAAO,QAAQ;;AAGX,IAAA,OAAO,mBAAmB,CAAC,MAAyB,EAAE,OAAiC,EAAE,KAAe,EAAE,IAAY,EAAE,QAAgB,EAAE,iBAAyB,EAAA;AACvK,QAAA,MAAM,KAAK,GAAW,MAAM,CAAC,KAAK;AAClC,QAAA,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM;QACpC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAEtC,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC;AACnI,QAAA,MAAM,SAAS,GAAc,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;QAEtE,IAAI,UAAU,GAAW,CAAC;AAE1B,QAAA,KAAK,EAAC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,KAAK,GAAW,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC;gBACzC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/B,oBAAA,UAAU,GAAG,CAAC,GAAG,CAAC;AAClB,oBAAA,SAAS,KAAK;;;;QAK1B,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,GAAG,QAAQ,CAAC;;AAGzC,IAAA,OAAO,qBAAqB,CAAC,SAAiB,EAAE,QAAkC,EAAA;QACtF,IAAI,QAAQ,GAAW,SAAS;QAChC,IAAI,YAAY,GAAW,CAAC;AAC5B,QAAA,IAAI,SAAiB;AAErB,QAAA,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC9B,MAAM,QAAQ,GAAW,QAAQ;AACjC,YAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACf,gBAAA,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;;iBAC1D;AACH,gBAAA,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;;YAEjE,YAAY,GAAG,QAAQ;YACvB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,EAAE;gBACzC;;;AAGR,QAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC/B,QAAA,OAAO,QAAQ;;AAEtB;;MCxcY,SAAS,CAAA;IAElB,OAAO,SAAS,CAAC,IAAU,EAAA;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC;;IAGxC,OAAO,aAAa,CAAC,IAAU,EAAA;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC;;AAGxC,IAAA,OAAO,GAAG,CAAC,IAAU,EAAE,MAA0B,EAAE,IAAwB,EAAA;AACvE,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE;;IAGlD,OAAO,WAAW,CAAC,IAAU,EAAE,MAAc,EAAE,IAAwB,EAAE,QAAA,GAAmB,EAAE,EAAA;AAC1F,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAClC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAChC,IAAI,GAAG,GAAG,IAAI;QACd,OAAO,SAAS,EAAE;YACd,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;YACtC,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E,gBAAA,SAAS,EAAE;;;AAGnB,QAAA,OAAO,GAAG;;AAGd,IAAA,OAAO,gBAAgB,CAAC,IAAU,EAAE,MAAc,EAAE,IAAwB,EAAA;QACxE,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;;AAExD;;MC5BY,SAAS,CAAA;aAEF,IAAM,CAAA,MAAA,GAAW,+EAA+E,CAAC;IAEjH,OAAO,YAAY,CAAC,IAAU,EAAA;QAC1B,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI;;IAGtF,OAAO,OAAO,CAAC,IAAU,EAAA;QACrB,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;;AAG3E,IAAA,OAAO,MAAM,CAAC,IAAU,EAAE,QAAgB,EAAA;QACtC,MAAM,IAAI,GAAQ,IAAI;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE;AAC1C,QAAA,OAAa,IAAI;;IAGrB,OAAO,UAAU,CAAC,IAAY,EAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;;AAGpC,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC,CAAC;;AAG7C,IAAA,OAAO,QAAQ,CAAC,IAAU,EAAE,QAAgB,EAAA;AACxC,QAAA,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;AAC9B,YAAA,MAAM,KAAK,CAAC,2FAA2F,CAAC;;AAE5G,QAAA,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAG1B,IAAA,OAAO,QAAQ,CAAC,IAAS,EAAE,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE;QACjC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;;IAG3E,OAAO,cAAc,CAAC,IAAU,EAAA;QAC5B,OAAO,SAAS,CAAC,QAAQ;;QAErB,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CACpC;;IAGL,OAAO,sBAAsB,CAAC,IAAU,EAAA;QACpC,OAAO,SAAS,CAAC,QAAQ;;QAErB,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAC5C;;IAGL,OAAO,iBAAiB,CAAC,IAAU,EAAA;QAC/B,OAAO,SAAS,CAAC,QAAQ;;QAErB,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CACvC;;AAGL,IAAA,OAAO,YAAY,CAAC,MAAc,EAAE,QAAQ,GAAG,0BAA0B,EAAA;;AAErE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGnC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;;AAG7C,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;AAGpD,IAAA,aAAa,eAAe,CAAC,IAAgB,EAAE,GAAW,EAAA;QACtD,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,4CAAA,CAA8C,CAAC;;QAEnE,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC;;AAEtC,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AAChC,YAAA,YAAY,EAAE;AACjB,SAAA,CAAC,CAAC;;AAGP,IAAA,aAAa,eAAe,CAAC,IAAgB,EAAE,GAAW,EAAA;QACtD,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,4CAAA,CAA8C,CAAC;;QAEnE,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,GAAG;;QAEd,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AAC5C,YAAA,YAAY,EAAE;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC;;IAG5C,OAAO,aAAa,CAAC,IAAU,EAAE,MAAiB,GAAA,IAAI,EAAE,OAAA,GAAkB,GAAG,EAAA;QACzE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,KAAI;;YAE3C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,YAAA,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1D,WAAW,CAAC,IAAI,EAAE;YAClB,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAI;gBACzC,MAAM,CAAC,+BAA+B,CAAC;AAC3C,aAAC,CAAC;;AAEF,YAAA,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAK;AAChD,gBAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACf,oBAAA,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,CAAC;;;AAGrC,gBAAA,IAAI,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE;oBAC/B,MAAM,CAAC,qBAAqB,CAAC;oBAC7B;;;gBAGJ,UAAU,CAAC,MAAK;AACZ,oBAAA,WAAW,CAAC,WAAW,GAAG,MAAM;iBACnC,EAAE,GAAG,CAAC;;AAEP,gBAAA,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAK;;oBAExC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,oBAAA,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,UAAU;AACrC,oBAAA,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW;;oBAEvC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,oBAAA,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;;AAE7D,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CACxB,YAAY,EACZ,OAAO,CACV,CAAC;AACN,iBAAC,CAAC;AACN,aAAC,CAAC;AACN,SAAC,CAAC;;AAGN,IAAA,aAAa,cAAc,CAAC,IAAU,EAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;;AAEpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,OAAO,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;;AAExC,QAAA,OAAO,IAAI;;IAGP,OAAO,QAAQ,CAAC,QAAsC,EAAA;AAC1D,QAAA,OAAO,IAAI,OAAO;;AAEd,QAAA,CAAC,OAAO,EAAE,MAAM,KAAI;AAChB,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAU,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5D,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM;YACvB,QAAQ,CAAC,MAAM,CAAC;AACpB,SAAC,CACJ;;;;ACzKH,MAAO,YAAgB,SAAQ,OAAU,CAAA;AAE3C,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;;IAGtB,IAAI,KAAK,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAKpB,IAAA,WAAA,CAAY,QAAW,IAAI,EAAA;AACvB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGvB,IAAA,YAAY,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAE1B;;MCpBY,eAAe,CAAA;IAQxB,WAAqB,CAAA,KAAa,EACb,IAAY,EACZ,KAAa,EACb,IAAS,EACT,MAAuB,EACtB,MAA6B,EAAA;QAL9B,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;QACxB,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACf,aAAA,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;aAC5E,MAAM,CAAC,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC;;IAGxC,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAG;AACnB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,SAAC,CAAC;QACF,OAAO,IAAI,CAAC,MAAM;;AAEzB;;MC1BY,IAAI,CAAA;AAEb,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGpC,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGnC,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGnC,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE;;AAGpC,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE;;IAGpC,WAAqB,CAAA,CAAS,EAAW,CAAS,EAAW,KAAa,EAAW,MAAc,EAAW,QAAA,GAAmB,CAAC,EAAA;QAA7G,IAAC,CAAA,CAAA,GAAD,CAAC;QAAmB,IAAC,CAAA,CAAA,GAAD,CAAC;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM;QAAmB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAItH,IAAA,QAAQ,CAAC,CAAQ,EAAA;AACb,QAAA,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;;AAElC;MAEY,MAAM,CAAA;AAEf,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGpC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGlD,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGlD,IAAA,IAAI,GAAG,GAAA;AACH,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGlD,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGlD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGrE,IAAA,WAAA,CAAqB,CAAS,EAAW,CAAS,EAAW,MAAc,EAAA;QAAtD,IAAC,CAAA,CAAA,GAAD,CAAC;QAAmB,IAAC,CAAA,CAAA,GAAD,CAAC;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAInE,IAAA,QAAQ,CAAC,CAAQ,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;;AAEnD;MAEY,KAAK,CAAA;aAEP,IAAI,CAAA,IAAA,GAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErC,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;;AAGpC,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;IAGrC,WAAqB,CAAA,CAAS,EAAW,CAAS,EAAA;QAA7B,IAAC,CAAA,CAAA,GAAD,CAAC;QAAmB,IAAC,CAAA,CAAA,GAAD,CAAC;;AAG1C,IAAA,GAAG,CAAC,CAAQ,EAAA;AACR,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAGhD,IAAA,QAAQ,CAAC,CAAQ,EAAA;AACb,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAGhD,IAAA,QAAQ,CAAC,CAAiB,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,KAAK,EAAE;AACpB,YAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEhD,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG5C,IAAA,QAAQ,CAAC,CAAQ,EAAA;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAGnC,IAAI,CAAC,CAAQ,EAAE,KAAa,EAAA;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAGzC,eAAe,CAAC,CAAQ,EAAE,MAAc,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAG3C,UAAU,CAAC,CAAQ,EAAE,CAAQ,EAAA;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7B,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ;AAClC,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ;QAElC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC;AACvH,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAGhE,IAAA,QAAQ,CAAC,CAAS,EAAA;QACd,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;AACzC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;AAEhC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,CAAC,GAAG,CAAC,GAAG,CAAC;AACT,QAAA,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;;AAGnB,IAAA,KAAK,CAAC,CAAQ,EAAA;QACV,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE;;IAGrD,YAAY,CAAC,CAAQ,EAAE,KAAa,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG;QACxD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACvF,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;;;;MC9JhB,WAAW,CAAA;AAIpB,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,WAAW;;IAG3B,WAAoB,CAAA,QAAiB,EAAU,UAAA,GAAsB,IAAI,EAAA;QAArD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAmB,IAAU,CAAA,UAAA,GAAV,UAAU;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU;;AAEnC,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;;IAGjC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAA;QACZ,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;;AAE7B;;MCrBY,MAAM,CAAA;IAEf,OAAO,KAAK,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;;IAG3C,OAAO,SAAS,CAAC,GAAQ,EAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC;;AAG/C,IAAA,OAAO,OAAO,CAAC,GAAW,EAAE,KAAU,EAAA;QAClC,MAAM,OAAO,GAAG,8DAA8D;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3C,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK;;AAEhB,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;;QAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACpC,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;YACvB,OAAO,IAAI,QAAQ,CAAC,CAAA,OAAA,EAAU,KAAK,CAAE,CAAA,CAAC,EAAE;;AAE5C,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACvB,YAAA,OAAO,IAAI,QAAQ,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,EAAE;;AAErD,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACvB,YAAA,OAAO,IAAI,QAAQ,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,EAAE;;AAErD,QAAA,OAAO,KAAK;;AAGhB,IAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,KAAU,EAAA;QACnC,IAAI,KAAK,YAAY,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC1D,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,EAAE;;gBAE5D,OAAO,UAAU,GAAG,MAAM;;AAE9B,YAAA,OAAO,MAAM;;AAEjB,QAAA,IAAI,KAAK,YAAY,MAAM,EAAE;YACzB,OAAO,UAAU,GAAG,KAAK;;AAE7B,QAAA,OAAO,KAAK;;AAEnB;;MC5CY,WAAW,CAAA;aAEb,IAAc,CAAA,cAAA,GAAoB,EAAE,CAAC;aACrC,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;IAE1C,OAAO,UAAU,CAAC,GAAW,EAAE,KAAiB,GAAA,KAAK,EAAE,IAAA,GAAmB,iBAAiB,EAAE,MAAa,EAAA;QACtG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;;YAExF,MAAM,MAAM,GAAQ,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpD,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,YAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAChB,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,YAAA,IAAI,MAAM,CAAC,UAAU,EAAE;;AAEnB,gBAAA,MAAM,CAAC,kBAAkB,GAAG,MAAK;AAC7B,oBAAA,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AACpE,wBAAA,MAAM,CAAC,kBAAkB,GAAG,IAAI;wBAChC,OAAO,CAAC,MAAM,CAAC;;AAEvB,iBAAC;;iBACE;;gBAEH,MAAM,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;;AAEzC,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAU,KAAK,MAAM,CAAC,KAAK,CAAC;YAC9C,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACjD,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;AAGnC,IAAA,OAAO,SAAS,CAAC,GAAW,EAAE,MAAa,EAAA;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;;YAEtF,MAAM,IAAI,GAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAChD,YAAA,IAAI,CAAC,GAAG,GAAG,YAAY;AACvB,YAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AAEf,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;AAEjB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAK;AAC3B,oBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AAChE,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;wBAC9B,OAAO,CAAC,IAAI,CAAC;;AAErB,iBAAC;;iBACE;;gBAEH,IAAI,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;;AAErC,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,KAAU,KAAK,MAAM,CAAC,KAAK,CAAC;YAC5C,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;AAC/C,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;;;MCrDzB,SAAS,CAAA;aAEF,IAAO,CAAA,OAAA,GAAW,IAAI,CAAC;IAEvC,OAAO,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,UAAkB,IAAI,EAAA;AACrD,QAAA,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,OAAO;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;;AAGpC,IAAA,OAAO,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;;IAG9C,OAAO,KAAK,CAAC,KAAa,EAAE,SAAoB,GAAA,CAAC,EAAE,OAAA,GAAkB,CAAC,EAAA;QAClE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,SAAS;;IAG9D,OAAO,WAAW,CAAC,CAAS,EAAE,MAAgB,EAAE,UAAkB,IAAI,EAAA;AAClE,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9C,OAAO,CAAC,CAAC;;QAEb,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACnB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;AAChC,gBAAA,OAAO,CAAC;;AAEZ,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACP,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC;;iBACN;AACH,gBAAA,CAAC,GAAG,CAAC,GAAG,CAAC;;;QAGjB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGpD,OAAO,WAAW,CAAC,CAAS,EAAE,MAAgB,EAAE,UAAkB,IAAI,EAAA;AAClE,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC;AACvD,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI;;;;AC3CpB,SAAA,gBAAgB,CAAC,EAAe,EAAE,EAAa,EAAA;IAC3D,IAAI,cAAc,GAAG,KAAK;IAC1B,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,GAAG,GAAG,MAAK;AACb,QAAA,IAAI,MAAM;YAAE;QACZ,MAAM,GAAG,IAAI;AACb,QAAA,EAAE,EAAE;AACR,KAAC;IACD,EAAE,CAAC,gBAAgB,GAAG,MAAM,cAAc,GAAG,IAAI;IACjD,EAAE,CAAC,iBAAiB,GAAG,MAAM,cAAc,GAAG,IAAI;AAClD,IAAA,EAAE,CAAC,cAAc,GAAG,GAAG;AACvB,IAAA,EAAE,CAAC,eAAe,GAAG,GAAG;IACxB,UAAU,CAAC,MAAK;AACZ,QAAA,IAAI,cAAc;YAAE;AACpB,QAAA,GAAG,EAAE;KACR,EAAE,GAAG,CAAC;AACX;AAEM,SAAU,eAAe,CAAI,IAAa,EAAA;AAC5C,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAoB;IAC3C,IAAI,CAAC,GAAG,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC;;AAEnE,IAAA,OAAO,GAAG;AACd;AAEA;AACM,SAAU,aAAa,CAAC,QAA8B,EAAA;AACxD,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACzB,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;AAE/D,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;AAE5D,QAAA,OAAO,QAAQ;;IAEnB,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAO,IAAA,EAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;;IAE5C,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAU,OAAA,EAAA,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;;IAE/C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACjF,IAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3D,OAAO;AACH,YAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;YAC5B,KAAK,CAAC,CAAC,CAAC;AACR,YAAA,KAAK,CAAC,CAAC,CAAC,IAAI;SACf;;IAEL,OAAO,CAAC,QAAQ,CAAC;AACrB;AAEgB,SAAA,mBAAmB,CAAC,IAAqB,EAAE,QAAqB,EAAA;AAC5E,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACrB,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5E,YAAA,OAAO,IAAI;;;AAGnB,IAAA,OAAO,KAAK;AAChB;AAEgB,SAAA,sBAAsB,CAAC,UAAuB,EAAE,QAAiB,EAAA;IAC7E,OAAO;AACH,QAAA,OAAO,EAAE,wBAAwB;AACjC,QAAA,QAAQ,EAAE;YACN,UAAU;YACV;AACH,SAAA;AACD,QAAA,KAAK,EAAE;KACV;AACL;;MC1Ea,UAAU,CAAA;AAEnB,IAAA,OAAO,aAAa,CAAC,IAAe,EAAE,IAAa,EAAA;;AAE/C,QAAA,MAAM,GAAG,GAAG,CAAC,KAAa,KAAI;YAC1B,KAAK,CAAC,KAAK,EAAE;AACb,YAAA,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,MAAK;AACvB,gBAAA,KAAK,CAAC,EAAE,GAAG,IAAI;gBACf,KAAK,CAAC,IAAI,EAAE;AAChB,aAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AAClB,SAAC;;AAED,QAAA,MAAM,KAAK,GAAG,CAAC,KAAa,KAAI;YAC5B,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE;AACf,YAAA,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,YAAA,KAAK,CAAC,EAAE,GAAG,IAAI;AACnB,SAAC;AACD,QAAA,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;;AAGzD,IAAA,OAAO,cAAc,CAAC,IAAe,EAAE,IAAa,EAAA;;AAEhD,QAAA,MAAM,GAAG,GAAG,CAAC,KAAa,KAAI;YAC1B,KAAK,CAAC,KAAK,EAAE;AACb,YAAA,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;AAClD,SAAC;;AAED,QAAA,MAAM,KAAK,GAAG,CAAC,KAAa,KAAI;YAC5B,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE;AACf,YAAA,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;AACvB,YAAA,KAAK,CAAC,EAAE,GAAG,IAAI;AACnB,SAAC;AACD,QAAA,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;;IAGjD,OAAO,WAAW,CAAC,GAAc,EAAE,KAAgB,EAAE,IAAc,EAAE,IAAY,EAAA;QACrF,MAAM,KAAK,GAAW,EAAE;AACxB,QAAA,MAAM,SAAS,GAAG,CAAC,IAAc,EAAE,IAAY,KAAI;YAC/C,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAO,GAAC,IAAI,IAAI;AAC9D,YAAA,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;AACzD,SAAC;QACD,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC;QAC5B,KAAK,CAAC,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;QAChC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAc,EAAE,IAAY,KAAI;AACzC,YAAA,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;YACrB,KAAK,CAAC,GAAG,EAAE;AACf,SAAC;AACD,QAAA,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AACrB,QAAA,OAAO,KAAK;;AAEnB;;MC3CY,eAAe,CAAA;IAExB,OAAO,QAAQ,CAAC,MAAyB,EAAA;AACrC,QAAA,OAAO,QAAQ;;AAEX,QAAA,CAAC,KAAa,KAAK,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CACpD,CACG,UAAU,CAAC,MAAM;;QAEb,CAAC,QAAa,KAAI;AACd,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC/B,CACJ,CACJ;;AAGL,IAAA,OAAO,iBAAiB,CAAC,GAAG,aAA6B,EAAA;;QAErD,MAAM,MAAM,GAAG,MAAK;AAChB,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAG;gBACtB,CAAC,EAAE,WAAW,EAAE;AACpB,aAAC,CAAC;AACN,SAAC;AACD,QAAA,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC;;AAGnC,IAAA,OAAO,SAAS,CAAC,GAAG,WAA8B,EAAA;QAC9C,MAAM,aAAa,GAAmB,EAAE;AACxC,QAAA,WAAW,CAAC,OAAO,CAAC,IAAI,IAAG;YACvB,IAAI,aAAa,GAAG,KAAK;AACzB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;gBAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;oBACnC,aAAa,GAAG,IAAI;AACpB,oBAAA,KAAK,CAAC,GAAG,CAAC,MAAK;AACX,wBAAA,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC3B,qBAAC,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;AACzB,iBAAC,CAAC;AACF,gBAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,aAAC,CAAC;AACF,YAAA,IAAI,aAAa;gBAAE;YACnB,IAAI,CAAC,EAAE,EAAE;AACb,SAAC,CAAC;AACF,QAAA,OAAO,eAAe,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC;;IAG9D,OAAO,YAAY,CAAC,YAAuB,EAAA;AACvC,QAAA,IAAI,OAAY;AAChB,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,UAAU,KAAI;YACtC,IAAI,CAAC,OAAO,EAAE;AACV,gBAAA,OAAO,GAAG,IAAI,OAAO,EAAE;AACvB,gBAAA,IAAI;AACA,oBAAA,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;gBAChC,OAAO,GAAG,EAAE;AACV,oBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;;;AAG1B,YAAA,OAAO,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;AACxC,SAAC,CAAC;;AAET;;ACpEK,SAAU,iBAAiB,CAAI,MAAkB,EAAA;IACnD,IAAI,UAAU,GAAG,KAAK;IACtB,MAAM,UAAU,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;AAClD,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAG;AACd,YAAA,IAAI,UAAU;gBAAE;YAChB,OAAO,CAAC,GAAG,CAAC;AAChB,SAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,KAAC,CAAyB;AAC1B,IAAA,UAAU,CAAC,MAAM,GAAG,MAAK;QACrB,UAAU,GAAG,IAAI;AACrB,KAAC;AACD,IAAA,OAAO,UAAU;AACrB;AAEM,SAAU,gBAAgB,CAAI,OAAyB,EAAA;IACzD,IAAI,WAAW,GAAyB,IAAI;AAC5C,IAAA,OAAO,MAAK;QACR,WAAW,EAAE,MAAM,EAAE;AACrB,QAAA,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAA,OAAO,WAAW;AACtB,KAAC;AACL;;MCzBa,WAAW,CAAA;AAEpB,IAAA,OAAO,MAAM,CAAC,SAAiB,EAAE,GAAG,OAAiB,EAAA;QACjD,OAAO,OAAO,CAAC,MAAM;;AAEjB,QAAA,GAAG,IAAI,CAAC,CAAC,GAAG,CACf,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGrB,IAAA,OAAO,UAAU,CAAC,GAAW,EAAE,GAAG,MAAgB,EAAA;AAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;;AAE9C,QAAA,OAAO,KAAK;;AAGhB,IAAA,OAAO,GAAG,CAAC,GAAW,EAAE,GAAG,KAAe,EAAA;AACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,IAAI;;AAE/C,QAAA,OAAO,KAAK;;IAGhB,OAAO,OAAO,CAAC,GAAW,EAAA;QACtB,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE;;IAGpE,OAAO,OAAO,CAAC,GAAW,EAAA;QACtB,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE;;IAGpE,OAAO,UAAU,CAAC,EAAU,EAAA;QACxB,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;;IAGjF,OAAO,WAAW,CAAC,OAAe,EAAA;AAC9B,QAAA,IAAI;AACA,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC5B,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAI,CAAA,EAAA,GAAG,CAAC,IAAI,CAAE,CAAA,GAAG,EAAE;YACtF,OAAO,CAAA,EAAG,GAAG,CAAC,QAAQ,CAAA,EAAA,EAAK,GAAG,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG;;AACnD,QAAA,MAAM;AACJ,YAAA,OAAO,GAAG;;;AAGrB;;MC1CY,QAAQ,CAAA;AACjB,IAAA,OAAO,MAAM,CAAC,GAAa,EAAE,GAAQ,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAClD,YAAA,OAAO,KAAK;AAChB,QAAA,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI;AACpB,YAAA,OAAO,KAAK;AAChB,QAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK;;AAEpC,QAAA,OAAO,IAAI;;AAGf,IAAA,OAAO,QAAQ,CAAC,GAAa,EAAE,KAAY,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE;AAC5D,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAErC;;ACED,SAAS,IAAI,GAAA;IACT,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,KAAK,WAAW,EAAE;AAC/H,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AAC9B,QAAA,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;IAE7C,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD;AAEA,SAAS,IAAI,CAAC,GAAW,EAAE,KAAa,EAAA;AACpC,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;IAChD,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1B,IAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,GAAG,GAAG,GAAG,GAAG,GAAG;;IAEnB,OAAO,MAAM,GAAG,GAAG;AACvB;AAEA,SAAS,OAAO,CAAC,CAAS,EAAE,KAAa,EAAA;AACrC,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;AAChD,IAAA,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO;SACnD,QAAQ,CAAC,EAAE;SACX,SAAS,CAAC,CAAC,CAAC;AACrB;MAEa,YAAY,CAAA;AAYrB,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI;;IAGtC,WAAqB,CAAA,GAAW,EACV,QAAsC,EAAA;QADvC,IAAG,CAAA,GAAA,GAAH,GAAG;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC;AACpB,YAAA,CAAC,SAAS,EAAE,IAAI,OAAO,EAAc,CAAC;AACtC,YAAA,CAAC,YAAY,EAAE,IAAI,OAAO,EAAc,CAAC;AACzC,YAAA,CAAC,OAAO,EAAE,IAAI,OAAO,EAAc;AACtC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE;AACjC,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;IAGrB,OAAO,CAAC,eAA6B,EAAE,EAAA;QACnC,IAAI,IAAI,CAAC,EAAE;YAAE;QACb,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;QAC9C,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAG;AACnB,gBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBACnD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,GAAG,CAAC,IAAI,CAAA,CAAE,EAAE;oBACtC,YAAY;AACZ,oBAAA,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,GAAG,CAAC;AACb,iBAAA,CAAC;AACF,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,QAAQ,CAAK,EAAA,EAAA,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC;AAC3E,gBAAA,EAAE,CAAC,EAAE,CAAC,CAAS,OAAA,CAAA,EAAE,MAAK;AAClB,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;AAC/B,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,oBAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAChB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,iBAAC,CAAC;AACF,gBAAA,EAAE,CAAC,EAAE,CAAC,CAAY,UAAA,CAAA,EAAE,MAAK;AACrB,oBAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,iBAAC,CAAC;AACF,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,IAAG;oBACnC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAgB,KAAI;AAC9B,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;wBAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,qBAAC,CAAC;AACN,iBAAC,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC;aACd,EAAE,MAAM,CAAC;AACd,SAAC,CAAC;;IAGN,UAAU,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE;AACd,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI;;IAGlB,SAAS,CAAiB,KAAa,EAAE,EAAsB,EAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAG;gBACf,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAgB,KAAI;AAC9B,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;oBAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,iBAAC,CAAC;AACN,aAAC,CAAC;;QAEN,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;;IAG7C,IAAI,CAAC,KAAa,EAAE,OAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;AAG/C,IAAA,MAAM,OAAO,CAAC,KAAa,EAAE,OAAsB,EAAA;AAC/C,QAAA,MAAM,EAAE,GAAG,IAAI,EAAE;AACjB,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC5C,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;YAChD,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC,gBAAA,MAAM,CAAC,CAAA,YAAA,EAAe,KAAK,CAAA,SAAA,EAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAE,CAAA,CAAC;aACpE,EAAE,IAAI,CAAC;AACZ,SAAC,CAAC;AACF,QAAA,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAC,GAAG,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAC,CAAC;AACvD,QAAA,OAAO,OAAO;;IAGR,cAAc,CAAC,KAAa,EAAE,OAAmB,EAAA;AACvD,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,YAAY,IAAI;YAAE;AACtF,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,qBAA+B;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAChC,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACnB,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YACvB;;AAEJ,QAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;;AAE/B;;MC7JY,WAAW,CAAA;AAEpB,IAAA,OAAO,IAAI,GAAA;QACP,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,KAAK,WAAW,EAAE;AAC/H,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC;AAClC,YAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;QAEjM,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG;YACtF,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;;IAGvE,OAAO,IAAI,CAAC,GAAW,EAAA;QAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1B,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,GAAG,GAAG,GAAG,GAAG,GAAG;;AAEnB,QAAA,OAAO,GAAG;;AAGN,IAAA,OAAO,OAAO,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO;aAC1C,QAAQ,CAAC,EAAE;aACX,SAAS,CAAC,CAAC,CAAC;;AAExB;;MCzBY,MAAM,CAAA;AAEf,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGhD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;AAGpC,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGnC,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGrD,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAGrD,IAAA,IAAI,MAAM,GAAA;QACN,OAAO;AACH,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjC,YAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM;SACtC;;AAGL,IAAA,WAAA,CAAmB,CAAS,EAAS,CAAS,EAAS,CAAS,EAAA;QAA7C,IAAC,CAAA,CAAA,GAAD,CAAC;QAAiB,IAAC,CAAA,CAAA,GAAD,CAAC;QAAiB,IAAC,CAAA,CAAA,GAAD,CAAC;;AAGxD,IAAA,GAAG,CAAC,CAAkB,EAAA;QAClB,IAAI,CAAC,YAAY,MAAM;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YAC/E,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG9D,IAAA,QAAQ,CAAC,CAAkB,EAAA;QACvB,IAAI,CAAC,YAAY,MAAM;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YAC/E,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG9D,IAAA,QAAQ,CAAC,CAAkB,EAAA;QACvB,IAAI,CAAC,YAAY,MAAM;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YAC/E,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG9D,IAAA,MAAM,CAAC,CAAkB,EAAA;QACrB,IAAI,CAAC,YAAY,MAAM;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YAC/E,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAG9D,IAAA,MAAM,CAAC,CAAS,EAAA;QACZ,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG1D,IAAA,GAAG,CAAC,CAAS,EAAA;QACT,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGrD,IAAA,KAAK,CAAC,CAAS,EAAA;QACX,OAAO,IAAI,MAAM,CACb,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAC9B;;AAGL,IAAA,OAAO,CAAC,CAAS,EAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;;AAG5D,IAAA,OAAO,CAAC,CAAU,EAAA;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;IAGpD,KAAK,GAAA;AACD,QAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAG7C,IAAA,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;AAChC,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC;AACV,QAAA,OAAO,IAAI;;AAElB;;ACnFe,SAAA,kBAAkB,CAA4B,IAAa,EAAE,OAAU,EAAA;IACnF,OAAO;QACH,UAAU,EAAE,UAAU,QAAkB,EAAA;AACpC,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChC,gBAAA,SAAS,EAAE;AACP,oBAAA;AACI,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,QAAQ,EAAE;AACb,qBAAA;AACD,oBAAA;AACI,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE;AACb;AACJ,iBAAA;AACD,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACF,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;SAC/B;QACD,IAAI,EAAE,CAAC,QAAQ;KAClB;AACL;;ACdgB,SAAA,cAAc,CAAC,MAAW,EAAE,QAAiB,EAAA;IAEzD,IAAI,WAAW,GAAqC,IAAI;AACxD,IAAA,MAAM,YAAY,GAA0B,IAAI,OAAO,CAAe,OAAO,IAAG;QAC5E,WAAW,GAAG,OAAO;AACzB,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;AACnB,QAAA,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,IAAI;QAC5B,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,EAAC,GAAG,EAAE,IAAI,EAAC,GAAG,OAAO;gBAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAG;oBAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBACnC,OAAO,IAAI,QAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C,iBAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAG;oBACf,WAAW,CAAC,QAAQ,CAAC;oBACrB,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC;AACvG,oBAAA,IAAI,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;AACzD,iBAAC,CAAC;gBACF;AACJ,YAAA,KAAK,MAAM;AACP,gBAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAG;oBACzB,MAAM,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAC,GAAG,OAAO;oBAChC,IAAI,QAAQ,EAAE;AACV,wBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChB,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAW,QAAA,EAAA,IAAI,CAAM,IAAA,CAAA,CAAC;;AAE9C,oBAAA,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAc;AACzC,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;oBAC5B,IAAI,QAAQ,EAAE;wBACV,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAU,OAAA,EAAA,IAAI,CAAE,CAAA,CAAC;AACrC,wBAAA,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;;AAEvB,oBAAA,IAAI,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAC,EAAE,EAAE,MAAM,EAAC,EAAC,CAAC;AAC7D,iBAAC,CAAC;gBACF;;AAEZ,KAAC;AACL;MAEa,eAAe,CAAA;AAOxB,IAAA,WAAA,CAAY,QAAgB,EAAE,IAAiB,EAAE,WAAoB,KAAK,EAAA;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAW,OAAO,IAAG;AAC3C,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AAC5B,SAAC,CAAC;QACF,MAAM,EAAE,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO;QACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CACjB,CAAC,CAAA,EAAG,MAAM,CAAC,QAAQ,EAAE,CAAK,EAAA,EAAA,cAAc,CAAC,QAAQ,EAAE,CAAA,UAAA,EAAa,EAAE,CAAA,CAAA,CAAG,CAAC,EACtE,EAAC,IAAI,EAAE,wBAAwB,EAAC,CACnC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ;AAClE,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAA4B;AACnD,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACnB,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAI;AAC5B,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;gBAC/C,IAAI,GAAG,EAAE;AACL,oBAAA,OAAO,GAAG;;AAEd,gBAAA,OAAO,CAAC,GAAG,IAAW,KAAI;oBACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;AAC3C,iBAAC;;AAER,SAAA,CAAC;;AAGN,IAAA,SAAS,CAAC,CAAe,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;AACnB,QAAA,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,IAAI;QAC5B,QAAQ,IAAI;AACR,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACvB;AACJ,YAAA,KAAK,QAAQ;AACT,gBAAA,MAAM,EAAC,EAAE,EAAE,MAAM,EAAC,GAAG,OAAO;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,IAAI,OAAO,EAAE;AACT,oBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;;gBAE5B;;;AAIZ,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,IAAW,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAA,UAAA,CAAY,CAAC;;QAEjD,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;AACxC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACpB,gBAAA,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI;AACnC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;AAC5C,SAAC,CAAC;;AAET;;ACjHK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAQ1C,IAAA,WAAA,CAAY,OAAoB,EAAA;QAC5B,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,kBAAkB,GAAG;AACtB,YAAA,QAAQ,EAAE;SACb;;AAGL,IAAA,WAAW,CAAC,OAAsB,EAAE,eAAA,GAA2B,IAAI,EAAA;AAC/D,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAW,IAAI,EAAE;QAC3D,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACtD,YAAA,OAAO,OAAO,CAAC,eAAe,CAAC;;AAEnC,QAAA,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;;AAGnC,IAAA,UAAU,CAAC,MAAoB,EAAA;AAC3B,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/E,OAAO,IAAI,UAAU,CAAC;YAClB,OAAO,EAAE,IAAI,oBAAoB,EAAE;AACnC,YAAA,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;AACzD,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AAClI,gBAAA,OAAO,MAAM;aAChB,EAAE,EAAE;AACR,SAAA,CAAC;;IAGN,oBAAoB,CAAC,IAAY,EAAE,KAAW,EAAA;AAC1C,QAAA,IAAI,OAAO,KAAK,IAAI,WAAW,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC;;AAEJ,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,KAAK;;8GA3ChC,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACDD;;AAEG;MAEU,cAAc,CAAA;AAEvB,IAAA,WAAA,CAAqB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS;;IAG9B,GAAG,CAAC,GAAW,EAAE,YAAkB,EAAE,IAAoB,GAAA,WAAW,CAAC,KAAK,EAAA;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;AAAE,YAAA,OAAO,YAAY;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC,KAAK,GAAG,YAAY,GAAG,cAAc;QACzE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,YAAY;AAC9B,QAAA,IAAI;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;QACzB,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,IAAI;;;IAInB,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,IAAoB,GAAA,WAAW,CAAC,KAAK,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC,KAAK,GAAG,YAAY,GAAG,cAAc;AACzE,QAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;AAC1B,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;YAC3B;;AAEJ,QAAA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;AAG/C,IAAA,MAAM,CAAC,GAAW,EAAE,IAAoB,GAAA,WAAW,CAAC,KAAK,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,WAAW,CAAC,KAAK,GAAG,YAAY,GAAG,cAAc;AACzE,QAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;;8GA9BlB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;MCyBY,eAAe,CAAA;aAEP,IAAc,CAAA,cAAA,GAAsB,EAAtB,CAAyB;AAExD,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,MAAM;;AAGjB,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI;;AAOL,IAAA,OAAO,mBAAmB,GAAA;AAChC,QAAA,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,QAAA,eAAe,CAAC,cAAc,GAAG,EAAE;;AAGvC,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;;AAGjC,IAAA,WAAA,CAAuC,QAAkB,EACZ,MAAsB,EACtB,OAAuB,EACrB,QAA0B,EAC3B,OAAwB,EACzB,OAAuB,EACV,UAAmB,IAAI,EAAA;QAN1C,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACF,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAO,CAAA,OAAA,GAAP,OAAO;QACL,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;QACR,IAAO,CAAA,OAAA,GAAP,OAAO;QACM,IAAO,CAAA,OAAA,GAAP,OAAO;AAE7D,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,WAAW,EAAE;;IAGZ,WAAW,GAAA;;AAIrB,IAAA,GAAG,CAAC,GAAW,EAAA;AACX,QAAA,OAAO,GAAG;;IAGd,SAAS,CAAC,GAAW,EAAE,MAAmB,EAAA;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;YACtC,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE;AAC1C,SAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACZ,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;;AAGtC,IAAA,cAAc,CAAC,IAAY,EAAE,YAAoB,EAAE,OAAA,GAAkB,IAAI,EAAE,eAA2B,GAAA,IAAI,EAAE,MAAA,GAAiB,IAAI,EAAA;AAC7H,QAAA,MAAM,MAAM,GAAgB;AACxB,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAChB,YAAA,KAAK,EAAE;SACV;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;AAC5F,YAAA,MAAM,CAAC,IAAI,GAAG,CAAG,EAAA,eAAe,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,OAAO,EAAE;;QAE3D,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACxC,YAAA,MAAM,CAAC,MAAM,GAAG,MAAM;;AAE1B,QAAA,OAAO,MAAM;;AAGP,IAAA,UAAU,CAAC,GAAW,EAAE,OAAyB,EAAE,IAAU,EAAA;QACnE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;;AAG7B,IAAA,aAAa,CAAC,GAAW,EAAE,OAAyB,EAAE,IAAU,EAAA;QACtE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;;AAG7B,IAAA,WAAW,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QACpE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;;AAG7B,IAAA,UAAU,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QACnE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;;AAG7B,IAAA,YAAY,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QACrE,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QAClD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;;AAG7B,IAAA,aAAa,CAAC,GAAW,EAAE,IAAS,EAAE,QAA2B,EAAE,OAAyB,EAAA;QAClG,MAAM,OAAO,GAAQ,EAAE;AACvB,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACtB,YAAA,OAAO,CAAC,cAAc,CAAC,GAAG,0BAA0B;;QAExD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AACrC,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,cAAc,EAAE;AACnB,SAAA,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC;;IAGvC,WAAW,CAAC,GAAW,EAAE,MAAmB,EAAA;AAClD,QAAA,OAAO,IAAI,OAAO,CAAkB,OAAO,IAAG;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAC/C,gBAAA,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC;wBACJ,KAAK,EAAE,IAAI,CAAC,MAAM;AAClB,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE;AACT,qBAAA,CAAC;oBACF;;AAEJ,gBAAA,OAAO,CAAC;AACJ,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;AACjE,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AACvB,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;AACtB,iBAAA,CAAC;aACL,EAAE,QAAQ,IAAG;AACV,gBAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAChD,oBAAA,OAAO,CAAC;AACJ,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,KAAK,EAAE,CAAC;AACJ,gCAAA,EAAE,EAAE,IAAI;AACR,gCAAA,KAAK,EAAE;6BACV,CAAC;AACF,wBAAA,IAAI,EAAE;AACT,qBAAA,CAAC;AACF,oBAAA,OAAO,IAAI;;AAEf,gBAAA,OAAO,CAAC;AACJ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,IAAI,EAAE;AACT,iBAAA,CAAC;AACF,gBAAA,OAAO,KAAK;AAChB,aAAC,CAAC;AACN,SAAC,CAAC;;AAGI,IAAA,uBAAuB,CAAC,WAAmB,EAAE,OAAwB,EAAE,MAAkB,EAAA;AAC/F,QAAA,MAAM,EAAE;QACR,IAAI,eAAe,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C;;AAEJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC;;AAG9C,IAAA,YAAY,CAAC,OAAe,EAAE,YAA2B,EAAE,MAAW,EAAE,OAAwB,EAAA;AACtG,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;;AAGxD,IAAA,UAAU,CAAC,OAAe,EAAE,YAA2B,EAAE,MAAW,EAAE,OAAwB,EAAA;AACpG,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;;AAGxD,IAAA,SAAS,CAAC,GAAW,EAAE,OAAwB,EAAE,QAA2B,EAAA;AAClF,QAAA,MAAM,YAAY,GAAkB,EAAC,GAAG,EAAE,EAAE,EAAC;AAE7C,QAAA,OAAO,IAAI,WAAW,CAAC,QAAQ,IAAG;YAC9B,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;oBAAE;AAC7B,gBAAA,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;gBAC3F;;AAEJ,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAG,GAAG,CAAA,qEAAA,CAAuE,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC/H;;YAEJ,MAAM,KAAK,GAAG,sEAAsE;AACpF,YAAA,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,8BAA8B,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC3I;;AAEJ,YAAA,IAAI,CAAC,YAAY,CAAC,CAAA,EAAG,GAAG,CAAA,gFAAA,CAAkF,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC;AAC9I,SAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAI;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,IAAG;AAC9C,gBAAA,YAAY,CAAC,GAAG,GAAG,WAAW;AAC9B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AACzE,gBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG;AAC5E,sBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO;AACtD,gBAAA,YAAY,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AAClC,oBAAA,IAAI,OAAO,CAAC,cAAc,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE;AACxE,wBAAA,MAAM,QAAQ,GAAG;AACb,4BAAA,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;4BAChE,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,KAAK,CAAC;yBAChB;wBACD,IAAI,QAAQ,EAAE;4BACV,QAAQ,CAAC,QAAQ,CAAC;;wBAEtB;;AAEJ,oBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAChD,oBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAsB;oBAC9C,MAAM,OAAO,GAAG,eAAe;;AAE/B,oBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACpD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;wBACxC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,WAAW;;AAE5D,wBAAA,IAAI,WAAW,GAAG,MAAM,GAAG,aAAa,EAAE;AACtC,4BAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;;;AAGxC,iBAAC,EAAE,CAAC,QAA0C,KAAI;AAC9C,oBAAA,IAAI,QAAQ,YAAY,YAAY,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;wBACpF,MAAM,CAAC,QAAQ,CAAC;wBAChB;;AAEJ,oBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAsB;oBAC9C,MAAM,OAAO,GAAG,eAAe;;AAE/B,oBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;wBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAK;4BACrD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC;AAC3D,4BAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AAChE,yBAAC,CAAC;wBACF,IAAI,MAAM,EAAE;AACR,4BAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC1E;;;oBAGR,MAAM,CAAC,QAAQ,CAAC;AACpB,iBAAC,CAAC;AACN,aAAC,CAAC;AACN,SAAC,CAAC;;IAGI,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;;AAGlC,IAAA,iBAAiB,CAAC,GAAW,EAAE,OAAwB,EAAE,GAAe,EAAA;QAC9E,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;AAC7D,QAAA,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAA,OAAO,IAAI;;AAGL,IAAA,YAAY,CAAC,OAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAClE,YAAA,OAAO,KAAK;;AAEhB,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3C,IAAA,WAAW,CAAC,OAAyB,EAAE,MAAiB,GAAA,KAAK,EAAE,IAAU,EAAA;;AAE/E,QAAA,OAAO,GAAG,OAAO,GAAG,EAAC,GAAG,OAAO,EAAC,GAAG,EAAE;AACrC,QAAA,OAAO,CAAC,MAAM,GAAG,MAAM;QACvB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM;AAC3C,QAAA,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAK,OAAO,CAAC,OAAwB,IAAI,EAAE;QAC5F,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AACzH,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;;AAEzB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC3D,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM;;QAE9C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACzC,QAAA,OAAO,OAAO;;AAGR,IAAA,WAAW,CAAC,OAAwB,EAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;;AAGxF,IAAA,UAAU,CAAC,OAAwB,EAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;;AAGrF,IAAA,aAAa,CAAC,QAAa,EAAE,GAAW,EAAE,OAAwB,EAAA;AACxE,QAAA,OAAO,QAAQ;;AAGT,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;;AAGjD,IAAA,MAAM,WAAW,CAAC,GAAW,EAAE,OAAwB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;;AAGnB,IAAA,iBAAiB,CAAC,GAAW,EAAA;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,GAAG;AAC9E,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG;AAChD,QAAA,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAA,GAAA,EAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,SAAS,CAAG,EAAA,GAAG,EAAE;;AAtS1D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAyBJ,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,QAAQ,EACR,EAAA,EAAA,KAAA,EAAA,cAAc,EACd,EAAA,EAAA,KAAA,EAAA,cAAc,EACd,EAAA,EAAA,KAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,KAAA,EAAA,eAAe,EACf,EAAA,EAAA,KAAA,EAAA,cAAc,aACF,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHA/BtC,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;0BA0BgB,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,cAAc;;0BACrB,MAAM;2BAAC,cAAc;;0BACrB,MAAM;2BAAC,gBAAgB;;0BACvB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,cAAc;;0BACrB;;0BAAY,MAAM;2BAAC,eAAe;;;ACzD7C,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AAIjD,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,YAAY;;AAGvB,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,OAAO,KAAK;;IAGN,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;AAGpB,IAAA,GAAG,CAAC,GAAW,EAAA;AACX,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,GAAG;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;AACrD,QAAA,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI;AAC3E,cAAE;AACF,cAAE,CAAG,EAAA,OAAO,CAAG,EAAA,GAAG,EAAE;;IAG5B,GAAG,CAAC,GAAW,EAAE,OAAyB,EAAA;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAG1B,IAAA,QAAQ,CAAC,GAAW,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;AACvB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,GAAG;YACJ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,KAAI;AACrF,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACzB,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW;YAC/B,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACzB,KAAK,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;AACnC,YAAA,KAAK,CAAC,OAAO,GAAG,MAAM;AAC1B,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;8GA5ClB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACED;;AAEG;MAEU,WAAW,CAAA;AAMpB,IAAA,WAAA,CAAsB,SAA2B,EAC3B,IAAsB,EACH,IAAW,EAAA;QAF9B,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAI,CAAA,IAAA,GAAJ,IAAI;AAEtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAkB;;IAGvC,MAAM,SAAS,CAAY,IAAY,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI;AAClC,YAAA,OAAO,IAAI;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAA,KAAA,CAAO,EAAE;AAC1E,YAAA,YAAY,EAAE;AACjB,SAAA,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,KAAI;AACpB,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAiB;;AAG7C,IAAA,eAAe,CAAiB,IAAY,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI;AAClC,YAAA,OAAO,IAAI;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE;QAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,CAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,KAAA,EAAA,IAAI,CAAO,KAAA,CAAA,CAAC,EAClC,IAAI,CAAC,IAAI,CACZ;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;AAjC1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,4EAQA,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAR9B,WAAW,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;0BASgB,MAAM;2BAAC,mBAAmB;;;ACb3C,MAAM,WAAW,GAAU,EAAE;MAGhB,UAAU,CAAA;AAInB,IAAA,WAAA,CAAqB,QAAkB,EAAW,KAAmB,EAAiC,IAAkB,EAAA;QAAnG,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAqB,IAAK,CAAA,KAAA,GAAL,KAAK;QAA+C,IAAI,CAAA,IAAA,GAAJ,IAAI;AACtG,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AAC5C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,YAAA,MAAM,KAAK,GAAqB,IAAI,IAAI,IAAI,CAAC,KAAK,YAAY,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACnI,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,IAAG;gBAChB,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;wBAAE;AAC1B,oBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,oBAAA,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS;oBAC/C,IAAI,CAAC,IAAI,CAAC,SAAS;wBAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;wBACZ,IAAI,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;4BACrD,SAAS,CAAC,iBAAiB,EAAE;;AAEjC,wBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;wBAClB;;oBAEJ,IAAI,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;wBACjD,SAAS,CAAC,aAAa,EAAE;;oBAE7B;;AAEH,gBAAA,IAAI,CAAC,KAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,IAAG;AACpE,oBAAA,IAAI,CAAC,WAAW;wBAAE;AAClB,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;AACpC,iBAAC,CAAC;AACN,aAAC,CAAC;AACN,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAK;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE,SAAS;gBAAE;AACtB,YAAA,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS;YAC/C,IAAI,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;gBACrD,SAAS,CAAC,iBAAiB,EAAE;;AAEjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,SAAC,CAAC;;IAGI,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAC9B,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACjE,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,SAAS,GAAoB,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC,CAAC;AACxE,YAAA,IAAI,GAAG;AACH,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,gBAAA,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI;AACtD,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE;aACV;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;QAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AACrC,QAAA,OAAO,IAAI;;AA5DN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,mEAI4D,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJlF,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;0BAK2E,MAAM;2BAAC,YAAY;;;ACNzF,MAAO,UAAW,SAAQ,eAAe,CAAA;AAE3C,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,KAAK;;AAGhB,IAAA,GAAG,CAAC,GAAW,EAAA;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAQ,KAAA,EAAA,GAAG,CAAE,CAAA,CAAC;QACrD,IAAI,GAAG,IAAI,UAAU,IAAI,GAAG,IAAI,QAAQ,EAAE;YACtC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;;AAExC,QAAA,OAAO,OAAO;;AAGlB,IAAA,GAAG,CAAC,GAAW,EAAE,OAAyB,EAAE,IAAU,EAAA;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;;AAG9C,IAAA,MAAM,CAAC,GAAW,EAAE,OAAyB,EAAE,IAAU,EAAA;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGjD,IAAA,IAAI,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QACnD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAG/C,IAAA,GAAG,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QAClD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAG9C,IAAA,KAAK,CAAC,GAAW,EAAE,IAAU,EAAE,OAAyB,EAAA;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAGhD,IAAA,MAAM,CAAC,GAAW,EAAE,IAAS,EAAE,QAA2B,EAAE,OAAyB,EAAA;AACjF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;;IAG3D,IAAI,CAAC,GAAW,EAAE,MAAmB,EAAA;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;;8GAvC/B,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAV,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;MCHY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QAEI,IAAe,CAAA,eAAA,GAAY,IAAI;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAO;;IAExD,kBAAkB,GAAA;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGhD,IAAA,cAAc,CAAC,KAAa,EAAA;AACxB,QAAA,OAAO,IAAI;;AAElB;;MCPY,aAAa,CAAA;AAQtB,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,UAAU;;AAG1B,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,YAAY;;AAG5B,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,oBAAoB;;AAG3D,IAAA,WAAA,CAAqB,IAAgB,EAChB,SAA2B,EAC3B,QAAkB,EACI,WAAwB,EACxB,OAAe,EACb,UAAA,GAA6B,IAAI,EAC/B,eAAoB,IAAI,EAAA;QANlD,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACc,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAO,CAAA,OAAA,GAAP,OAAO;AAG9C,QAAA,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE;YAClB,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE;AACxC,gBAAA,UAAU,EAAE;AACf,aAAA,CAAC;;AAEN,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAC7B,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,EAC/F,IAAI,CAAC,UAAU,CAClB;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,IAAI,EAAE;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAK;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;AAC1B,oBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;oBACrE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;AAChC,wBAAA,IAAI,CAAC,YAAY,GAAG,CAAC;wBACrB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,GAAG;wBAC5B,OAAO,CAAC,CAAC,CAAC;AACd,qBAAC,CAAC;iBACL,EAAE,MAAM,CAAC;AACd,aAAC,CAAC;YACF,OAAO,IAAI,CAAC,MAAM;AACtB,SAAC;QACD,IAAI,CAAC,WAAW,EAAE;;IAGZ,WAAW,GAAA;;AAIX,IAAA,MAAM,QAAQ,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACzB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;;AAE7C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AAChC,QAAA,IAAI;AACA,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,CAAG,GAAG,SAAS,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC,CAAC,CAAC,SAAS,EAAE;AAClH,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;QAC7B,OAAO,CAAC,EAAE;AACR,YAAA,IAAI;AACA,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;AACzD,gBAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA,CAAE,CAAC;AAC7C,gBAAA,OAAO,MAAM;;YACf,OAAO,CAAC,EAAE;AACR,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,CAAA,CAAE,CAAC;;;;AAK3D,IAAA,aAAa,CAAC,MAAsB,EAAA;AAC1C,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;;IAGlC,aAAa,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAgB;YAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;AACrB,gBAAA,IAAI,KAAK,YAAY,WAAW,EAAE;oBAC9B,KAAK,CAAC,MAAM,EAAE;;AAEtB,aAAC,CAAC;AACF,YAAA,OAAO,KAAK;;QAEhB,OAAO,IAAI,CAAC,WAAW;;IAG3B,UAAU,CAAC,GAAW,EAAE,MAAc,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO;QACnE,MAAM,aAAa,GAAG,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK;AACpD,QAAA,GAAG,GAAG,CAAC,aAAa,IAAI,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE;QACvG,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAA,CAAE,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;AACzE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,aAAa,GAAG,QAAQ,GAAG,CAAA,CAAE,GAAG,GAAG;;AAGzE,IAAA,cAAc,CAAC,GAAW,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;;IAGjC,iBAAiB,CAAC,IAAY,EAAE,GAAY,EAAA;QACxC,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QACnE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAAC,EACzD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;AAC1B,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;AAlHpD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,mGAuBF,YAAY,EAAA,EAAA,EAAA,KAAA,EACZ,YAAY,EACA,EAAA,EAAA,KAAA,EAAA,WAAW,6BACX,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHA1BpC,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;0BAwBgB,MAAM;2BAAC,YAAY;;0BACnB,MAAM;2BAAC,YAAY;;0BACnB;;0BAAY,MAAM;2BAAC,WAAW;;0BAC9B;;0BAAY,MAAM;2BAAC,aAAa;;;MC9BpC,iBAAiB,CAAA;AAE1B,IAAA,WAAA,CAA8C,OAAwB,EAAA;QAAxB,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGrD,IAAA,MAAM,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACxB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,QAAA,OAAO,IAAI;;AAGf,IAAA,OAAO,CAAC,MAA4B,EAAA;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI;AACvB,gBAAA;oBACI,IAAI,EAAE,MAAM,CAAC,MAAM;oBACnB,OAAO,EAAE,MAAM,CAAC,SAAS;oBACzB,MAAM,EAAE,MAAM,CAAC;AAClB,iBAAA;AACD,gBAAA;AACI,oBAAA,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,eAAe;AAC1C,oBAAA,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,aAAa;oBAC9C,MAAM,EAAE,MAAM,CAAC;AAClB;AACJ,aAAA;YACD,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,SAAS,EAAE,MAAM,CAAC;AACrB,SAAA,CAAC;;AAlCG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAEN,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAF1B,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;0BAGgB,MAAM;2BAAC,eAAe;;;ACDjC,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AAOjD,IAAA,WAAA,CAAqB,QAAkB,EAAA;AACnC,QAAA,KAAK,EAAE;QADU,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAEzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGtB,IAAA,WAAW,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;;QACxE,OAAO,CAAC,EAAE;YACR;;AAEJ,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;AAC/D,YAAA,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAM,GAAA,EAAA,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;;QAC7D,OAAO,CAAC,EAAE;AACR,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAM,GAAA,EAAA,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;gBAC5D;;;AAGR,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE;AAC7B,QAAA,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO;QAC/H,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;YAAE;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI;AACzB,QAAA,IAAI;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA,GAAA,EAAM,KAAK,CAAC,OAAO,CAAK,EAAA,EAAA,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;;QACnE,OAAO,CAAC,EAAE;;AAEZ,QAAA,OAAO,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAM,GAAA,EAAA,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;;8GArCvD,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCDY,aAAa,CAAA;AAQtB,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,MAAM;;AAGtB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAS;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAW;AAChD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAU;AACjD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGvB,IAAA,KAAK,CAAC,CAAQ,EAAA;AACV,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG/B,IAAA,YAAY,CAAC,MAAe,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;;8GAzB1B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;MCIY,gBAAgB,CAAA;AAEzB,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,CAAC;;AAGZ,IAAA,IAAI,mBAAmB,GAAA;AACnB,QAAA,OAAO,aAAa;;AAGxB,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,CAAC;;AAGZ,IAAA,WAAA,CAA6C,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAIrD,IAAA,WAAW,CAAC,KAAa,EAAE,SAAkB,EAAE,OAAgB,EAAA;AAC3D,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;;IAG/F,YAAY,CAAC,KAAsB,EAAE,MAAe,EAAE,SAAkB,EAAE,OAAgB,EAAE,SAAkB,EAAA;AAC1G,QAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AACxC,QAAA,SAAS,GAAG,SAAS,IAAI,SAAS;AAClC,QAAA,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,cAAc;QACxC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAW,KAAK,GAAG,UAAU,CAAS,KAAK,CAAC,IAAI,CAAC;AACxF,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;AACtE,YAAA,qBAAqB,EAAE,SAAS;AAChC,YAAA,qBAAqB,EAAE,SAAS;AAChC,YAAA,WAAW,EAAE;AAChB,SAAA,CAAC;AACF,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC;;AAG/E,IAAA,gBAAgB,CAAC,KAAa,EAAE,SAAkB,EAAE,OAAgB,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAa,WAAA,CAAA,EAAE,SAAS,EAAE,OAAO,CAAC;;AAG5D,IAAA,YAAY,CAAC,SAAiB,EAAA;AACpC,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,gBAAgB;;AAxCrE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAcL,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAd3B,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAegB,MAAM;2BAAC,gBAAgB;;;MCf3B,qBAAqB,CAAA;AAO9B,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC/C,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;;IAGhC,GAAG,CAAC,EAAU,EAAE,SAAe,EAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,SAAS;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5C,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE;YAC/C,QAAQ,CAAC,SAAS,CAAC;;AAEvB,QAAA,OAAO,QAAQ;;IAGnB,GAAG,CAAC,EAAU,EAAE,QAA0B,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,QAAQ;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;AAGhC,IAAA,MAAM,CAAC,EAAU,EAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;IAGhC,oBAAoB,CAAC,EAAU,EAAE,QAAiC,EAAA;AAC9D,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,QAAQ;;8GAlCjC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCIY,WAAW,CAAA;AAEpB,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ;;IAGxB,IAAI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAO3B,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAO;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAGzB,IAAA,OAAO,CAAC,IAAY,EAAE,UAAkB,EAAE,MAAe,EAAA;QACrD,IAAI,GAAG,OAAO,KAAK,IAAI,WAAW,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACjE,UAAU,GAAG,OAAO,KAAK,IAAI,WAAW,GAAG,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACnF,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;;8GAvB7C,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAX,WAAW,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCYY,qBAAqB,CAAA;AAE9B,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;;AAG5G,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;IAGxD,IAAI,UAAU,CAAC,KAAoB,EAAA;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK;;AAGnD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,YAAY;;AAG5B,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe;;IAGnD,IAAI,eAAe,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1C,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe;;IAGhD,IAAI,YAAY,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe;;AAGhD,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;;IAG5B,IAAI,mBAAmB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGtD,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;;AAGtB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;;AAG9B,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;;IASjC,WAA4C,CAAA,MAAqB,EACpB,OAAuB,EACvB,OAAuB,EACrB,QAAyB,EAC1B,MAAsB,EAAA;QAJxB,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACL,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QACtB,IAAI,CAAC,YAAY,GAAG;AAChB,YAAA,IAAI,EAAE;SACT;QACD,IAAI,CAAC,WAAW,EAAE;;IAGZ,WAAW,GAAA;;AAIrB,IAAA,gBAAgB,CAAC,SAAmB,EAAA;QAChC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY;AAC5F,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAS,SAAS,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;AAC3D,SAAC,CAAC;;AAGN,IAAA,YAAY,CAAC,SAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;YAAE;AACxD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;AAG9D,IAAA,kBAAkB,CAAC,GAAW,EAAE,MAAA,GAAiB,IAAI,EAAA;QACjD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,iBAAiB,EAAE;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ;AACzD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,QAAQ,GAAG,GAAG,GAAG,WAAW,EAAE,MAAM,CAAC;;IAGhF,cAAc,CAAC,GAAW,EAAE,MAAe,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;;AAE/C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG;AAC1E,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;;IAGvE,eAAe,CAAC,GAAG,IAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAgB,OAAO,IAAG;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAG;AAC7E,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAI;oBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7B,oBAAA,OAAO,MAAM;AACjB,iBAAC,EAAE,EAAE,CAAC,CAAC;AACX,aAAC,CAAC;AACN,SAAC,CAAC;;AAGN,IAAA,wBAAwB,CAAC,YAA2B,EAAE,MAAY,EAAE,IAAa,EAAA;AAC7E,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;;AAG3E,IAAA,uBAAuB,CAAC,YAA4B,EAAE,MAAY,EAAE,IAAa,EAAA;AAC7E,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe;QACnC,MAAM,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI;AAChF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,GAAG,EAAE,EAAE,MAAM,CAAC;;IAGrE,WAAW,CAAC,IAAuB,EAAE,MAAe,EAAA;AAC1D,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;;AAE/C,QAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC;;AAEvB,QAAA,OAAO,IAAc;;IAGf,iBAAiB,CAAC,IAAY,EAAE,MAAe,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,SAAiB,EAAE,CAAS,KAAI;AAC1E,YAAA,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7C,YAAA,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;AACnD,SAAC,CAAC;;IAGI,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AACtE,YAAA,OAAO,IAAI;;QAEf,IAAI,WAAW,GAAW,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;eACrF,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,IAAI;AACnH,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,WAAW;QAEpC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAG;YAC1B,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACpC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAEpD,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;8GAjKb,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA8DV,aAAa,EACb,EAAA,EAAA,KAAA,EAAA,cAAc,aACd,cAAc,EAAA,EAAA,EAAA,KAAA,EACd,eAAe,EAAA,EAAA,EAAA,KAAA,EACf,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAlEzB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;0BA+DgB,MAAM;2BAAC,aAAa;;0BACpB,MAAM;2BAAC,cAAc;;0BACrB,MAAM;2BAAC,cAAc;;0BACrB,MAAM;2BAAC,eAAe;;0BACtB,MAAM;2BAAC,cAAc;;;AC9EhC,MAAO,eAAgB,SAAQ,qBAAqB,CAAA;AAMtD,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe;;IAGnD,IAAI,eAAe,CAAC,IAAY,EAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;YAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,SAAC,CAAC;;AAGN,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAC5C,QAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;AAGzE,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAI;AACrG,YAAA,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,IAAI,EAAE;SAClE,CAAC,CAAC;;IAGG,WAAW,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE;AAC7B,QAAA,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAY,KAAI;AACrC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC/B,SAAC;;AAGL,IAAA,MAAM,gBAAgB,GAAA;AAClB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE;AAChD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,IAAG;YACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW;YACxD,IAAI,WAAW,EAAE;gBACb,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;gBACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG;AAC9D,gBAAA,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAAE,oBAAA,OAAO,KAAK;;YAE3E,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,SAAC,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,eAAe,CAAC;;AAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,eAAe;AAC7H,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1C,IAAA,MAAM,cAAc,CAAC,GAAW,EAAE,SAAc,IAAI,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;AACnB,QAAA,IAAI;AACA,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AACxC,YAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;gBAClB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;;YAEnD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;;QACtC,OAAO,MAAM,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC;AAC5C,YAAA,OAAO,GAAG;;;IAIR,MAAM,WAAW,CAAC,IAAY,EAAA;QACpC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;QAClE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC;AAClD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,UAAU;QACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AAC9B,QAAA,OAAO,IAAI;;IAGL,cAAc,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe;AACjC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,IAAG;YACrF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAA,CAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA,EAAG,IAAI,CAAG,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAG;AAC1F,gBAAA,QAAQ,GAAG,QAAQ,IAAI,EAAE;AACzB,gBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;oBACjD,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC/C,oBAAA,OAAO,MAAM;AACjB,iBAAC,EAAE,EAAE,CAAC,CAAC;aACV,EAAE,MAAK;gBACJ,OAAO,CAAC,EAAE,CAAC;AACf,aAAC,CAAC;AACN,SAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;;IAG/B,YAAY,GAAA;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAA,CAAE;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA,gBAAA,EAAmB,GAAG,CAAA,CAAE,CAAC,CAAC,SAAS,EAAE;AAC7H,aAAA,IAAI,CACD,CAAC,QAA2B,KAAI;AAC5B,YAAA,OAAO,QAAQ;SAClB,EAAE,MAAK;YACJ,OAAO;AACH,gBAAA,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7B,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,QAAQ,EAAE;AACN,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,EAAE,EAAE;AACP;aACJ;AACL,SAAC,CACJ;QACL,OAAO,IAAI,CAAC,eAAe;;8GA3HtB,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCFY,cAAc,CAAA;AAIvB,IAAA,WAAA,CAA0C,GAAgB,EAAA;QAAhB,IAAG,CAAA,GAAA,GAAH,GAAG;;IAI7C,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,OAAO,EAAE,OAAO,IAAG;AAChE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AAChC,gBAAA,MAAM,OAAO,GAAoB,GAAG,CAAC,UAAU,EAAE,OAAO,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE;gBACjF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,IAAG;AACpC,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;wBAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/B,qBAAC,CAAC;AACN,iBAAC,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC;aACnB,EAAE,MAAK;gBACJ,OAAO,CAAC,EAAE,CAAC;AACf,aAAC,CAAC;SACL,EAAE;QACH,OAAO,IAAI,CAAC,cAAc;;IAG9B,MAAM,SAAS,CAAC,IAAY,EAAA;AACxB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AACvC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC;;AA7Bf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAIH,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJtB,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;0BAKgB,MAAM;2BAAC,WAAW;;;MCJtB,kBAAkB,CAAA;AAI3B,IAAA,WAAA,CAAgD,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACpD,IAAI,CAAC,QAAQ,GAAG;AACZ,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE;SACV;;IAGL,IAAI,CAAC,OAAe,EAAE,MAAU,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;;IAG3C,OAAO,CAAC,OAAe,EAAE,MAAU,EAAA;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;;IAG9C,OAAO,CAAC,OAAe,EAAE,MAAU,EAAA;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;;IAG9C,KAAK,CAAC,OAAe,EAAE,MAAU,EAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;;IAG5C,YAAY,CAAC,OAAe,EAAE,MAAU,EAAA;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;;IAG1D,eAAe,CAAC,OAAe,EAAE,MAAU,EAAA;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;;IAG7D,eAAe,CAAC,OAAe,EAAE,MAAU,EAAA;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;;IAG7D,aAAa,CAAC,OAAe,EAAE,MAAU,EAAA;QACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;;AAG3D,IAAA,iBAAiB,CAAC,MAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;YACnB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;;SAEnD,EAAE,MAAM,IAAG;AACR,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;AAC9C,SAAC,CAAC;;AAGI,IAAA,SAAS,CAAC,OAAe,EAAE,MAAS,EAAE,IAAe,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;YACrD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AAChC,SAAC,CAAC;;AAGI,IAAA,MAAM,iBAAiB,CAAC,OAAe,EAAE,MAAS,EAAE,IAAe,EAAA;AACzE,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;;AAG7B,IAAA,IAAI,CAAC,OAAe,EAAE,IAAe,EAAE,MAAS,EAAA;AACtD,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,gBAAA,CAAkB,EAAE,MAAM,CAAC;AAClF,QAAA,OAAO,IAAI;;AAvEN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAIP,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJ3B,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;0BAKgB,MAAM;2BAAC,gBAAgB;;;MCgC3B,sBAAsB,CAAA;AAM/B,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;;AAGjC,IAAA,WAAA,CACc,MAAsB,EACtB,QAA0B,EACJ,WAAwB,EACf,cAAmC,EAAA;QAHlE,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACc,IAAW,CAAA,WAAA,GAAX,WAAW;AAG3C,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,EAAE;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;QAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAGxD,IAAA,iBAAiB,CAAI,QAAgB,EAAE,QAAA,GAAmB,MAAM,EAAA;AAC5D,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;AAC3C,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;;QAGrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,QAAQ,CAAe,YAAA,EAAA,QAAQ,CAA2B,yBAAA,CAAA,CAAC;;AAErH,QAAA,OAAO,MAAM;;IAGjB,MAAM,gBAAgB,CAAC,QAAkC,EAAA;;AAGrD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACvB,aAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC;AAExD,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAC,QAAQ,CAAqC,mCAAA,CAAA,CAAC;;AAG9F,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,CAAA,gBAAA,EAAmB,QAAQ,CAAC,QAAQ,CAAc,YAAA,CAAA,CAAC;;AAGvE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAEjC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;;AAGvE,IAAA,eAAe,CAAC,aAAwB,EAAE,gBAAwB,EAAE,QAAmB,EAAE,KAAe,EAAA;QACpG,IAAI,gBAAgB,EAAE;YAClB,gBAAgB,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAG;gBACtD,OAAO,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;AACtD,aAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;;aACxC;YACH,gBAAgB,GAAG,EAAE;;QAEzB,OAAO,eAAe,CAAC,aAAa,EAAE;AAClC,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AACzC,YAAA,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAC1C;AACH,SAAA,CAAC;;IAGN,SAAS,CAAI,aAAsB,EAAE,kBAAiC,EAAA;AAClE,QAAA,kBAAkB,GAAG,kBAAkB,IAAI,IAAI,CAAC,WAAW;AAC3D,QAAA,OAAO,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,kBAAkB,CAAC;;AAGhG,IAAA,UAAU,CAAC,OAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;;AAGnC,IAAA,UAAU,CAAC,OAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI;YACA,OAAO,CAAC,OAAO,EAAE;;QACnB,OAAO,CAAC,EAAE;AACR,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,kDAAA,CAAoD,CAAC;;;IAIjE,eAAe,CAAC,QAAgB,EAAE,QAA6B,EAAA;QACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;AAC5D,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,QAAQ,CAAC;;AAEtE,QAAA,OAAO,CAAC,OAAO,CAAC,eAAe,IAAG;AAC9B,YAAA,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;AACtC,gBAAA,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC;AACjC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,IAAI,QAAQ,EAAE,GAAG,CAAC,SAAgB,EAAE,IAAI,CAAC,CAAC;AACzF,aAAC,CAAC;AACN,SAAC,CAAC;;IAGE,MAAM,UAAU,CAAC,UAA6B,EAAA;QAClD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAElD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,OAAM,OAAO,KAAG;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YACxC,MAAM,MAAM,GAAI,MAAM,CAAC,uBAAuB,CAA2B,CAAC,YAAY;AACtF,YAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnE,YAAY,EAAE,UAAU,CAAC;AAC5B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACnB,gBAAA,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;AACrC,gBAAA,IAAI,UAAU,CAAC,iBAAiB,KAAK,KAAK,EAAE;oBACxC,MAAM,CAAC,iBAAiB,EAAE;;;YAGlC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC1D,YAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;;8GA9HzC,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAanB,YAAY,EAAA,EAAA,EAAA,KAAA,EACA,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAdlC,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;0BAcQ,MAAM;2BAAC,YAAY;;0BACnB;;0BAAY,MAAM;2BAAC,mBAAmB;;;AC7CzC,MAAO,uBAAwB,SAAQ,oBAAoB,CAAA;AAI7D,IAAA,WAAA,CAA+C,QAA0B,EAAA;AACrE,QAAA,KAAK,EAAE;QADoC,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAEnD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGnB,IAAA,SAAS,CAAC,IAAa,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAG;AACtD,YAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI;AAC3D,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;;AAGhC,IAAA,KAAK,CAAC,GAAW,EAAA;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAG;AACtD,YAAA,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI;AAC3D,SAAC,CAAC;AACF,QAAA,OAAO,IAAI;;AAGf,IAAA,aAAa,CAAC,SAAkB,EAAA;QAC5B,MAAM,MAAM,GAAG,SAAS,GAAG,CAAA,SAAA,CAAW,GAAG,CAAA,KAAA,CAAO;QAChD,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;QACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AACpD,gBAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;AAAE,oBAAA,OAAO,GAAG;AACzC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;gBACvB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC/B,GAAG,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,GAAG;AACtD,gBAAA,OAAO,GAAG;aACb,EAAE,EAAE,CAAC;;AAEV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;IAG1B,mBAAmB,CAAC,YAA6B,EAAE,EAAiC,EAAA;AAChF,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;QAC9B,MAAM,WAAW,GAAG,EAAE;QACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAC1E,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACtE,YAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAChB,YAAA,OAAO,GAAG;SACb,EAAE,EAAE,CAAC;AACN,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAG;AAC/D,YAAA,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YAC3D,EAAE,CAAC,CAAC,CAAC;AACL,YAAA,OAAO,CAAC;AACZ,SAAC,CAAC,EAAE,QAAQ,CAAC;AACb,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAG;AACpB,YAAA,CAAC,CAAC,MAAM,GAAG,QAAQ;AACvB,SAAC,CAAC;AACF,QAAA,OAAO,QAAQ;;AA7DV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAIZ,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJ3B,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;0BAKgB,MAAM;2BAAC,gBAAgB;;;MCT3B,cAAc,CAAA;AAEvB,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,YAAY;;AAG5B,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,cAAc;;AAM9B,IAAA,WAAA,CAAqC,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAU;;AAGpD,IAAA,MAAM,CAAI,QAAiG,EAAA;QACvG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,OAAO,CAAI,QAAQ,CAAC,CAAC,CAAC;;AAGhF,IAAA,GAAG,CAAC,QAAwB,EAAA;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAG7E,IAAA,OAAO,CAAI,KAAyB,EAAA;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;AAG9E,IAAA,MAAM,CAAI,KAAyB,EAAA;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;IAGnE,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;YAAE;QAC5B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;AAGrC,IAAA,GAAG,CAAI,OAAmB,EAAA;QAChC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,IAAG;gBACb,OAAO,CAAC,CAAC,CAAC;gBACV,IAAI,CAAC,eAAe,EAAE;aACzB,EAAE,CAAC,IAAG;gBACH,MAAM,CAAC,CAAC,CAAC;gBACT,IAAI,CAAC,eAAe,EAAE;AAC1B,aAAC,CAAC;AACN,SAAC,CAAC;;AAnDG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBAaH,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAbjB,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;0BAcgB,MAAM;2BAAC,MAAM;;;MCVjB,aAAa,CAAA;AAKtB,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;;AAG7B,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;AAGzB,IAAA,WAAA,CAA2C,IAAkB,EACnB,GAAgB,EACZ,MAAc,EAAA;QAFjB,IAAI,CAAA,IAAA,GAAJ,IAAI;QACL,IAAG,CAAA,GAAA,GAAH,GAAG;QACC,IAAM,CAAA,MAAA,GAAN,MAAM;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,YAAW;YAC3C,IAAI,MAAM,GAAsB,IAAI;AACpC,YAAA,IAAI;gBACA,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAG,EAAA,GAAG,CAAe,aAAA,CAAA,CAAC;;YAC9D,OAAO,CAAC,EAAE;gBACR,MAAM,EAAE,MAAM,EAAE;AAChB,gBAAA,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA,4CAAA,CAA8C,CAAC;;AAEhF,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,SAAC,CAAC;;IAGN,QAAQ,CAAC,eAA6B,EAAE,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,IAAG;YAClD,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC1B;;YAEJ,IAAI,CAAC,UAAU,EAAE;AACrB,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;;;IAIlC,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;QAC3B,IAAI,CAAC,UAAU,EAAE;;IAGrB,OAAO,CAAC,eAA6B,EAAE,EAAA;QACnC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3C,YAAA,YAAY,GAAG;AACX,gBAAA,IAAI,YAAY,IAAI,EAAE,CAAC;gBACvB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAC1E,oBAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxE,oBAAA,OAAO,GAAG;iBACb,EAAE,EAAE;aACR;;AAEL,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;;IAGrC,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;;IAG5B,SAAS,CAAC,KAAa,EAAE,EAA+B,EAAA;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;;IAG3C,IAAI,CAAC,KAAa,EAAE,OAAmB,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;;IAGpC,OAAO,CAAC,KAAa,EAAE,OAAsB,EAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;;AAzErC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAaF,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,YAAY,EACZ,EAAA,EAAA,KAAA,EAAA,WAAW,aACX,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAfzB,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;0BAcgB,MAAM;2BAAC,YAAY;;0BACnB,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,cAAc;;;MCjBzB,eAAe,CAAA;IAgBxB,OAAO,GAAG,CAAC,EAAe,EAAA;QACtB,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE;YACnC,OAAO,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;;AAE3C,QAAA,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC;;AAGxB,IAAA,OAAO,GAAG,CAAC,EAAe,EAAE,IAAqB,EAAA;QACvD,eAAe,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE;QAChE,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;;AAG1C,IAAA,WAAA,CAAgC,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAG;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa;YAClD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU;AAChD,SAAC;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAG;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;iBACf;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU;;AAEpD,SAAC;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,IAAG;YACnB,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YAClD,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AAChD,SAAC;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAG;AACpB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAChB,iBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;YAEtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;;AAEvC,SAAC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,IAAG;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;AAC9B,SAAC;QACD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAC7C,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;;IAGtC,WAAW,CAAC,GAAsB,EAAE,KAAwB,EAAA;QACxD,IAAI,CAAC,SAAS,GAAG;YACb,GAAG,IAAI,CAAC,SAAS;YACjB,EAAC,GAAG,EAAE,KAAK;SACd;;IAGL,cAAc,CAAC,IAAuB,EAAE,QAA2B,EAAA;QAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC/F,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE;QAC/B,IAAI,CAAC,OAAO,EAAE;;IAGR,SAAS,CAAC,IAAuB,EAAE,EAAa,EAAA;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;AAC3B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;gBAAE;AACxB,YAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACnB,SAAC,CAAC;;IAGI,OAAO,GAAA;QACb,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAChD,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;AAEhD;;SCtGeE,aAAW,GAAA;AAE3B;AAGM,MAAO,mBAAoB,SAAQC,gBAAkB,CAAA;aAExC,IAAW,CAAA,WAAA,GAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAtE,CAAwE;IAElG,WAA8B,CAAA,GAAQ,EAAU,SAA2B,EAAA;QACvE,KAAK,CAAC,GAAG,CAAC;QADkC,IAAS,CAAA,SAAA,GAAT,SAAS;;AAIzD,IAAA,QAAQ,CAAC,SAA4B,EAAA;QACjC,OAAO,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;;AAG9D,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAA4B,EAAE,OAAiB,EAAA;QAClF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;AAAE,gBAAA,OAAOD,aAAW;AAC/C,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAY,KAAI;gBAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC;YACD,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACvC,YAAA,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC;YACnC,OAAO,MAAM,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC;AACvD,SAAC,CAAC;;AAtBG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAIR,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAKgB,MAAM;2BAAC,QAAQ;;;ACLhC,SAASE,aAAW,GAAA;AAEpB;AAEA,SAAS,QAAQ,CAAC,EAAO,EAAA;IACrB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,EAAE,KAAK,MAAM;AACzD;AAGM,MAAO,iBAAkB,SAAQC,gBAAkB,CAAA;aAErC,IAAU,CAAA,UAAA,GAAW,QAAX,CAAoB;AAI9C,IAAA,WAAA,CAA8B,GAAQ,EACM,WAAmB,EAChB,cAAmC,EAC7D,SAA2B,EAAA;QAC5C,KAAK,CAAC,GAAG,CAAC;QAH8B,IAAW,CAAA,WAAA,GAAX,WAAW;QACR,IAAc,CAAA,cAAA,GAAd,cAAc;QACxC,IAAS,CAAA,SAAA,GAAT,SAAS;AAE1B,QAAA,IAAI,CAAC,QAAQ,GAAG,0BAA0B,CAAC;AACvC,YAAA,QAAQ,EAAE;AACb,SAAA,CAAC;;AAGN,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACtB,QAAA,OAAO,SAAS,KAAK,iBAAiB,CAAC,UAAU;;AAGrD,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;AACvB,gBAAA,OAAOD,aAAW;AACtB,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,EAAE;AACxC,YAAA,MAAM,EAAE,GAAG,EAAE,IAAG;AACZ,gBAAA,KAAK,CAAC,GAAG,CAAC,MAAK;oBACX,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;AAC/B,iBAAC,EAAE,IAAI,CAAC,WAAW,CAAC;AACxB,aAAC;AACD,YAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AACnB,gBAAA,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC;;iBAEtC;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;;AAEvC,YAAA,OAAO,MAAK;AACR,gBAAA,IAAI;AACA,oBAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE;AACnB,wBAAA,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC;;yBAEzC;AACD,wBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;;;gBAGxC,OAAO,CAAC,EAAE;;wBACA;oBACN,KAAK,CAAC,KAAK,EAAE;;AAErB,aAAC;AACL,SAAC,CAAC;;AAnDG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAMN,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,QAAQ,EACR,EAAA,EAAA,KAAA,EAAA,YAAY,aACZ,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAR1B,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;0BAOgB,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,YAAY;;0BACnB,MAAM;2BAAC,eAAe;;;SCtBvB,WAAW,GAAA;AAE3B;AAGM,MAAO,iBAAkB,SAAQG,gBAAkB,CAAA;aAEtC,IAAU,CAAA,UAAA,GAAW,QAAX,CAAoB;IAE7C,WAA8B,CAAA,GAAQ,EAAU,SAA2B,EAAA;QACvE,KAAK,CAAC,GAAG,CAAC;QADkC,IAAS,CAAA,SAAA,GAAT,SAAS;;AAIzD,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACtB,QAAA,OAAO,SAAS,KAAK,iBAAiB,CAAC,UAAU;;AAGrD,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAAiB,EAAA;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;AAAE,gBAAA,OAAO,WAAW;AAC/C,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAQ,KAAI;gBAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAC;AACD,YAAA,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC7C,OAAO,MAAM,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACjE,SAAC,CAAC;;AArBG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAIN,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAH,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJnB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;0BAKgB,MAAM;2BAAC,QAAQ;;;MCRnB,SAAS,CAAA;IAClB,SAAS,CAAC,KAAY,EAAE,KAAa,EAAA;QACjC,MAAM,MAAM,GAAU,EAAE;QACxB,IAAI,SAAS,GAAU,IAAI;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC1B,YAAA,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE;gBACpB,SAAS,GAAG,EAAE;AACd,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;;AAE1B,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,SAAC,CAAC;AACF,QAAA,OAAO,MAAM;;8GAXR,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACID,MAAM,YAAY,GAAa,EAAE;MAMpB,WAAW,CAAA;AAEpB,IAAA,SAAS,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,YAAY;QAC/B,MAAM,OAAO,GAAa,EAAE;QAC5B,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAI;YACpC,OAAO,CAAC,IAAI,CAAC;AACT,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,OAAO,CAAC;AAClB,aAAA,CAAC;AACN,SAAC,CAAC;AACF,QAAA,OAAO,OAAO;;8GAZT,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCNY,uBAAuB,CAAA;AAChC,IAAA,SAAS,CAAC,KAAY,EAAE,UAA4B,EAAE,SAAc,EAAE,EAAA;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACf,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,KAAI;AAC9E,gBAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,MAAM,EAAE;AACX,iBAAA,CAAC;AACN,aAAC;AACL,SAAC,CAAC;QACF,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;AAClE,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;AAClD,YAAA,OAAO,MAAM;AACjB,SAAC,EAAE,EAAC,GAAG,IAAI,EAAC,CAAC,CAAC;;8GAhBT,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;SCJeI,eAAa,GAAA;AACzB,IAAA,OAAO,IAAI;AACf;MAMa,UAAU,CAAA;AACnB,IAAA,SAAS,CAAC,MAAW,EAAE,SAAcA,eAAa,EAAE,SAAc,EAAE,EAAA;QAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE;QACxD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAI;YACxF,MAAM,KAAK,GAAG,GAAG;AACjB,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;AAC5E,SAAC;QACD,IAAI,QAAQ,EAAE;YACV,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAG;AACpC,gBAAA,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;aACtD,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;gBACtB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,gBAAA,OAAO,MAAM;aAChB,EAAE,EAAE,CAAC;;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;YAChC,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AACjD,SAAC,CAAC;;8GAlBG,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;SCPeA,eAAa,GAAA;AACzB,IAAA,OAAO,IAAI;AACf;MAMa,QAAQ,CAAA;AACjB,IAAA,SAAS,CAAC,MAAa,EAAE,MAAc,GAAAA,eAAa,EAAE,MAAY,EAAA;AAC9D,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE;AAC3C,QAAA,MAAM,GAAG,MAAM,IAAI,EAAE;AACrB,QAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAM;;QAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAI;AAC1F,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;AACvE,SAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;8GAVzE,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAR,QAAQ,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCHY,gBAAgB,CAAA;AAEzB,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS;;AAG7B,IAAA,SAAS,CAAC,KAAa,EAAE,MAAe,EAAE,SAAkB,EAAE,OAAgB,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;;8GANhE,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCCY,aAAa,CAAA;IACtB,SAAS,CAAC,KAAU,EAAE,MAAW,EAAA;QAC7B,OAAO,KAAK,IAAI,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI;;8GAFhF,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCAY,WAAW,CAAA;AACpB,IAAA,SAAS,CAAC,KAAU,EAAA;QAChB,OAAO,OAAO,KAAK;;8GAFd,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCEY,YAAY,CAAA;AAErB,IAAA,SAAS,CAAC,KAAU,EAAE,IAAY,EAAE,aAAkB,EAAE,EAAA;AACpD,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC;;8GAHhE,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCGY,kBAAkB,CAAA;AAO3B,IAAA,WAAA,CAAsB,eAAsC,EAAA;QAAtC,IAAe,CAAA,eAAA,GAAf,eAAe;AACjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;IAG9B,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AACzE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC9B,SAAC,CAAC;;IAGN,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;;IAG3C,SAAS,CAAC,UAAkB,EAAE,SAAe,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACtE,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAClC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;;QAEzE,OAAO,IAAI,CAAC,cAAc;;8GA7BrB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCAY,WAAW,CAAA;AAEpB,IAAA,SAAS,CAAC,OAAc,EAAE,MAAc,EAAE,MAAiB,IAAI,EAAA;AAC3D,QAAA,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,MAAW,EAAE,IAAS,KAAI;AAC7D,YAAA,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;AACpD,YAAA,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG;YACxC,MAAM,KAAK,GAAU,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;AACtC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACnB,YAAA,OAAO,MAAM;SAChB,EAAE,EAAE,CAAC;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAG;AACjC,YAAA,OAAO,EAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC;AAC3C,SAAC,CAAC;;8GAbG,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;SCJe,aAAa,GAAA;AACzB,IAAA,OAAO,IAAI;AACf;MAMa,YAAY,CAAA;AACrB,IAAA,SAAS,CAAC,KAAU,EAAE,GAAG,MAAa,EAAA;QAClC,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;8GAFnE,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCJY,UAAU,CAAA;IACnB,SAAS,CAAC,KAAU,EAAE,IAAY,EAAA;AAC9B,QAAA,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI;;8GAFzB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCEY,QAAQ,CAAA;AAEjB,IAAA,SAAS,CAAC,KAAU,EAAE,SAAA,GAAoB,IAAI,EAAA;AAC1C,QAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,cAAE,KAAK,CAAC,IAAI,CAAC,SAAS;cACpB,EAAE;;8GALH,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAR,QAAQ,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACHD,MAAM,SAAS,GAAU,EAAE;MAMd,QAAQ,CAAA;AAEjB,IAAA,SAAS,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;AAC5B,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK;cAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACzB,cAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;8GANnB,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAR,QAAQ,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACLK,SAAU,aAAa,CAAC,IAAI,EAAA;AAC9B,IAAA,OAAO,IAAI;AACf;MAMa,OAAO,CAAA;AAChB,IAAA,SAAS,CAAC,MAAa,EAAE,SAAc,aAAa,EAAE,SAAc,EAAE,EAAA;AAClE,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,KAAI;AAClF,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;AAChC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACN,SAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;8GAVhE,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAP,OAAO,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCFY,OAAO,CAAA;AAChB,IAAA,SAAS,CAAC,KAAY,EAAE,WAAgB,IAAI,EAAE,SAAc,EAAE,EAAA;QAC1D,QAAQ,GAAG,QAAQ,KAAK,IAAI,IAAY,IAAI,CAAC;QAC7C,MAAM,WAAW,GAAa,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,KAAI;AAC1F,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAClC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACN,SAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;8GAV1E,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAP,OAAO,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCCY,OAAO,CAAA;AAChB,IAAA,SAAS,CAAC,KAAU,EAAE,WAAgB,IAAI,EAAE,SAAc,EAAE,EAAA;QACxD,QAAQ,GAAG,QAAQ,KAAK,IAAI,IAAY,IAAI,CAAC;QAC7C,MAAM,WAAW,GAAa,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,KAAI;AAC1F,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAClC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACN,SAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;8GAV1E,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAP,OAAO,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCDY,OAAO,CAAA;AAEhB,IAAA,SAAS,CAAC,KAAY,EAAA;QAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;;8GAHxD,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAP,OAAO,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACFK,SAAU,cAAc,CAAC,MAAM,EAAA;AACjC,IAAA,OAAO,MAAM;AACjB;MAMa,UAAU,CAAA;IACnB,SAAS,CAAC,MAAa,EAAE,MAAW,EAAE,OAAe,GAAA,cAAc,EAAE,MAAA,GAAc,EAAE,EAAA;AACjF,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAI;AAC5F,YAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE;AACjC,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACN,SAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;;8GAX3F,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACPD,MAAM,KAAK,GAAQ,EAAE;MAMR,SAAS,CAAA;AAElB,IAAA,SAAS,CAAC,GAAQ,EAAE,MAAW,EAAE,eAAuB,KAAK,EAAA;AACzD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;AACtB,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,GAAG;QACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,EAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,KAAI;AACrF,YAAA,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;AACjE,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;AACrC,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;AACnH,oBAAA,OAAO,MAAM;iBAChB,EAAE,EAAE,CAAC;AACN,gBAAA,OAAO,KAAK;;AAEhB,YAAA,OAAO,IAAI;AACf,SAAC,CAAC;QACF,OAAO,QAAQ,CAAC,GAAG;;8GAfd,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCDY,WAAW,CAAA;AACpB,IAAA,SAAS,CAAC,KAAa,EAAE,IAAqB,EAAE,EAAU,EAAA;QACtD,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAG,EAAA,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAA,CAAE;;8GAFlE,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ACHD,MAAM,UAAU,GAAU,EAAE;MAMf,WAAW,CAAA;AAEpB,IAAA,SAAS,CAAC,KAAY,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,UAAU;QAClD,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEzB,QAAA,OAAO,MAAM;;8GARR,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCDY,SAAS,CAAA;AAElB,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS;;AAG7B,IAAA,SAAS,CAAC,KAAa,EAAE,YAAoB,CAAC,EAAE,UAAkB,CAAC,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;;8GANvD,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCCY,YAAY,CAAA;AAErB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAI7B,IAAA,SAAS,CAAC,KAAa,EAAE,IAAA,GAAe,MAAM,EAAA;QAC1C,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACxD,YAAA,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACzD,YAAA,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAC1D,YAAA,KAAK,KAAK;gBACN,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACvD,YAAA,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC;AAC/D,YAAA;AACI,gBAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,CAAA,CAAE,CAAC;;;8GAnBlF,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCAY,SAAS,CAAA;AAElB,IAAA,SAAS,CAAC,KAAY,EAAA;QAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;;8GAH1D,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCCY,SAAS,CAAA;AAElB,IAAA,SAAS,CAAC,KAAU,EAAE,SAAA,GAAoB,GAAG,EAAA;QACzC,OAAO,CAAA,EAAG,KAAK,CAAE,CAAA,CAAC,KAAK,CAAC,SAAS,CAAC;;8GAH7B,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCKY,aAAa,CAAA;AAStB,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe;;IAGxC,WAAqB,CAAA,GAAsB,EAAqC,QAA0B,EAAA;QAArF,IAAG,CAAA,GAAA,GAAH,GAAG;QAAwD,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAIxF,IAAA,SAAS,CAAC,KAAuB,EAAE,GAAG,IAAW,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;QACrB,IAAI,KAAK,GAAG,KAAK;AACjB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,KAAK,GAAG,IAAI;;AAEhB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AAClD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;YACxB,KAAK,GAAG,IAAI;;AAEhB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,KAAK,GAAG,IAAI;;AAEhB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/C,gBAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/C,oBAAA,MAAM,SAAS,GAAW,IAAI,CAAC,CAAC;AAC3B,yBAAA,OAAO,CAAC,kCAAkC,EAAE,CAAA,KAAA,CAAO;AACnD,yBAAA,OAAO,CAAC,sBAAsB,EAAE,CAAA,KAAA,CAAO,CAAC;AAC7C,oBAAA,IAAI;wBACA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;;oBACrC,OAAO,CAAC,EAAE;wBACR,MAAM,IAAI,WAAW,CAAC,CAAwE,qEAAA,EAAA,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC;;;AAEzG,qBAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/D,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;;;YAG7B,KAAK,GAAG,IAAI;;QAEhB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;gBAC1K,OAAO,IAAI,CAAC,SAAS;;AAEzB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;gBACtB,OAAO,IAAI,CAAC,SAAS;;AAEzB,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAG;AAC1D,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;gBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAEhC,aAAC,CAAC;;QAEN,OAAO,IAAI,CAAC,SAAS;;AArEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,mDAa+B,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAb5D,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB;;kBACA,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;0BAciD,MAAM;2BAAC,gBAAgB;;;ACpBzE,MAAM,WAAW,GAAU,EAAE;MAMhB,UAAU,CAAA;AAEnB,IAAA,SAAS,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,WAAW;AAC9B,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK;AAC5B,cAAE;AACF,cAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;;8GAN1C,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCQY,eAAe,CAAA;AAUxB,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ;;AAGxB,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,OAAO;;IAGvB,WAA+C,CAAA,OAAwB,EAAY,GAAsB,EAAA;QAA1D,IAAO,CAAA,OAAA,GAAP,OAAO;QAA6B,IAAG,CAAA,GAAA,GAAH,GAAG;AAClF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAiB;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAiB;;IAG1C,SAAS,GAAA;AACf,QAAA,OAAO,YAAY,IAAI;;IAG3B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAI5B,IAAA,KAAK,CAAC,EAAS,EAAA;QACX,IAAI,EAAE,EAAE;YACJ,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,eAAe,EAAE;;QAExB,IAAI,IAAI,CAAC,QAAQ;YAAE;QACnB,IAAI,CAAC,UAAU,EAAE;;IAGrB,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAA,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACpD,QAAA,IAAI,EAAE,MAAM,YAAY,OAAO,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,OAAO,KAAK;;AAEhB,QAAA,MAAM,CAAC,IAAI,CAAC,MAAM,IAAG;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;;SAE3D,EAAE,MAAM,IAAG;AACR,YAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;AACpE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;AACtD,SAAC,CAAC,CAAC,OAAO,CAAC,MAAK;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAEhC,SAAC,CAAC;AACF,QAAA,OAAO,IAAI;;AArEN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAoBJ,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGApB1B,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;0BAqBgB,MAAM;2BAAC,eAAe;yEAlB1B,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAES,SAAS,EAAA,CAAA;sBAAlB;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBAKG,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,gBAAgB;gBAMzB,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,eAAe;gBAmB5B,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACxC/B,MAAO,oBAAqB,SAAQ,eAAe,CAAA;IAI3C,SAAS,GAAA;QACf,OAAO,IAAI,CAAC,MAAM;;8GALb,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;AACb,iBAAA;8BAG0B,MAAM,EAAA,CAAA;sBAA5B,KAAK;uBAAC,cAAc;;;ACNzB,MAAM,YAAY,GAAG,eAAe;AACpC,MAAM,YAAY,GAAG,eAAe;MAMvB,mBAAmB,CAAA;AAK5B,IAAA,WAAA,CAAoB,IAAgB,EAAU,OAAmB,EAAU,QAAmB,EAAU,SAA2B,EAAA;QAA/G,IAAI,CAAA,IAAA,GAAJ,IAAI;QAAsB,IAAO,CAAA,OAAA,GAAP,OAAO;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAqB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAIjH,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC;;AAEJ,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AAChE,QAAA,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AAC7D,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;SAC1B,EAAE,MAAK;AACJ,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACpE,SAAC,CAAC;;AAGE,IAAA,aAAa,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,EAAE,QAAQ,GAAG,CAAA,EAAA,CAAI,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC;;8GA5BrF,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;8JAGY,UAAU,EAAA,CAAA;sBAAlB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;MCRQ,wBAAwB,CAAA;IAOjC,WAAoB,CAAA,GAAqB,EAAU,MAA8B,EAAA;QAA7D,IAAG,CAAA,GAAA,GAAH,GAAG;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;;AAIzD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACzB,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,QAAQ,EAAE,IAAI,CAAC;AAClB,SAAA,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;YACX,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,YAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACxC,YAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC7C,SAAC,CAAC;;IAGN,WAAW,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE;AACd,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;;AAE1B,QAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;;8GA/BrB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;uHAGY,MAAM,EAAA,CAAA;sBAAd;gBACuB,QAAQ,EAAA,CAAA;sBAA/B,KAAK;uBAAC,eAAe;;;MCFb,6BAA6B,CAAA;AAKtC,IAAA,WAAA,CAAqB,GAAqB,EAAA;QAArB,IAAG,CAAA,GAAA,GAAH,GAAG;;8GALf,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;gFAIY,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MCJQ,uBAAuB,CAAA;IAIhC,WAAqB,CAAA,eAAsC,EACtC,QAA0B,EAAA;QAD1B,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAI7B,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAGpD,WAAW,GAAA;QACP,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;8GAd/B,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;iHAG4B,EAAE,EAAA,CAAA;sBAA1B,KAAK;uBAAC,gBAAgB;;;MCad,aAAa,CAAA;AAOtB,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,MAAM;;AAKtB,IAAA,WAAA,CAAoB,OAAmB,EAAU,QAAmB,EAAgC,KAAmB,EAAA;QAAnG,IAAO,CAAA,OAAA,GAAP,OAAO;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAA2C,IAAK,CAAA,KAAA,GAAL,KAAK;AACrG,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAW;;IAGnD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAGhF,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,WAAW;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;;AAGtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA,SAAA,EAAY,OAAO,CAAC,IAAI,CAAC,aAAa,CAAA,CAAE,CAAC;AAC/F,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAA,SAAA,EAAY,OAAO,CAAC,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC;;QAE/F,IAAI,CAAC,UAAU,EAAE;;IAIrB,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE;;IAGb,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,OAAA,CAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAC7F,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;gBAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;AAC/C,SAAC,CAAC;;AA/CG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,qEAcwD,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAdjF,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;0BAe0E,MAAM;2BAAC,YAAY;yCAZjF,IAAI,EAAA,CAAA;sBAAZ;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACS,YAAY,EAAA,CAAA;sBAArB;gBAGG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,cAAc;gBA8B3B,KAAK,EAAA,CAAA;sBADJ,YAAY;uBAAC,OAAO;;;MC1CZ,0BAA0B,CAAA;IAQ3B,OAAO,sBAAsB,CAAC,SAAuB,EAAA;AACzD,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;AAC9D,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC;QAE7D,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE;AAC3C,YAAA,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;gBAChC,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,oBAAA,OAAO,IAAI;;;AAGnB,YAAA,OAAO,KAAK;;aACT;AACH,YAAA,OAAO,IAAI;;;AAInB,IAAA,WAAA,CAAoB,iBAAmC,EAAA;QAAnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;AAErC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACrD,IAAI,YAAY,EAAE;YACd,IAAI,IAAI,CAAC,OAAO;AACZ,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/E,IAAI,IAAI,CAAC,iBAAiB;AACtB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;;QAE5F,IAAI,CAAC,SAAS,EAAE;;IAGpB,SAAS,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;QACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC3D,QAAA,OAAO,CAAC,SAAS,GAAG,OAAO;;AAGvB,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AAC7C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAC/C,QAAA,OAAO,CAAC,CAAC,OAAO,CAAC,mBAAmB;gBAC5B,SAAS,IAAI,0BAA0B,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBACzE,UAAU,IAAI,0BAA0B,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;;IAGhF,qBAAqB,CAAC,GAAQ,EAAE,OAAY,EAAA;AAChD,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;YAC9B,QAAQ,GAAG,GAAG;;QAElB,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAClD,QAAA,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC;;YAEhE,IAAI,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,WAAW,EAAE;gBACtC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;gBAC9C;;YAEJ,MAAM,IAAI,GAAa,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;YACvF,IAAI,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,WAAW,EAAE;AACvC,gBAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;;;QAGhC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAErC,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAChE,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG;gBAAE;YACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;;;8GA5EhC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;qFAKmB,OAAO,EAAA,CAAA;sBAAtB;gBACe,iBAAiB,EAAA,CAAA;sBAAhC;gBACe,iBAAiB,EAAA,CAAA;sBAAhC;;;MCbQ,mBAAmB,CAAA;AAE5B,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;;AAG1C,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;;AAiB3C,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAU;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAuB;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;;AAGvF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE;QAC/D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI;QAC7D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY;AAC9F,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE;;AAGlB,IAAA,OAAO,CAAC,IAAa,EAAA;AACjB,QAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;QAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;AAC1B,SAAC,CAAC;;AAGN,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE;;IAGV,QAAQ,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAClD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAClG,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,YAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY;YACrD,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,gBAAA,MAAM,EAAE,GAAG,SAAS,GAAG,KAAK;gBAC5B,OAAO,IAAI,YAAY;AACnB,sBAAE;AACF,sBAAE,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;AACzE,aAAC,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC3B;;AAEJ,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClD,SAAC,CAAC;;8GAtEG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;AACb,iBAAA;2EAWwB,MAAM,EAAA,CAAA;sBAA1B,KAAK;uBAAC,YAAY;gBACV,IAAI,EAAA,CAAA;sBAAZ;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;MClBQ,uBAAuB,CAAA;AAIhC,IAAA,WAAA,CAAoB,UAA+B,EAAU,aAA+B,EAAU,WAA6B,EAAA;QAA/G,IAAU,CAAA,UAAA,GAAV,UAAU;QAA+B,IAAa,CAAA,aAAA,GAAb,aAAa;QAA4B,IAAW,CAAA,WAAA,GAAX,WAAW;;IAIjH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAGjF,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;IAGxB,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAU,KAAI;AACpD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AACjE,SAAC,CAAC;;8GAtBG,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MCIY,mBAAmB,CAAA;IAK5B,IACI,UAAU,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,UAAU,EAAE;;AAGrB,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ;;AAGxB,IAAA,IAAI,GAAG,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG;;AAG3B,IAAA,WAAA,CAAoB,IAAgB,EAAU,aAA+B,EAAU,WAA6B,EAAU,SAA2B,EAAA;QAArI,IAAI,CAAA,IAAA,GAAJ,IAAI;QAAsB,IAAa,CAAA,aAAA,GAAb,aAAa;QAA4B,IAAW,CAAA,WAAA,GAAX,WAAW;QAA4B,IAAS,CAAA,SAAA,GAAT,SAAS;AACnI,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE;;IAGlC,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;AAC3D,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;AACzE,aAAC,EAAE,OAAO,CAAC,GAAG,CAAC;;;8GA/Bd,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;AACb,iBAAA;sKAOO,UAAU,EAAA,CAAA;sBADb;;;MCNQ,eAAe,CAAA;AASxB,IAAA,WAAA,CAAoB,GAAsB,EAAU,MAAqB,EAAU,OAAmB,EAAA;QAAlF,IAAG,CAAA,GAAA,GAAH,GAAG;QAA6B,IAAM,CAAA,MAAA,GAAN,MAAM;QAAyB,IAAO,CAAA,OAAA,GAAP,OAAO;QACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa;QAC7D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC1C,EAAE,EAAE,CAAC;;IAGV,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAQ,KAAI;AACpE,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,YAAY,EAAE;AACrD,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;;IAKrC,YAAY,GAAA;QACR,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACpE,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,GAAG,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;;8GAnCjB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;wIAGgC,QAAQ,EAAA,CAAA;sBAApC,WAAW;uBAAC,cAAc;gBACS,UAAU,EAAA,CAAA;sBAA7C,WAAW;uBAAC,qBAAqB;gBA2BlC,YAAY,EAAA,CAAA;sBAFX,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,eAAe;;;MC/BpB,oBAAoB,CAAA;AAM7B,IAAA,WAAA,CAAoB,MAAqB,EAAU,OAAmB,EAAU,QAAmB,EAAA;QAA/E,IAAM,CAAA,MAAA,GAAN,MAAM;QAAyB,IAAO,CAAA,OAAA,GAAP,OAAO;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGxF,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AAC1D,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC;gBACxF;;AAEJ,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAC/F,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;8GApB3B,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;gIAGY,WAAW,EAAA,CAAA;sBAAnB;;;MCHQ,iBAAiB,CAAA;aAET,IAAM,CAAA,MAAA,GAAsB,IAAtB,CAA2B;AAclD,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;;AAGrC,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,MAAM;;AAGtB,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,QAAQ;;IAGxB,IACI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,CAAC,IAAI,EAAE;;AAGf,IAAA,WAAA,CAAsB,OAAgC,EAAA;QAAhC,IAAO,CAAA,OAAA,GAAP,OAAO;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAO;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAiB;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,KAAY,KAAU;AAChC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc;YACnC,IAAI,KAAK,CAAC,QAAQ,CAAC;gBAAE;AACrB,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAChF;;YAEJ,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AACvE,SAAC;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,KAAoB,KAAU;AAC5C,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU;YACnF,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;gBAC3C,KAAK,CAAC,eAAe,EAAE;gBACvB,KAAK,CAAC,cAAc,EAAE;;AAE1B,YAAA,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG,EAAE;gBAC/C,IAAI,CAAC,IAAI,EAAE;gBACX;;AAEJ,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAC;;IAGL,WAAW,GAAA;AACP,QAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,IAAI,EAAE;AACnC,YAAA,iBAAiB,CAAC,MAAM,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAIhC,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG5B,WAAW,CAAC,IAAY,EAAE,KAAU,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACvC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAK,EAAA,EAAA,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC;;AAK9C,IAAA,IAAI,CAAC,MAAc,EAAA;QACf,IAAI,IAAI,CAAC,MAAM;YAAE;QACjB,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,eAAe;gBAAE;YAC3B,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;;QAE3B,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,iBAAiB,CAAC,MAAM,GAAG,IAAI;;QAE/B,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE;YAClB,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;YACjD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;YAChD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;SACvD,EAAE,EAAE,CAAC;;IAGV,IAAI,GAAA;QACA,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;QACpD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;QACnD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;;QAEvD,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,iBAAiB,CAAC,MAAM,KAAK,IAAI,EAAE;AACnC,gBAAA,iBAAiB,CAAC,MAAM,GAAG,IAAI;AAC/B,gBAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;;SAElC,EAAE,EAAE,CAAC;;8GA5HD,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;AACb,iBAAA;+EAQY,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAUG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,YAAY;gBAMrB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,gBAAgB;gBAMzB,UAAU,EAAA,CAAA;sBADb;gBA6DD,IAAI,EAAA,CAAA;sBAFH,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBACxC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;MCzFhC,wBAAwB,CAAA;IAIjC,WAAqB,CAAA,OAAgC,EAChC,QAA2B,EAAA;QAD3B,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAG7B,QAAQ,GAAA;AACJ,QAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;YACvC;;QAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;YACzC,IAAI,KAAK,GAAG,CAAC;YACb,IAAI,MAAM,GAAG,CAAC;AACd,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;gBACpB,IAAI,CAAC,KAAK,CAAC,WAAW;oBAAE;AACxB,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AAChD,gBAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AACvD,aAAC,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,CAAG,EAAA,KAAK,CAAI,EAAA,CAAA,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,CAAG,EAAA,MAAM,CAAI,EAAA,CAAA,CAAC;AAC3D,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;IAGrD,WAAW,GAAA;QACP,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;8GA3B/C,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,kBAAkB;AAC/B,iBAAA;;;ACGK,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAIxD,IAAA,WAAA,CAAqB,OAAmB,EACnB,QAA2B,EACX,OAAwB,EACjD,GAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;QAJF,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAMnB,SAAS,GAAA;QACf,OAAO,IAAI,CAAC,UAAU;;IAG1B,UAAU,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;AACjB,aAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;AAExB,QAAA,OAAO,IAAI;;AArBN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,0EAMZ,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAN1B,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,iBAAiB;AAC9B,iBAAA;;0BAOgB,MAAM;2BAAC,eAAe;yEAJ1B,UAAU,EAAA,CAAA;sBAAlB;;;MCHQ,0BAA0B,CAAA;AAkBnC,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;;AAGxC,IAAA,WAAA,CAAoB,UAAsB,EAAU,QAAmB,EAAU,aAA+B,EAAA;QAA5F,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAqB,IAAa,CAAA,aAAA,GAAb,aAAa;;AAI9F,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACvG,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;YACvB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChF,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1D,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACrD,MAAM,OAAO,GAAQ,IAAI;YACzB,MAAM,QAAQ,GAAG;iBACZ;AACA,iBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEjI,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAExD,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,SAAS,CAAE,CAAA,CAAC;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAQ,KAAA,EAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,CAAO,IAAA,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAA,CAAC;SACvC,EAAE,MAAM,IAAG;AACR,YAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC;AACzD,SAAC,CAAC;;AAGE,IAAA,OAAO,CAAC,SAAiB,EAAE,KAAA,GAAiB,IAAI,EAAA;AACpD,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;;8GA5D9B,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;sIAG+B,IAAI,EAAA,CAAA;sBAA/B,KAAK;uBAAC,mBAAmB;gBACjB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;;;MCXQ,8BAA8B,CAAA;AAKvC,IAAA,WAAA,CAAqB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;8GALvB,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACb,iBAAA;gFAIY,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MCuBQ,iBAAiB,CAAA;AAsB1B,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,MAAK,GAAG;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,KAAK;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,IAAG;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAC9D,SAAC;;AAGL,IAAA,WAAW,CAAC,EAAa,EAAE,IAAiB,EAAE,IAAS,EAAA;QACnD,EAAE,CAAC,cAAc,EAAE;QACnB,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE;AACnF,YAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,YAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;YACnC;;AAEJ,QAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;;IAGtC,WAAW,CAAC,EAAa,EAAE,IAAiB,EAAA;AACxC,QAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;;IAGzC,MAAM,CAAC,EAAa,EAAE,IAAiB,EAAA;QACnC,EAAE,CAAC,cAAc,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE;QACpB,IAAI,CAAC,IAAI,EAAE;YACP;;AAEJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,gBAAgB,CAAC,IAAI,EAAE,MAAK;AACxB,YAAA,gBAAgB,CAAC,IAAI,EAAE,MAAK;gBACxB,IAAI,IAAI,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE;;oBAE9E;;AAEJ,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACpC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGjC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;;AAE/C,gBAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;;AAEhD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAEtB,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;AACxC,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI;AACd,gBAAA,OAAO,GAAG;AACd,aAAC,EAAE,EAAE,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;;AAIhC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGtB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGvB,IAAA,gBAAgB,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,IAAI;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAG3B,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;AAClD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAGlB,IAAA,WAAW,CAAC,KAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,IAAI;;8GAnHb,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qRANf,CAAC;AACR,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,yJChCN,2rCA6BA,EAAA,MAAA,EAAA,CAAA,8iEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAW,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDKa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,iBACF,iBAAiB,CAAC,IAAI,EAC3B,QAAA,EAAA,WAAW,aAGV,CAAC;AACR,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;yBACd,CAAC,EAAA,QAAA,EAAA,2rCAAA,EAAA,MAAA,EAAA,CAAA,8iEAAA,CAAA,EAAA;sFAIO,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAGD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,cAAc;;;MEnCnB,uBAAuB,CAAA;AAahC,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;;AAGnC,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;;AAKzD,IAAA,WAAA,CAAmB,KAAmB,EAAS,UAA+B,EAA+B,KAAmB,EAAA;QAA7G,IAAK,CAAA,KAAA,GAAL,KAAK;QAAuB,IAAU,CAAA,UAAA,GAAV,UAAU;QAAoD,IAAK,CAAA,KAAA,GAAL,KAAK;AAC9G,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,CAAI;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,CAAA,CAAG;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,CAAA,CAAG;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAA,CAAI;;IAGzB,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC;;IAG1C,WAAW,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;;AAGhC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO;QAC1E,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;QAC7F,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI;QAC1F,IAAI,CAAC,QAAQ,EAAE;;AAGnB,IAAA,QAAQ,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;YAAE;AAChF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B;;AAEJ,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;;IAGxB,OAAO,CAAC,SAAiB,EAAE,IAAY,EAAA;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;YAC3C,IAAI,CAAC,IAAI,IAAI;gBAAE;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACvB,SAAC,CAAC;;IAGI,QAAQ,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;AAC1C,QAAA,IAAI,OAAO,GAAG,UAAU,EAAE;YACtB,OAAO,GAAG,UAAU;AACpB,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;;QAEvD,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,KAAK,IAAI,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,EAAE,EAAE;AAC7C,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AArFb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,2EAuBwD,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvB3F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,yNCZpC,4xCAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDPa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,4xCAAA,EAAA;;0BA0BsD,MAAM;2BAAC,YAAY;yCArB3F,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,aAAa,EAAA,CAAA;sBAArB;;;MEuBQ,qBAAqB,CAAA;AAwD9B,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;;AAwB9C,IAAA,OAAO,OAAO,CAAC,OAAe,EAAE,CAAwB,EAAE,CAAwB,EAAA;AACxF,QAAA,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AACnC,QAAA,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;QACnC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGpC,IAAA,WAAA,CAAsB,OAAgC,EAAA;QAAhC,IAAO,CAAA,OAAA,GAAP,OAAO;AA6K7B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAY,EAAE,YAAoB,KAA8B;AACxE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI;YACpD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;AACtG,SAAC;AA/KG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;;IAGzB,WAAW,CAAC,IAAY,EAAE,KAAU,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AACvC,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAK,EAAA,EAAA,IAAI,CAAE,CAAA,EAAE,KAAK,CAAC;;IAG9C,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,KAAI;YAClE,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAA,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAG;AAC9B,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS;AAC9B,iBAAC,CAAC;AACF,gBAAA,OAAO,MAAM;;AAEjB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;AAAE,gBAAA,OAAO,MAAM;AAC1F,YAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS;AACpC,YAAA,OAAO,MAAM;SAChB,EAAE,EAAE,CAAC;;IAGV,eAAe,GAAA;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB;;AAGlE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE;YAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,KAAI;AAChF,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;AACnD,oBAAA,OAAO,MAAM;AACjB,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAC,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,WAAW,CAAA,CAAA,EAAI,MAAM,CAAE,CAAA,EAAE,IAAI,EAAE,MAAM,EAAC;AACvE,gBAAA,OAAO,MAAM;aAChB,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;AACjD,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC1B,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK;AAC9C,sBAAE,EAAC,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,EAAE,IAAI,EAAE,KAAK;sBACjD,KAAK;AACX,gBAAA,OAAO,MAAM;aAChB,EAAE,EAAmB,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;AACnF,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;;QAEpF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACnE,QAAA,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;;QAEhF,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE;QACrH,IAAI,CAAC,OAAO,EAAE;;AAGlB,IAAA,WAAW,CAAC,EAAa,EAAE,IAAiB,EAAE,IAAS,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE;YACpG,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,eAAe,EAAE;YACpB;;AAEJ,QAAA,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzD,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;;AAG1C,IAAA,WAAW,CAAC,EAAa,EAAE,IAAiB,EAAE,IAAS,EAAA;QACnD,EAAE,CAAC,cAAc,EAAE;AACnB,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAE;AACpG,YAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,YAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;YACnC;;AAEJ,QAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;;IAGtC,WAAW,CAAC,EAAa,EAAE,IAAiB,EAAA;AACxC,QAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;;AAGzC,IAAA,MAAM,CAAC,EAAa,EAAE,IAAiB,EAAE,IAAS,EAAA;QAC9C,EAAE,CAAC,cAAc,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE;AACpB,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACxD;;AAEJ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,gBAAgB,CAAC,IAAI,EAAE,MAAK;AACxB,YAAA,gBAAgB,CAAC,IAAI,EAAE,MAAK;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC;AACzC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACpC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGjC,IAAA,OAAO,CAAC,IAAa,EAAA;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;;AAGjC,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;;IAGxC,UAAU,CAAC,MAAc,EAAE,MAAyB,EAAA;QAChD,IAAI,MAAM,EAAE;YACR;;AAEJ,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe;AACtE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,OAAO,EAAE;;IAGlB,aAAa,CAAC,CAAS,EAAE,KAAuB,EAAA;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE,MAAM;YAAE;AAClB,QAAA,QAAQ,GAAG,CAAC,UAAU;AAClB,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAc;AACtD,gBAAA,MAAM,GAAG,GAAG,CAAG,EAAA,KAAK,EAAE;AACtB,gBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACd,oBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AACf,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;AAChB,wBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpB;;;qBAED;AACH,oBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;;AAEhB,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/B;AACJ,YAAA,KAAK,UAAU;AACX,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACf,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpB;;AAEJ,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;gBACpB;AACJ,YAAA;gBACI,IAAI,CAAC,KAAK,EAAE;AACR,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpB;;AAEJ,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;gBACrB;;QAER,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;;AAGxC,IAAA,eAAe,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,OAAO,EAAE;;IAQR,aAAa,CAAC,IAAY,EAAE,WAAmB,EAAE,OAAe,EAAE,eAAwB,EAAE,MAAc,EAAA;AAChH,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO,OAAO,CAAC,OAAO,CAAC;AACnB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC;;QAEN,MAAM,OAAO,GAA+B;AACxC,cAAE,CAAC,CAAC,EAAE,CAAC,KAAK,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACvD,cAAE,CAAC,CAAC,EAAE,CAAC,KAAK,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE;AAC5C,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,KAAI;AAClC,YAAA,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;AACtF,SAAC,CAAC;AACF,QAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AACzC,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAE/C,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3F,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,KAAI;AAC1B,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE;AAC7B,SAAC,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,CAAC;AACnB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE;AACV,SAAA,CAAC;;8GArSG,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EA8Eb,6BAA6B,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtHlD,uzVAmLA,EAAA,MAAA,EAAA,CAAA,m3LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD3Ia,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EACF,aAAA,EAAA,iBAAiB,CAAC,IAAI,YAC3B,eAAe,EAAA,QAAA,EAAA,uzVAAA,EAAA,MAAA,EAAA,CAAA,m3LAAA,CAAA,EAAA;+EAMhB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAeD,WAAW,EAAA,CAAA;sBADV,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAI3C,eAAe,EAAA,CAAA;sBADd,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAI/C,eAAe,EAAA,CAAA;sBADd,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAI5C,kBAAkB,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAI/C,sBAAsB,EAAA,CAAA;sBADrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAIzC,UAAU,EAAA,CAAA;sBADnB,SAAS;uBAAC,YAAY;gBAIb,kBAAkB,EAAA,CAAA;sBAD3B,eAAe;uBAAC,6BAA6B;;;ME9GrC,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kFAFlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;oBACjB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;AACf,iBAAA;;;MCaY,sBAAsB,CAAA;AAuB/B,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;;AAGlB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnD,kBAAkB,GAAA;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;AAC9E,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG5B,eAAe,GAAA;QACX,IAAI,CAAC,gBAAgB,GAAG;YACpB,GAAG,EAAE,IAAI,CAAC,kBAAkB;YAC5B,KAAK,EAAE,IAAI,CAAC,oBAAoB;YAChC,IAAI,EAAE,IAAI,CAAC;SACd;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;8GA/CnB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAad,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,8BAA8B,ECjCnD,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m/HA+EA,igCD3Da,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAd,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,m/HAAA,EAAA;sFAKjB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAOO,kBAAkB,EAAA,CAAA;sBADzB,eAAe;uBAAC,8BAA8B;gBAIvC,kBAAkB,EAAA,CAAA;sBADzB,SAAS;uBAAC,oBAAoB;gBAGvB,oBAAoB,EAAA,CAAA;sBAD3B,SAAS;uBAAC,sBAAsB;gBAGzB,mBAAmB,EAAA,CAAA;sBAD1B,SAAS;uBAAC,qBAAqB;;;MEAvB,eAAe,CAAA;AA6BxB,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAwB;;AAG5C,IAAA,WAAA,CACY,GAAsB,EACD,GAAgB,EACZ,OAAwB,EAAA;QAFjD,IAAG,CAAA,GAAA,GAAH,GAAG;QACkB,IAAG,CAAA,GAAA,GAAH,GAAG;QACC,IAAO,CAAA,OAAA,GAAP,OAAO;AAExC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAK;AACrB,SAAC;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAK;AACtB,SAAC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,IAAG;AAClB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5C,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;AAE/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,SAAC;;AAGL,IAAA,WAAW,CAAC,EAAa,EAAA;AACrB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;aAC/C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM;AAC5B,aAAA,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE;YAC7D,EAAE,CAAC,cAAc,EAAE;YACnB;;AAEJ,QAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,QAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;IAG3B,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;IAG5B,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACzF,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;cACvE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG;eAClC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAChE,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAG3B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGtB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGvB,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,gBAAgB,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,KAAK,IAAI;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAG3B,IAAA,YAAY,CAAC,EAAc,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;QAC7D,IAAI,EAAE,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QAC3C,EAAE,CAAC,cAAc,EAAE;;AAGvB,IAAA,aAAa,CAAC,EAAS,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,aAAiC;AAClD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;YAChB;;AAEJ,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;AACjC,QAAA,IAAI,MAAM,IAAI,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;YAC1C;;QAEJ,MAAM,KAAK,GAAW,EAAE;AACxB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB;;YAEJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACpC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC;gBAAE;AAClD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEpB,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC;YACjD;;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAG;AACxE,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,SAAC,CAAC;AACF,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;;AAGpB,IAAA,MAAM,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;YAC1D,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,KAAK,GAAG,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,EAAC;AACtD,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;YAEnC,OAAO,KAAK,CAAC,GAAG;;AAEpB,QAAA,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;AAC3C,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,GAAG;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,CAAe,aAAA,CAAA,GAAG,EAAE;QACjD,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,CAAG,EAAA,GAAG,CAAG,EAAA,KAAK,EAAE;;AAE3B,QAAA,OAAO,GAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAG,EAAA,KAAK,EAAE;;AAGtC,IAAA,QAAQ,CAAC,KAAU,EAAA;QACf,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;;IAGzC,MAAM,YAAY,CAAC,KAAa,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAG;AAC/E,YAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACtB,YAAA,OAAO,IAAI;AACf,SAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,MAAK;AAChF,YAAA,OAAO,KAAK;AAChB,SAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAG;AAC3D,YAAA,MAAM,OAAO,GAAuB;gBAChC,IAAI;AACJ,gBAAA,QAAQ,EAAE;aACb;AACD,YAAA,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAG;AAC5D,gBAAA,OAAO,CAAC,OAAO,GAAG,CAAQ,KAAA,EAAA,OAAO,IAAI;AACrC,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC5B,aAAC,CAAC;AACF,YAAA,OAAO,OAAO;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAM,CAAC,KAAG;YAC3C,MAAM,CAAC,CAAC,OAAO;AACf,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE;AAC/C,aAAA,CAAC;AACF,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE;AAC7C,oBAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AACzD,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAEhC,aAAC,CAAC;YACF,OAAO,aAAa,CAAC,OAAO;AACvB,iBAAA,IAAI,CAAC,CAAC,GAAsB,KAAI;AAC7B,gBAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI;gBACrB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC7B,oBAAA,OAAO,EAAC,EAAE,EAAE,IAAI,EAAC;;AAErB,gBAAA,OAAO,IAAI;AACf,aAAC,EAAE,CAAC,CAAoB,KAAI;gBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAA,mBAAA,EAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC;AACxF,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;AACV,SAAC,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;;8GA9NjC,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAmCZ,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApClB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mUANb,CAAC;AACR,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,yJCtCN,o3FAgEA,EAAA,MAAA,EAAA,CAAA,qjFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA4B,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDxBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,QAAQ,EAAA,aAAA,EAGH,iBAAiB,CAAC,IAAI,aAC1B,CAAC;AACR,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;yBACd,CAAC,EAAA,QAAA,EAAA,o3FAAA,EAAA,MAAA,EAAA,CAAA,qjFAAA,CAAA,EAAA;;0BAqCG,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,eAAe;yCAlClB,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBAYD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,cAAc;;;AE6BhC;AACO,MAAM,KAAK,GAAG;IACjB,SAAS;IACT,WAAW;IACX,uBAAuB;IACvB,UAAU;IACV,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,WAAW;IACX,WAAW;IACX,SAAS;IACT,YAAY;IACZ,SAAS;IACT,SAAS;IACT,aAAa;IACb;CACH;AAED;AACO,MAAM,UAAU,GAAG;IACtB,eAAe;IACf,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;IACxB,6BAA6B;IAC7B,uBAAuB;IACvB,aAAa;IACb,0BAA0B;IAC1B,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,oBAAoB;IACpB,iBAAiB;IACjB,wBAAwB;IACxB,uBAAuB;IACvB,0BAA0B;IAC1B;CACH;AAED;AACO,MAAM,UAAU,GAAG;IACtB,iBAAiB;IACjB,qBAAqB;IACrB,mBAAmB;IACnB,uBAAuB;IACvB,sBAAsB;IACtB;CACH;AAEM,MAAM,SAAS,GAAG;AACrB,IAAA,GAAG,KAAK;IACR,cAAc;IACd,eAAe;IACf,SAAS;IACT,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,aAAa;IACb,gBAAgB;IAChB,qBAAqB;IACrB,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,aAAa;IACb,YAAY;IACZ,qBAAqB;IACrB,cAAc;IACd,kBAAkB;IAClB,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,WAAW;IACX,qBAAqB;IACrB,qBAAqB;AACrB,IAAA;AACI,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,QAAQ,EAAE,mBAAmB;AAC7B,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,WAAW,EAAE;AAChB,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,WAAW,EAAE;AAChB;CAEJ;AAEK,SAAU,UAAU,CAAC,MAAsB,EAAA;IAC7C,OAAO,MAAM,CAAC,IAAI;AACtB;;MCjNa,IAAI,CAAA;AAQb,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,IAAI,GAAG;YACR,iCAAiC;YACjC,WAAW;YACX,aAAa;YACb,mBAAmB;YACnB,UAAU;YACV,UAAU;YACV,SAAS;YACT,SAAS;AACZ,SAAA,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;YAClB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;AACjC,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEnC,YAAA,OAAO,GAAG;SACb,EAAE,EAAE,CAAC;;AAGV,IAAA,WAAW,CAAC,KAAkB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;;AAEhD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,OAAO,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE;YAClC,sBAAsB,EAAE,IAAI,CAAC,IAAI;YACjC,GAAG,EAAE,IAAI,CAAC;AACb,SAAA,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AACb,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAc;YAC9C,IAAI,CAAC,IAAI,GAAG;AACR,gBAAA,GAAG,OAAO;AACV,gBAAA,kBAAkB,EAAE,CAAC,KAAiB,KAAI;oBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,iBAAiB;oBACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,WAAkB;AACpC,oBAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;AACzE,oBAAA,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,oBAAA,OAAO,OAAO;iBACjB;AACD,gBAAA,mBAAmB,EAAE,CAAC,OAAe,EAAE,KAAiB,KAAI;AACxD,oBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,WAAkB;AACpC,oBAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;AACzE,oBAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACpB,oBAAA,OAAO,KAAK;;aAEH;YACjB,IAAI,CAAC,iBAAiB,EAAE;YACxB,OAAO,IAAI,CAAC,IAAI;AACpB,SAAC,CAAC;;IAGI,iBAAiB,GAAA;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;;IAGtC,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,CAAC;YACL,MAAM,GAAG,GAAG,EAAE;AACd,YAAA,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;AAAE,oBAAA,OAAO,GAAG,CAAC,CAAC,CAAC;;oBAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;YAE3E,MAAM,OAAO,GAAG,EAAE;AAClB,YAAA,KAAK,CAAC,IAAI,GAAG,EAAE;AACX,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;AAElC,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;;QAE7B,OAAO,IAAI,CAAC,UAAU;;IAGhB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjC,YAAA,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;;AAE5C,QAAA,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;;AAG1B,IAAA,+BAA+B,CAAC,WAAmB,EAAA;QAC/C,IAAI,CAAC,iBAAiB,EAAE;;AAG5B,IAAA,SAAS,CAAC,IAAY,EAAA;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC;;IAGlC,WAAW,CAAC,OAAe,EAAE,WAAmB,EAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;QACjC,IAAI,OAAO,GAAG,CAAC;QACf,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,CAAS,KAAI;AACpD,YAAA,MAAM,GAAG,GAAG,WAAW,GAAG,OAAO;YACjC,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,YAAA,OAAO,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAC7B,SAAC,CAAC;AACF,QAAA,OAAO,CAAC;;IAGZ,iBAAiB,CAAC,cAAsB,EAAE,iBAAyB,EAAA;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;QACpC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;QAC7C,IAAI,OAAO,GAAG,CAAC;AACf,QAAA,OAAO,CAAC,OAAO,CAAC,UAAU,MAAM,EAAA;AAC5B,YAAA,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAChC,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,OAAO;;AAEzC,QAAA,OAAO,CAAC;;AAGZ,IAAA,QAAQ,CAAC,EAAU,EAAA;;AAEf,QAAA,OAAO,CAAC;;AAGZ,IAAA,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAA;AACjE,QAAA,IAAI,EAAE,KAAK,CAAC,EAAE;;AAEV,YAAA,OAAO,CAAC;;AAEZ,QAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;;AAEhB,YAAA,OAAO,EAAE;;QAEb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;;AAEnE,QAAA,OAAO,CAAC;;AAGZ,IAAA,OAAO,CAAC,EAAU,EAAE,IAAY,EAAE,QAAgB,EAAE,KAAa,EAAA;;AAE7D,QAAA,OAAO,EAAE;;AAGb,IAAA,OAAO,CAAC,EAAU,EAAE,MAAc,EAAE,MAAc,EAAE,SAAiB,EAAA;;AAEjE,QAAA,OAAO,EAAE;;8GAjKJ,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAJ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAI,cAFD,MAAM,EAAA,CAAA,CAAA;;2FAET,IAAI,EAAA,UAAA,EAAA,CAAA;kBAHhB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;SCqCe,WAAW,GAAA;AACvB,IAAA,IAAI,QAAQ,QAAQ,CAAC,KAAK,WAAW,IAAI,QAAQ,QAAQ,CAAC,KAAK,WAAW;AAAE,QAAA,OAAO,GAAG;IACtF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5C,IAAA,MAAM,aAAa,GAAI,QAAQ,CAAC,aAAmC;IACnE,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,IAAI,wBAAwB,CAAC;IACxE,IAAI,CAAC,aAAa,EAAE;AAChB,QAAA,IAAI;;YAEA,MAAM,IAAI,KAAK,EAAE;;QACnB,OAAO,CAAC,EAAE;YACR,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC7D,MAAM,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAW;AACvC,YAAA,MAAM,MAAM,GAAG,CACX,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;AACvD,gBAAA,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC;gBAC1C,CAAC,CAAA,EAAG,YAAY,CAAU,QAAA,CAAA,CAAC,EAC7B,KAAK,EAAE;YACT,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;;;IAG1C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAG;QAChC,IAAI,CAAC,CAAC,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;QACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,QAAA,OAAO,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,KAAC,CAAC;AACF,IAAA,MAAM,SAAS,GAAG,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;AACpE,IAAA,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;IACjD,IAAI,CAAC,GAAG,EAAE;AACV,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAA,EAAA,EAAK,SAAS,CAAC,IAAI,CAAG,EAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvE;AAEM,SAAU,YAAY,CAAC,OAAe,EAAA;AACxC,IAAA,IAAI;AACA,QAAA,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ;;IAClC,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AACd,QAAA,OAAO,GAAG;;AAElB;MAoBa,cAAc,CAAA;IAEf,OAAO,YAAY,CAAC,MAAsB,EAAA;QAC9C,OAAO;AACH,YAAA,GAAG,SAAS;AACZ,YAAA;AACI,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,KAAK;AACxD,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,WAAW,KAAK;AACzD,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,WAAW,KAAK;AACzD,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,eAAe,KAAK;AAC7D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,KAAK;AAC5D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,KAAK;AAC5D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,KAAK;AAC3D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,KAAK;AAC3D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,kBAAkB,KAAK;AAChE,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,WAAW;gBAC5D,IAAI,EAAE,CAAC,QAAQ;AAClB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAE;AACb,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,WAAW,KAAK,EAAE;AACxD,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,cAAc,KAAK,QAAQ;AACjE,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS;AAC9D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,KAAK,UAAU;AACjE,gBAAA,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,aAAa,IAAI,QAAQ,GAAG,cAAc;AAC7E,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,UAAU,EAAE,YAAY;gBACxB,IAAI,EAAE,CAAC,YAAY;AACtB;SACJ;;IAGL,OAAO,OAAO,CAAC,MAAsB,EAAA;QACjC,OAAO;AACH,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,MAAM;SAChD;;IAGL,OAAO,YAAY,CAAC,MAAsB,EAAA;QACtC,OAAO,wBAAwB,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;;IAGxE,OAAO,UAAU,CAAC,UAA6B,EAAA;QAC3C,OAAO;AACH,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;AACP,gBAAA;AACI,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE;AACN,wBAAA;4BACI,YAAY,EAAE,UAAU,CAAC,YAAY;4BACrC,OAAO,EAAE,SAAS,CAAC;AACtB,yBAAA;AACD,wBAAA;AACI,4BAAA,SAAS,EAAE,mBAAmB;4BAC9B,OAAO,EAAE,SAAS,CAAC;AACtB;AACJ;AACJ,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,KAAK,EAAE;AACV;AACJ;SACJ;;AAGL,IAAA,WAAA,GAAA;;8GAlHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,m7BAXnB,YAAY;AACZ,YAAA,WAAW,o6BAMX,WAAW,CAAA,EAAA,CAAA,CAAA;+GAIN,cAAc,EAAA,SAAA,EAFZ,KAAK,EAAA,OAAA,EAAA,CATZ,YAAY;AACZ,YAAA,WAAW,EAMX,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAIN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;AACV,wBAAA,GAAG,KAAK;AACR,wBAAA,GAAG,UAAU;AACb,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG,KAAK;AACR,wBAAA,GAAG,UAAU;AACb,wBAAA,GAAG,UAAU;wBACb;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;AACd,iBAAA;;;ACnGD;;AAEG;;;;"}
1
+ {"version":3,"file":"stemy-ngx-utils.mjs","sources":["../../src/ngx-utils/utils/object.utils.ts","../../src/ngx-utils/utils/reflect.utils.ts","../../src/ngx-utils/common-types.ts","../../src/ngx-utils/utils/ajax-request-handler.ts","../../src/ngx-utils/utils/array.utils.ts","../../src/ngx-utils/services/universal.service.ts","../../src/ngx-utils/services/state.service.ts","../../src/ngx-utils/utils/auth.guard.ts","../../src/ngx-utils/utils/cached-factory.ts","../../src/ngx-utils/utils/canvas.utils.ts","../../src/ngx-utils/utils/date.utils.ts","../../src/ngx-utils/utils/file.utils.ts","../../src/ngx-utils/utils/generic-value.ts","../../src/ngx-utils/utils/file-system.ts","../../src/ngx-utils/utils/geometry.ts","../../src/ngx-utils/utils/initializer.ts","../../src/ngx-utils/utils/jsonfn.ts","../../src/ngx-utils/utils/loader.utils.ts","../../src/ngx-utils/utils/math.utils.ts","../../src/ngx-utils/utils/misc.ts","../../src/ngx-utils/utils/timer.utils.ts","../../src/ngx-utils/utils/observable.utils.ts","../../src/ngx-utils/utils/promise.utils.ts","../../src/ngx-utils/utils/string.utils.ts","../../src/ngx-utils/utils/set.utils.ts","../../src/ngx-utils/utils/socket-client.ts","../../src/ngx-utils/utils/unique.utils.ts","../../src/ngx-utils/utils/vector.ts","../../src/ngx-utils/utils/with-options-provider.ts","../../src/ngx-utils/utils/wasm-worker-proxy.ts","../../src/ngx-utils/services/base-http.client.ts","../../src/ngx-utils/services/storage.service.ts","../../src/ngx-utils/services/base-http.service.ts","../../src/ngx-utils/services/local-http.service.ts","../../src/ngx-utils/services/wasm.service.ts","../../src/ngx-utils/services/acl.service.ts","../../src/ngx-utils/services/api.service.ts","../../src/ngx-utils/services/auth.service.ts","../../src/ngx-utils/services/config.service.ts","../../src/ngx-utils/services/base-dialog.service.ts","../../src/ngx-utils/services/error-handler.service.ts","../../src/ngx-utils/services/events.service.ts","../../src/ngx-utils/services/formatter.service.ts","../../src/ngx-utils/services/global-template.service.ts","../../src/ngx-utils/services/icon.service.ts","../../src/ngx-utils/services/static-language.service.ts","../../src/ngx-utils/services/language.service.ts","../../src/ngx-utils/services/open-api.service.ts","../../src/ngx-utils/services/base-toaster.service.ts","../../src/ngx-utils/services/component-loader.service.ts","../../src/ngx-utils/services/translated-url.serializer.ts","../../src/ngx-utils/services/promise.service.ts","../../src/ngx-utils/services/socket.service.ts","../../src/ngx-utils/plugins/drag-drop-handler.ts","../../src/ngx-utils/plugins/drag-drop-event.plugin.ts","../../src/ngx-utils/plugins/resize-event.plugin.ts","../../src/ngx-utils/plugins/scroll-event.plugin.ts","../../src/ngx-utils/pipes/chunk.pipe.ts","../../src/ngx-utils/pipes/entries.pipe.ts","../../src/ngx-utils/pipes/extra-item-properties.pipe.ts","../../src/ngx-utils/pipes/filter.pipe.ts","../../src/ngx-utils/pipes/find.pipe.ts","../../src/ngx-utils/pipes/format-number.pipe.ts","../../src/ngx-utils/pipes/get-offset.pipe.ts","../../src/ngx-utils/pipes/get-type.pipe.ts","../../src/ngx-utils/pipes/get-value.pipe.ts","../../src/ngx-utils/pipes/global-template.pipe.ts","../../src/ngx-utils/pipes/group-by.pipe.ts","../../src/ngx-utils/pipes/includes.pipe.ts","../../src/ngx-utils/pipes/is-type.pipe.ts","../../src/ngx-utils/pipes/join.pipe.ts","../../src/ngx-utils/pipes/keys.pipe.ts","../../src/ngx-utils/pipes/map.pipe.ts","../../src/ngx-utils/pipes/max.pipe.ts","../../src/ngx-utils/pipes/min.pipe.ts","../../src/ngx-utils/pipes/pop.pipe.ts","../../src/ngx-utils/pipes/reduce.pipe.ts","../../src/ngx-utils/pipes/remap.pipe.ts","../../src/ngx-utils/pipes/replace.pipe.ts","../../src/ngx-utils/pipes/reverse.pipe.ts","../../src/ngx-utils/pipes/round.pipe.ts","../../src/ngx-utils/pipes/safe-html.pipe.ts","../../src/ngx-utils/pipes/shift.pipe.ts","../../src/ngx-utils/pipes/split.pipe.ts","../../src/ngx-utils/pipes/translate.pipe.ts","../../src/ngx-utils/pipes/values.pipe.ts","../../src/ngx-utils/directives/async-method.base.ts","../../src/ngx-utils/directives/async-method.directive.ts","../../src/ngx-utils/directives/background.directive.ts","../../src/ngx-utils/directives/component-loader.directive.ts","../../src/ngx-utils/directives/dynamic-table-template.directive.ts","../../src/ngx-utils/directives/global-template.directive.ts","../../src/ngx-utils/directives/icon.directive.ts","../../src/ngx-utils/directives/ngx-template-outlet.directive.ts","../../src/ngx-utils/directives/pagination.directive.ts","../../src/ngx-utils/directives/pagination-item.directive.ts","../../src/ngx-utils/directives/resource-if.directive.ts","../../src/ngx-utils/directives/sticky.directive.ts","../../src/ngx-utils/directives/sticky-class.directive.ts","../../src/ngx-utils/directives/dropdown.directive.ts","../../src/ngx-utils/directives/dropdown-content.directive.ts","../../src/ngx-utils/directives/dropdown-toggle.directive.ts","../../src/ngx-utils/directives/unordered-list-item.directive.ts","../../src/ngx-utils/directives/unordered-list-template.directive.ts","../../src/ngx-utils/components/drop-list/drop-list.component.ts","../../src/ngx-utils/components/drop-list/drop-list.component.html","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.ts","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.html","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.ts","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.html","../../src/ngx-utils/components/fake-module/fake-module.component.ts","../../src/ngx-utils/components/unordered-list/unordered-list.component.ts","../../src/ngx-utils/components/unordered-list/unordered-list.component.html","../../src/ngx-utils/components/upload/upload.component.ts","../../src/ngx-utils/components/upload/upload.component.html","../../src/ngx-utils/ngx-utils.imports.ts","../../src/ngx-utils/utils/wasi.ts","../../src/ngx-utils/ngx-utils.module.ts","../../src/stemy-ngx-utils.ts"],"sourcesContent":["import {ReflectUtils} from \"./reflect.utils\";\r\n\r\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\r\nexport type IterateCallback = (value: any, key?: any) => void;\r\n\r\nexport function defaultPredicate(value: any, key?: any, target?: any, source?: any): boolean {\r\n return true;\r\n}\r\n\r\nexport function shouldCopyDefault(key: any, value: any): boolean {\r\n return true;\r\n}\r\n\r\nconst hasBlob = typeof Blob !== \"undefined\" && !!Blob;\r\nconst hasFile = typeof File !== \"undefined\" && !!File;\r\n\r\nexport class ObjectUtils {\r\n\r\n static compare(a: any, b: any): number {\r\n if ((a === null || b === null) || (typeof a != typeof b)) {\r\n return null;\r\n }\r\n if (typeof a === \"string\") {\r\n return (a).localeCompare(b);\r\n } else {\r\n if (a instanceof Date) {\r\n a = a.getTime();\r\n b = b.getTime();\r\n }\r\n if (a > b) {\r\n return 1;\r\n } else if (a < b) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n }\r\n\r\n static getProperties(obj: any): string[] {\r\n if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj)) return [];\r\n const props = new Set<string>();\r\n Object.keys(obj).forEach(p => props.add(p));\r\n Object.getOwnPropertyNames(obj).forEach(p => props.add(p));\r\n return Array.from(props);\r\n }\r\n\r\n static equals(a: any, b: any, visited: Set<any> = null): boolean {\r\n visited = visited || new Set();\r\n if (visited.has(a) && visited.has(b)) return true;\r\n if (a === b) return true;\r\n if (a === null || b === null) return false;\r\n if (a !== a && b !== b) return true; // NaN === NaN\r\n const at = typeof a, bt = typeof b;\r\n let length: number, key: any, keySet: any;\r\n if (at == bt && at == \"object\") {\r\n visited.add(a);\r\n visited.add(b);\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) return false;\r\n if ((length = a.length) == b.length) {\r\n for (key = 0; key < length; key++) {\r\n if (!ObjectUtils.equals(a[key], b[key], visited)) return false;\r\n }\r\n return true;\r\n }\r\n } else {\r\n if (Array.isArray(b)) {\r\n return false;\r\n }\r\n keySet = Object.create(null);\r\n for (key in a) {\r\n if (a.hasOwnProperty(key)) {\r\n if (!ObjectUtils.equals(a[key], b[key], visited)) {\r\n return false;\r\n }\r\n keySet[key] = true;\r\n }\r\n }\r\n for (key in b) {\r\n if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== \"undefined\") {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static evaluate(expr: string, context: any = {}, res: any = {}): any {\r\n expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\\n${res}`, expr);\r\n const lines = expr.split(\"\\n\");\r\n const lastLine = \"return \" + lines.pop().replace(\"return \", \"\");\r\n lines.push(lastLine);\r\n expr = lines.join(\"\\n\");\r\n let result = null;\r\n try {\r\n result = new Function(expr).call(context);\r\n } catch (e) {\r\n res.exception = e;\r\n console.log(`Failed to parse expression: ${e.message}`, expr, context);\r\n }\r\n res.result = result;\r\n return result;\r\n }\r\n\r\n static empty(obj: any): boolean {\r\n return !obj || Object.keys(obj).length == 0;\r\n }\r\n\r\n static iterate(obj: any, cb: IterateCallback): void {\r\n if (!obj) return;\r\n const keys: any[] = Array.isArray(obj) ? Array.from(obj.keys()) : Object.keys(obj);\r\n keys.forEach(\r\n // @dynamic\r\n key => {\r\n cb(obj[key], key);\r\n }\r\n );\r\n }\r\n\r\n static getValue(obj: Object, key: string, defaultValue?: any, treeFallback: boolean = false): any {\r\n key = key || \"\";\r\n const keys = key.split(\".\");\r\n let curKey = \"\";\r\n do {\r\n curKey += keys.shift();\r\n if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\r\n obj = obj[curKey];\r\n curKey = \"\";\r\n } else if (!keys.length) {\r\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\r\n obj = treeFallback ? obj || defaultValue : defaultValue;\r\n } else {\r\n curKey += \".\";\r\n }\r\n } while (keys.length);\r\n return obj;\r\n }\r\n\r\n static mapToPath(target: any, source: any, path: string[]): any {\r\n if (typeof source === \"undefined\") return target;\r\n if (path.length == 0) return source;\r\n const key: any = path.shift();\r\n if (key == \"*\") {\r\n if (ObjectUtils.isArray(source)) {\r\n target = ObjectUtils.isArray(target) ? target : [];\r\n return source.map((item, index) => {\r\n return ObjectUtils.mapToPath(target[index], item, Array.from(path));\r\n });\r\n }\r\n if (ObjectUtils.isObject(source)) {\r\n target = ObjectUtils.isObject(target) ? target : {};\r\n return Object.keys(source).reduce((result, key) => {\r\n result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));\r\n return result;\r\n }, {});\r\n }\r\n return ObjectUtils.isNullOrUndefined(target) ? null : target;\r\n }\r\n const isArray = ObjectUtils.isArray(target);\r\n target = ObjectUtils.isObject(target) || isArray ? target : {};\r\n target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));\r\n return isNaN(key) || isArray ? target : Object.values(target);\r\n }\r\n\r\n static filter(obj: any, predicate: FilterPredicate): any {\r\n return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());\r\n }\r\n\r\n static copy<T>(obj: T): T {\r\n return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());\r\n }\r\n\r\n static assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\r\n return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());\r\n }\r\n\r\n static getType(obj: any): string {\r\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\r\n const target = !obj ? null : obj.constructor;\r\n const type = !target ? null : Reflect.getMetadata(\"objectType\", target);\r\n return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();\r\n }\r\n\r\n static isPrimitive(value: any): boolean {\r\n const type = typeof value;\r\n return value == null || (type !== \"object\" && type !== \"function\");\r\n }\r\n\r\n static isObject(value: any): boolean {\r\n return ObjectUtils.getType(value) === \"object\";\r\n }\r\n\r\n static isDefined(value: any): boolean {\r\n return typeof value !== \"undefined\" && value !== null;\r\n }\r\n\r\n static isNullOrUndefined(value: any): boolean {\r\n return typeof value == \"undefined\" || value == null;\r\n }\r\n\r\n static isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n }\r\n\r\n static isFunction(value: any): value is Function {\r\n return typeof value === \"function\";\r\n }\r\n\r\n static isDate(value: any): value is Date {\r\n return null !== value && !isNaN(value) && \"undefined\" !== typeof value.getDate;\r\n }\r\n\r\n static isBlob(value: any): value is Blob {\r\n return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);\r\n }\r\n\r\n static isBoolean(value: any): value is boolean {\r\n return typeof(value) == typeof(true);\r\n }\r\n\r\n static isNumber(value: any): value is number {\r\n if (typeof value !== \"number\") return false;\r\n const num = +value;\r\n if ((num - num) !== 0) {\r\n return false;\r\n }\r\n if (num === value) {\r\n return true;\r\n }\r\n }\r\n\r\n static isArray(value: any): value is Array<any> {\r\n return Array.isArray(value);\r\n }\r\n\r\n static isSet(value: any): value is Set<any> {\r\n return value instanceof Set;\r\n }\r\n\r\n static isConstructor(value: any): boolean {\r\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\r\n }\r\n\r\n static checkInterface(obj: any, interFaceObject: any): boolean {\r\n return ObjectUtils.isInterface(obj, interFaceObject);\r\n }\r\n\r\n static isInterface(obj: any, interFaceObject: any): boolean {\r\n if (!obj || typeof obj !== \"object\" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject)) return false;\r\n const keys = Object.keys(interFaceObject);\r\n for (const key of keys) {\r\n let type = interFaceObject[key] || \"\";\r\n if (type.startsWith(\"*\")) {\r\n type = type.substr(1);\r\n if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type) return false;\r\n } else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static pad(obj: any, width: number, chr: string = \"0\"): string {\r\n const str = ObjectUtils.isDefined(obj) ? obj.toString() : \"\";\r\n return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;\r\n }\r\n\r\n private static copyRecursive(target: any, source: any, predicate: FilterPredicate, copies: Map<any, any>): any {\r\n if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source)) return source;\r\n if (copies.has(source)) return copies.get(source);\r\n if (ObjectUtils.isArray(source)) {\r\n target = ObjectUtils.isArray(target) ? Array.from(target) : [];\r\n copies.set(source, target);\r\n for (let index = 0; index < source.length; index++) {\r\n const item = source[index];\r\n if (!predicate(item, index, target, source)) continue;\r\n if (target.length > index)\r\n target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);\r\n else\r\n target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));\r\n }\r\n return target;\r\n }\r\n\r\n // If object defines __shouldCopy as false, then don't copy it\r\n if (source.__shouldCopy === false) return source;\r\n // Copy object\r\n const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;\r\n if (ObjectUtils.isConstructor(source.constructor)) {\r\n if (!target) {\r\n try {\r\n target = new source.constructor();\r\n } catch (e) {\r\n const proto = source.constructor.prototype || source.prototype;\r\n target = Object.create(proto);\r\n }\r\n }\r\n } else {\r\n target = Object.assign({}, target || {});\r\n }\r\n // Set to copies to prevent circular references\r\n copies.set(source, target);\r\n\r\n // Copy map entries\r\n if (target instanceof Map) {\r\n if (source instanceof Map) {\r\n for (const [key, value] of source.entries()) {\r\n if (!predicate(value, key, target, source)) continue;\r\n target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n // Copy object members\r\n const keys = Object.keys(source);\r\n for (const key of keys) {\r\n if (!predicate(source[key], key, target, source)) continue;\r\n target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);\r\n }\r\n\r\n // Copy object properties\r\n const descriptors = Object.getOwnPropertyDescriptors(source);\r\n for (const key of Object.keys(descriptors)) {\r\n if (keys.indexOf(key) >= 0) continue;\r\n Object.defineProperty(target, key, descriptors[key]);\r\n }\r\n return target;\r\n }\r\n}\r\n","import \"reflect-metadata\";\r\nimport {Injector, TypeProvider} from \"@angular/core\";\r\nimport {IResolveFactory} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ReflectUtils {\r\n\r\n static defineMetadata(key: string, data: any, target: any, name?: string): void {\r\n Reflect.defineMetadata(key, data, target, name);\r\n }\r\n\r\n static getMetadata(key: string, target: any, name?: string): any {\r\n return Reflect.getMetadata(key, target, name);\r\n }\r\n\r\n static getOwnMetadata(key: string, target: any, name?: string): any {\r\n return Reflect.getOwnMetadata(key, target, name);\r\n }\r\n\r\n static resolve<T>(obj: IResolveFactory | T, injector: Injector): T {\r\n if (!ObjectUtils.checkInterface(obj, {func: \"function\"})) return <T>obj;\r\n const factory = <IResolveFactory>obj;\r\n let depends: TypeProvider[] = [];\r\n if (factory.type) {\r\n const method = ObjectUtils.getProperties(factory.type).find(function (key) {\r\n return factory.type[key] === factory.func;\r\n });\r\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.type, method) || [];\r\n } else {\r\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.func) || [];\r\n }\r\n const parameters = depends.map(function (dep) {\r\n return injector.get(dep);\r\n }).concat(factory.params);\r\n return factory.func.apply(null, parameters);\r\n }\r\n}\r\n","import {EventEmitter, InjectionToken, Injector, NgZone, Provider, TemplateRef, Type} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from \"@angular/common/http\";\r\nimport {ActivatedRouteSnapshot, Data, LoadChildrenCallback, Route, Routes, UrlTree} from \"@angular/router\";\r\nimport {Request} from \"express\";\r\nimport {ReflectUtils} from \"./utils/reflect.utils\";\r\nimport {ObjectUtils} from \"./utils/object.utils\";\r\n\r\n// --- Util\r\nexport interface TypedFactoryProvider<T> {\r\n useFactory: (...args: any[]) => T;\r\n deps: any[];\r\n}\r\n\r\nexport interface TypedValueProvider<T> {\r\n useValue: T;\r\n}\r\n\r\nexport type CachedProvider<T> = Type<T> | TypedFactoryProvider<T> | TypedValueProvider<T>;\r\n\r\nexport type CachedFactory<T> = (injector: Injector) => ReadonlyArray<T>;\r\n\r\nexport const OPTIONS_TOKEN = new InjectionToken(\"custom-options-token\");\r\n\r\nexport interface IResolveFactory {\r\n func: Function;\r\n type?: any;\r\n params?: any[];\r\n}\r\n\r\nexport class CanvasColor {\r\n constructor(public r: number, public g: number, public b: number, public a: number = 255) {\r\n\r\n }\r\n}\r\n\r\n// --- Icon service ---\r\nexport interface IIconService {\r\n isDisabled: boolean;\r\n iconsLoaded: EventEmitter<any>;\r\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string>;\r\n}\r\n\r\nexport const ICON_SERVICE: InjectionToken<IIconService> = new InjectionToken<IIconService>(\"icon-service\");\r\n\r\n// --- Language service ---\r\nexport interface ITranslation {\r\n lang: string;\r\n translation: string;\r\n}\r\n\r\nexport interface ITranslations {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ILanguageSetting {\r\n unavailable?: string;\r\n [key: string]: string | boolean | number;\r\n}\r\n\r\nexport interface ILanguageSettings {\r\n languages: string[];\r\n devLanguages: string[];\r\n defaultLanguage: string;\r\n settings?: {[lang: string]: ILanguageSetting};\r\n}\r\n\r\nexport interface ILanguageService {\r\n currentLanguage: string;\r\n editLanguage: string;\r\n disableTranslations: boolean;\r\n defaultLanguage: string;\r\n dictionary: ITranslations;\r\n readonly languages: ReadonlyArray<string>;\r\n readonly httpClient: HttpClient;\r\n replaceLanguages(languages: string[]): void;\r\n addLanguages(languages: string[]): void;\r\n getTranslationSync(key: string, params?: Object): string;\r\n getTranslation(key: string, params?: Object): Promise<string>;\r\n getTranslations(...keys: string[]): Promise<ITranslations>;\r\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string;\r\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string;\r\n}\r\n\r\nexport const LANGUAGE_SERVICE: InjectionToken<ILanguageService> = new InjectionToken<ILanguageService>(\"language-service\");\r\n\r\n// --- Auth Service ---\r\nexport interface IAuthService {\r\n isAuthenticated: boolean;\r\n userChanged: EventEmitter<any>;\r\n checkAuthenticated(): Promise<boolean>;\r\n}\r\n\r\nexport type RouteValidator = (auth: IAuthService, route?: IRoute, next?: ActivatedRouteSnapshot) => Promise<boolean>;\r\n\r\nexport interface IRouteData extends Data {\r\n returnState?: string[];\r\n guards?: Array<IResolveFactory | RouteValidator>;\r\n}\r\n\r\nexport interface IRoute extends Route {\r\n data?: IRouteData;\r\n}\r\n\r\nexport const AUTH_SERVICE: InjectionToken<IAuthService> = new InjectionToken<IAuthService>(\"auth-service\");\r\n\r\n// --- Acl Service ---\r\nexport interface IAclComponent {\r\n onUserInitialized(): void;\r\n onUserChanged(): void;\r\n}\r\n\r\nexport interface IRouteStateInfo {\r\n route: IRoute;\r\n guard: any;\r\n dirty: boolean;\r\n first: boolean;\r\n component?: any;\r\n}\r\n\r\n// --- State Service ---\r\nexport type NavigationUrlParam = any[] | string | UrlTree;\r\n\r\n// --- Storage Service ---\r\nexport enum StorageMode {\r\n Local,\r\n Session\r\n}\r\n\r\n// --- Toaster Service ---\r\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\nexport interface IToasterService {\r\n error(message: string, params?: any): void;\r\n info(message: string, params?: any): void;\r\n success(message: string, params?: any): void;\r\n warning(message: string, params?: any): void;\r\n handleAsyncMethod(method: AsyncMethod, context?: any): void\r\n}\r\n\r\nexport const TOASTER_SERVICE: InjectionToken<IToasterService> = new InjectionToken<IToasterService>(\"toaster-service\");\r\n\r\n// --- Dialog service ---\r\nexport interface IDialogButtonConfig {\r\n icon?: string;\r\n text?: string;\r\n classes?: string;\r\n method?: AsyncMethod;\r\n}\r\n\r\nexport interface IDialogConfig {\r\n id?: string;\r\n title?: string;\r\n message: string;\r\n messageContext?: any;\r\n buttons?: IDialogButtonConfig[];\r\n onClose?: AsyncMethod;\r\n size?: string;\r\n type?: string;\r\n templates?: { [id: string]: TemplateRef<any> };\r\n}\r\n\r\nexport interface IConfirmDialogConfig {\r\n id?: string;\r\n title?: string;\r\n message: string;\r\n messageContext?: any;\r\n buttons?: IDialogButtonConfig[];\r\n method?: AsyncMethod;\r\n cancelMethod?: AsyncMethod;\r\n size?: string;\r\n templates?: { [id: string]: TemplateRef<any> };\r\n okText?: string;\r\n okClasses?: string;\r\n cancelText?: string;\r\n cancelClasses?: string;\r\n}\r\n\r\nexport interface IDialogService<DR = any> {\r\n dialog(config: IDialogConfig): DR;\r\n confirm(config: IConfirmDialogConfig): DR\r\n}\r\n\r\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>(\"dialog-service\");\r\n\r\n// --- Socket service ---\r\n\r\nexport const SOCKET_IO_PATH = new InjectionToken<string>(\"socket-io-path\");\r\n\r\n// --- Promise Service ---\r\n\r\nexport interface IPromiseService {\r\n zone: NgZone;\r\n count: number;\r\n onChanged: EventEmitter<number>;\r\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\r\n all(promises: Promise<any>[]): Promise<any>;\r\n resolve<T>(value: T | PromiseLike<T>): Promise<T>;\r\n reject<T>(value: T | PromiseLike<T>): Promise<T>;\r\n}\r\n\r\nexport const PROMISE_SERVICE = new InjectionToken<IPromiseService>(\"promise-service\");\r\n\r\n// --- Wasm service ---\r\nexport type TypedArray =\r\n | Int8Array\r\n | Int16Array\r\n | Int32Array\r\n | Uint8Array\r\n | Uint8ClampedArray\r\n | Uint16Array\r\n | Uint32Array\r\n | Float32Array\r\n | Float64Array;\r\n\r\nexport interface IWasmExports {\r\n HEAP8: Int8Array;\r\n HEAP16: Int16Array,\r\n HEAP32: Int32Array,\r\n HEAPU8: Uint8Array;\r\n HEAPU16: Uint16Array,\r\n HEAPU32: Uint32Array,\r\n HEAPF32: Float32Array,\r\n HEAPF64: Float64Array,\r\n memory: WebAssembly.Memory;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IWasi {\r\n instantiate(bytes: ArrayBuffer): Promise<IWasmExports>;\r\n}\r\n\r\nexport interface IWasm {\r\n writeArrayToMemory(array: TypedArray): Promise<number> | number;\r\n readArrayFromMemory<T = TypedArray>(pointer: number, array: T): Promise<T> | T;\r\n [key: string]: (...args: any[]) => any;\r\n}\r\n\r\nexport interface IWasmAsync {\r\n writeArrayToMemory(array: TypedArray): Promise<number>;\r\n readArrayFromMemory<T = TypedArray>(pointer: number, array: T): T;\r\n [key: string]: (...args: any[]) => Promise<any>;\r\n}\r\n\r\nexport const WASI_IMPLEMENTATION = new InjectionToken<Type<IWasi>>(\"wasi-implementation\");\r\n\r\n// --- Async method ---\r\nexport interface IAsyncMessage {\r\n message: string;\r\n context?: any;\r\n}\r\n\r\nexport type AsyncMethod = (context?: any) => Promise<IAsyncMessage>;\r\n\r\n// --- Unordered list ---\r\nexport interface UnorderedListTemplate {\r\n readonly type: string;\r\n readonly selector: string;\r\n readonly templateRef: TemplateRef<any>\r\n}\r\n\r\nexport interface UnorderedListTemplates {\r\n [type: string]: TemplateRef<any>;\r\n}\r\n\r\nexport type UnorderedListStyle = \"table\" | \"list\";\r\n\r\n// --- Upload ---\r\nexport interface IFileUploadResult {\r\n _id?: string;\r\n id?: string;\r\n contentType?: string;\r\n createdAt?: Date;\r\n filename?: string;\r\n}\r\n\r\nexport interface IFileUploadProcess {\r\n file: File;\r\n progress: number;\r\n preview?: string;\r\n promise?: Promise<void>;\r\n}\r\n\r\n// --- Ajax request ---\r\nexport interface IAjaxRequestDetails {\r\n request: XMLHttpRequest,\r\n method: string;\r\n url: string;\r\n}\r\n\r\nexport type AjaxRequestCallback = (details: IAjaxRequestDetails, params: any) => void;\r\n\r\n// --- Loader utils ---\r\nexport type ScriptType = \"text/javascript\" | \"module\";\r\n\r\nexport interface IScriptPromises {\r\n [src: string]: Promise<HTMLScriptElement>;\r\n}\r\nexport interface IStylePromises {\r\n [src: string]: Promise<HTMLLinkElement>;\r\n}\r\n\r\n// --- Observable utils ---\r\nexport interface ISearchObservable {\r\n search: string;\r\n getSearchResults(token: string): Promise<any[]>;\r\n}\r\n\r\n// --- Reflect utils ---\r\nexport function FactoryDependencies(...dependencies: Array<InjectionToken<any> | Provider>): MethodDecorator {\r\n return function (target: any, method: string): void {\r\n ReflectUtils.defineMetadata(\"factoryDependencies\", dependencies, target, method);\r\n };\r\n}\r\n\r\nexport function ObjectType(type: string): ClassDecorator {\r\n return function (target: any): void {\r\n ReflectUtils.defineMetadata(\"objectType\", type, target);\r\n };\r\n}\r\n\r\n// --- Timer utils ---\r\nexport interface ITimer {\r\n id?: any;\r\n func?: Function;\r\n time?: number;\r\n run?: () => void;\r\n set?: (func: Function, time: number) => void;\r\n clear?: () => void;\r\n}\r\n\r\n// --- ExtraItemProperties ---\r\nexport interface IExtraProperties {\r\n [prop: string]: any;\r\n}\r\n\r\n// --- Group by ---\r\nexport interface IGroupMap {\r\n [column: string]: any;\r\n}\r\n\r\n// --- Translate ---\r\nexport type TranslationQuery = string | ITranslations | ITranslation[];\r\n\r\n// --- Pagination ---\r\nexport interface IPageInfo {\r\n text: string;\r\n number: number;\r\n active: boolean;\r\n}\r\n\r\nexport interface IPaginationData {\r\n total: number;\r\n items: any[];\r\n meta?: any;\r\n}\r\n\r\nexport type PaginationDataLoader = (page: number, itemsPerPage: number) => Promise<IPaginationData>;\r\n\r\nexport class PaginationItemContext {\r\n\r\n constructor(public item: any, public parallelItem: any, public count: number, public index: number, public dataIndex: number) {\r\n }\r\n\r\n get first(): boolean {\r\n return this.index === 0;\r\n }\r\n\r\n get last(): boolean {\r\n return this.index === this.count - 1;\r\n }\r\n\r\n get even(): boolean {\r\n return this.index % 2 === 0;\r\n }\r\n\r\n get odd(): boolean {\r\n return !this.even;\r\n }\r\n\r\n // Support for old dynamic table implementation\r\n get row(): any {\r\n console.log(\"DynamicTable row is deprecated use item instead\");\r\n return this.item;\r\n }\r\n\r\n // Support for old dynamic table implementation\r\n get parallelRow(): any {\r\n console.log(\"DynamicTable parallelRow is deprecated use parallelItem instead\");\r\n return this.parallelItem;\r\n }\r\n\r\n filter(filterRx: RegExp): boolean {\r\n const keys = Object.keys(this.item);\r\n for (const key of keys) {\r\n const value = this.item[key];\r\n if (ObjectUtils.isNullOrUndefined(value) || ObjectUtils.isObject(value)) continue;\r\n const testValue = ObjectUtils.isString(value) ? value : value.toString();\r\n if (testValue.match(filterRx)) return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n// --- Http service ---\r\nexport interface IHttpHeaders {\r\n [header: string]: string | string[];\r\n}\r\n\r\nexport interface IHttpParams {\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IRequestOptions {\r\n method?: string;\r\n body?: any;\r\n headers?: IHttpHeaders | HttpHeaders;\r\n originalHeaders?: IHttpHeaders;\r\n params?: IHttpParams;\r\n observe?: \"body\" | \"response\";\r\n reportProgress?: boolean;\r\n responseType?: \"arraybuffer\" | \"blob\" | \"json\" | \"text\";\r\n withCredentials?: boolean;\r\n timeout?: number;\r\n}\r\n\r\nexport interface IIssueContext {\r\n url: string;\r\n}\r\n\r\nexport interface IProgress {\r\n percentage?: number;\r\n loaded?: number;\r\n total?: number;\r\n}\r\n\r\nexport type ProgressListener = (progress: IProgress) => void;\r\n\r\nexport type PromiseExecutor = (resolve: (value?: any | PromiseLike<any>) => void, reject: (reason?: any) => void) => void;\r\n\r\nexport class HttpPromise extends Promise<any> {\r\n\r\n protected rejectHandler: (reason?: HttpErrorResponse) => void;\r\n protected hasRejectHandler: boolean;\r\n protected attachCount: number;\r\n protected runCount: number;\r\n\r\n constructor(rejectHandler: (reason?: HttpErrorResponse) => void, executor: PromiseExecutor) {\r\n super(executor);\r\n this.rejectHandler = rejectHandler;\r\n this.attachCount = 0;\r\n this.runCount = 0;\r\n }\r\n\r\n then<TResult1, TResult2>(onFulfilled?: ((value: any) => (PromiseLike<TResult1> | TResult1)) | null | undefined,\r\n onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult2> | TResult2)) | null | undefined): Promise<TResult1 | TResult2> {\r\n this.attachCount++;\r\n return super.then(value => {\r\n this.runCount++;\r\n return onFulfilled ? onFulfilled(value) : null;\r\n }, (reason: HttpErrorResponse) => {\r\n const result: any = onRejected ? onRejected(reason) : null;\r\n this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);\r\n this.runCount++;\r\n this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);\r\n return result;\r\n });\r\n }\r\n\r\n catch<TResult = never>(onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult> | TResult)) | null | undefined): Promise<any | TResult> {\r\n return this.then(null, onRejected);\r\n }\r\n}\r\n\r\nexport interface IHttpService {\r\n language: ILanguageService;\r\n url(url: string): string;\r\n makeListParams(page: number, itemsPerPage: number, orderBy?: string, orderDescending?: boolean, filter?: string): IHttpParams;\r\n}\r\n\r\nexport const EXPRESS_REQUEST = new InjectionToken<Request>(\"express-request\");\r\n\r\n// --- Api service ---\r\n\r\nexport interface IBaseHttpClient extends HttpClient {\r\n readonly requestHeaders: IHttpHeaders;\r\n readonly requestParams: IHttpParams;\r\n}\r\n\r\nexport interface IApiService extends IHttpService {\r\n cache: any;\r\n client: IBaseHttpClient;\r\n get(url: string, options?: IRequestOptions): Promise<any>;\r\n delete(url: string, options?: IRequestOptions): Promise<any>;\r\n post(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n put(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n patch(url: string, body?: any, options?: IRequestOptions): Promise<any>;\r\n upload(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): Promise<any>;\r\n list(url: string, params: IHttpParams): Promise<IPaginationData>;\r\n}\r\n\r\nexport const API_SERVICE: InjectionToken<IApiService> = new InjectionToken<IApiService>(\"api-service\");\r\n\r\n// --- OpenApi service ---\r\nexport interface IOpenApiSchemaProperty {\r\n id: string;\r\n type?: string;\r\n format?: string;\r\n column?: boolean;\r\n additionalProperties?: any;\r\n $ref?: string;\r\n allOf?: ReadonlyArray<{$ref?: string}>\r\n items?: IOpenApiSchemaProperty;\r\n enum?: string[];\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IOpenApiSchema {\r\n properties: {\r\n [name: string]: IOpenApiSchemaProperty;\r\n };\r\n required: string[];\r\n}\r\n\r\nexport interface IOpenApiSchemas {\r\n [name: string]: IOpenApiSchema;\r\n}\r\n\r\n// --- Dynamic table ---\r\nexport type TableFilterType = \"text\" | \"enum\" | \"checkbox\";\r\n\r\nexport interface ITableOrders {\r\n [column: string]: string;\r\n}\r\n\r\nexport interface ITableColumn {\r\n title?: string;\r\n sort?: string;\r\n filter?: boolean;\r\n filterType?: TableFilterType;\r\n enum?: string[];\r\n enumPrefix?: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ITableColumns {\r\n [column: string]: ITableColumn;\r\n}\r\n\r\nexport type TableColumns = ITableOrders | ITableColumns | string[];\r\n\r\nexport interface ITableTemplate {\r\n column: string | string[];\r\n pure: boolean;\r\n ref: TemplateRef<any>;\r\n}\r\n\r\nexport interface ITableTemplates {\r\n [column: string]: ITableTemplate;\r\n}\r\n\r\nexport interface ITableDataQuery {\r\n [column: string]: string | string[] | boolean;\r\n}\r\n\r\nexport type TableDataLoader = (\r\n page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean,\r\n filter: string, query: ITableDataQuery\r\n) => Promise<IPaginationData>;\r\n\r\nexport type DragDropEvent<K extends string = \"item\", T = any> = {\r\n [key in K]: T;\r\n} & {\r\n ev: DragEvent;\r\n elem: HTMLElement;\r\n source?: T;\r\n};\r\n\r\nexport type DragEventHandler<R = boolean, K extends string = \"item\"> = (ev: DragDropEvent<K>) => R;\r\n\r\n// Back compatibility\r\nexport type ITableDragEvent = DragDropEvent;\r\nexport type DynamicTableDragHandler<R = boolean> = DragEventHandler<R>;\r\n\r\n// --- Resource if ---\r\nexport class ResourceIfContext {\r\n resource: string;\r\n url: string;\r\n}\r\n\r\n// --- ComponentLoaderService ---\r\n\r\nexport type CssSelector = [tagName: string, attrName?: string, attrValue?: string];\r\n\r\nexport type CssSelectorList = CssSelector[];\r\n\r\nexport interface DynamicModuleInfo {\r\n moduleId: string;\r\n loadChildren: LoadChildrenCallback;\r\n routes?: Routes;\r\n initialNavigation?: boolean;\r\n}\r\n\r\nexport interface DynamicComponentLocation {\r\n moduleId: string;\r\n selector: string;\r\n}\r\n\r\nexport interface DynamicEntryComponents {\r\n components: Type<any>[];\r\n moduleId: string;\r\n}\r\n\r\nexport const DYNAMIC_ENTRY_COMPONENTS = new InjectionToken<DynamicEntryComponents[]>(\"dynamic-entry-components\");\r\n\r\nexport const DYNAMIC_MODULE_INFO = new InjectionToken<DynamicModuleInfo[]>(\"dynamic-module-info\");\r\n\r\n// --- ConfigService ---\r\nexport const APP_BASE_URL = new InjectionToken<string>(\"app-base-url\");\r\n\r\nexport class IConfiguration {\r\n cdnUrl?: string;\r\n baseUrl?: string;\r\n baseDomain?: string;\r\n translationUrl?: string;\r\n translationExt?: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface IConfigService {\r\n readonly config: IConfiguration;\r\n readonly injector: Injector;\r\n readonly load: () => Promise<IConfiguration>;\r\n readonly rootElement: any;\r\n cloneRootElem(): any;\r\n prepareUrl(url: string, ending: string): string;\r\n getConfigValue(key: string): any;\r\n getQueryParameter(name: string, url?: string): string;\r\n}\r\n\r\nexport const CONFIG_SERVICE = new InjectionToken<IConfigService>(\"config-service\");\r\n\r\nexport const BASE_CONFIG = new InjectionToken<IConfiguration>(\"base-config\");\r\n\r\nexport const SCRIPT_PARAMS = new InjectionToken<any>(\"script-params\");\r\n\r\nexport const ROOT_ELEMENT = new InjectionToken<HTMLElement>(\"app-root-element\");\r\n\r\nexport const RESIZE_DELAY = new InjectionToken<number>(\"resize-event-delay\");\r\n\r\nexport type ResizeEventStrategy = \"scroll\" | \"object\";\r\n\r\nexport const RESIZE_STRATEGY = new InjectionToken<ResizeEventStrategy>(\"resize-event-strategy\");\r\n\r\n// --- Error handler service ---\r\nexport type ErrorHandlerCallback = (error: string) => any;\r\n\r\nexport const ERROR_HANDLER = new InjectionToken<ErrorHandlerCallback>(\"error-handler-callback\");\r\n\r\n// --- Global templates service\r\n\r\nexport type GlobalComponentModifier = (component: any) => any;\r\n\r\n// --- Module ---\r\nexport type AppInitializerFunc = () => Promise<void> | void;\r\n\r\nexport interface IModuleConfig {\r\n apiService?: Type<IApiService>\r\n authService?: Type<IAuthService>;\r\n iconService?: Type<IIconService>;\r\n languageService?: Type<ILanguageService>;\r\n toasterService?: Type<IToasterService>;\r\n promiseService?: Type<IPromiseService>;\r\n configService?: Type<IConfigService>;\r\n dialogService?: Type<IDialogService>;\r\n wasiImplementation?: Type<IWasi>;\r\n initializeApp?: (injector: Injector) => AppInitializerFunc;\r\n baseUrl?: (injector: Injector) => string;\r\n resizeDelay?: number;\r\n resizeStrategy?: ResizeEventStrategy;\r\n socketPath?: string;\r\n}\r\n\r\n// --- Valued promise ---\r\nexport class ValuedPromise<T> extends Promise<T> {\r\n value: T;\r\n}\r\n","import {AjaxRequestCallback, IAjaxRequestDetails} from \"../common-types\";\r\n\r\nexport class AjaxRequestHandler {\r\n\r\n private static isOverridden: boolean = false;\r\n\r\n public params: any;\r\n\r\n constructor(private pattern: RegExp, private callback: AjaxRequestCallback) {\r\n this.params = {};\r\n if (typeof XMLHttpRequest !== \"undefined\" && !AjaxRequestHandler.isOverridden) {\r\n AjaxRequestHandler.isOverridden = true;\r\n const originalOpen = XMLHttpRequest.prototype.open;\r\n XMLHttpRequest.prototype.open = function (method: string, url: string): void {\r\n originalOpen.apply(this, arguments);\r\n window.dispatchEvent(new CustomEvent(\"ajaxRequest\", {\r\n detail: {\r\n request: this,\r\n method: method,\r\n url: url\r\n }\r\n }))\r\n };\r\n }\r\n }\r\n\r\n listen(): AjaxRequestHandler {\r\n if (typeof window === \"undefined\") return this;\r\n window.addEventListener(\"ajaxRequest\", this.listener);\r\n return this;\r\n }\r\n\r\n forget(): AjaxRequestHandler {\r\n if (typeof window === \"undefined\") return;\r\n window.removeEventListener(\"ajaxRequest\", this.listener);\r\n return this;\r\n }\r\n\r\n private listener = (event: CustomEvent): void => {\r\n const details: IAjaxRequestDetails = event.detail;\r\n if (this.pattern.test(details.url)) this.callback(details, this.params);\r\n };\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ArrayUtils {\r\n\r\n static has(arr: any[], ...items: any[]): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items)) return false;\r\n for (let i = 0; i < items.length; i++) {\r\n if (arr.indexOf(items[i]) >= 0) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static match(arr: any[], str: string): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str)) return false;\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[i] instanceof RegExp) {\r\n const regex = <RegExp>arr[i];\r\n if (regex.test(str)) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static any<T>(arr: T[], cb: (item: T) => boolean): boolean {\r\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb)) return false;\r\n for (let i = 0; i < arr.length; i++) {\r\n if (cb(arr[i])) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static move<T>(arr: T[], oldIndex: number, newIndex: number): T[] {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n const length = arr.length;\r\n while (oldIndex < 0) {\r\n oldIndex += length;\r\n }\r\n while (newIndex < 0) {\r\n newIndex += length;\r\n }\r\n if (newIndex >= length) {\r\n let k = newIndex - length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n return arr;\r\n }\r\n\r\n static reversed(arr: any[]): any[] {\r\n const result = [];\r\n if (!ObjectUtils.isArray(arr)) return result;\r\n for (let i = arr.length - 1; i >= 0; i--) {\r\n result.push(arr[i]);\r\n }\r\n return result;\r\n }\r\n\r\n static min<T>(arr: T[], cb: (item: T, index?: number) => number): T {\r\n if (!ObjectUtils.isArray(arr)) return null;\r\n let min = Number.MAX_SAFE_INTEGER;\r\n let result = null;\r\n for (let i = 0; i < arr.length; i++) {\r\n const current = cb(arr[i], i);\r\n if (current < min || result === null) {\r\n min = current;\r\n result = arr[i];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static max<T>(arr: T[], cb: (item: T, index?: number) => number): T {\r\n if (!ObjectUtils.isArray(arr)) return null;\r\n let max = Number.MIN_SAFE_INTEGER;\r\n let result = null;\r\n for (let i = 0; i < arr.length; i++) {\r\n const current = cb(arr[i], i);\r\n if (current > max || result === null) {\r\n max = current;\r\n result = arr[i];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static chunk<T>(arr: T[], size: number): Array<T[]> {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n size = Math.max(1, size);\r\n const result = []\r\n for (let i = 0; i < arr.length; i += size) {\r\n result.push(arr.slice(i, i + size))\r\n }\r\n return result\r\n }\r\n\r\n static unique<T>(arr: T[]): T[] {\r\n if (!ObjectUtils.isArray(arr)) return [];\r\n return arr.filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n }\r\n}\r\n","import {Inject, Injectable, PLATFORM_ID} from \"@angular/core\";\r\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\r\nimport {DeviceDetectorService, DeviceInfo} from \"ngx-device-detector\";\r\n\r\n/**\r\n * Use this service to determine which is the current environment\r\n */\r\n@Injectable()\r\nexport class UniversalService {\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get isServer(): boolean {\r\n return isPlatformServer(this.platformId);\r\n }\r\n\r\n get deviceInfo(): DeviceInfo {\r\n return this.isServer\r\n ? {\r\n userAgent: \"angular-universal\",\r\n os: \"unknown\",\r\n browser: \"node\",\r\n device: \"node\",\r\n os_version: \"unknown\",\r\n browser_version: \"unknown\",\r\n deviceType: \"unknown\",\r\n orientation: \"landscape\"\r\n } as any\r\n : this.dds.getDeviceInfo();\r\n }\r\n\r\n get browserName(): string {\r\n return (this.dds.browser || \"\").toLowerCase();\r\n }\r\n\r\n get browserVersion(): string {\r\n return this.dds.browser_version;\r\n }\r\n\r\n get isExplorer(): boolean {\r\n return this.checkBrowser(\"ie\");\r\n }\r\n\r\n get isEdge(): boolean {\r\n return this.checkBrowser(\"edge\");\r\n }\r\n\r\n get isChrome(): boolean {\r\n return this.checkBrowser(\"chrome\");\r\n }\r\n\r\n get isFirefox(): boolean {\r\n return this.checkBrowser(\"firefox\");\r\n }\r\n\r\n get isSafari(): boolean {\r\n return this.checkBrowser(\"safari\");\r\n }\r\n\r\n get isTablet(): boolean {\r\n return this.dds.isTablet();\r\n }\r\n\r\n get isMobile(): boolean {\r\n return this.dds.isMobile();\r\n }\r\n\r\n get isDesktop(): boolean {\r\n return this.dds.isDesktop();\r\n }\r\n\r\n get isCrawler(): boolean {\r\n return this.crawler;\r\n }\r\n\r\n private readonly crawler: boolean;\r\n\r\n constructor(@Inject(PLATFORM_ID) readonly platformId: string, readonly dds: DeviceDetectorService) {\r\n const info = this.dds.getDeviceInfo();\r\n this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);\r\n }\r\n\r\n protected checkBrowser(name: string): boolean {\r\n return this.browserName.includes(name) || false;\r\n }\r\n}\r\n","import {Injectable, Injector, NgZone, Optional} from \"@angular/core\";\r\nimport {\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n Data,\r\n NavigationEnd,\r\n NavigationExtras,\r\n OutletContext,\r\n Params,\r\n Resolve,\r\n Route,\r\n Router,\r\n Scroll,\r\n UrlSegment,\r\n UrlTree\r\n} from \"@angular/router\";\r\nimport {BehaviorSubject, firstValueFrom, Observable, Observer, Subscription} from \"rxjs\";\r\nimport {debounceTime, distinctUntilChanged, filter, map, skipWhile,} from \"rxjs/operators\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {IRoute, NavigationUrlParam} from \"../common-types\";\r\nimport {UniversalService} from \"./universal.service\";\r\n\r\nexport const emptySnapshot = new ActivatedRouteSnapshot();\r\nexport const emptyData: Data = {id: \"\"};\r\nexport const emptyParams: Params = {};\r\nexport const emptySegments: UrlSegment[] = [];\r\nexport const emptyComponents: any[] = [];\r\n\r\nexport interface IStateInfo {\r\n url: string;\r\n segments: UrlSegment[];\r\n components: any[];\r\n}\r\n\r\n@Injectable()\r\nexport class StateService {\r\n\r\n readonly globalExtras: NavigationExtras;\r\n\r\n protected $snapshot: BehaviorSubject<ActivatedRouteSnapshot>;\r\n protected $component: BehaviorSubject<any>;\r\n protected stateInfo: IStateInfo;\r\n\r\n static toPath(route: Route, params: any): string {\r\n let path = route.path || \"\";\r\n ObjectUtils.iterate(params, (value: any, key: string) => {\r\n path = path.replace(`:${key}`, `${value}`);\r\n });\r\n return path;\r\n }\r\n\r\n get snapshot(): ActivatedRouteSnapshot {\r\n return this.$snapshot.value;\r\n }\r\n\r\n get component(): any {\r\n return this.$component.value;\r\n }\r\n\r\n get route(): IRoute {\r\n return this.snapshot.routeConfig;\r\n }\r\n\r\n get data(): Data {\r\n return this.snapshot.data || emptyData;\r\n }\r\n\r\n get params(): Params {\r\n return this.snapshot.params || emptyParams;\r\n }\r\n\r\n get queryParams(): Params {\r\n return this.snapshot.queryParams || emptyParams;\r\n }\r\n\r\n get url(): string {\r\n return this.stateInfo.url || \"\";\r\n }\r\n\r\n get urlSegments(): UrlSegment[] {\r\n return this.stateInfo.segments || emptySegments;\r\n }\r\n\r\n get components(): any[] {\r\n return this.stateInfo.components || emptyComponents;\r\n }\r\n\r\n get routerConfig(): IRoute[] {\r\n return this.router.config;\r\n }\r\n\r\n get $observable(): Observable<ActivatedRouteSnapshot> {\r\n return this.$snapshot.pipe(\r\n skipWhile(snapshot => snapshot === emptySnapshot),\r\n debounceTime(25)\r\n )\r\n }\r\n\r\n constructor(readonly injector: Injector,\r\n readonly zone: NgZone,\r\n readonly universal: UniversalService,\r\n @Optional() readonly router: Router = null,\r\n @Optional() readonly contexts: ChildrenOutletContexts = null) {\r\n this.globalExtras = {\r\n queryParamsHandling: \"merge\"\r\n };\r\n this.$snapshot = new BehaviorSubject(emptySnapshot);\r\n this.$component = new BehaviorSubject(null);\r\n this.stateInfo = {\r\n url: \"\",\r\n segments: [],\r\n components: []\r\n };\r\n this.router?.events\r\n .pipe(\r\n distinctUntilChanged(),\r\n map(event => {\r\n if (event instanceof Scroll) {\r\n return event.routerEvent;\r\n }\r\n return event;\r\n }),\r\n filter(e => e instanceof NavigationEnd),\r\n )\r\n .subscribe(() => {\r\n const routerStateSnapshot = this.router.routerState.snapshot;\r\n let context: OutletContext = this.contexts?.getContext(\"primary\");\r\n let segments = [];\r\n const components: any[] = [];\r\n const snapshots: ActivatedRouteSnapshot[] = [];\r\n while (context) {\r\n const snapshot = context.route.snapshot;\r\n snapshots.push(snapshot);\r\n segments = segments.concat(snapshot.url);\r\n if (context.outlet && context.outlet.component)\r\n components.push(context.outlet.component);\r\n context = context.children.getContext(\"primary\");\r\n }\r\n this.stateInfo = {\r\n url: segments.map(s => s.url).join(\"/\"),\r\n segments: segments,\r\n components: components\r\n };\r\n this.$snapshot.next(snapshots[snapshots.length - 1]);\r\n this.$component.next(components[components.length - 1]);\r\n });\r\n }\r\n\r\n async reload(): Promise<any> {\r\n const routerStateSnapshot = this.router.routerState.snapshot;\r\n const resolvers = this.route.resolve || {};\r\n const keys = Object.keys(resolvers);\r\n for (const key of keys) {\r\n const resolver = this.injector.get(resolvers[key]) as Resolve<any>;\r\n let resolved = resolver.resolve(this.snapshot, routerStateSnapshot);\r\n if (resolved instanceof Observable) {\r\n resolved = firstValueFrom(resolved);\r\n }\r\n if (resolved instanceof Promise) {\r\n resolved = await resolved;\r\n }\r\n this.data[key] = resolved;\r\n }\r\n }\r\n\r\n async navigateByUrl(url: string | UrlTree, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n return this.navigate(url, navigationExtras);\r\n }\r\n\r\n async navigate(url: NavigationUrlParam, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n if (!this.router) return false;\r\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n return this.zone.run(() => {\r\n return this.router.navigateByUrl(tree, extras);\r\n });\r\n }\r\n\r\n async open(url: NavigationUrlParam, target = \"_blank\", navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n if (!this.router) return false;\r\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n return this.zone.run(() => {\r\n return this.openInNewWindow(tree, target) || this.router.navigateByUrl(tree, extras);\r\n });\r\n }\r\n\r\n subscribeImmediately(\r\n next?: (value: ActivatedRouteSnapshot) => void,\r\n error?: (error: any) => void\r\n ): Subscription {\r\n return this.subscribe({\r\n next, error\r\n });\r\n }\r\n\r\n subscribe(osOrNext?: Partial<Observer<ActivatedRouteSnapshot>> | ((value: ActivatedRouteSnapshot) => void)): Subscription {\r\n return this.$observable.subscribe(osOrNext);\r\n }\r\n\r\n protected openInNewWindow(tree: UrlTree, target: string): boolean {\r\n if (!this.universal.isBrowser) return false;\r\n const baseUrl = window.location.href.replace(this.router.url, \"\");\r\n try {\r\n const serialized = this.router.serializeUrl(tree);\r\n const separator = serialized.startsWith(\"/\") ? \"\" : \"/\";\r\n window.open(baseUrl + separator + serialized, target);\r\n return true;\r\n } catch (e) {\r\n console.log(`Can't open new window: ${e}`);\r\n return false;\r\n }\r\n }\r\n\r\n protected createUrlTree(url: NavigationUrlParam, extras?: NavigationExtras): [UrlTree, NavigationExtras] {\r\n if (!this.router) return null;\r\n extras = Object.assign(extras, this.globalExtras, extras || {});\r\n if (ObjectUtils.isArray(url)) {\r\n return [this.router.createUrlTree(url, extras), extras]\r\n }\r\n if (ObjectUtils.isString(url)) {\r\n return [this.router.parseUrl(url), extras];\r\n }\r\n return [url, extras];\r\n }\r\n}\r\n","import {Inject, Injectable, Injector} from \"@angular/core\";\r\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlSegment} from \"@angular/router\";\r\nimport {AUTH_SERVICE, FactoryDependencies, IAuthService, IRoute, RouteValidator} from \"../common-types\";\r\nimport {ReflectUtils} from \"./reflect.utils\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\nimport {StateService} from \"../services/state.service\";\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n static guardAuthenticated(auth: IAuthService): Promise<boolean> {\r\n return Promise.resolve(auth.isAuthenticated);\r\n }\r\n\r\n static guardNotAuthenticated(auth: IAuthService): Promise<boolean> {\r\n return Promise.resolve(!auth.isAuthenticated);\r\n }\r\n\r\n static guardNothing(): Promise<boolean> {\r\n return Promise.resolve(true);\r\n }\r\n\r\n @FactoryDependencies(AUTH_SERVICE)\r\n static guardAuthField(auth: IAuthService, expression: string = `auth.isAuthenticated`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth}));\r\n };\r\n return lambda;\r\n }\r\n\r\n @FactoryDependencies(StateService)\r\n static guardStateField(state: StateService, expression: string = `state.data`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {state}));\r\n };\r\n return lambda;\r\n }\r\n\r\n @FactoryDependencies(AUTH_SERVICE, StateService)\r\n static guardAuthStateField(auth: IAuthService, state: StateService, expression: string = `auth.isAuthenticated`): RouteValidator {\r\n // @dynamic\r\n const lambda = (): Promise<boolean> => {\r\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth, state}));\r\n };\r\n return lambda;\r\n }\r\n\r\n static wildRouteMatch(segments: UrlSegment[]) {\r\n return {consumed: segments};\r\n }\r\n\r\n static noRouteMatch() {\r\n return null;\r\n }\r\n\r\n constructor(@Inject(Injector) readonly injector: Injector,\r\n @Inject(StateService) readonly state: StateService,\r\n @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\r\n }\r\n\r\n checkRouteMenu(route: IRoute): Promise<boolean> {\r\n if (!route.data || !route.data.name) return Promise.resolve(false);\r\n return this.checkRoute(route);\r\n }\r\n\r\n checkRoute(route: IRoute, next?: ActivatedRouteSnapshot): Promise<boolean> {\r\n const routeData = route.data || {};\r\n if (!routeData.guards)\r\n return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);\r\n return new Promise<boolean>(resolve => {\r\n const guards = routeData.guards.map(g => {\r\n const guard = ReflectUtils.resolve<RouteValidator>(g, this.injector);\r\n return guard(this.auth, route, next);\r\n });\r\n Promise.all(guards).then(results => {\r\n resolve(results.indexOf(false) < 0);\r\n });\r\n });\r\n }\r\n\r\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\r\n const route = <IRoute>next.routeConfig;\r\n return new Promise<boolean>(resolve => {\r\n this.auth.checkAuthenticated().then(() => {\r\n this.checkRoute(route, next).then(hasRights => {\r\n resolve(hasRights);\r\n if (!hasRights) {\r\n this.getReturnState(route).then(returnState => {\r\n if (!returnState) return;\r\n this.state.navigate(returnState, {queryParams: next.queryParams});\r\n });\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n getConfig(route: IRoute, config: IRoute[], path: string[]): IRoute[] {\r\n if (!config) return null;\r\n const match = config.findIndex(t => t == route);\r\n if (match >= 0) return config;\r\n for (const subConfig of config) {\r\n if (subConfig.path)\r\n path.push(subConfig.path);\r\n const loadedChildren = (subConfig[\"_loadedConfig\"] || {routes: null}).routes || subConfig[\"_loadedRoutes\"];\r\n const match = this.getConfig(route, subConfig.children || loadedChildren, path);\r\n if (!match) {\r\n if (subConfig.path)\r\n path.length -= 1;\r\n continue;\r\n }\r\n return match;\r\n }\r\n return null;\r\n }\r\n\r\n getReturnState(route: IRoute): Promise<string[]> {\r\n if (!route) return Promise.resolve(null);\r\n if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {\r\n return Promise.resolve(route.data.returnState);\r\n }\r\n const path = [];\r\n const config = this.getConfig(route, this.state.routerConfig, path);\r\n return new Promise<string[]>(resolve => {\r\n this.getReturnStateRecursive(config).then(rs => {\r\n if (!ObjectUtils.isArray(rs)) {\r\n resolve(rs);\r\n return;\r\n }\r\n resolve(path.concat(rs));\r\n });\r\n });\r\n }\r\n\r\n private getReturnStateRecursive(config: IRoute[], c: number = 0): Promise<string[]> {\r\n if (!config || c >= config.length) return Promise.resolve(null);\r\n return new Promise<string[]>(resolve => {\r\n const route = config[c];\r\n const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);\r\n check.then(res => {\r\n if (res) {\r\n resolve([route.path]);\r\n return;\r\n }\r\n this.getReturnStateRecursive(config, c + 1).then(resolve);\r\n });\r\n });\r\n }\r\n}\r\n","import {InjectionToken, Injector, Type} from \"@angular/core\";\r\nimport {CachedFactory, CachedProvider} from \"../common-types\";\r\n\r\nconst CACHED_TOKEN = new InjectionToken(\"cached-factory-token\");\r\n\r\nexport function cachedFactory<T>(providers: CachedProvider<T>[]): CachedFactory<T> {\r\n let cached: ReadonlyArray<T> = null;\r\n return (injector: Injector) => {\r\n if (cached !== null) {\r\n return cached;\r\n }\r\n const subInjector = Injector.create({\r\n providers: providers.map(p => {\r\n if ((\"useFactory\" in p && \"deps\" in p) || \"useValue\" in p) {\r\n return {\r\n provide: CACHED_TOKEN,\r\n multi: true,\r\n ...p\r\n } as any;\r\n }\r\n return {\r\n provide: CACHED_TOKEN,\r\n multi: true,\r\n useClass: p as Type<T>\r\n };\r\n }),\r\n parent: injector\r\n });\r\n cached = subInjector.get(CACHED_TOKEN) as ReadonlyArray<T>;\r\n return cached;\r\n };\r\n}\r\n","import {CanvasColor} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const netscape: any;\r\n\r\nclass BlurStack {\r\n r: number = 0;\r\n g: number = 0;\r\n b: number = 0;\r\n a: number = 0;\r\n next: BlurStack = null;\r\n}\r\n\r\nconst mul_table = [\r\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512,\r\n 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512,\r\n 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456,\r\n 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512,\r\n 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328,\r\n 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456,\r\n 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335,\r\n 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512,\r\n 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405,\r\n 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328,\r\n 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271,\r\n 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456,\r\n 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388,\r\n 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335,\r\n 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\r\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\r\n\r\nconst shg_table = [\r\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\r\n 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\r\n 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\r\n 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\r\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\r\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\r\n\r\nexport class CanvasUtils {\r\n\r\n static manipulatePixels(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, colorTransformer: (color: CanvasColor, greyscale?: number) => CanvasColor): void {\r\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const pixels = imgData.data;\r\n for (let i = 0, n = pixels.length; i < n; i += 4) {\r\n const clr = new CanvasColor(pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]);\r\n const greyscale = clr.r * .3 + clr.g * .59 + clr.b * .11;\r\n const color = colorTransformer(clr, greyscale);\r\n pixels[i] = color.r;\r\n pixels[i + 1] = color.g;\r\n pixels[i + 2] = color.b;\r\n pixels[i + 3] = color.a;\r\n }\r\n ctx.putImageData(imgData, 0, 0);\r\n }\r\n\r\n static thresholding(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, threshold: number = 50, colorTransformer: (color: CanvasColor, limit: boolean, greyscale?: number) => CanvasColor): void {\r\n const min = new CanvasColor(0, 0, 0, 255);\r\n const max = new CanvasColor(0, 0, 0, 0);\r\n colorTransformer = ObjectUtils.isFunction(colorTransformer) ? colorTransformer : ((color: CanvasColor, limit: boolean): CanvasColor => {\r\n return limit ? max : min;\r\n });\r\n CanvasUtils.manipulatePixels(canvas, ctx, (color, greyscale) => {\r\n return colorTransformer(color, greyscale > threshold, greyscale);\r\n });\r\n }\r\n\r\n static stackBlur(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, radius: number = 10): void {\r\n if (isNaN(radius) || radius < 1) return;\r\n radius |= 0;\r\n\r\n const top_x = 0;\r\n const top_y = 0;\r\n const width = canvas.width;\r\n const height = canvas.height;\r\n\r\n let imageData = null;\r\n\r\n try {\r\n try {\r\n imageData = ctx.getImageData(top_x, top_y, width, height);\r\n } catch (e) {\r\n\r\n // NOTE: this part is supposedly only needed if you want to work with local files\r\n // so it might be okay to remove the whole try/catch block and just use\r\n // imageData = ctx.getImageData( top_x, top_y, width, height );\r\n try {\r\n netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\r\n imageData = ctx.getImageData(top_x, top_y, width, height);\r\n } catch (e) {\r\n alert(\"Cannot access local image\");\r\n throw new Error(\"unable to access local image data: \" + e);\r\n }\r\n }\r\n } catch (e) {\r\n alert(\"Cannot access image\");\r\n throw new Error(\"unable to access image data: \" + e);\r\n }\r\n\r\n const pixels = imageData.data;\r\n\r\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\r\n r_out_sum, g_out_sum, b_out_sum, a_out_sum,\r\n r_in_sum, g_in_sum, b_in_sum, a_in_sum,\r\n pr, pg, pb, pa, rbs;\r\n\r\n const div = radius + radius + 1;\r\n const widthMinus1 = width - 1;\r\n const heightMinus1 = height - 1;\r\n const radiusPlus1 = radius + 1;\r\n const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\r\n\r\n const stackStart = new BlurStack();\r\n let stackEnd = null;\r\n let stack = stackStart;\r\n\r\n for (i = 1; i < div; i++) {\r\n stack = stack.next = new BlurStack();\r\n if (i == radiusPlus1) {\r\n stackEnd = stack;\r\n }\r\n }\r\n stack.next = stackStart;\r\n let stackIn = null;\r\n let stackOut = null;\r\n\r\n yw = yi = 0;\r\n\r\n const mul_sum = mul_table[radius];\r\n const shg_sum = shg_table[radius];\r\n\r\n for (y = 0; y < height; y++) {\r\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n\r\n stack = stackStart;\r\n\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n\r\n for (i = 1; i < radiusPlus1; i++) {\r\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;\r\n b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;\r\n a_sum += (stack.a = (pa = pixels[p + 3])) * rbs;\r\n\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n\r\n stack = stack.next;\r\n }\r\n\r\n\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (x = 0; x < width; x++) {\r\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa != 0) {\r\n pa = 255 / pa;\r\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n } else {\r\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\r\n }\r\n\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n\r\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\r\n\r\n r_in_sum += (stackIn.r = pixels[p]);\r\n g_in_sum += (stackIn.g = pixels[p + 1]);\r\n b_in_sum += (stackIn.b = pixels[p + 2]);\r\n a_in_sum += (stackIn.a = pixels[p + 3]);\r\n\r\n r_sum += r_in_sum;\r\n g_sum += g_in_sum;\r\n b_sum += b_in_sum;\r\n a_sum += a_in_sum;\r\n\r\n stackIn = stackIn.next;\r\n\r\n r_out_sum += (pr = stackOut.r);\r\n g_out_sum += (pg = stackOut.g);\r\n b_out_sum += (pb = stackOut.b);\r\n a_out_sum += (pa = stackOut.a);\r\n\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n\r\n stackOut = stackOut.next;\r\n\r\n yi += 4;\r\n }\r\n yw += width;\r\n }\r\n\r\n\r\n for (x = 0; x < width; x++) {\r\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n\r\n yi = x << 2;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n\r\n stack = stackStart;\r\n\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n\r\n yp = width;\r\n\r\n for (i = 1; i <= radius; i++) {\r\n yi = (yp + x) << 2;\r\n\r\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;\r\n b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;\r\n a_sum += (stack.a = (pa = pixels[yi + 3])) * rbs;\r\n\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n\r\n stack = stack.next;\r\n\r\n if (i < heightMinus1) {\r\n yp += width;\r\n }\r\n }\r\n\r\n yi = x;\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (y = 0; y < height; y++) {\r\n p = yi << 2;\r\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n if (pa > 0) {\r\n pa = 255 / pa;\r\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n } else {\r\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\r\n }\r\n\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n\r\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\r\n\r\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\r\n g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));\r\n b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));\r\n a_sum += (a_in_sum += (stackIn.a = pixels[p + 3]));\r\n\r\n stackIn = stackIn.next;\r\n\r\n r_out_sum += (pr = stackOut.r);\r\n g_out_sum += (pg = stackOut.g);\r\n b_out_sum += (pb = stackOut.b);\r\n a_out_sum += (pa = stackOut.a);\r\n\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n\r\n stackOut = stackOut.next;\r\n\r\n yi += width;\r\n }\r\n }\r\n\r\n ctx.putImageData(imageData, top_x, top_y);\r\n }\r\n\r\n static measureTextFontSize(maxWidth: number, maxHeight: number, lines: string[], font: string, lineHeightPercent: number = 1.1, canvas?: HTMLCanvasElement): number {\r\n\r\n const startSize: number = maxHeight;\r\n const context: CanvasRenderingContext2D = canvas.getContext(\"2d\");\r\n\r\n if (!canvas) {\r\n canvas = <HTMLCanvasElement>document.createElement(\"canvas\");\r\n document.body.appendChild(canvas);\r\n }\r\n\r\n canvas.width = maxWidth + maxHeight;\r\n canvas.height = maxHeight * 2;\r\n\r\n let fontSize: number = CanvasUtils.halveValidateFontSize(startSize, (size: number) => {\r\n CanvasUtils.setFontProps(context, font, size);\r\n const maxTextLinesWidth = CanvasUtils.getTextWidth(context, lines);\r\n return maxWidth - maxTextLinesWidth;\r\n });\r\n\r\n const bitmapHeight: number = CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, fontSize, lineHeightPercent);\r\n if (bitmapHeight > maxHeight) {\r\n fontSize = CanvasUtils.halveValidateFontSize(fontSize, (size: number) => {\r\n return maxHeight - CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, size, lineHeightPercent);\r\n });\r\n }\r\n\r\n return fontSize;\r\n }\r\n\r\n static drawLines(context: CanvasRenderingContext2D, lines: string[], font: string, size: number, lineHeightPercent: number = 1.1, align: string = \"left\", baseLine: string = \"top\", x: number = 0, y: number = 0): number {\r\n CanvasUtils.setFontProps(context, font, size, align, baseLine);\r\n for (let i: number = 0; i < lines.length; i++) {\r\n const line: string = lines[i];\r\n context.fillText(line, x, y);\r\n if (i < lines.length - 1) {\r\n y += size * lineHeightPercent;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n static wrapText(context: CanvasRenderingContext2D, text: string, x: number, y: number, maxWidth: number): void {\r\n const words = text.split(\" \");\r\n const lineHeight = context.measureText(\"M\").width * 1.3;\r\n const lines: string[] = [];\r\n let line = \"\";\r\n for (let n = 0; n < words.length; n++) {\r\n const testLine = line + words[n] + \" \";\r\n const metrics = context.measureText(testLine);\r\n const testWidth = metrics.width;\r\n if (testWidth > maxWidth && n > 0) {\r\n lines.push(line);\r\n line = words[n] + \" \";\r\n }\r\n else {\r\n line = testLine;\r\n }\r\n }\r\n lines.push(line);\r\n y -= lineHeight * .5 * lines.length;\r\n lines.forEach(l => {\r\n context.fillText(l, x, y);\r\n y += lineHeight;\r\n });\r\n }\r\n\r\n static setFontProps(context: CanvasRenderingContext2D, font: string, fontSize: number, align: string = \"left\", baseLine: string = \"top\"): void {\r\n context.font = `${fontSize}px ${font}`;\r\n context.textAlign = <any>align;\r\n context.textBaseline = <any>baseLine;\r\n }\r\n\r\n private static getTextWidth(context: CanvasRenderingContext2D, lines: string[]): number {\r\n let maxWidth: number = 0;\r\n for (let i: number = 0; i < lines.length; i++) {\r\n const line: string = lines[i];\r\n maxWidth = Math.max(maxWidth, context.measureText(line).width);\r\n }\r\n return maxWidth;\r\n }\r\n\r\n private static getTextBitmapHeight(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, lines: string[], font: string, fontSize: number, lineHeightPercent: number): number {\r\n const width: number = canvas.width;\r\n const height: number = canvas.height;\r\n context.clearRect(0, 0, width, height);\r\n\r\n const textY = CanvasUtils.drawLines(context, lines, font, fontSize, lineHeightPercent, \"left\", \"top\", fontSize * .5, fontSize * .5);\r\n const imageData: ImageData = context.getImageData(0, 0, width, height);\r\n\r\n let textHeight: number = 0;\r\n\r\n yLoop:for (let y: number = 0; y < height; y++) {\r\n for (let x: number = 0; x < width; x++) {\r\n const index: number = (x + y * width) * 4;\r\n if (imageData.data[index + 3] > 0) {\r\n textHeight = y + 1;\r\n continue yLoop;\r\n }\r\n }\r\n }\r\n\r\n return Math.max(textHeight, textY + fontSize);\r\n }\r\n\r\n private static halveValidateFontSize(startSize: number, callback: (size: number) => number): number {\r\n let fontSize: number = startSize;\r\n let lastFontSize: number = 0;\r\n let direction: number;\r\n\r\n for (let i: number = 0; i < 20; i++) {\r\n direction = callback(fontSize);\r\n const tempSize: number = fontSize;\r\n if (direction < 0) {\r\n fontSize = fontSize - (Math.abs(fontSize - lastFontSize) / 2);\r\n } else {\r\n fontSize = fontSize + (Math.abs(fontSize - lastFontSize) / 2);\r\n }\r\n lastFontSize = tempSize;\r\n if (Math.abs(fontSize - lastFontSize) < 0.1) {\r\n break;\r\n }\r\n }\r\n fontSize = Math.floor(fontSize);\r\n return fontSize;\r\n }\r\n}\r\n","import {DurationInputArg1, DurationInputArg2} from \"moment\";\r\nimport moment from \"moment\";\r\n\r\nexport class DateUtils {\r\n\r\n static isHoliday(date: Date): boolean {\r\n return moment(date).isoWeekday() > 5;\r\n }\r\n\r\n static isBusinessDay(date: Date): boolean {\r\n return moment(date).isoWeekday() < 6;\r\n }\r\n\r\n static add(date: Date, amount?: DurationInputArg1, unit?: DurationInputArg2): Date {\r\n return moment(date).add(amount, unit).toDate();\r\n }\r\n\r\n static businessAdd(date: Date, amount: number, unit?: DurationInputArg2, freeDays: Date[] = []): Date {\r\n const signal = amount < 0 ? -1 : 1;\r\n const freeMoments = freeDays.map(d => moment(d));\r\n let remaining = Math.abs(amount);\r\n let day = date;\r\n while (remaining) {\r\n day = DateUtils.add(day, signal, unit);\r\n if (DateUtils.isBusinessDay(day) && !freeMoments.some(m => m.isSame(day, \"day\"))) {\r\n remaining--;\r\n }\r\n }\r\n return day;\r\n }\r\n\r\n static businessSubtract(date: Date, amount: number, unit?: DurationInputArg2): Date {\r\n return DateUtils.businessAdd(date, -amount, unit);\r\n }\r\n}\r\n","import {HttpClient} from \"@angular/common/http\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const saveAs: any;\r\n\r\nexport class FileUtils {\r\n\r\n static readonly base64: RegExp = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/g;\r\n\r\n static getExtension(file: File): string {\r\n return file ? file.name.substring(file.name.lastIndexOf(\".\")).toLowerCase() : null;\r\n }\r\n\r\n static getName(file: File): string {\r\n return file ? file.name.substring(0, file.name.lastIndexOf(\".\")) : null;\r\n }\r\n\r\n static toFile(blob: Blob, fileName: string): File {\r\n const data: any = blob;\r\n data.lastModifiedDate = new Date();\r\n data.name = fileName.split(/\\\\|\\//g).pop();\r\n return <File>data;\r\n }\r\n\r\n static dataToBlob(data: string): Blob {\r\n const parts = data.split(\",\");\r\n const byteString = atob(parts[1]);\r\n const mimeString = parts[0].split(\":\")[1].split(\";\")[0];\r\n\r\n const ab = new ArrayBuffer(byteString.length);\r\n const ia = new Uint8Array(ab);\r\n for (let i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ab], {type: mimeString});\r\n }\r\n\r\n static saveBlob(blob: Blob, fileName: string): void {\r\n if (typeof saveAs == \"undefined\") {\r\n throw Error(\"FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver\");\r\n }\r\n saveAs(blob, fileName);\r\n }\r\n\r\n static saveJson(json: any, fileName: string): void {\r\n if (!ObjectUtils.isObject(json)) return;\r\n FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);\r\n }\r\n\r\n static readFileAsText(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsText(file)\r\n );\r\n }\r\n\r\n static readFileAsBinaryString(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsBinaryString(file)\r\n );\r\n }\r\n\r\n static readFileAsDataURL(file: Blob): Promise<string> {\r\n return FileUtils.readFile(\r\n // @dynamic\r\n reader => reader.readAsDataURL(file)\r\n );\r\n }\r\n\r\n static base64ToBlob(base64: string, mimeType = \"application/octet-stream\") {\r\n // Decode the Base64 string into a binary string\r\n const byteCharacters = atob(base64);\r\n\r\n // Convert the binary string into an array of bytes\r\n const byteNumbers = Array.from(byteCharacters, char => char.charCodeAt(0));\r\n const byteArray = new Uint8Array(byteNumbers);\r\n\r\n // Create a Blob with the byte array and the specified MIME type\r\n return new Blob([byteArray], { type: mimeType });\r\n }\r\n\r\n static async readBlobFromUrl(http: HttpClient, url: string): Promise<Blob> {\r\n if (!url) {\r\n throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n }\r\n if (url.match(FileUtils.base64)) {\r\n return FileUtils.base64ToBlob(url);\r\n }\r\n return firstValueFrom(http.get(url, {\r\n responseType: \"blob\"\r\n }));\r\n }\r\n\r\n static async readDataFromUrl(http: HttpClient, url: string): Promise<string> {\r\n if (!url) {\r\n throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n }\r\n if (url.match(FileUtils.base64)) {\r\n return url;\r\n }\r\n const blob = await firstValueFrom(http.get(url, {\r\n responseType: \"blob\"\r\n }));\r\n return FileUtils.readFileAsDataURL(blob);\r\n }\r\n\r\n static getVideoCover(file: File, seekTo: number = null, quality: number = .75) {\r\n return new Promise<string>((resolve, reject) => {\r\n // load the file to a video player\r\n const videoPlayer = document.createElement(\"video\");\r\n videoPlayer.setAttribute(\"src\", URL.createObjectURL(file));\r\n videoPlayer.load();\r\n videoPlayer.addEventListener(\"error\", (ex) => {\r\n reject(\"error when loading video file\");\r\n });\r\n // load metadata of the video to get video duration and dimensions\r\n videoPlayer.addEventListener(\"loadedmetadata\", () => {\r\n if (isNaN(seekTo)) {\r\n seekTo = videoPlayer.duration / 2;\r\n }\r\n // seek to user defined timestamp (in seconds) if possible\r\n if (videoPlayer.duration < seekTo) {\r\n reject(\"video is too short.\");\r\n return;\r\n }\r\n // delay seeking or else \"seeked\" event won\"t fire on Safari\r\n setTimeout(() => {\r\n videoPlayer.currentTime = seekTo;\r\n }, 200);\r\n // extract video thumbnail once seeking is complete\r\n videoPlayer.addEventListener(\"seeked\", () => {\r\n // define a canvas to have the same dimension as the video\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = videoPlayer.videoWidth;\r\n canvas.height = videoPlayer.videoHeight;\r\n // draw the video frame to canvas\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\r\n // return the canvas image as a blob\r\n resolve(ctx.canvas.toDataURL(\r\n \"image/jpeg\",\r\n quality\r\n ));\r\n });\r\n });\r\n });\r\n }\r\n\r\n static async getFilePreview(file: File): Promise<string> {\r\n const type = file.type.toLowerCase();\r\n if (type.startsWith(\"image/\")) {\r\n return URL.createObjectURL(file);\r\n }\r\n if (type.startsWith(\"video/\")) {\r\n return FileUtils.getVideoCover(file);\r\n }\r\n return null;\r\n }\r\n\r\n private static readFile(callback: (reader: FileReader) => void): Promise<string> {\r\n return new Promise<string>(\r\n // @dynamic\r\n (resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event: any) => resolve(event.target.result);\r\n reader.onerror = reject;\r\n callback(reader);\r\n }\r\n );\r\n }\r\n}\r\n","import {Subject} from \"rxjs\";\r\n\r\nexport class GenericValue<T> extends Subject<T> {\r\n\r\n get value(): T {\r\n return this._value;\r\n }\r\n\r\n set value(value: T) {\r\n if (value == this._value) return;\r\n this._value = value;\r\n this.next(value);\r\n }\r\n\r\n private _value: T;\r\n\r\n constructor(value: T = null) {\r\n super();\r\n this._value = value;\r\n }\r\n\r\n setJustValue(value: T): void {\r\n this._value = value;\r\n }\r\n}\r\n","export type FileSystemEntryOpenResult = ReadonlyArray<FileSystemEntry> | null;\r\n\r\nexport type FileSystemEntryOpenCb = (data: any, parent: FileSystemEntry) => Promise<FileSystemEntryOpenResult>;\r\n\r\nexport class FileSystemEntry {\r\n\r\n protected result: Promise<FileSystemEntryOpenResult>;\r\n\r\n readonly path: ReadonlyArray<FileSystemEntry>;\r\n readonly level: number;\r\n readonly classes: ReadonlyArray<string>;\r\n\r\n constructor(readonly label: string,\r\n readonly meta: string,\r\n readonly image: string,\r\n readonly data: any,\r\n readonly parent: FileSystemEntry,\r\n protected openCb: FileSystemEntryOpenCb) {\r\n this.path = !parent ? [this] : parent.path.concat([this]);\r\n this.level = this.path.length - 1;\r\n this.classes = this.path\r\n .filter(t => typeof t.data === \"string\" && t.data.length > 0).map(t => t.data)\r\n .concat([`level-${this.level}`]);\r\n }\r\n\r\n open(): Promise<FileSystemEntryOpenResult> {\r\n this.result = this.result || this.openCb(this.data, this);\r\n this.result.then(res => {\r\n if (Array.isArray(res)) return;\r\n this.result = null;\r\n });\r\n return this.result;\r\n }\r\n}\r\n","export interface IShape {\r\n x: number;\r\n y: number;\r\n\r\n distance(shape: IShape): number;\r\n}\r\n\r\nexport class Rect implements IShape {\r\n\r\n get center(): Point {\r\n return new Point(this.x, this.y);\r\n }\r\n\r\n get left(): number {\r\n return this.x - this.width * .5;\r\n }\r\n\r\n get right(): number {\r\n return this.x + this.width * .5;\r\n }\r\n\r\n get bottom(): number {\r\n return this.y - this.height * .5;\r\n }\r\n\r\n get top(): number {\r\n return this.y + this.height * .5;\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number, readonly width: number, readonly height: number, readonly rotation: number = 0) {\r\n\r\n }\r\n\r\n distance(p: Point): number {\r\n p = p.rotateAround(this.center, -this.rotation);\r\n const x = Math.max(this.left - p.x, 0, p.x - this.right);\r\n const y = Math.max(this.bottom - p.y, 0, p.y - this.top);\r\n return Math.sqrt(x*x + y*y);\r\n }\r\n}\r\n\r\nexport class Circle implements IShape {\r\n\r\n get center(): Point {\r\n return new Point(this.x, this.y);\r\n }\r\n\r\n get left(): Point {\r\n return new Point(this.x - this.radius, this.y);\r\n }\r\n\r\n get right(): Point {\r\n return new Point(this.x + this.radius, this.y);\r\n }\r\n\r\n get top(): Point {\r\n return new Point(this.x, this.y + this.radius);\r\n }\r\n\r\n get bottom(): Point {\r\n return new Point(this.x, this.y - this.radius);\r\n }\r\n\r\n get rect(): Rect {\r\n return new Rect(this.x, this.y, this.radius * 2, this.radius * 2);\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number, readonly radius: number) {\r\n\r\n }\r\n\r\n distance(p: Point): number {\r\n return this.center.distance(p) - this.radius;\r\n }\r\n}\r\n\r\nexport class Point implements IShape {\r\n\r\n static Zero: Point = new Point(0, 0);\r\n\r\n get length(): number {\r\n return this.distance(Point.Zero);\r\n }\r\n\r\n get perpendicular(): Point {\r\n return new Point(this.y, -this.x);\r\n }\r\n\r\n constructor(readonly x: number, readonly y: number) {\r\n }\r\n\r\n add(p: Point): Point {\r\n return new Point(this.x + p.x, this.y + p.y);\r\n }\r\n\r\n subtract(p: Point): Point {\r\n return new Point(this.x - p.x, this.y - p.y);\r\n }\r\n\r\n multiply(p: Point | number): Point {\r\n if (p instanceof Point) {\r\n return new Point(this.x * p.x, this.y * p.y);\r\n }\r\n return new Point(this.x * p, this.y * p);\r\n }\r\n\r\n distance(b: Point): number {\r\n const x = b.x - this.x;\r\n const y = b.y - this.y;\r\n return Math.sqrt(x * x + y * y);\r\n }\r\n\r\n lerp(p: Point, ratio: number): Point {\r\n const diff = p.subtract(this);\r\n return this.add(diff.multiply(ratio));\r\n }\r\n\r\n perpendicularTo(p: Point, length: number): Point {\r\n const diff = p.perpendicular.subtract(this.perpendicular);\r\n const ratio = length / diff.length;\r\n const center = this.lerp(p, .5);\r\n return center.add(diff.multiply(ratio));\r\n }\r\n\r\n circleWith(a: Point, b: Point): Circle {\r\n const yDelta_a = b.y - a.y;\r\n const xDelta_a = b.x - a.x;\r\n const yDelta_b = this.y - b.y;\r\n const xDelta_b = this.x - b.x;\r\n\r\n const aSlope = yDelta_a / xDelta_a;\r\n const bSlope = yDelta_b / xDelta_b;\r\n\r\n const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));\r\n const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;\r\n const center = new Point(x, y);\r\n return new Circle(center.x, center.y, center.distance(this));\r\n }\r\n\r\n tangents(c: Circle): Point[] {\r\n const pd = c.center.subtract(this);\r\n const a = Math.asin(c.radius / pd.length);\r\n const b = Math.atan2(pd.y, pd.x);\r\n // Tangent points\r\n let t = b - a;\r\n const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));\r\n t = b + a;\r\n const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));\r\n return [t1, t2];\r\n }\r\n\r\n angle(p: Point): number {\r\n const diff = p.subtract(this);\r\n return Math.atan2(diff.y, diff.x) * 180 / Math.PI;\r\n }\r\n\r\n rotateAround(p: Point, angle: number): Point {\r\n const rotation = (p.angle(this) + angle) * Math.PI / 180;\r\n const distance = p.distance(this);\r\n const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);\r\n return p.add(rotated);\r\n }\r\n}\r\n","import {Invokable} from \"invokable\";\r\n\r\nexport class Initializer<T> {\r\n\r\n private initialized: boolean;\r\n\r\n get isInitialized(): boolean {\r\n return this.initialized;\r\n }\r\n\r\n constructor(private callback: () => T, private shouldInit: boolean = true) {\r\n this.initialized = !this.shouldInit;\r\n // @ts-ignore\r\n return Invokable.create(this);\r\n }\r\n\r\n [Invokable.call](): T {\r\n if (this.initialized) return null;\r\n this.initialized = true;\r\n return this.callback();\r\n }\r\n}\r\n\r\nexport interface Initializer<T> {\r\n (): T;\r\n}\r\n","export class JSONfn {\r\n\r\n static parse(text: string): any {\r\n return JSON.parse(text, JSONfn.reviver);\r\n }\r\n\r\n static stringify(obj: any): string {\r\n return JSON.stringify(obj, JSONfn.replacer);\r\n }\r\n\r\n static reviver(key: string, value: any): any {\r\n const iso8061 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:.\\d+)?(?:Z|[+-]\\d\\d:\\d\\d)$/;\r\n if (typeof value !== \"string\") return value;\r\n if (value.length < 8) {\r\n return value;\r\n }\r\n if (value.match(iso8061)) {\r\n return new Date(value);\r\n }\r\n const prefix = value.substring(0, 8);\r\n if (prefix === \"function\") {\r\n return new Function(`return ${value}`)();\r\n }\r\n if (prefix === \"_NuFrRa_\") {\r\n return new Function(`return ${value.slice(8)}`)();\r\n }\r\n if (prefix === \"_PxEgEr_\") {\r\n return new Function(`return ${value.slice(8)}`)();\r\n }\r\n return value;\r\n }\r\n\r\n static replacer(key: string, value: any): any {\r\n if (value instanceof Function || typeof value === \"function\") {\r\n const fnBody = value.toString();\r\n if (fnBody.length < 8 || fnBody.substring(0, 8) !== \"function\") {\r\n // this is ES6 Arrow Function\r\n return \"_NuFrRa_\" + fnBody;\r\n }\r\n return fnBody;\r\n }\r\n if (value instanceof RegExp) {\r\n return \"_PxEgEr_\" + value;\r\n }\r\n return value;\r\n }\r\n}\r\n","import {ScriptType, IScriptPromises, IStylePromises} from \"../common-types\";\r\n\r\nexport class LoaderUtils {\r\n\r\n static scriptPromises: IScriptPromises = {};\r\n static stylePromises: IStylePromises = {};\r\n\r\n static loadScript(src: string, async: boolean = false, type: ScriptType = \"text/javascript\", parent?: Node): Promise<HTMLScriptElement> {\r\n this.scriptPromises[src] = this.scriptPromises[src] || new Promise<any>((resolve, reject) => {\r\n // Load script\r\n const script: any = document.createElement(\"script\");\r\n script.type = type;\r\n script.src = src;\r\n script.async = async;\r\n if (script.readyState) {\r\n // Internet explorer\r\n script.onreadystatechange = () => {\r\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n script.onreadystatechange = null;\r\n resolve(script);\r\n }\r\n };\r\n } else {\r\n // Other browsers\r\n script.onload = () => resolve(script);\r\n }\r\n script.onerror = (error: any) => reject(error);\r\n (parent || document.body).appendChild(script);\r\n });\r\n return this.scriptPromises[src];\r\n }\r\n\r\n static loadStyle(src: string, parent?: Node): Promise<HTMLLinkElement> {\r\n this.stylePromises[src] = this.stylePromises[src] || new Promise<any>((resolve, reject) => {\r\n // Load script\r\n const link: any = document.createElement(\"link\");\r\n link.rel = \"stylesheet\";\r\n link.type = \"text/css\";\r\n link.href = src;\r\n\r\n if (link.readyState) {\r\n // Internet explorer\r\n link.onreadystatechange = () => {\r\n if (link.readyState === \"loaded\" || link.readyState === \"complete\") {\r\n link.onreadystatechange = null;\r\n resolve(link);\r\n }\r\n };\r\n } else {\r\n // Other browsers\r\n link.onload = () => resolve(link);\r\n }\r\n link.onerror = (error: any) => reject(error);\r\n (parent || document.body).appendChild(link);\r\n });\r\n return this.stylePromises[src];\r\n }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class MathUtils {\r\n\r\n static readonly EPSILON: number = 1e-9;\r\n\r\n static equal(a: number, b: number, epsilon: number = null): boolean {\r\n epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : MathUtils.EPSILON;\r\n return Math.abs(a - b) < epsilon;\r\n }\r\n\r\n static clamp(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min)\r\n }\r\n\r\n static round(value: number, precision: number = 2, divider: number = 1): number {\r\n precision = Math.pow(10, precision);\r\n return Math.round(value * precision / divider) / precision;\r\n }\r\n\r\n static approxIndex(x: number, values: number[], epsilon: number = null): number {\r\n if (!Array.isArray(values) || values.length == 0) {\r\n return -1;\r\n }\r\n let s = 0;\r\n let e = values.length - 1;\r\n while (s <= e) {\r\n const i = Math.floor((s + e) / 2);\r\n const v = values[i];\r\n if (MathUtils.equal(v, x, epsilon)) {\r\n return i;\r\n }\r\n if (v < x) {\r\n s = i + 1;\r\n } else {\r\n e = i - 1;\r\n }\r\n }\r\n const m = Math.max(e, 0);\r\n const a = values[s];\r\n const b = values[m];\r\n return Math.abs(a - x) < Math.abs(b - x) ? s : m;\r\n }\r\n\r\n static approximate(x: number, values: number[], epsilon: number = null): number {\r\n const index = MathUtils.approxIndex(x, values, epsilon);\r\n return values[index] ?? null;\r\n }\r\n}\r\n","import {Type, ValueProvider, ɵComponentDef as ComponentDef} from \"@angular/core\";\r\nimport {CssSelector, CssSelectorList, DYNAMIC_ENTRY_COMPONENTS} from \"../common-types\";\r\n\r\nexport function checkTransitions(el: HTMLElement, cb: () => any): void {\r\n let hasTransitions = false;\r\n let called = false;\r\n const end = () => {\r\n if (called) return;\r\n called = true;\r\n cb();\r\n };\r\n el.onanimationstart = () => hasTransitions = true;\r\n el.ontransitionstart = () => hasTransitions = true;\r\n el.onanimationend = end;\r\n el.ontransitionend = end;\r\n setTimeout(() => {\r\n if (hasTransitions) return;\r\n end();\r\n }, 100);\r\n}\r\n\r\nexport function getComponentDef<T>(type: Type<T>): ComponentDef<T> {\r\n const def = type[\"ɵcmp\"] as ComponentDef<T>;\r\n if (!def) {\r\n throw new Error(`No Angular definition found for ${type.name}`);\r\n }\r\n return def;\r\n}\r\n\r\n// Helper function to match a search selector to a stored selector\r\nexport function parseSelector(selector: string | CssSelector): CssSelector {\r\n if (Array.isArray(selector)) {\r\n if (selector.length !== 1 && selector.length !== 3) {\r\n throw new Error(\"CSSSelector should contain 1 or 3 parts!\");\r\n }\r\n if (selector.some(t => typeof t !== \"string\")) {\r\n throw new Error(\"CSSSelector parts can only be strings\");\r\n }\r\n return selector;\r\n }\r\n if (selector.indexOf(\"#\") > 0) {\r\n const parts = selector.split(\"#\");\r\n selector = `${parts[0]}[id=${parts[1]}]`;\r\n }\r\n if (selector.indexOf(\".\") > 0) {\r\n const parts = selector.split(\".\");\r\n selector = `${parts[0]}[class=${parts[1]}]`;\r\n }\r\n const start = selector.indexOf(\"[\");\r\n const end = Math.max(selector.indexOf(\"]\"), Math.min(selector.length, start + 1));\r\n if (start >= 0) {\r\n const parts = selector.substring(start + 1, end).split(\"=\");\r\n return [\r\n selector.substring(0, start),\r\n parts[0],\r\n parts[1] || \"\"\r\n ]\r\n }\r\n return [selector];\r\n}\r\n\r\nexport function selectorMatchesList(list: CssSelectorList, selector: CssSelector) {\r\n for (const item of list) {\r\n if (selector.length === item.length && selector.every((s, i) => s === item[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function provideEntryComponents(components: Type<any>[], moduleId?: string): ValueProvider {\r\n return {\r\n provide: DYNAMIC_ENTRY_COMPONENTS,\r\n useValue: {\r\n components,\r\n moduleId\r\n },\r\n multi: true\r\n };\r\n}\r\n","import {ITimer} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ntype TimerFunc = (timer: ITimer) => void;\r\n\r\nexport class TimerUtils {\r\n\r\n static createTimeout(func?: Function, time?: number): ITimer {\r\n // @dynamic\r\n const run = (timer: ITimer) => {\r\n timer.clear();\r\n timer.id = setTimeout(() => {\r\n timer.id = null;\r\n timer.func();\r\n }, timer.time);\r\n };\r\n // @dynamic\r\n const clear = (timer: ITimer) => {\r\n if (!timer.id) return;\r\n clearTimeout(timer.id);\r\n timer.id = null;\r\n };\r\n return TimerUtils.createTimer(run, clear, func, time);\r\n }\r\n\r\n static createInterval(func?: Function, time?: number): ITimer {\r\n // @dynamic\r\n const run = (timer: ITimer) => {\r\n timer.clear();\r\n timer.id = setInterval(timer.func, timer.time);\r\n };\r\n // @dynamic\r\n const clear = (timer: ITimer) => {\r\n if (!timer.id) return;\r\n clearInterval(timer.id);\r\n timer.id = null;\r\n };\r\n return TimerUtils.createTimer(run, clear, func, time);\r\n }\r\n\r\n private static createTimer(run: TimerFunc, clear: TimerFunc, func: Function, time: number): ITimer {\r\n const timer: ITimer = {};\r\n const setParams = (func: Function, time: number) => {\r\n timer.func = !ObjectUtils.isFunction(func) ? (() => {}) : func;\r\n timer.time = !ObjectUtils.isNumber(time) ? 100 : time;\r\n };\r\n timer.run = () => run(timer);\r\n timer.clear = () => clear(timer);\r\n timer.set = (func: Function, time: number) => {\r\n setParams(func, time);\r\n timer.run();\r\n };\r\n setParams(func, time);\r\n return timer;\r\n }\r\n}\r\n","import {from, Observable, Subject, Subscription} from \"rxjs\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\n\r\nimport {ISearchObservable} from \"../common-types\";\r\nimport {TimerUtils} from \"./timer.utils\";\r\n\r\nexport interface ISubscriberInfo {\r\n subjects: Observable<any>[];\r\n cb: (ev?: Observable<any>, ...args: any[]) => any;\r\n timeout?: number;\r\n}\r\n\r\nexport class ObservableUtils {\r\n\r\n static toSearch(search: ISearchObservable): Observable<any> {\r\n return mergeMap(\r\n // @dynamic\r\n (token: string) => search.getSearchResults(token)\r\n )(\r\n Observable.create(\r\n // @dynamic\r\n (observer: any) => {\r\n observer.next(search.search);\r\n }\r\n )\r\n );\r\n }\r\n\r\n static multiSubscription(...subscriptions: Subscription[]): Subscription {\r\n // @dynamic\r\n const lambda = () => {\r\n subscriptions.forEach(s => {\r\n s?.unsubscribe();\r\n });\r\n };\r\n return new Subscription(lambda);\r\n }\r\n\r\n static subscribe(...subscribers: ISubscriberInfo[]): Subscription {\r\n const subscriptions: Subscription[] = [];\r\n subscribers.forEach(info => {\r\n let alreadyCalled = false;\r\n const timer = TimerUtils.createTimeout();\r\n info.subjects.forEach(subject => {\r\n const ss = subject.subscribe((value) => {\r\n alreadyCalled = true;\r\n timer.set(() => {\r\n info.cb(subject, value);\r\n }, info.timeout ?? 0);\r\n });\r\n subscriptions.push(ss);\r\n });\r\n if (alreadyCalled) return;\r\n info.cb();\r\n });\r\n return ObservableUtils.multiSubscription(...subscriptions);\r\n }\r\n\r\n static fromFunction(callbackFunc: () => any): Observable<any> {\r\n let subject: any;\r\n return new Observable<any>((subscriber) => {\r\n if (!subject) {\r\n subject = new Subject();\r\n try {\r\n subject = from(callbackFunc());\r\n } catch (err) {\r\n subject.error(err);\r\n }\r\n }\r\n return subject.subscribe(subscriber);\r\n });\r\n }\r\n}\r\n","export interface CancelablePromise<T> extends Promise<T> {\r\n cancel: () => void;\r\n}\r\n\r\nexport function cancelablePromise<T>(source: Promise<T>): CancelablePromise<T> {\r\n let isCanceled = false;\r\n const cancelable = new Promise<T>((resolve, reject) => {\r\n source.then(res => {\r\n if (isCanceled) return;\r\n resolve(res);\r\n }).catch(reject);\r\n }) as CancelablePromise<T>;\r\n cancelable.cancel = () => {\r\n isCanceled = true;\r\n };\r\n return cancelable;\r\n}\r\n\r\nexport function impatientPromise<T>(factory: () => Promise<T>): () => Promise<T> {\r\n let lastPromise: CancelablePromise<T> = null;\r\n return () => {\r\n lastPromise?.cancel();\r\n lastPromise = cancelablePromise(factory());\r\n return lastPromise\r\n };\r\n}\r\n","export class StringUtils {\r\n\r\n static concat(separator: string, ...strings: string[]): string {\r\n return strings.filter(\r\n // @dynamic\r\n str => !!str\r\n ).join(separator);\r\n }\r\n\r\n static startsWith(str: string, ...starts: string[]): boolean {\r\n for (let i = 0; i < starts.length; i++) {\r\n if (str.startsWith(starts[i])) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static has(str: string, ...parts: string[]): boolean {\r\n for (let i = 0; i < parts.length; i++) {\r\n if (str.indexOf(parts[i]) >= 0) return true;\r\n }\r\n return false;\r\n }\r\n\r\n static lcFirst(str: string): string {\r\n return str ? str.charAt(0).toLowerCase() + str.substring(1) : \"\";\r\n }\r\n\r\n static ucFirst(str: string): string {\r\n return str ? str.charAt(0).toUpperCase() + str.substring(1) : \"\";\r\n }\r\n\r\n static isObjectId(id: string): boolean {\r\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\r\n }\r\n\r\n static parseDomain(baseUrl: string): string {\r\n try {\r\n const url = new URL(baseUrl);\r\n const port = url.port && url.port !== \"443\" && url.port !== \"80\" ? `:${url.port}` : ``;\r\n return `${url.protocol}//${url.hostname}${port}/`;\r\n } catch {\r\n return \"/\";\r\n }\r\n }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class SetUtils {\r\n static equals(set: Set<any>, obj: any): boolean {\r\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))\r\n return false;\r\n if (set.size != obj.size)\r\n return false;\r\n for (const item in set) {\r\n if (!obj.has(item)) return false;\r\n }\r\n return true;\r\n }\r\n\r\n static addArray(set: Set<any>, items: any[]): void {\r\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items)) return;\r\n items.forEach(i => set.add(i));\r\n }\r\n}\r\n","import {BehaviorSubject, Subject, Subscription} from \"rxjs\";\r\nimport type {ManagerOptions, SocketOptions, Socket} from \"socket.io-client\";\r\n\r\nexport type SocketFactory = (uri?: string, opts?: Partial<ManagerOptions & SocketOptions>) => Socket;\r\n\r\nexport type SocketDataValue = string | number | boolean | Date | Array<SocketDataValue> | Array<SocketDataObj>;\r\n\r\nexport interface SocketDataObj {\r\n [key: string]: SocketDataValue | SocketDataObj;\r\n}\r\n\r\nexport type SocketData = SocketDataValue | SocketDataObj;\r\n\r\nexport type ExtraHeaders = Record<string, string>;\r\n\r\nexport interface ResponseHandler {\r\n resolve: (data: SocketData) => void,\r\n reject: (error: SocketData) => void\r\n}\r\n\r\nfunction uuid(): string {\r\n if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\r\n const buf = new Uint16Array(8);\r\n window.crypto.getRandomValues(buf);\r\n return Array.from(buf).map(pad4).join(\"\");\r\n }\r\n return new Array(8).fill(0).map(random4).join(\"\");\r\n}\r\n\r\nfunction pad4(num: number, index: number): string {\r\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n let ret = num.toString(16);\r\n while (ret.length < 4) {\r\n ret = \"0\" + ret;\r\n }\r\n return prefix + ret;\r\n}\r\n\r\nfunction random4(_: number, index: number): string {\r\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n return prefix + Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n}\r\n\r\nexport class SocketClient {\r\n\r\n readonly status: BehaviorSubject<boolean>;\r\n\r\n protected readonly channels: Map<string, Subject<SocketData>>;\r\n protected readonly responseHandlers: Map<string, ResponseHandler>;\r\n protected sid: string;\r\n protected open: boolean;\r\n\r\n protected factory: Promise<SocketFactory>;\r\n protected ws: Promise<Socket>;\r\n\r\n get id(): string {\r\n return this.open ? this.sid : null;\r\n }\r\n\r\n constructor(readonly url: string,\r\n protected ioLoader: () => Promise<SocketFactory>) {\r\n this.status = new BehaviorSubject(false);\r\n this.channels = new Map([\r\n [\"connect\", new Subject<SocketData>()],\r\n [\"disconnect\", new Subject<SocketData>()],\r\n [\"error\", new Subject<SocketData>()]\r\n ]);\r\n this.responseHandlers = new Map();\r\n this.sid = null;\r\n this.open = false;\r\n }\r\n\r\n connect(extraHeaders: ExtraHeaders = {}): void {\r\n if (this.ws) return;\r\n const url = new URL(this.url);\r\n this.factory = this.factory || this.ioLoader();\r\n this.ws = new Promise((resolve, reject) => {\r\n this.factory.then(io => {\r\n const protocol = url.protocol.replace(\"http\", \"ws\");\r\n const ws = io(`${protocol}//${url.host}`, {\r\n extraHeaders,\r\n timeout: 5000,\r\n path: url.pathname\r\n });\r\n console.log(`socket connecting to: ${protocol}//${url.host}`, url.pathname);\r\n ws.on(`connect`, () => {\r\n console.log(`socket connected`);\r\n this.open = true;\r\n this.sid = ws.id;\r\n this.status.next(true);\r\n });\r\n ws.on(`disconnect`, () => {\r\n this.open = false;\r\n this.status.next(false);\r\n });\r\n Object.keys(this.channels).map(event => {\r\n ws.on(event, (data: SocketData) => {\r\n this.handleResponse(event, data);\r\n this.channels[event].next(data);\r\n });\r\n });\r\n resolve(ws);\r\n }, reject);\r\n });\r\n }\r\n\r\n disconnect(): void {\r\n if (!this.ws) return;\r\n this.ws.then(ws => ws.disconnect());\r\n this.ws = null;\r\n }\r\n\r\n subscribe<T = SocketData>(event: string, cb: (value: T) => void): Subscription {\r\n if (!this.channels[event]) {\r\n this.channels[event] = new Subject();\r\n this.ws?.then(ws => {\r\n ws.on(event, (data: SocketData) => {\r\n this.handleResponse(event, data);\r\n this.channels[event].next(data);\r\n });\r\n });\r\n }\r\n return this.channels[event].subscribe(cb);\r\n }\r\n\r\n emit(event: string, content: SocketData): void {\r\n this.ws.then(ws => ws.emit(event, content));\r\n }\r\n\r\n async request(event: string, content: SocketDataObj): Promise<any> {\r\n const id = uuid();\r\n const ws = await this.ws;\r\n const promise = new Promise((resolve, reject) => {\r\n this.responseHandlers.set(id, {resolve, reject});\r\n setTimeout(() => {\r\n this.responseHandlers.delete(id);\r\n reject(`Timeout for ${event} request ${JSON.stringify(content)}`);\r\n }, 5000);\r\n });\r\n ws.emit(event, {...content, immediate_response_id: id});\r\n return promise;\r\n }\r\n\r\n protected handleResponse(event: string, content: SocketData): void {\r\n if (typeof content !== \"object\" || Array.isArray(content) || content instanceof Date) return;\r\n const id = content.immediate_response_id as string;\r\n const handler = this.responseHandlers.get(id);\r\n if (!handler) return;\r\n this.responseHandlers.delete(id);\r\n if (event === \"error\") {\r\n handler.reject(content);\r\n return;\r\n }\r\n handler.resolve(content);\r\n }\r\n}\r\n","export class UniqueUtils {\r\n\r\n static uuid(): string {\r\n if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\r\n const buf = new Uint16Array(8);\r\n window.crypto.getRandomValues(buf);\r\n return (this.pad4(buf[0]) + this.pad4(buf[1]) + \"-\" + this.pad4(buf[2]) + \"-\" + this.pad4(buf[3]) + \"-\" + this.pad4(buf[4]) + \"-\" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));\r\n }\r\n return this.random4() + this.random4() + \"-\" + this.random4() + \"-\" + this.random4() + \"-\" +\r\n this.random4() + \"-\" + this.random4() + this.random4() + this.random4();\r\n }\r\n\r\n private static pad4(num: number): string {\r\n let ret = num.toString(16);\r\n while (ret.length < 4) {\r\n ret = \"0\" + ret;\r\n }\r\n return ret;\r\n }\r\n\r\n private static random4(): string {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n}\r\n","export class Vector {\r\n\r\n get negative(): Vector {\r\n return new Vector(-this.x, -this.y, -this.z);\r\n }\r\n\r\n get length(): number {\r\n return Math.sqrt(this.dot(this));\r\n }\r\n\r\n get unit(): Vector {\r\n return this.divide(this.length);\r\n }\r\n\r\n get min(): number {\r\n return Math.min(Math.min(this.x, this.y), this.z);\r\n }\r\n\r\n get max(): number {\r\n return Math.max(Math.max(this.x, this.y), this.z);\r\n }\r\n\r\n get angles(): any {\r\n return {\r\n theta: Math.atan2(this.z, this.x),\r\n phi: Math.asin(this.y / this.length)\r\n };\r\n }\r\n\r\n constructor(public x: number, public y: number, public z: number) {\r\n }\r\n\r\n add(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x + v.x, this.y + v.y, this.z + v.z);\r\n else return new Vector(this.x + v, this.y + v, this.z + v);\r\n }\r\n\r\n subtract(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x - v.x, this.y - v.y, this.z - v.z);\r\n else return new Vector(this.x - v, this.y - v, this.z - v);\r\n }\r\n\r\n multiply(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x * v.x, this.y * v.y, this.z * v.z);\r\n else return new Vector(this.x * v, this.y * v, this.z * v);\r\n }\r\n\r\n divide(v: Vector | number): Vector {\r\n if (v instanceof Vector) return new Vector(this.x / v.x, this.y / v.y, this.z / v.z);\r\n else return new Vector(this.x / v, this.y / v, this.z / v);\r\n }\r\n\r\n equals(v: Vector): boolean {\r\n return this.x == v.x && this.y == v.y && this.z == v.z;\r\n }\r\n\r\n dot(v: Vector): number {\r\n return this.x * v.x + this.y * v.y + this.z * v.z;\r\n }\r\n\r\n cross(v: Vector): Vector {\r\n return new Vector(\r\n this.y * v.z - this.z * v.y,\r\n this.z * v.x - this.x * v.z,\r\n this.x * v.y - this.y * v.x\r\n );\r\n }\r\n\r\n angleTo(v: Vector): number {\r\n return Math.acos(this.dot(v) / (this.length * v.length));\r\n }\r\n\r\n toArray(n?: number): number[] {\r\n return [this.x, this.y, this.z].slice(0, n || 3);\r\n }\r\n\r\n clone(): Vector {\r\n return new Vector(this.x, this.y, this.z);\r\n }\r\n\r\n init(x: number, y: number, z: number): Vector {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n return this;\r\n }\r\n}\r\n","import {Injector, Type} from \"@angular/core\";\r\nimport {OPTIONS_TOKEN, TypedFactoryProvider} from \"../common-types\";\r\n\r\nexport function provideWithOptions<O extends Object, T = any>(type: Type<T>, options: O): TypedFactoryProvider<T> {\r\n return {\r\n useFactory: function (injector: Injector) {\r\n const subInjector = Injector.create({\r\n providers: [\r\n {\r\n provide: OPTIONS_TOKEN,\r\n useValue: options\r\n },\r\n {\r\n provide: type,\r\n useClass: type\r\n }\r\n ],\r\n parent: injector\r\n });\r\n return subInjector.get(type);\r\n },\r\n deps: [Injector]\r\n }\r\n}\r\n","import {IWasi, IWasmExports} from \"../common-types\";\r\nimport {Type} from \"@angular/core\";\r\nimport {JSONfn} from \"./jsonfn\";\r\n\r\ninterface IPromiseExecutor {\r\n resolve: (value?: any) => void;\r\n reject: (reason?: any) => void;\r\n}\r\n\r\nexport function workerFunction(JSONfn: any, logTimes: boolean): void {\r\n\r\n let wasmResolve: (instance: IWasmExports) => void = null;\r\n const wasmInstance: Promise<IWasmExports> = new Promise<IWasmExports>(resolve => {\r\n wasmResolve = resolve;\r\n });\r\n\r\n self.onmessage = function (e) {\r\n const data = e.data;\r\n const {type, payload} = data;\r\n switch (type) {\r\n case \"wasm\":\r\n const {url, wasi} = payload;\r\n fetch(url).then(response => response.arrayBuffer()).then(bytes => {\r\n const wasiImpl = JSONfn.parse(wasi);\r\n return new wasiImpl().instantiate(bytes);\r\n }).then(instance => {\r\n wasmResolve(instance);\r\n const methods = Object.getOwnPropertyNames(instance).filter(key => typeof instance[key] === \"function\");\r\n self.postMessage({type: \"methods\", payload: methods});\r\n });\r\n break;\r\n case \"call\":\r\n wasmInstance.then(instance => {\r\n const {name, id, args} = payload;\r\n if (logTimes) {\r\n console.time(id);\r\n console.timeLog(id, `Calling ${name} ...`);\r\n }\r\n const func = (instance[name] as Function);\r\n const result = func(...args);\r\n if (logTimes) {\r\n console.timeLog(id, `Called ${name}`);\r\n console.timeEnd(id);\r\n }\r\n self.postMessage({type: \"result\", payload: {id, result}});\r\n });\r\n break;\r\n }\r\n };\r\n}\r\n\r\nexport class WasmWorkerProxy {\r\n\r\n protected methods: Promise<string[]>;\r\n protected onMethods: (methods: string[]) => void;\r\n protected worker: Worker;\r\n protected promises: Map<string, IPromiseExecutor>;\r\n\r\n constructor(wasmPath: string, wasi: Type<IWasi>, logTimes: boolean = false) {\r\n this.methods = new Promise<string[]>(resolve => {\r\n this.onMethods = resolve;\r\n });\r\n const lt = logTimes ? \"true\" : \"false\";\r\n const blob = new Blob(\r\n [`${JSONfn.toString()} (${workerFunction.toString()})(JSONfn, ${lt})`],\r\n {type: 'application/javascript'}\r\n );\r\n this.worker = new Worker(URL.createObjectURL(blob));\r\n this.worker.postMessage({\r\n type: \"wasm\",\r\n payload: {url: wasmPath, wasi: JSONfn.stringify(wasi), logTimes}\r\n });\r\n this.worker.onmessage = this.onMessage.bind(this);\r\n this.promises = new Map<string, IPromiseExecutor>();\r\n return new Proxy(this, {\r\n get: (target, prop, receiver) => {\r\n const res = Reflect.get(target, prop, receiver);\r\n if (res) {\r\n return res;\r\n }\r\n return (...args: any[]) => {\r\n return this.call(prop.toString(), args);\r\n };\r\n }\r\n });\r\n }\r\n\r\n onMessage(e: MessageEvent): void {\r\n const data = e.data;\r\n const {type, payload} = data;\r\n switch (type) {\r\n case \"methods\":\r\n this.onMethods(payload);\r\n break;\r\n case \"result\":\r\n const {id, result} = payload;\r\n const promise = this.promises.get(id);\r\n if (promise) {\r\n promise.resolve(result);\r\n this.promises.delete(id);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n async call(method: string, args: any[]): Promise<any> {\r\n const methods = await this.methods;\r\n if (!methods.includes(method)) {\r\n throw new Error(`Method ${method} not found`);\r\n }\r\n return new Promise<any>((resolve, reject) => {\r\n const id = Math.random().toString(36).substring(2, 9);\r\n this.worker.postMessage({\r\n type: \"call\",\r\n payload: {name: method, id, args}\r\n });\r\n this.promises.set(id, {resolve, reject});\r\n });\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {HttpClient, HttpHandler, HttpHeaders, HttpParams, HttpUrlEncodingCodec} from \"@angular/common/http\";\r\nimport {IHttpHeaders, IHttpParams} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Injectable()\r\nexport class BaseHttpClient extends HttpClient {\r\n\r\n requestHeaders: IHttpHeaders;\r\n requestParams: IHttpParams;\r\n renewTokenFunc: () => void;\r\n\r\n protected extraRequestParams: IHttpParams;\r\n\r\n constructor(handler: HttpHandler) {\r\n super(handler);\r\n this.requestHeaders = {};\r\n this.requestParams = {};\r\n this.extraRequestParams = {\r\n language: \"en\"\r\n };\r\n }\r\n\r\n makeHeaders(headers?: IHttpHeaders, withCredentials: boolean = true): HttpHeaders {\r\n headers = Object.assign({}, this.requestHeaders, headers);\r\n const authHeader = headers[\"Authorization\"] as string || \"\";\r\n if (!withCredentials && !authHeader.startsWith(\"Bearer\")) {\r\n delete headers[\"Authorization\"];\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n makeParams(params?: IHttpParams): HttpParams {\r\n params = Object.assign({}, this.extraRequestParams, this.requestParams, params);\r\n return new HttpParams({\r\n encoder: new HttpUrlEncodingCodec(),\r\n fromObject: Object.keys(params || {}).reduce((result, key) => {\r\n const value = params[key];\r\n result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? \"\" : value.toString());\r\n return result;\r\n }, {})\r\n });\r\n }\r\n\r\n setExtraRequestParam(name: string, value?: any): void {\r\n if (typeof value == \"undefined\") {\r\n delete this.extraRequestParams[name];\r\n return;\r\n }\r\n this.extraRequestParams[name] = value;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {StorageMode} from \"../common-types\";\r\nimport {UniversalService} from \"./universal.service\";\r\n\r\n/**\r\n * Use this service instead of Storage to avoid Angular Universal breaks on server environment\r\n */\r\n@Injectable()\r\nexport class StorageService {\r\n\r\n constructor(readonly universal: UniversalService) {\r\n }\r\n\r\n get(key: string, defaultValue?: any, mode: StorageMode = StorageMode.Local): any {\r\n if (!this.universal.isBrowser) return defaultValue;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n const item = storage.getItem(key);\r\n if (!item) return defaultValue;\r\n try {\r\n return JSON.parse(item);\r\n } catch (e) {\r\n return item;\r\n }\r\n }\r\n\r\n set(key: string, value: any, mode: StorageMode = StorageMode.Local): void {\r\n if (!this.universal.isBrowser) return;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n if (typeof value == \"string\") {\r\n storage.setItem(key, value);\r\n return;\r\n }\r\n storage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n remove(key: string, mode: StorageMode = StorageMode.Local): void {\r\n if (!this.universal.isBrowser) return;\r\n const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\r\n storage.removeItem(key);\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, Optional} from \"@angular/core\";\r\nimport {HttpErrorResponse, HttpEventType, HttpHeaders, HttpParams, HttpResponse} from \"@angular/common/http\";\r\nimport {Request} from \"express\";\r\n\r\nimport {\r\n CONFIG_SERVICE,\r\n EXPRESS_REQUEST,\r\n HttpPromise,\r\n IConfigService,\r\n IHttpHeaders,\r\n IHttpParams,\r\n IHttpService,\r\n IIssueContext,\r\n ILanguageService,\r\n IPaginationData,\r\n IRequestOptions,\r\n IToasterService,\r\n LANGUAGE_SERVICE,\r\n ProgressListener,\r\n TOASTER_SERVICE\r\n} from \"../common-types\";\r\n\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {MathUtils} from \"../utils/math.utils\";\r\n\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {timeout} from \"rxjs/operators\";\r\nimport {TimeoutError} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class BaseHttpService implements IHttpService {\r\n\r\n protected static failedRequests: Array<() => void> = [];\r\n\r\n get name(): string {\r\n return \"base\";\r\n }\r\n\r\n protected get withCredentials(): boolean {\r\n return true;\r\n }\r\n\r\n requestHeaders: IHttpHeaders;\r\n requestParams: IHttpParams;\r\n cache: any;\r\n\r\n protected static retryFailedRequests(): void {\r\n BaseHttpService.failedRequests.forEach(r => r());\r\n BaseHttpService.failedRequests = [];\r\n }\r\n\r\n get universal(): UniversalService {\r\n return this.storage.universal;\r\n }\r\n\r\n constructor(@Inject(Injector) readonly injector: Injector,\r\n @Inject(BaseHttpClient) readonly client: BaseHttpClient,\r\n @Inject(StorageService) readonly storage: StorageService,\r\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\r\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService,\r\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n @Optional() @Inject(EXPRESS_REQUEST) readonly request: Request = null\r\n ) {\r\n this.requestHeaders = {};\r\n this.requestParams = {};\r\n this.cache = {};\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n url(url: string): string {\r\n return url;\r\n }\r\n\r\n createUrl(url: string, params: IHttpParams): string {\r\n const httpParams = this.client.makeParams(params);\r\n const query = httpParams.keys().map(key => {\r\n return `${key}=${httpParams.get(key)}`;\r\n }).join(\"&\");\r\n return `${this.url(url)}?${query}`;\r\n }\r\n\r\n makeListParams(page: number, itemsPerPage: number, orderBy: string = null, orderDescending: boolean = null, filter: string = null): IHttpParams {\r\n const params: IHttpParams = {\r\n page: (page - 1),\r\n limit: itemsPerPage\r\n };\r\n if (!ObjectUtils.isNullOrUndefined(orderBy) && !ObjectUtils.isNullOrUndefined(orderDescending)) {\r\n params.sort = `${orderDescending ? \"-\" : \"\"}${orderBy}`;\r\n }\r\n if (!ObjectUtils.isNullOrUndefined(filter)) {\r\n params.filter = filter;\r\n }\r\n return params;\r\n }\r\n\r\n protected getPromise(url: string, options?: IRequestOptions, body?: any): HttpPromise {\r\n options = this.makeOptions(options, \"GET\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected deletePromise(url: string, options?: IRequestOptions, body?: any): HttpPromise {\r\n options = this.makeOptions(options, \"DELETE\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected postPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"POST\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected putPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"PUT\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected patchPromise(url: string, body?: any, options?: IRequestOptions): HttpPromise {\r\n options = this.makeOptions(options, \"PATCH\", body);\r\n return this.toPromise(url, options);\r\n }\r\n\r\n protected uploadPromise(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): HttpPromise {\r\n const headers: any = {};\r\n if (body instanceof Blob) {\r\n headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n options = this.makeOptions(Object.assign({\r\n headers: headers,\r\n reportProgress: true\r\n }, options), \"POST\", body);\r\n return this.toPromise(url, options, listener);\r\n }\r\n\r\n protected listPromise(url: string, params: IHttpParams): Promise<IPaginationData> {\r\n return new Promise<IPaginationData>(resolve => {\r\n this.getPromise(url, {params: params}).then(data => {\r\n if (ObjectUtils.isArray(data)) {\r\n resolve({\r\n total: data.length,\r\n items: data,\r\n meta: {}\r\n });\r\n return;\r\n }\r\n resolve({\r\n total: data.meta?.total || data?.total || data.items?.length || 0,\r\n items: data.items || [],\r\n meta: data.meta || {}\r\n });\r\n }, response => {\r\n if (response.status == 0 || response.status == 301) {\r\n resolve({\r\n total: 1,\r\n items: [{\r\n id: null,\r\n label: \"Not implemented.\"\r\n }],\r\n meta: {}\r\n });\r\n return true;\r\n }\r\n resolve({\r\n total: 0,\r\n items: [],\r\n meta: {}\r\n });\r\n return false;\r\n });\r\n });\r\n }\r\n\r\n protected handleUnauthorizedError(absoluteUrl: string, options: IRequestOptions, reject: () => void): void {\r\n reject();\r\n if (BaseHttpService.failedRequests.length > 1) {\r\n return;\r\n }\r\n if (this.universal.isServer) return;\r\n console.log(\"User auth error\", absoluteUrl, options);\r\n }\r\n\r\n protected toastWarning(message: string, issueContext: IIssueContext, reason: any, options: IRequestOptions): void {\r\n this.toaster.warning(message, {issueContext, reason, options});\r\n }\r\n\r\n protected toastError(message: string, issueContext: IIssueContext, reason: any, options: IRequestOptions): void {\r\n this.toaster.warning(message, {issueContext, reason, options});\r\n }\r\n\r\n protected toPromise(url: string, options: IRequestOptions, listener?: ProgressListener): HttpPromise {\r\n const issueContext: IIssueContext = {url: \"\"};\r\n\r\n return new HttpPromise(response => {\r\n if (!response) {\r\n if (this.universal.isServer) return;\r\n console.log(\"You may not need a reject Handler for this request!\", this.name, url, options);\r\n return;\r\n }\r\n const reason = response.error || {};\r\n if (response.status == 0 || response.status == 301) {\r\n this.toastWarning(`${url} endpoint is not implemented! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n return;\r\n }\r\n const regex = /((E11000 duplicate key error collection: (.)+\\.)|(_1 dup key:(.)+))/g;\r\n if (reason.message && regex.test(reason.message)) {\r\n this.toastError(\"message.duplicate-key.error.\" + reason.message.replace(regex, \"\").replace(\" index: \", \"-\"), issueContext, reason, options);\r\n return;\r\n }\r\n this.toastWarning(`${url} endpoint error is not handled properly! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n }, (resolve, reject) => {\r\n this.absoluteUrl(url, options).then(absoluteUrl => {\r\n issueContext.url = absoluteUrl;\r\n const request = this.client.request(options.method, absoluteUrl, options);\r\n const finalRequest = ObjectUtils.isNumber(options.timeout) && options.timeout > 0\r\n ? request.pipe(timeout(options.timeout)) : request;\r\n finalRequest.subscribe((event: any) => {\r\n if (options.reportProgress && event?.type === HttpEventType.UploadProgress) {\r\n const progress = {\r\n percentage: MathUtils.round(event.loaded / event.total, 2, 0.01),\r\n loaded: event.loaded,\r\n total: event.total\r\n };\r\n if (listener) {\r\n listener(progress);\r\n }\r\n return;\r\n }\r\n resolve(this.parseResponse(event, url, options));\r\n const headers = options.headers as HttpHeaders;\r\n const authKey = \"Authorization\";\r\n // If we use token auth\r\n if (this.client.renewTokenFunc && headers.has(authKey)) {\r\n const currentTime = new Date().getTime();\r\n const userTokenTime = this.getUserTokenTime() || currentTime;\r\n // And the last request was a long-long time ago\r\n if (currentTime - 600000 > userTokenTime) {\r\n this.client.renewTokenFunc();\r\n }\r\n }\r\n }, (response: HttpErrorResponse | TimeoutError) => {\r\n if (response instanceof TimeoutError || response.status == 0 || response.status == 301) {\r\n reject(response);\r\n return;\r\n }\r\n const headers = options.headers as HttpHeaders;\r\n const authKey = \"Authorization\";\r\n // If an authorization header exists, and we still have an Unauthorized response prompt the user to log in again\r\n if (headers.has(authKey) && response.status == 401) {\r\n const pushed = this.pushFailedRequest(url, options, () => {\r\n options.headers = this.makeHeaders(options.originalHeaders);\r\n this.toPromise(url, options, listener).then(resolve, reject);\r\n });\r\n if (pushed) {\r\n this.handleUnauthorizedError(absoluteUrl, options, () => reject(response));\r\n return;\r\n }\r\n }\r\n reject(response);\r\n });\r\n });\r\n });\r\n }\r\n\r\n protected getUserTokenTime(): number {\r\n return this.storage.get(\"userTokenTime\");\r\n }\r\n\r\n protected pushFailedRequest(url: string, options: IRequestOptions, req: () => void): boolean {\r\n if (url.indexOf(\"token\") >= 0 || url === \"user\") return false;\r\n BaseHttpService.failedRequests.push(req);\r\n return true;\r\n }\r\n\r\n protected checkHeaders(headers: any): boolean {\r\n if (!headers || !headers.cookie || !headers.referer || !headers.host) {\r\n return false;\r\n }\r\n return headers.referer.indexOf(headers.host) >= 0;\r\n }\r\n\r\n protected makeOptions(options?: IRequestOptions, method: string = \"GET\", body?: any): IRequestOptions {\r\n // Set base options\r\n options = options ? {...options} : {};\r\n options.method = method;\r\n options.observe = options.observe || \"body\";\r\n options.originalHeaders = options.originalHeaders || (options.headers as IHttpHeaders) || {};\r\n options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;\r\n options.body = body || {};\r\n // Set cookies from server side request\r\n const headers = !this.request ? null : this.request.headers;\r\n if (this.checkHeaders(headers)) {\r\n options.headers[\"Cookie\"] = headers.cookie;\r\n }\r\n options.headers = this.makeHeaders(options);\r\n options.params = this.makeParams(options);\r\n return options;\r\n }\r\n\r\n protected makeHeaders(options: IRequestOptions): HttpHeaders {\r\n return this.client.makeHeaders(Object.assign({}, this.requestHeaders, options?.headers || {}));\r\n }\r\n\r\n protected makeParams(options: IRequestOptions): HttpParams {\r\n return this.client.makeParams(Object.assign({}, this.requestParams, options?.params || {}));\r\n }\r\n\r\n protected parseResponse(response: any, url: string, options: IRequestOptions): any {\r\n return response;\r\n }\r\n\r\n protected parseUrl(url: string): string {\r\n return this.url(url).replace(/(?:((?!:).\\/)\\/)/g, \"$1\");\r\n }\r\n\r\n protected async absoluteUrl(url: string, options: IRequestOptions): Promise<string> {\r\n return this.parseUrl(url);\r\n }\r\n\r\n protected expressRequestUrl(url: string): string {\r\n const req = this.request;\r\n if (!req || !url || url.startsWith(\"http\") || url.startsWith(\"//\")) return url;\r\n const separator = url.startsWith(\"/\") ? \"\" : \"/\";\r\n return `${req.protocol}://${req.get(\"host\")}${separator}${url}`;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {IRequestOptions} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\n\r\n@Injectable()\r\nexport class LocalHttpService extends BaseHttpService {\r\n\r\n private images: { [url: string]: Promise<HTMLImageElement> };\r\n\r\n get name(): string {\r\n return \"local-http\";\r\n }\r\n\r\n protected get withCredentials(): boolean {\r\n return false;\r\n }\r\n\r\n protected initService(): void {\r\n this.images = {};\r\n }\r\n\r\n url(url: string): string {\r\n if (!url) return url;\r\n const config = this.configs.config;\r\n const baseUrl = config.cdnUrl || config.baseUrl || \"\";\r\n return url.startsWith(\"data:\") || url.startsWith(\"http\") || url.startsWith(\"//\")\r\n ? url\r\n : `${baseUrl}${url}`;\r\n }\r\n\r\n get(url: string, options?: IRequestOptions): Promise<any> {\r\n this.cache[url] = this.cache[url] || this.getPromise(url, options);\r\n return this.cache[url];\r\n }\r\n\r\n getImage(url: string): Promise<HTMLImageElement> {\r\n if (this.universal.isServer)\r\n return Promise.resolve(null);\r\n if (!url)\r\n return Promise.resolve(new Image());\r\n\r\n this.images[url] = this.images[url] || new Promise<HTMLImageElement>((resolve, reject) => {\r\n const image = new Image();\r\n image.crossOrigin = \"Anonymous\";\r\n image.src = this.url(url);\r\n image.onload = () => resolve(image);\r\n image.onerror = reject;\r\n });\r\n\r\n return this.images[url];\r\n }\r\n}\r\n","import {Inject, Injectable, Type} from \"@angular/core\";\r\nimport {IWasi, IWasm, IWasmAsync, WASI_IMPLEMENTATION} from \"../common-types\";\r\nimport {WasmWorkerProxy} from \"../utils/wasm-worker-proxy\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {LocalHttpService} from \"./local-http.service\";\r\nimport {Wasi} from \"../utils/wasi\";\r\n\r\n/**\r\n * Use this service to load WebAssembly modules\r\n */\r\n@Injectable()\r\nexport class WasmService {\r\n\r\n protected wasi: Type<Wasi>\r\n protected modules: { [url: string]: Promise<any> };\r\n protected workerModules: { [url: string]: any };\r\n\r\n constructor(protected universal: UniversalService,\r\n protected http: LocalHttpService,\r\n @Inject(WASI_IMPLEMENTATION) wasi: IWasi) {\r\n this.wasi = wasi.constructor as any;\r\n }\r\n\r\n async getModule<T = IWasm>(name: string): Promise<T> {\r\n if (!this.universal.isBrowser || !name)\r\n return null;\r\n this.modules = this.modules || {};\r\n this.modules[name] = this.modules[name] || this.http.get(`wasm/${name}.wasm`, {\r\n responseType: \"arraybuffer\"\r\n }).then(async (bytes) => {\r\n const wasi = new this.wasi();\r\n return await wasi.instantiate(bytes);\r\n });\r\n return this.modules[name] as Promise<any>;\r\n }\r\n\r\n getWorkerModule<T = IWasmAsync>(name: string): T {\r\n if (!this.universal.isBrowser || !name)\r\n return null;\r\n this.workerModules = this.workerModules || {};\r\n this.workerModules[name] = new WasmWorkerProxy(\r\n this.http.url(`wasm/${name}.wasm`),\r\n this.wasi\r\n );\r\n return this.workerModules[name] ;\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, Type} from \"@angular/core\";\nimport {StateService} from \"./state.service\";\nimport {AUTH_SERVICE, IAclComponent, IAuthService, IRouteStateInfo} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {AuthGuard} from \"../utils/auth.guard\";\n\nconst emptyGuards: any[] = [];\n\n@Injectable()\nexport class AclService {\n\n protected components: IRouteStateInfo[];\n\n constructor(readonly injector: Injector, readonly state: StateService, @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\n this.components = [];\n this.auth.userChanged.subscribe(() => {\n this.components.forEach(t => t.dirty = true);\n const info = this.getStateInfo();\n const check: Promise<boolean> = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);\n check.then(result => {\n if (result) {\n if (!info || !info.dirty) return;\n info.dirty = false;\n const component: IAclComponent = info.component;\n if (!info.component) return;\n if (info.first) {\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n return;\n }\n if (ObjectUtils.isFunction(component.onUserChanged)) {\n component.onUserChanged();\n }\n return;\n }\n (info.guard as AuthGuard).getReturnState(info.route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState);\n });\n });\n });\n this.state.subscribe(() => {\n const info = this.getStateInfo();\n if (!info?.component) return;\n const component: IAclComponent = info.component;\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n });\n }\n\n protected getStateInfo(): IRouteStateInfo {\n const route = this.state.route;\n if (!route) return null;\n let info = this.components.find(t => t.route == this.state.route);\n if (!info) {\n const guardType: Type<AuthGuard> = (route.canActivate || emptyGuards)[0];\n info = {\n route: this.state.route,\n guard: guardType ? this.injector.get(guardType) : null,\n dirty: true,\n first: true\n };\n this.components.push(info);\n }\n info.component = this.state.component;\n return info;\n }\n}\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {IApiService, IHttpParams, IRequestOptions, ProgressListener} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\nimport {IPaginationData} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class ApiService extends BaseHttpService implements IApiService {\r\n\r\n get name(): string {\r\n return \"api\";\r\n }\r\n\r\n url(url: string): string {\r\n const baseUrl = this.expressRequestUrl(`/api/${url}`);\r\n if (url == \"api-docs\" || url == \"socket\") {\r\n return baseUrl.replace(\"/api/\", \"/\");\r\n }\r\n return baseUrl;\r\n }\r\n\r\n get(url: string, options?: IRequestOptions, body?: any): Promise<any> {\r\n return this.getPromise(url, options, body);\r\n }\r\n\r\n delete(url: string, options?: IRequestOptions, body?: any): Promise<any> {\r\n return this.deletePromise(url, options, body);\r\n }\r\n\r\n post(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.postPromise(url, body, options);\r\n }\r\n\r\n put(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.putPromise(url, body, options);\r\n }\r\n\r\n patch(url: string, body?: any, options?: IRequestOptions): Promise<any> {\r\n return this.patchPromise(url, body, options);\r\n }\r\n\r\n upload(url: string, body: any, listener?: ProgressListener, options?: IRequestOptions): Promise<any> {\r\n return this.uploadPromise(url, body, listener, options);\r\n }\r\n\r\n list(url: string, params: IHttpParams): Promise<IPaginationData> {\r\n return this.listPromise(url, params);\r\n }\r\n}\r\n","import {EventEmitter} from \"@angular/core\";\r\nimport {IRoute, IAuthService} from \"../common-types\";\r\n\r\nexport class StaticAuthService implements IAuthService {\r\n\r\n isAuthenticated: boolean = true;\r\n userChanged: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n checkAuthenticated(): Promise<boolean> {\r\n return Promise.resolve(this.isAuthenticated);\r\n }\r\n\r\n getReturnState(route: IRoute): string[] {\r\n return null;\r\n }\r\n}\r\n","import {Inject, Injectable, Injector, isDevMode, Optional} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport JSON5 from \"json5\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {APP_BASE_URL, BASE_CONFIG, IConfigService, IConfiguration, ROOT_ELEMENT, SCRIPT_PARAMS} from \"../common-types\";\r\nimport {StringUtils} from \"../utils/string.utils\";\r\n\r\n@Injectable()\r\nexport class ConfigService implements IConfigService {\r\n\r\n protected baseConfig: IConfiguration;\r\n protected loadedConfig: IConfiguration;\r\n protected scriptParameters: any;\r\n protected loader: Promise<IConfiguration>;\r\n protected readonly loaderFunc: () => Promise<IConfiguration>;\r\n\r\n get load(): () => Promise<IConfiguration> {\r\n return this.loaderFunc;\r\n }\r\n\r\n get config(): IConfiguration {\r\n return this.loadedConfig;\r\n }\r\n\r\n get configUrl(): string {\r\n return `${this.loadedConfig.baseUrl}config/config.json`;\r\n }\r\n\r\n constructor(readonly http: HttpClient,\r\n readonly universal: UniversalService,\r\n readonly injector: Injector,\r\n @Inject(ROOT_ELEMENT) readonly rootElement: HTMLElement,\r\n @Inject(APP_BASE_URL) readonly baseUrl: string,\r\n @Optional() @Inject(BASE_CONFIG) baseConfig: IConfiguration = null,\r\n @Optional() @Inject(SCRIPT_PARAMS) scriptParams: any = null) {\r\n for (const key in []) {\r\n Object.defineProperty(Array.prototype, key, {\r\n enumerable: false\r\n });\r\n }\r\n this.baseConfig = baseConfig || {};\r\n this.loadedConfig = Object.assign(\r\n !this.baseUrl ? {} : {baseUrl: this.baseUrl, baseDomain: StringUtils.parseDomain(this.baseUrl)},\r\n this.baseConfig\r\n );\r\n this.scriptParameters = scriptParams || {};\r\n this.loaderFunc = () => {\r\n this.loader = this.loader || new Promise<any>((resolve, reject) => {\r\n this.loadJson().then(config => {\r\n this.loadedConfig = config = Object.assign(this.loadedConfig, config);\r\n this.prepareConfig(config).then(c => {\r\n this.loadedConfig = c;\r\n c.baseUrl = c.baseUrl || \"/\";\r\n resolve(c);\r\n });\r\n }, reject);\r\n });\r\n return this.loader;\r\n };\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n protected async loadJson(): Promise<IConfiguration> {\r\n if (this.universal.isServer) {\r\n return Promise.resolve(this.loadedConfig);\r\n }\r\n const configUrl = this.configUrl;\r\n try {\r\n const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, {responseType: \"text\"}).toPromise();\r\n return JSON5.parse(config5);\r\n } catch (e) {\r\n try {\r\n const config = await this.http.get(configUrl).toPromise();\r\n console.log(`Can't parse json5 config: ${e}`);\r\n return config;\r\n } catch (e) {\r\n throw new Error(`Config file not found at: ${configUrl}`);\r\n }\r\n }\r\n }\r\n\r\n protected prepareConfig(config: IConfiguration): Promise<IConfiguration> {\r\n return Promise.resolve(config);\r\n }\r\n\r\n cloneRootElem(): any {\r\n if (this.rootElement instanceof HTMLElement) {\r\n const clone = this.rootElement.cloneNode(true) as HTMLElement\r\n const children = Array.from(clone.childNodes);\r\n children.forEach(child => {\r\n if (child instanceof HTMLElement) {\r\n child.remove();\r\n }\r\n });\r\n return clone;\r\n }\r\n return this.rootElement;\r\n }\r\n\r\n prepareUrl(url: string, ending: string): string {\r\n const project = !this.loadedConfig ? \"\" : this.loadedConfig.project;\r\n const needsProtocol = url?.startsWith(\"//\") ?? false;\r\n url = !needsProtocol && url?.startsWith(\"/\") ? this.loadedConfig.baseDomain + url.substr(1) : url || \"\";\r\n url = `${url.replace(/\\/+$/, \"\")}${ending}`.replace(\"[project]\", project);\r\n return this.universal.isServer && needsProtocol ? `http:${url}` : url;\r\n }\r\n\r\n getConfigValue(key: string): any {\r\n return this.loadedConfig[key];\r\n }\r\n\r\n getQueryParameter(name: string, url?: string): string {\r\n url = url || (this.universal.isBrowser ? window.location.href : \"\");\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return \"\";\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {IConfirmDialogConfig, IDialogConfig, IDialogService, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class BaseDialogService<DR = any> implements IDialogService<DR> {\r\n\r\n constructor(@Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\r\n }\r\n\r\n dialog(config: IDialogConfig): DR {\r\n if (!config) return null;\r\n const button = !config.buttons ? null : config.buttons[0];\r\n if (!button) return null;\r\n this.toaster.handleAsyncMethod(button.method);\r\n return null;\r\n }\r\n\r\n confirm(config: IConfirmDialogConfig): DR {\r\n return this.dialog({\r\n id: config.id,\r\n title: config.title,\r\n message: config.message,\r\n messageContext: config.messageContext,\r\n size: config.size,\r\n buttons: config.buttons || [\r\n {\r\n text: config.okText,\r\n classes: config.okClasses,\r\n method: config.method\r\n },\r\n {\r\n text: config.cancelText || \"button.cancel\",\r\n classes: config.cancelClasses || \"btn-default\",\r\n method: config.cancelMethod\r\n }\r\n ],\r\n onClose: config.cancelMethod,\r\n templates: config.templates\r\n });\r\n }\r\n}\r\n","import {ErrorHandler, Injectable, Injector} from \"@angular/core\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {ERROR_HANDLER, ErrorHandlerCallback, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class ErrorHandlerService extends ErrorHandler {\r\n\r\n private toaster: IToasterService;\r\n private universal: UniversalService;\r\n private errorCb: ErrorHandlerCallback;\r\n private readonly errorMap: any;\r\n\r\n constructor(readonly injector: Injector) {\r\n super();\r\n this.errorMap = {};\r\n }\r\n\r\n handleError(error: Error): void {\r\n try {\r\n this.universal = this.universal || this.injector.get(UniversalService);\r\n } catch (e) {\r\n return;\r\n }\r\n const date = new Date();\r\n try {\r\n this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);\r\n this.errorCb(`[${date}]: ${error.message}\\n${error.stack}`);\r\n } catch (e) {\r\n if (this.universal.isServer) {\r\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n return;\r\n }\r\n }\r\n if (this.universal.isServer) return;\r\n const key = typeof btoa !== \"undefined\" ? btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`))) : error.message;\r\n if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000) return;\r\n this.errorMap[key] = date;\r\n try {\r\n this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);\r\n this.toaster.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n } catch (e) {\r\n }\r\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EventsService {\r\n\r\n readonly eventForwarded: EventEmitter<Event>;\r\n readonly stickyUpdated: EventEmitter<boolean>;\r\n readonly languageChanged: EventEmitter<string>;\r\n\r\n private sticky: boolean;\r\n\r\n public get isSticky(): boolean {\r\n return this.sticky;\r\n }\r\n\r\n constructor() {\r\n this.eventForwarded = new EventEmitter<Event>();\r\n this.stickyUpdated = new EventEmitter<boolean>();\r\n this.languageChanged = new EventEmitter<string>();\r\n this.sticky = false;\r\n }\r\n\r\n event(e: Event): void {\r\n this.eventForwarded.emit(e);\r\n }\r\n\r\n updateSticky(sticky: boolean): void {\r\n this.sticky = sticky;\r\n this.stickyUpdated.emit(sticky);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {ILanguageService, LANGUAGE_SERVICE} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {MathUtils} from \"../utils/math.utils\";\r\n\r\n@Injectable()\r\nexport class FormatterService {\r\n\r\n get defaultPrecision(): number {\r\n return 2;\r\n }\r\n\r\n get defaultNumberFormat(): string {\r\n return `num + ' mm'`;\r\n }\r\n\r\n get defaultDivider(): number {\r\n return 1;\r\n }\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) public language: ILanguageService) {\r\n\r\n }\r\n\r\n roundNumber(value: number, precision?: number, divider?: number): number {\r\n return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);\r\n }\r\n\r\n formatNumber(value: number | string, format?: string, precision?: number, divider?: number, minDigits?: number): string {\r\n precision = this.getPrecision(precision);\r\n minDigits = minDigits ?? precision;\r\n divider = divider || this.defaultDivider;\r\n const num = ObjectUtils.isNumber(value) ? <number>value : parseFloat(<string>value) || 0;\r\n const str = (num / divider).toLocaleString(this.language.currentLanguage, {\r\n minimumFractionDigits: minDigits,\r\n maximumFractionDigits: precision,\r\n useGrouping: false\r\n });\r\n return ObjectUtils.evaluate(format || this.defaultNumberFormat, {num: str});\r\n }\r\n\r\n formatMillimeter(value: number, precision?: number, divider?: number): string {\r\n return this.formatNumber(value, `num + ' mm'`, precision, divider);\r\n }\r\n\r\n protected getPrecision(precision: number): number {\r\n return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;\r\n }\r\n}\r\n","import {EventEmitter, Injectable, TemplateRef} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {GlobalComponentModifier} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class GlobalTemplateService {\r\n\r\n readonly templatesUpdated: EventEmitter<void>;\r\n\r\n protected globalTemplates: { [id: string]: TemplateRef<any> };\r\n protected componentModifiers: { [id: string]: GlobalComponentModifier };\r\n\r\n constructor() {\r\n this.templatesUpdated = new EventEmitter<any>();\r\n this.globalTemplates = {};\r\n this.componentModifiers = {};\r\n }\r\n\r\n get(id: string, component?: any): TemplateRef<any> {\r\n const template = this.globalTemplates[id];\r\n if (!template) return undefined;\r\n const modifier = this.componentModifiers[id];\r\n if (ObjectUtils.isFunction(modifier) && component) {\r\n modifier(component);\r\n }\r\n return template;\r\n }\r\n\r\n add(id: string, template: TemplateRef<any>): void {\r\n this.globalTemplates[id] = template;\r\n this.templatesUpdated.emit();\r\n }\r\n\r\n remove(id: string): void {\r\n delete this.globalTemplates[id];\r\n this.templatesUpdated.emit();\r\n }\r\n\r\n addComponentModifier(id: string, modifier: GlobalComponentModifier): void {\r\n this.componentModifiers[id] = modifier;\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {IIconService} from \"../common-types\";\r\n\r\ndeclare const icons: {\r\n [icon: string]: string;\r\n};\r\n\r\n@Injectable()\r\nexport class IconService implements IIconService {\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n set isDisabled(value: boolean) {\r\n this.disabled = value;\r\n this.iconsLoaded.emit();\r\n }\r\n\r\n public readonly iconsLoaded: EventEmitter<any>;\r\n\r\n protected disabled: boolean;\r\n\r\n constructor() {\r\n this.iconsLoaded = new EventEmitter<any>();\r\n this.disabled = false;\r\n }\r\n\r\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string> {\r\n icon = typeof icons == \"undefined\" ? icon : (icons[icon] || icon);\r\n activeIcon = typeof icons == \"undefined\" ? activeIcon : (icons[activeIcon] || icon);\r\n return Promise.resolve(active ? activeIcon : icon);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {\r\n CONFIG_SERVICE,\r\n IConfigService,\r\n IConfiguration,\r\n ILanguageService,\r\n IPromiseService,\r\n ITranslation,\r\n ITranslations,\r\n PROMISE_SERVICE\r\n} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {EventsService} from \"./events.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable()\r\nexport class StaticLanguageService implements ILanguageService {\r\n\r\n get defaultLanguage(): string {\r\n return this.configs.getQueryParameter(\"lang\") || this.storage.get(\"language\", this.getDefaultLanguage());\r\n }\r\n\r\n get dictionary(): ITranslations {\r\n return this.translations[this.currentLanguage] || {};\r\n }\r\n\r\n set dictionary(value: ITranslations) {\r\n this.translations[this.currentLanguage] = value;\r\n }\r\n\r\n get languages(): ReadonlyArray<string> {\r\n return this.languageList;\r\n }\r\n\r\n get currentLanguage(): string {\r\n return this.currentLang || this.defaultLanguage;\r\n }\r\n\r\n set currentLanguage(lang: string) {\r\n this.currentLang = lang;\r\n this.events.languageChanged.emit(lang);\r\n }\r\n\r\n get editLanguage(): string {\r\n return this.editLang || this.currentLanguage;\r\n }\r\n\r\n set editLanguage(lang: string) {\r\n this.editLang = lang || this.currentLanguage;\r\n }\r\n\r\n get disableTranslations(): boolean {\r\n return this.disableTrans;\r\n }\r\n\r\n set disableTranslations(value: boolean) {\r\n this.disableTrans = value;\r\n this.events.languageChanged.emit(this.currentLang);\r\n }\r\n\r\n get httpClient(): HttpClient {\r\n return this.client;\r\n }\r\n\r\n get config(): IConfiguration {\r\n return this.configs.config;\r\n }\r\n\r\n get universal(): UniversalService {\r\n return this.storage.universal;\r\n }\r\n\r\n protected editLang: string;\r\n protected currentLang: string;\r\n protected disableTrans: boolean;\r\n protected languageList: string[];\r\n protected readonly translations: ITranslations;\r\n\r\n constructor(@Inject(EventsService) readonly events: EventsService,\r\n @Inject(StorageService) readonly storage: StorageService,\r\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n @Inject(PROMISE_SERVICE) protected promises: IPromiseService,\r\n @Inject(BaseHttpClient) protected client: BaseHttpClient) {\r\n this.editLang = null;\r\n this.currentLang = null;\r\n this.disableTrans = false;\r\n this.languageList = [];\r\n this.translations = {\r\n none: {}\r\n };\r\n this.initService();\r\n }\r\n\r\n protected initService(): void {\r\n\r\n }\r\n\r\n replaceLanguages(languages: string[]): void {\r\n languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;\r\n this.languageList = Array.from(new Set<string>(languages));\r\n this.languageList.forEach(lang => {\r\n this.translations[lang] = this.translations[lang] || {};\r\n });\r\n }\r\n\r\n addLanguages(languages: string[]): void {\r\n if (!Array.isArray(languages) || languages.length == 0) return;\r\n this.replaceLanguages(this.languageList.concat(languages));\r\n }\r\n\r\n getTranslationSync(key: string, params: Object = null): string {\r\n const lowerKey = (key || \"\").toLocaleLowerCase();\r\n const translation = this.dictionary[lowerKey] || lowerKey;\r\n return this.interpolate(translation == lowerKey ? key : translation, params);\r\n }\r\n\r\n getTranslation(key: string, params?: Object): Promise<string> {\r\n if (!ObjectUtils.isString(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n const translation = ObjectUtils.getValue(this.dictionary, key, key) || key;\r\n return this.promises.resolve(this.interpolate(translation, params));\r\n }\r\n\r\n getTranslations(...keys: string[]): Promise<ITranslations> {\r\n return this.promises.create<ITranslations>(resolve => {\r\n this.promises.all(keys.map(key => this.getTranslation(key))).then(translations => {\r\n resolve(keys.reduce((result, key, i) => {\r\n result[key] = translations[i];\r\n return result;\r\n }, {}));\r\n });\r\n });\r\n }\r\n\r\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string {\r\n lang = lang || this.currentLanguage;\r\n return this.interpolate(translations ? (translations[lang] || \"\") : \"\")\r\n }\r\n\r\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string {\r\n lang = lang || this.currentLanguage;\r\n const translation = translations ? translations.find(t => t.lang == lang) : null;\r\n return this.interpolate(translation ? translation.translation : \"\", params);\r\n }\r\n\r\n protected interpolate(expr: string | Function, params?: Object): string {\r\n if (typeof expr === \"string\") {\r\n return this.interpolateString(expr, params);\r\n }\r\n if (typeof expr === \"function\") {\r\n return expr(params);\r\n }\r\n return expr as string;\r\n }\r\n\r\n protected interpolateString(expr: string, params?: Object) {\r\n if (!expr || !params) return expr;\r\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\r\n const r = ObjectUtils.getValue(params, b, \"\");\r\n return ObjectUtils.isDefined(r) ? r : substring;\r\n });\r\n }\r\n\r\n protected getDefaultLanguage(): string {\r\n if (!this.universal.isBrowser || typeof window.navigator === \"undefined\") {\r\n return \"de\";\r\n }\r\n let browserLang: string = (window.navigator.languages ? window.navigator.languages[0] : null)\r\n || window.navigator.language || window.navigator[\"browserLanguage\"] || window.navigator[\"userLanguage\"] || null;\r\n if (!browserLang) return browserLang;\r\n\r\n [\"-\", \"_\"].forEach(splitter => {\r\n if (browserLang.indexOf(splitter) >= 0) {\r\n browserLang = browserLang.split(splitter)[0];\r\n }\r\n })\r\n return browserLang;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, combineLatest, Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {ILanguageSetting, ILanguageSettings, ITranslations} from \"../common-types\";\r\nimport {StaticLanguageService} from \"./static-language.service\";\r\n\r\n@Injectable()\r\nexport class LanguageService extends StaticLanguageService {\r\n\r\n protected translationRequests: ITranslations;\r\n protected settingsPromise: Promise<ILanguageSettings>;\r\n protected languageSettings: BehaviorSubject<ILanguageSettings>;\r\n\r\n get currentLanguage(): string {\r\n return this.currentLang || this.defaultLanguage;\r\n }\r\n\r\n set currentLanguage(lang: string) {\r\n this.useLanguage(lang).then(() => {\r\n this.events.languageChanged.emit(lang);\r\n });\r\n }\r\n\r\n get settings(): ILanguageSetting {\r\n const settings = this.languageSettings.value;\r\n return !settings ? {} : settings.settings[this.currentLanguage] || {};\r\n }\r\n\r\n get $settings(): Observable<ILanguageSetting> {\r\n this.loadSettings().then(s => this.languageSettings.next(s));\r\n return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {\r\n return !settings ? {} : settings.settings[lang as string] || {};\r\n }));\r\n }\r\n\r\n protected initService(): void {\r\n this.client.setExtraRequestParam(\"language\", \"de\");\r\n this.translationRequests = {};\r\n this.languageSettings = new BehaviorSubject<ILanguageSettings>(null);\r\n if (this.universal.isServer) return;\r\n window[\"setLanguage\"] = (lang: string) => {\r\n this.currentLanguage = lang;\r\n };\r\n }\r\n\r\n async initFromSettings(): Promise<any> {\r\n const defaultLanguage = this.defaultLanguage;\r\n const settings = await this.loadSettings();\r\n this.languageSettings.next(settings);\r\n const devLanguages = settings.devLanguages || [];\r\n this.languageList = (settings.languages || []).filter(lang => {\r\n const unavailable = settings.settings[lang]?.unavailable;\r\n if (unavailable) {\r\n const parts = unavailable.split(\"/\");\r\n const value = parts[0] || parts[1];\r\n const flags = parts.length > 1 ? parts[parts.length - 1] : \"g\";\r\n if (new RegExp(value, flags).test(this.config.baseDomain)) return false;\r\n }\r\n return devLanguages.indexOf(lang) < 0;\r\n });\r\n if (this.languageList.length === 0) {\r\n this.languageList = [defaultLanguage];\r\n }\r\n const lang = this.languages.indexOf(defaultLanguage) < 0 ? settings.defaultLanguage || this.languageList[0] : defaultLanguage;\r\n await this.useLanguage(lang);\r\n this.events.languageChanged.emit(lang);\r\n }\r\n\r\n async getTranslation(key: string, params: any = null): Promise<string> {\r\n if (!key) return \"\";\r\n try {\r\n const lowerKey = key.toLocaleLowerCase();\r\n const dict = await this.loadDictionary();\r\n if (lowerKey in dict) {\r\n return this.interpolate(dict[lowerKey], params);\r\n }\r\n return this.interpolate(key, params);\r\n } catch (reason) {\r\n console.log(\"ERROR IN TRANSLATIONS\", reason);\r\n return key;\r\n }\r\n }\r\n\r\n protected async useLanguage(lang: string): Promise<ITranslations> {\r\n lang = this.languages.indexOf(lang) < 0 ? this.languages[0] : lang;\r\n this.client.setExtraRequestParam(\"language\", lang);\r\n if (lang == this.currentLang) return this.dictionary;\r\n this.storage.set(\"language\", lang);\r\n this.currentLang = lang;\r\n const dict = await this.loadDictionary();\r\n this.translations[lang] = dict;\r\n return dict;\r\n }\r\n\r\n protected loadDictionary(): Promise<any> {\r\n const lang = this.currentLanguage;\r\n this.translationRequests[lang] = this.translationRequests[lang] || new Promise(resolve => {\r\n const ext = this.config.translationExt || ``;\r\n this.httpClient.get(`${this.config.translationUrl}${lang}${ext}`).toPromise().then(response => {\r\n response = response || {};\r\n resolve(Object.keys(response).reduce((result, key) => {\r\n result[key.toLocaleLowerCase()] = response[key];\r\n return result;\r\n }, {}));\r\n }, () => {\r\n resolve({});\r\n });\r\n });\r\n return this.translationRequests[lang];\r\n }\r\n\r\n protected loadSettings(): Promise<ILanguageSettings> {\r\n const ext = this.config.translationExt || ``;\r\n this.settingsPromise = this.settingsPromise || (this.client.get(`${this.config.translationUrl}languageSettings${ext}`).toPromise())\r\n .then(\r\n (settings: ILanguageSettings) => {\r\n return settings;\r\n }, () => {\r\n return {\r\n languages: [\"de\", \"en\", \"hu\"],\r\n devLanguages: [],\r\n defaultLanguage: \"de\",\r\n settings: {\r\n de: {},\r\n hu: {},\r\n en: {}\r\n }\r\n };\r\n }\r\n );\r\n return this.settingsPromise;\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {API_SERVICE, IApiService, IOpenApiSchema, IOpenApiSchemas} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class OpenApiService {\r\n\r\n private schemasPromise: Promise<IOpenApiSchemas>;\r\n\r\n constructor(@Inject(API_SERVICE) readonly api: IApiService) {\r\n\r\n }\r\n\r\n getSchemas(): Promise<IOpenApiSchemas> {\r\n this.schemasPromise = this.schemasPromise || new Promise((resolve => {\r\n this.api.get(\"api-docs\").then(res => {\r\n const schemas: IOpenApiSchemas = res.components?.schemas || res.definitions || {};\r\n Object.values(schemas).forEach(schema => {\r\n Object.keys(schema.properties || {}).forEach(p => {\r\n schema.properties[p].id = p;\r\n });\r\n });\r\n resolve(schemas);\r\n }, () => {\r\n resolve({});\r\n });\r\n }));\r\n return this.schemasPromise;\r\n }\r\n\r\n async getSchema(name: string): Promise<IOpenApiSchema> {\r\n const schemas = await this.getSchemas();\r\n const schema = schemas[name];\r\n if (!schema) return null;\r\n return schemas[name];\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {AsyncMethod, ILanguageService, IToasterService, LANGUAGE_SERVICE, ToastType} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class BaseToasterService<T = any, P extends Record<string, any> = {}> implements IToasterService {\r\n\r\n protected colorMap: Record<ToastType, string>;\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) protected language: ILanguageService) {\r\n this.colorMap = {\r\n info: \"#2F96B4\",\r\n success: \"#51A351\",\r\n warning: \"#F89406\",\r\n error: \"#BD362F\"\r\n };\r\n }\r\n\r\n info(message: string, params?: P) {\r\n this.translate(message, params, \"info\");\r\n }\r\n\r\n success(message: string, params?: P) {\r\n this.translate(message, params, \"success\");\r\n }\r\n\r\n warning(message: string, params?: P){\r\n this.translate(message, params, \"warning\");\r\n }\r\n\r\n error(message: string, params?: P) {\r\n this.translate(message, params, \"error\");\r\n }\r\n\r\n infoPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"info\");\r\n }\r\n\r\n successPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"success\");\r\n }\r\n\r\n warningPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"warning\");\r\n }\r\n\r\n errorPromised(message: string, params?: P) {\r\n return this.translatePromised(message, params, \"error\");\r\n }\r\n\r\n handleAsyncMethod(method: AsyncMethod): void {\r\n if (!method) return;\r\n method().then(result => {\r\n if (result) {\r\n this.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.error(reason.message, reason.context);\r\n });\r\n }\r\n\r\n protected translate(message: string, params: P, type: ToastType): void {\r\n this.language.getTranslation(message, params).then(str => {\r\n this.show(str, type, params);\r\n });\r\n }\r\n\r\n protected async translatePromised(message: string, params: P, type: ToastType): Promise<T> {\r\n const str = await this.language.getTranslation(message, params);\r\n return this.show(str, type, params);\r\n }\r\n\r\n protected show(message: string, type: ToastType, params: P): T | Promise<T> {\r\n console.log(message, `background: ${this.colorMap[type]}; color: #ffffff`, params);\r\n return null;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n NgModuleRef,\r\n Optional,\r\n Type,\r\n ViewRef\r\n} from \"@angular/core\";\r\nimport {Route, Router} from \"@angular/router\";\r\nimport {firstValueFrom, Observable} from \"rxjs\";\r\n\r\nimport {\r\n CssSelectorList,\r\n DYNAMIC_ENTRY_COMPONENTS,\r\n DYNAMIC_MODULE_INFO,\r\n DynamicComponentLocation,\r\n DynamicModuleInfo,\r\n ROOT_ELEMENT\r\n} from \"../common-types\";\r\nimport {getComponentDef, parseSelector, selectorMatchesList} from \"../utils/misc\";\r\n\r\ninterface LoadedRouterConfig {\r\n routes: Route[];\r\n injector: EnvironmentInjector | undefined;\r\n}\r\n\r\ninterface RouterConfigLoader {\r\n loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig>;\r\n}\r\n\r\ninterface NavigationTransitions {\r\n configLoader: RouterConfigLoader;\r\n}\r\n\r\n@Injectable()\r\nexport class ComponentLoaderService {\r\n\r\n private readonly typeMap: Array<[string, CssSelectorList, Type<any>]>;\r\n private readonly moduleRegistry: DynamicModuleInfo[];\r\n private readonly moduleMap: Map<string, Promise<EnvironmentInjector>>;\r\n\r\n get injector(): Injector {\r\n return this.ngModule.injector;\r\n }\r\n\r\n constructor(\r\n protected appRef: ApplicationRef,\r\n protected ngModule: NgModuleRef<any>,\r\n @Inject(ROOT_ELEMENT) protected rootElement: HTMLElement,\r\n @Optional() @Inject(DYNAMIC_MODULE_INFO) moduleRegistry: DynamicModuleInfo[]\r\n ) {\r\n this.typeMap = [];\r\n this.moduleRegistry = moduleRegistry || [];\r\n this.moduleMap = new Map();\r\n this.populateTypeMap(\"root\", this.ngModule.injector);\r\n }\r\n\r\n findComponentType<T>(selector: string, moduleId: string = \"root\"): Type<T> {\r\n const cssSelector = parseSelector(selector);\r\n const results = new Map<string, Type<any>>();\r\n for (const item of this.typeMap) {\r\n if (selectorMatchesList(item[1], cssSelector)) {\r\n results.set(item[0], item[2]);\r\n }\r\n }\r\n const keys = Array.from(results.keys());\r\n const result = results.get(moduleId) || results.get(keys[0]);\r\n if (!result) {\r\n throw new Error(`Cannot find component by selector: ${selector} in module '${moduleId}' nor in any other module`);\r\n }\r\n return result;\r\n }\r\n\r\n async getComponentType(location: DynamicComponentLocation): Promise<Type<any>> {\r\n\r\n // Find module info\r\n const moduleInfoList = this.moduleRegistry\r\n .filter(info => info.moduleId === location.moduleId);\r\n\r\n if (moduleInfoList.length > 1) {\r\n throw new Error(`Module with id '${location.moduleId}' has been declared more than once.`)\r\n }\r\n\r\n const moduleInfo = moduleInfoList[0];\r\n\r\n if (!moduleInfo) {\r\n throw new Error(`Module with id '${location.moduleId}' not found.`);\r\n }\r\n\r\n await this.loadModule(moduleInfo);\r\n\r\n return this.findComponentType(location.selector, location.moduleId);\r\n }\r\n\r\n createComponent(componentType: Type<any>, projectableNodes?: any[], injector?: Injector, split?: boolean): ComponentRef<any> {\r\n if (projectableNodes) {\r\n projectableNodes = split ? projectableNodes.filter(node => {\r\n return node && node.nodeType !== Node.COMMENT_NODE;\r\n }).map(node => [node]) : [projectableNodes];\r\n } else {\r\n projectableNodes = [];\r\n }\r\n return createComponent(componentType, {\r\n environmentInjector: this.appRef.injector,\r\n elementInjector: injector || this.injector,\r\n projectableNodes\r\n });\r\n }\r\n\r\n bootstrap<T>(componentType: Type<T>, rootSelectorOrNode?: string | any): ComponentRef<T> {\r\n rootSelectorOrNode = rootSelectorOrNode || this.rootElement;\r\n return !rootSelectorOrNode ? null : this.appRef.bootstrap(componentType, rootSelectorOrNode);\r\n }\r\n\r\n attachView(viewRef: ViewRef): void {\r\n if (!viewRef) return;\r\n this.appRef.attachView(viewRef);\r\n }\r\n\r\n detachView(viewRef: ViewRef): void {\r\n if (!viewRef) return;\r\n this.appRef.detachView(viewRef);\r\n try {\r\n viewRef.destroy();\r\n } catch (e) {\r\n console.log(`Can't destroy view, maybe it is already destroyed?`);\r\n }\r\n }\r\n\r\n private populateTypeMap(moduleId: string, injector: EnvironmentInjector): void {\r\n const entries = injector.get(DYNAMIC_ENTRY_COMPONENTS) || [];\r\n if (entries.length == 0) {\r\n console.warn(\"Entry components not found in the module\", injector);\r\n }\r\n entries.forEach(entryComponents => {\r\n entryComponents.components.forEach(type => {\r\n const def = getComponentDef(type);\r\n this.typeMap.push([entryComponents.moduleId || moduleId, def.selectors as any, type]);\r\n });\r\n });\r\n }\r\n\r\n private async loadModule(moduleInfo: DynamicModuleInfo): Promise<EnvironmentInjector> {\r\n if (this.moduleMap.has(moduleInfo.moduleId)) {\r\n return this.moduleMap.get(moduleInfo.moduleId);\r\n }\r\n this.moduleMap.set(moduleInfo.moduleId, new Promise(async resolve => {\r\n const router = this.injector.get(Router);\r\n const loader = (router[\"navigationTransitions\"] as NavigationTransitions).configLoader;\r\n const loaded = await firstValueFrom(loader.loadChildren(this.injector, {\r\n loadChildren: moduleInfo.loadChildren\r\n }));\r\n if (moduleInfo.routes) {\r\n router.resetConfig(moduleInfo.routes);\r\n if (moduleInfo.initialNavigation !== false) {\r\n router.initialNavigation();\r\n }\r\n }\r\n this.populateTypeMap(moduleInfo.moduleId, loaded.injector);\r\n resolve(loaded.injector);\r\n }));\r\n return this.moduleMap.get(moduleInfo.moduleId);\r\n }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlTree} from \"@angular/router\";\r\nimport {ILanguageService, LANGUAGE_SERVICE} from \"../common-types\";\r\n\r\nexport interface IUrlDictionary {\r\n [key: string]: string\r\n}\r\n\r\n@Injectable()\r\nexport class TranslatedUrlSerializer extends DefaultUrlSerializer {\r\n\r\n protected cache: {[lang: string]: IUrlDictionary};\r\n\r\n constructor(@Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n super();\r\n this.cache = {};\r\n }\r\n\r\n serialize(tree: UrlTree): string {\r\n const copy = new UrlTree();\r\n const dictionary = this.getDictionary(true);\r\n copy.root = this.modifyTreeRecursive(tree.root, segment => {\r\n segment.path = dictionary[segment.path] || segment.path;\r\n });\r\n copy.queryParams = tree.queryParams;\r\n return super.serialize(copy);\r\n }\r\n\r\n parse(url: string): UrlTree {\r\n const tree = super.parse(url);\r\n const dictionary = this.getDictionary(false);\r\n tree.root = this.modifyTreeRecursive(tree.root, segment => {\r\n segment.path = dictionary[segment.path] || segment.path;\r\n });\r\n return tree;\r\n }\r\n\r\n getDictionary(serialize: boolean): IUrlDictionary {\r\n const method = serialize ? `serialize` : `parse`;\r\n const key = `${this.language.currentLanguage}-${method}`;\r\n if (!this.cache[key]) {\r\n const dict = this.language.dictionary;\r\n this.cache[key] = Object.keys(dict).reduce((res, key) => {\r\n if (!key.startsWith(\"route.\")) return res;\r\n const value = dict[key];\r\n key = key.replace(\"route.\", \"\");\r\n res[serialize ? key : value] = serialize ? value : key;\r\n return res;\r\n }, {});\r\n }\r\n return this.cache[key];\r\n }\r\n\r\n modifyTreeRecursive(segmentGroup: UrlSegmentGroup, cb: (segment: UrlSegment) => void): UrlSegmentGroup {\r\n if (!segmentGroup) return null;\r\n const childrenArr = [];\r\n const children = Object.keys(segmentGroup.children || {}).reduce((res, key) => {\r\n const child = this.modifyTreeRecursive(segmentGroup.children[key], cb);\r\n childrenArr.push(child);\r\n res[key] = child;\r\n return res;\r\n }, {});\r\n const newGroup = new UrlSegmentGroup(segmentGroup.segments.map(s => {\r\n s = new UrlSegment(s.path, Object.assign({}, s.parameters));\r\n cb(s);\r\n return s;\r\n }), children);\r\n childrenArr.forEach(c => {\r\n c.parent = newGroup;\r\n });\r\n return newGroup;\r\n }\r\n}\r\n","import {EventEmitter, Inject, Injectable, NgZone} from \"@angular/core\";\r\nimport {IPromiseService} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class PromiseService implements IPromiseService {\r\n\r\n get count(): number {\r\n return this.promiseCount;\r\n }\r\n\r\n get onChanged(): EventEmitter<number> {\r\n return this.promiseChanged;\r\n }\r\n\r\n protected promiseCount: number;\r\n protected readonly promiseChanged: EventEmitter<number>;\r\n\r\n constructor(@Inject(NgZone) readonly zone: NgZone) {\r\n this.promiseCount = 0;\r\n this.promiseChanged = new EventEmitter<number>();\r\n }\r\n\r\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => new Promise<T>(executor)));\r\n }\r\n\r\n all(promises: Promise<any>[]): Promise<any> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.all(promises)));\r\n }\r\n\r\n resolve<T>(value: T | PromiseLike<T>): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.resolve(value)));\r\n }\r\n\r\n reject<T>(value: T | PromiseLike<T>): Promise<T> {\r\n return this.add(this.zone.runOutsideAngular(() => Promise.reject(value)));\r\n }\r\n\r\n protected promiseFinished(): void {\r\n if (this.promiseCount == 0) return;\r\n this.promiseCount--;\r\n this.promiseChanged.emit(this.promiseCount);\r\n }\r\n\r\n protected add<T>(promise: Promise<T>): Promise<T> {\r\n this.promiseCount++;\r\n this.promiseChanged.emit(this.promiseCount);\r\n return new Promise<any>((resolve, reject) => {\r\n promise.then(v => {\r\n resolve(v);\r\n this.promiseFinished();\r\n }, r => {\r\n reject(r);\r\n this.promiseFinished();\r\n });\r\n });\r\n }\r\n}\r\n","import {Inject, Injectable, OnDestroy} from \"@angular/core\";\r\nimport {BehaviorSubject, Subscription} from \"rxjs\";\r\nimport {API_SERVICE, AUTH_SERVICE, IApiService, IAuthService, SOCKET_IO_PATH} from \"../common-types\";\r\nimport {ExtraHeaders, SocketClient, SocketData, SocketDataObj} from \"../utils/socket-client\";\r\nimport {LoaderUtils} from \"../utils/loader.utils\";\r\n\r\n@Injectable()\r\nexport class SocketService implements OnDestroy {\r\n\r\n protected client: SocketClient;\r\n protected authSub: Subscription;\r\n\r\n get status(): BehaviorSubject<boolean> {\r\n return this.client.status;\r\n }\r\n\r\n get id(): string {\r\n return this.client.id;\r\n }\r\n\r\n constructor(@Inject(AUTH_SERVICE) readonly auth: IAuthService,\r\n @Inject(API_SERVICE) readonly api: IApiService,\r\n @Inject(SOCKET_IO_PATH) protected ioPath: string) {\r\n const url = this.api.url(this.ioPath);\r\n this.client = new SocketClient(url, async () => {\r\n let script: HTMLScriptElement = null;\r\n try {\r\n script = await LoaderUtils.loadScript(`${url}/socket.io.js`);\r\n } catch (e) {\r\n script?.remove();\r\n await LoaderUtils.loadScript(`https://cdn.socket.io/4.7.4/socket.io.min.js`);\r\n }\r\n return window[\"io\"];\r\n });\r\n }\r\n\r\n withAuth(extraHeaders: ExtraHeaders = {}): void {\r\n this.authSub = this.auth.userChanged.subscribe(user => {\r\n if (user) {\r\n this.connect(extraHeaders);\r\n return;\r\n }\r\n this.disconnect();\r\n });\r\n if (this.auth.isAuthenticated) {\r\n this.connect(extraHeaders);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.authSub?.unsubscribe();\r\n this.disconnect();\r\n }\r\n\r\n connect(extraHeaders: ExtraHeaders = {}): void {\r\n if (this.authSub && this.auth.isAuthenticated) {\r\n extraHeaders = {\r\n ...(extraHeaders || {}),\r\n ...Object.entries(this.api.client.requestHeaders || {}).reduce((res, entry) => {\r\n res[entry[0]] = Array.isArray(entry[1]) ? entry[1].join(\", \") : entry[1];\r\n return res;\r\n }, {})\r\n };\r\n }\r\n this.client.connect(extraHeaders);\r\n }\r\n\r\n disconnect(): void {\r\n this.client.disconnect();\r\n }\r\n\r\n subscribe(event: string, cb: (value: SocketData) => void): Subscription {\r\n return this.client.subscribe(event, cb);\r\n }\r\n\r\n emit(event: string, content: SocketData): void {\r\n this.client.emit(event, content);\r\n }\r\n\r\n request(event: string, content: SocketDataObj): Promise<any> {\r\n return this.client.request(event, content);\r\n }\r\n}\r\n","import {KeyValue} from \"@angular/common\";\r\n\r\nexport type DragHandlerEvents = \"dragstart\" | \"dragenter\" | \"dragleave\" | \"drop\";\r\nexport type DragEventListener = (ev: DragEvent) => boolean | void;\r\n\r\nexport class DragDropHandler {\r\n\r\n protected static handlers: Map<HTMLElement, DragDropHandler>;\r\n\r\n protected readonly onDragStart: DragEventListener;\r\n protected readonly onDragEnter: DragEventListener;\r\n protected readonly onDragOver: DragEventListener;\r\n protected readonly onDragLeave: DragEventListener;\r\n protected readonly onDrop: DragEventListener;\r\n\r\n protected first: boolean;\r\n protected second: boolean;\r\n protected dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\r\n protected effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\r\n protected listeners: Array<KeyValue<DragHandlerEvents, DragEventListener>>;\r\n\r\n static get(el: HTMLElement) {\r\n if (DragDropHandler.handlers?.has(el)) {\r\n return DragDropHandler.handlers.get(el);\r\n }\r\n return new DragDropHandler(el);\r\n }\r\n\r\n protected static add(el: HTMLElement, inst: DragDropHandler) {\r\n DragDropHandler.handlers = DragDropHandler.handlers || new Map();\r\n DragDropHandler.handlers.set(el, inst);\r\n }\r\n\r\n protected constructor(protected el: HTMLElement) {\r\n this.first = false;\r\n this.second = false;\r\n this.listeners = [];\r\n this.onDragStart = ev => {\r\n this.fireEvent(\"dragstart\", ev);\r\n this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n this.dropEffect = ev.dataTransfer.dropEffect;\r\n };\r\n this.onDragEnter = ev => {\r\n if (this.first) {\r\n this.second = true;\r\n } else {\r\n this.first = true;\r\n this.fireEvent(\"dragenter\", ev);\r\n this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n this.dropEffect = ev.dataTransfer.dropEffect;\r\n }\r\n };\r\n this.onDragOver = ev => {\r\n ev.preventDefault();\r\n ev.dataTransfer.effectAllowed = this.effectAllowed;\r\n ev.dataTransfer.dropEffect = this.dropEffect;\r\n };\r\n this.onDragLeave = ev => {\r\n if (this.second) {\r\n this.second = false\r\n } else if (this.first) {\r\n this.first = false\r\n }\r\n if (!this.first && !this.second) {\r\n this.fireEvent(\"dragleave\", ev);\r\n }\r\n };\r\n this.onDrop = ev => {\r\n this.first = false;\r\n this.second = false;\r\n this.fireEvent(\"drop\", ev);\r\n };\r\n this.el.addEventListener(\"dragstart\", this.onDragStart);\r\n this.el.addEventListener(\"dragenter\", this.onDragEnter);\r\n this.el.addEventListener(\"dragover\", this.onDragOver);\r\n this.el.addEventListener(\"dragleave\", this.onDragLeave);\r\n this.el.addEventListener(\"drop\", this.onDrop);\r\n DragDropHandler.add(this.el, this);\r\n }\r\n\r\n addListener(key: DragHandlerEvents, value: DragEventListener): void {\r\n this.listeners = [\r\n ...this.listeners,\r\n {key, value}\r\n ];\r\n }\r\n\r\n removeListener(type: DragHandlerEvents, listener: DragEventListener): void {\r\n this.listeners = this.listeners.filter(entry => entry.key !== type || entry.value !== listener);\r\n if (this.listeners.length > 0) return;\r\n this.destroy();\r\n }\r\n\r\n protected fireEvent(type: DragHandlerEvents, ev: DragEvent): void {\r\n this.listeners.forEach(entry => {\r\n if (entry.key !== type) return;\r\n entry.value(ev);\r\n });\r\n }\r\n\r\n protected destroy(): void {\r\n this.el.removeEventListener(\"dragstart\", this.onDragStart);\r\n this.el.removeEventListener(\"dragenter\", this.onDragEnter);\r\n this.el.removeEventListener(\"dragover\", this.onDragOver);\r\n this.el.removeEventListener(\"dragleave\", this.onDragLeave);\r\n this.el.removeEventListener(\"drop\", this.onDrop);\r\n DragDropHandler.handlers?.delete(this.el);\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {DragDropHandler, DragHandlerEvents} from \"./drag-drop-handler\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class DragDropEventPlugin extends EventManagerPlugin {\r\n\r\n private static EVENT_NAMES: DragHandlerEvents[] = [\"dragstart\", \"dragenter\", \"dragleave\", \"drop\"];\r\n\r\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n super(doc);\r\n }\r\n\r\n supports(eventName: DragHandlerEvents) {\r\n return DragDropEventPlugin.EVENT_NAMES.includes(eventName);\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: DragHandlerEvents, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer) return emptyRemove;\r\n const callback = (e: DragEvent) => {\r\n zone.run(() => handler(e));\r\n };\r\n const dd = DragDropHandler.get(element);\r\n dd.addListener(eventName, callback);\r\n return () => dd.removeListener(eventName, callback);\r\n });\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport elementResizeDetectorMaker from \"element-resize-detector\";\r\nimport type {Erd} from \"element-resize-detector\";\r\n\r\nimport {RESIZE_DELAY, RESIZE_STRATEGY, ResizeEventStrategy} from \"../common-types\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\n\r\nfunction emptyRemove(): void {\r\n\r\n}\r\n\r\nfunction isWindow(el: any): boolean {\r\n return typeof window !== \"undefined\" && el === window;\r\n}\r\n\r\n@Injectable()\r\nexport class ResizeEventPlugin extends EventManagerPlugin {\r\n\r\n static readonly EVENT_NAME: string = \"resize\";\r\n\r\n readonly detector: Erd;\r\n\r\n constructor(@Inject(DOCUMENT) doc: any,\r\n @Inject(RESIZE_DELAY) protected resizeDelay: number,\r\n @Inject(RESIZE_STRATEGY) protected resizeStrategy: ResizeEventStrategy,\r\n readonly universal: UniversalService) {\r\n super(doc);\r\n this.detector = elementResizeDetectorMaker({\r\n strategy: resizeStrategy\r\n });\r\n }\r\n\r\n supports(eventName: string) {\r\n return eventName === ResizeEventPlugin.EVENT_NAME;\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer)\r\n return emptyRemove;\r\n const timer = TimerUtils.createTimeout();\r\n const cb = el => {\r\n timer.set(() => {\r\n zone.run(() => handler(el));\r\n }, this.resizeDelay);\r\n };\r\n if (isWindow(element)) {\r\n element.addEventListener(eventName, cb);\r\n }\r\n else {\r\n this.detector.listenTo(element, cb);\r\n }\r\n return () => {\r\n try {\r\n if (isWindow(element)) {\r\n element.removeEventListener(eventName, cb);\r\n }\r\n else {\r\n this.detector.uninstall(element);\r\n }\r\n }\r\n catch (e) {\r\n } finally {\r\n timer.clear();\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class ScrollEventPlugin extends EventManagerPlugin {\r\n\r\n private static EVENT_NAME: string = \"scroll\";\r\n\r\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n super(doc);\r\n }\r\n\r\n supports(eventName: string) {\r\n return eventName === ScrollEventPlugin.EVENT_NAME;\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n const zone = this.manager.getZone();\r\n return zone.runOutsideAngular(() => {\r\n if (this.universal.isServer) return emptyRemove;\r\n const callback = (e: Event) => {\r\n zone.run(() => handler(e));\r\n };\r\n element.addEventListener(eventName, callback);\r\n return () => element.removeEventListener(eventName, callback);\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"chunk\"\r\n})\r\nexport class ChunkPipe implements PipeTransform {\r\n transform(items: any[], count: number): any[] {\r\n const result: any[] = [];\r\n let subResult: any[] = null;\r\n items.forEach((item, index) => {\r\n if (index % count == 0) {\r\n subResult = [];\r\n result.push(subResult);\r\n }\r\n subResult.push(item);\r\n });\r\n return result;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport interface IEntry {\r\n key: string;\r\n value: any;\r\n index: number;\r\n}\r\n\r\nconst emptyEntries: IEntry[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"entries\"\r\n})\r\nexport class EntriesPipe implements PipeTransform {\r\n\r\n transform(value: any): IEntry[] {\r\n if (!value) return emptyEntries;\r\n const entries: IEntry[] = [];\r\n ObjectUtils.iterate(value, (val, key) => {\r\n entries.push({\r\n key: key,\r\n value: val,\r\n index: entries.length\r\n });\r\n });\r\n return entries;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IExtraProperties} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"extraItemProperties\"\r\n})\r\nexport class ExtraItemPropertiesPipe implements PipeTransform {\r\n transform(items: any[], properties: IExtraProperties, params: any = {}): any[] {\r\n const keys = Object.keys(properties);\r\n keys.forEach(key => {\r\n const value = properties[key];\r\n properties[key] = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(value, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n });\r\n return (items || []).map((item, index) => keys.reduce((result, key) => {\r\n result[key] = properties[key](item, index, params);\r\n return result;\r\n }, {...item}));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"filter\"\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n transform(values: any, filter: any = defaultFilter, params: any = {}): any {\r\n const isObject = ObjectUtils.isObject(values);\r\n if (!isObject && !ObjectUtils.isArray(values)) return [];\r\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {\r\n const index = key;\r\n return ObjectUtils.evaluate(filter, {value, key, params, values, index});\r\n };\r\n if (isObject) {\r\n return Object.keys(values).filter(key => {\r\n return filterFunc(values[key], key, params, values);\r\n }).reduce((result, key) => {\r\n result[key] = values[key];\r\n return result;\r\n }, {})\r\n }\r\n return values.filter((value, key) => {\r\n return filterFunc(value, key, params, values);\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"find\"\r\n})\r\nexport class FindPipe implements PipeTransform {\r\n transform(values: any[], filter: any = defaultFilter, params?: any): any {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n params = params || {};\r\n if (ObjectUtils.isObject(params)) {\r\n params.values = values;\r\n }\r\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {\r\n return ObjectUtils.evaluate(filter, {value, index, params, values});\r\n };\r\n return values.find((value, index) => filterFunc(value, index, params, values));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"formatNumber\"\r\n})\r\nexport class FormatNumberPipe implements PipeTransform {\r\n\r\n constructor(private formatter: FormatterService) {\r\n }\r\n\r\n transform(value: number, format?: string, precision?: number, divider?: number): string {\r\n return this.formatter.formatNumber(value, format, precision, divider);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getOffset\"\r\n})\r\nexport class GetOffsetPipe implements PipeTransform {\r\n transform(value: any, offset: any): any {\r\n return value ? (ObjectUtils.isNullOrUndefined(offset) ? value : value[offset]) : null;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getType\"\r\n})\r\nexport class GetTypePipe implements PipeTransform {\r\n transform(value: any): any {\r\n return typeof value;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"getValue\"\r\n})\r\nexport class GetValuePipe implements PipeTransform {\r\n\r\n transform(value: any, path: string, defaultVal: any = \"\"): any {\r\n return !value ? value : ObjectUtils.getValue(value, path, defaultVal);\r\n }\r\n}\r\n","import {OnDestroy, OnInit, Pipe, PipeTransform, TemplateRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n pure: false,\r\n name: \"globalTemplate\"\r\n})\r\nexport class GlobalTemplatePipe implements PipeTransform, OnInit, OnDestroy {\r\n\r\n protected templatesUpdated: Subscription;\r\n\r\n protected cachedTemplateId: string;\r\n protected cachedTemplate: TemplateRef<any>;\r\n\r\n constructor(protected globalTemplates: GlobalTemplateService) {\r\n this.cachedTemplateId = null;\r\n this.cachedTemplate = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.templatesUpdated = this.globalTemplates.templatesUpdated.subscribe(() => {\r\n this.cachedTemplate = null;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.templatesUpdated)\r\n this.templatesUpdated.unsubscribe();\r\n }\r\n\r\n transform(templateId: string, component?: any): TemplateRef<string> {\r\n if (!templateId) return null;\r\n if (this.cachedTemplate === null || this.cachedTemplateId !== templateId) {\r\n this.cachedTemplateId = templateId;\r\n this.cachedTemplate = this.globalTemplates.get(templateId, component);\r\n }\r\n return this.cachedTemplate;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IGroupMap} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"groupBy\"\r\n})\r\nexport class GroupByPipe implements PipeTransform {\r\n\r\n transform(records: any[], column: string, map: IGroupMap = null): any {\r\n const groups = (records || []).reduce((result: any, item: any) => {\r\n const key = ObjectUtils.getValue(item, column) || \"\";\r\n const col = map ? (map[key] || \"\") : key;\r\n const group: any[] = result[col] || [];\r\n group.push(item);\r\n result[col] = group;\r\n return result;\r\n }, {});\r\n return Object.keys(groups).map(key => {\r\n return {group: key, items: groups[key]};\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n return true;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"includes\"\r\n})\r\nexport class IncludesPipe implements PipeTransform {\r\n transform(array: any, ...values: any[]): boolean {\r\n return ObjectUtils.isArray(array) && values.some(v => array.includes(v));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"isType\"\r\n})\r\nexport class IsTypePipe implements PipeTransform {\r\n transform(value: any, type: string): any {\r\n return (typeof value) === type;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"join\"\r\n})\r\nexport class JoinPipe implements PipeTransform {\r\n\r\n transform(value: any, separator: string = \", \"): string {\r\n return (ObjectUtils.isArray(value))\r\n ? value.join(separator)\r\n : \"\";\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyKeys: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"keys\"\r\n})\r\nexport class KeysPipe implements PipeTransform {\r\n\r\n transform(value: any): any[] {\r\n if (!value) return emptyKeys;\r\n return ObjectUtils.isArray(value)\r\n ? Array.from(value.keys())\r\n : Object.keys(value);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultMapper(item) {\r\n return item;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"map\"\r\n})\r\nexport class MapPipe implements PipeTransform {\r\n transform(values: any[], mapper: any = defaultMapper, params: any = {}): any[] {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {\r\n return ObjectUtils.evaluate(mapper, {\r\n value: value,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return values.map((value, index) => mapperFunc(value, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"max\"\r\n})\r\nexport class MaxPipe implements PipeTransform {\r\n transform(value: any[], selector: any = null, params: any = {}): number {\r\n selector = selector || (item => <number>item);\r\n const maxSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(selector, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"min\"\r\n})\r\nexport class MinPipe implements PipeTransform {\r\n transform(value: any, selector: any = null, params: any = {}): number {\r\n selector = selector || (item => <number>item);\r\n const minSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n return ObjectUtils.evaluate(selector, {\r\n item: item,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"pop\"\r\n})\r\nexport class PopPipe implements PipeTransform {\r\n\r\n transform(value: any[]): any {\r\n return !Array.isArray(value) ? null : Array.from(value).pop();\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultReducer(result) {\r\n return result;\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"reduce\"\r\n})\r\nexport class ReducePipe implements PipeTransform {\r\n transform(values: any[], source: any, reducer: any = defaultReducer, params: any = {}): any {\r\n if (!ObjectUtils.isArray(values)) return [];\r\n const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {\r\n return ObjectUtils.evaluate(reducer, {\r\n result: result,\r\n value: value,\r\n index: index,\r\n params: params\r\n });\r\n };\r\n return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst empty: any = {};\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"remap\"\r\n})\r\nexport class RemapPipe implements PipeTransform {\r\n\r\n transform(map: any, source: any, defaultValue: string = \"key\"): any {\r\n if (!map) return empty;\r\n if (!source) return map;\r\n const remapped = ObjectUtils.filter({map: ObjectUtils.copy(map)}, (value, key, target) => {\r\n if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {\r\n target[key] = value.reduce((result, k) => {\r\n result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, {key: k, map: map, source: source}));\r\n return result;\r\n }, {});\r\n return false;\r\n }\r\n return true;\r\n });\r\n return remapped.map;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"replace\"\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n transform(value: string, from: string | RegExp, to: string): string {\r\n return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyArray: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"reverse\"\r\n})\r\nexport class ReversePipe implements PipeTransform {\r\n\r\n transform(value: any[]): any[] {\r\n if (!ObjectUtils.isArray(value)) return emptyArray;\r\n const result = [];\r\n for (let i = value.length - 1; i >= 0; i--) {\r\n result.push(value[i]);\r\n }\r\n return result;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"round\"\r\n})\r\nexport class RoundPipe implements PipeTransform {\r\n\r\n constructor(private formatter: FormatterService) {\r\n }\r\n\r\n transform(value: number, precision: number = 2, divider: number = 1): number {\r\n return this.formatter.roundNumber(value, precision, divider);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"safe\"\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {\r\n\r\n }\r\n\r\n transform(value: string, type: string = \"html\"): SafeHtml {\r\n switch (type) {\r\n case \"html\":\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case \"style\":\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case \"script\":\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case \"url\":\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case \"resourceUrl\":\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n default:\r\n throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"shift\"\r\n})\r\nexport class ShiftPipe implements PipeTransform {\r\n\r\n transform(value: any[]): any {\r\n return !Array.isArray(value) ? null : Array.from(value).shift();\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"split\"\r\n})\r\nexport class SplitPipe implements PipeTransform {\r\n\r\n transform(value: any, separator: string = \".\"): any[] {\r\n return `${value}`.split(separator);\r\n }\r\n}\r\n","import {ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ILanguageService, LANGUAGE_SERVICE, TranslationQuery} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Injectable()\r\n@Pipe({\r\n standalone: false,\r\n name: \"translate\",\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n\r\n private lang: string;\r\n private disabled: boolean;\r\n private query: TranslationQuery;\r\n private args: any[];\r\n private params: any;\r\n private lastValue: string;\r\n\r\n get currentLang(): string {\r\n return this.language.currentLanguage\r\n }\r\n\r\n constructor(readonly cdr: ChangeDetectorRef, @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n\r\n }\r\n\r\n transform(query: TranslationQuery, ...args: any[]): string {\r\n if (!query) return \"\";\r\n let dirty = false;\r\n const lang = this.currentLang;\r\n if (this.lang !== lang) {\r\n this.lang = lang;\r\n dirty = true;\r\n }\r\n const disabled = this.language.disableTranslations;\r\n if (this.disabled !== disabled) {\r\n this.disabled = disabled;\r\n dirty = true;\r\n }\r\n if (!ObjectUtils.equals(this.query, query)) {\r\n this.query = query;\r\n dirty = true;\r\n }\r\n if (!ObjectUtils.equals(this.args, args)) {\r\n this.args = args;\r\n this.params = null;\r\n if (ObjectUtils.isDefined(args[0]) && args.length) {\r\n if (typeof args[0] === \"string\" && args[0].length) {\r\n const validArgs: string = args[0]\r\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, `\"$2\":`)\r\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, `:\"$3\"`);\r\n try {\r\n this.params = JSON.parse(validArgs);\r\n } catch (e) {\r\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\r\n }\r\n } else if (typeof args[0] === \"object\" && !Array.isArray(args[0])) {\r\n this.params = args[0];\r\n }\r\n }\r\n dirty = true;\r\n }\r\n if (dirty) {\r\n if (typeof query === \"object\") {\r\n this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);\r\n return this.lastValue;\r\n }\r\n if (this.disabled) {\r\n this.lastValue = query;\r\n return this.lastValue;\r\n }\r\n this.language.getTranslation(query, this.params).then(value => {\r\n this.lastValue = value;\r\n if (!this.cdr[\"destroyed\"]) {\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n return this.lastValue;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyValues: any[] = [];\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: \"values\"\r\n})\r\nexport class ValuesPipe implements PipeTransform {\r\n\r\n transform(value: any): any[] {\r\n if (!value) return emptyValues;\r\n return ObjectUtils.isArray(value)\r\n ? value\r\n : Object.keys(value).map(key => value[key]);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input, OnChanges,\r\n Output\r\n} from \"@angular/core\";\r\nimport {AsyncMethod, IAsyncMessage, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[__asmb__]\"\r\n})\r\nexport class AsyncMethodBase implements OnChanges {\r\n\r\n @Input() disabled: boolean;\r\n @Input() context: any;\r\n\r\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\r\n @Output() onError: EventEmitter<IAsyncMessage>;\r\n\r\n protected loading: boolean;\r\n\r\n @HostBinding(\"class.disabled\")\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding(\"class.loading\")\r\n get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n constructor(@Inject(TOASTER_SERVICE) protected toaster: IToasterService, protected cdr: ChangeDetectorRef) {\r\n this.onSuccess = new EventEmitter<IAsyncMessage>();\r\n this.onError = new EventEmitter<IAsyncMessage>();\r\n }\r\n\r\n protected getMethod(): AsyncMethod {\r\n return async () => null;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n click(ev: Event): void {\r\n if (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n if (this.disabled) return;\r\n this.callMethod();\r\n }\r\n\r\n callMethod(): boolean {\r\n if (this.loading) return true;\r\n this.loading = true;\r\n const method = this.getMethod();\r\n const result = !method ? null : method(this.context);\r\n if (!(result instanceof Promise)) {\r\n this.loading = false;\r\n return false;\r\n }\r\n result.then(result => {\r\n this.loading = false;\r\n if (result) {\r\n this.onSuccess.emit(result);\r\n this.toaster.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.loading = false;\r\n this.onError.emit(reason);\r\n this.toaster.error(reason.message, reason.context);\r\n }).finally(() => {\r\n if (!this.cdr[\"destroyed\"]) {\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n return true;\r\n }\r\n}\r\n","import {Directive, Input} from \"@angular/core\";\r\nimport {AsyncMethod} from \"../common-types\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[async-method]\",\r\n exportAs: \"async-method\"\r\n})\r\nexport class AsyncMethodDirective extends AsyncMethodBase {\r\n\r\n @Input(\"async-method\") method: AsyncMethod;\r\n\r\n protected getMethod(): AsyncMethod {\r\n return this.method;\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nconst defaultClass = \"default-image\";\r\nconst loadingClass = \"loading-image\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[background]\"\r\n})\r\nexport class BackgroundDirective implements OnChanges {\r\n\r\n @Input() background: string;\r\n @Input() backgroundSize: string;\r\n\r\n constructor(private http: HttpClient, private element: ElementRef, private renderer: Renderer2, private universal: UniversalService) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.universal.isServer) {\r\n this.setBackground(this.background);\r\n return;\r\n }\r\n this.renderer.removeClass(this.element.nativeElement, defaultClass);\r\n this.renderer.addClass(this.element.nativeElement, loadingClass);\r\n FileUtils.readDataFromUrl(this.http, this.background).then(url => {\r\n this.setBackground(url);\r\n }, () => {\r\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n this.renderer.addClass(this.element.nativeElement, defaultClass);\r\n });\r\n }\r\n\r\n private setBackground(url: string): void {\r\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n this.renderer.setStyle(this.element.nativeElement, \"background-image\", `url('${url}')`);\r\n if (!this.backgroundSize) return;\r\n this.renderer.setStyle(this.element.nativeElement, \"background-size\", this.backgroundSize);\r\n }\r\n}\r\n","import {Directive, Input, ViewContainerRef, OnChanges, SimpleChanges, ComponentRef, OnDestroy} from \"@angular/core\";\r\nimport {ComponentLoaderService} from \"../services/component-loader.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[loadComponent]\"\r\n})\r\nexport class ComponentLoaderDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() module: string;\r\n @Input(\"loadComponent\") selector: string;\r\n\r\n private cr: ComponentRef<any>;\r\n\r\n constructor(private vcr: ViewContainerRef, private loader: ComponentLoaderService) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.module || !this.selector) return;\r\n this.ngOnDestroy();\r\n this.loader.getComponentType({\r\n moduleId: this.module,\r\n selector: this.selector\r\n }).then(type => {\r\n this.cr = this.vcr.createComponent(type);\r\n this.cr.changeDetectorRef.markForCheck();\r\n this.cr.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.cr) return;\r\n this.cr.destroy();\r\n const index = this.vcr.indexOf(this.cr.hostView);\r\n if (index >= 0) {\r\n this.vcr.remove(index);\r\n }\r\n this.cr.hostView.destroy();\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {ITableTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"ng-template[column]\"\r\n})\r\n\r\nexport class DynamicTableTemplateDirective implements ITableTemplate {\r\n\r\n @Input() column: string | string[];\r\n @Input() pure: boolean;\r\n\r\n constructor(readonly ref: TemplateRef<any>) {\r\n }\r\n}\r\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef} from \"@angular/core\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[globalTemplate]\"\r\n})\r\nexport class GlobalTemplateDirective implements OnInit, OnDestroy {\r\n\r\n @Input(\"globalTemplate\") id: string;\r\n\r\n constructor(readonly globalTemplates: GlobalTemplateService,\r\n readonly template: TemplateRef<any>) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.globalTemplates.add(this.id, this.template);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.globalTemplates.remove(this.id);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ICON_SERVICE, IIconService} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[icon]\"\r\n})\r\nexport class IconDirective implements OnChanges, OnInit, OnDestroy {\r\n\r\n @Input() icon: string;\r\n @Input() activeIcon: string;\r\n @Input() active: boolean;\r\n @Output() activeChange: EventEmitter<boolean>;\r\n\r\n @HostBinding(\"class.active\")\r\n get isActive() {\r\n return this.active;\r\n }\r\n\r\n protected iconsLoaded: Subscription;\r\n\r\n constructor(private element: ElementRef, private renderer: Renderer2, @Inject(ICON_SERVICE) private icons: IIconService) {\r\n this.renderer.addClass(this.element.nativeElement, \"svg-icon\");\r\n this.activeChange = new EventEmitter<boolean>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.iconsLoaded)\r\n this.iconsLoaded.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.icon) {\r\n this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);\r\n this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);\r\n }\r\n this.changeIcon();\r\n }\r\n\r\n @HostListener(\"click\")\r\n click(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n this.changeIcon();\r\n }\r\n\r\n private changeIcon(): void {\r\n this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {\r\n if (this.icons.isDisabled) return;\r\n this.element.nativeElement.innerHTML = icon;\r\n });\r\n }\r\n}\r\n","import {\r\n Directive, DoCheck,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChange,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[ngxTemplateOutlet]\"\r\n})\r\nexport class NgxTemplateOutletDirective implements OnChanges, DoCheck {\r\n\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input() public context: Object;\r\n @Input() public additionalContext: Object;\r\n @Input() public ngxTemplateOutlet: TemplateRef<any>;\r\n\r\n private static hasContextShapeChanged(ctxChange: SimpleChange): boolean {\r\n const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\r\n const currCtxKeys = Object.keys(ctxChange.currentValue || {});\r\n\r\n if (prevCtxKeys.length === currCtxKeys.length) {\r\n for (const propName of currCtxKeys) {\r\n if (prevCtxKeys.indexOf(propName) === -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n constructor(private _viewContainerRef: ViewContainerRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const recreateView = this.shouldRecreateView(changes);\r\n if (recreateView) {\r\n if (this.viewRef)\r\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));\r\n if (this.ngxTemplateOutlet)\r\n this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});\r\n }\r\n this.ngDoCheck();\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (!this.viewRef) return;\r\n const context = this.viewRef.context;\r\n this.updateExistingContext(this.context, context);\r\n this.updateExistingContext(this.additionalContext, context);\r\n context.$implicit = context;\r\n }\r\n\r\n private shouldRecreateView(changes: SimpleChanges): boolean {\r\n const ctxChange = changes[\"context\"];\r\n const aCtxChange = changes[\"additionalContext\"];\r\n return !!changes[\"ngxTemplateOutlet\"]\r\n || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))\r\n || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));\r\n }\r\n\r\n private updateExistingContext(ctx: any, context: any): void {\r\n if (!ctx) return;\r\n let ctxProto = Object.getPrototypeOf(ctx);\r\n if (ctxProto == Object.prototype) {\r\n ctxProto = ctx;\r\n }\r\n const props = Object.getOwnPropertyNames(ctxProto);\r\n for (const propName of props) {\r\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n // Copy if its a getter and it is not $implicit\r\n if (desc.get && propName !== \"$implicit\") {\r\n Object.defineProperty(context, propName, desc);\r\n continue;\r\n }\r\n const func: Function = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;\r\n if (func && func !== ctxProto.constructor) {\r\n context[propName] = func;\r\n }\r\n }\r\n for (const propName of Object.keys(ctx)) {\r\n\r\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n if (desc && desc.get && !desc.set) continue;\r\n context[propName] = ctx[propName];\r\n }\r\n }\r\n}\r\n","import {Directive, EventEmitter, Input, NgZone, OnChanges, Output, SimpleChanges} from \"@angular/core\";\r\nimport {IPaginationData, ITimer, PaginationDataLoader, PaginationItemContext} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[pagination]\",\r\n exportAs: \"pagination\"\r\n})\r\nexport class PaginationDirective implements OnChanges {\r\n\r\n get total(): number {\r\n return this.data ? this.data.total : 0;\r\n }\r\n\r\n get items(): any[] {\r\n return this.data ? this.data.items : [];\r\n }\r\n\r\n @Input(\"pagination\") loader: PaginationDataLoader;\r\n @Input() page: number;\r\n @Input() itemsPerPage: number;\r\n @Input() updateTime: number;\r\n @Input() waitFor: Promise<any>;\r\n\r\n @Output() pageChange: EventEmitter<number>;\r\n @Output() onRefresh: EventEmitter<PaginationDirective>;\r\n\r\n maxPage: number;\r\n\r\n private data: IPaginationData;\r\n private updateTimer: ITimer;\r\n\r\n constructor(private zone: NgZone) {\r\n this.pageChange = new EventEmitter<number>();\r\n this.onRefresh = new EventEmitter<PaginationDirective>();\r\n this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!changes.loader && !changes.itemsPerPage && !changes.page) return;\r\n this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;\r\n this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;\r\n this.waitFor = this.waitFor || Promise.resolve(true);\r\n this.refresh();\r\n }\r\n\r\n refresh(time?: number): void {\r\n time = isNaN(time) || time <= 0 ? this.updateTime : time;\r\n this.updateTimer.time = isNaN(time) || time <= 0 ? 100 : time;\r\n Promise.resolve(this.waitFor).then(() => {\r\n this.updateTimer.run();\r\n });\r\n }\r\n\r\n paginate(page: number): void {\r\n this.page = page;\r\n this.pageChange.emit(page);\r\n this.refresh();\r\n }\r\n\r\n private loadData(): void {\r\n if (!this.loader) return;\r\n this.loader(this.page, this.itemsPerPage).then(data => {\r\n this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;\r\n this.data = data;\r\n const baseIndex = (this.page - 1) * this.itemsPerPage;\r\n const items = (data.items || []);\r\n data.items = items.map((item, index) => {\r\n const ix = baseIndex + index;\r\n return item instanceof PaginationItemContext\r\n ? item\r\n : new PaginationItemContext(item, items, items.length, index, ix);\r\n });\r\n if (this.page > this.maxPage) {\r\n this.paginate(this.maxPage);\r\n return;\r\n }\r\n this.zone.run(() => this.onRefresh.emit(this));\r\n });\r\n }\r\n}\r\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {PaginationDirective} from \"./pagination.directive\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[paginationItem]\"\r\n})\r\nexport class PaginationItemDirective implements OnInit, OnDestroy {\r\n\r\n private onRefresh: Subscription;\r\n\r\n constructor(private pagination: PaginationDirective, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.onRefresh.unsubscribe();\r\n }\r\n\r\n private renderView(): void {\r\n this.viewContainer.clear();\r\n this.pagination.items.forEach((item: any, ix: number) => {\r\n item.$implicit = item;\r\n item.rowIndex = ix;\r\n this.viewContainer.createEmbeddedView(this.templateRef, item);\r\n });\r\n }\r\n}\r\n","import {Directive, ViewContainerRef, TemplateRef, Input} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ResourceIfContext} from \"../common-types\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[resourceIf]\",\r\n exportAs: \"resourceIf\"\r\n})\r\nexport class ResourceIfDirective {\r\n\r\n private context: ResourceIfContext;\r\n private resource: string;\r\n\r\n @Input()\r\n set resourceIf(resource: string) {\r\n this.resource = resource;\r\n this.renderView();\r\n }\r\n\r\n get resourceIf(): string {\r\n return this.resource;\r\n }\r\n\r\n get url(): string {\r\n return this.context.url;\r\n }\r\n\r\n constructor(private http: HttpClient, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>, private universal: UniversalService) {\r\n this.context = new ResourceIfContext();\r\n }\r\n\r\n private renderView(): void {\r\n this.context = new ResourceIfContext();\r\n this.context.resource = this.resource;\r\n this.viewContainer.clear();\r\n if (this.universal.isBrowser && this.resource) {\r\n FileUtils.readDataFromUrl(this.http, this.resource).then(url => {\r\n this.context.url = url;\r\n this.viewContainer.createEmbeddedView(this.templateRef, this.context);\r\n }, console.log);\r\n }\r\n }\r\n}\r\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ITimer} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[sticky]\"\r\n})\r\nexport class StickyDirective implements OnInit, OnDestroy {\r\n\r\n @HostBinding(\"class.sticky\") isSticky: boolean;\r\n @HostBinding(\"class.sticky-update\") isUpdating: boolean;\r\n parentElement: HTMLElement;\r\n\r\n private updateTimer: ITimer;\r\n private eventForwarded: Subscription;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private events: EventsService, private element: ElementRef) {\r\n this.parentElement = this.element.nativeElement.parentElement;\r\n this.updateTimer = TimerUtils.createTimeout(() => {\r\n this.isUpdating = false;\r\n this.cdr.detectChanges();\r\n this.events.updateSticky(this.isSticky);\r\n }, 10);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.eventForwarded = this.events.eventForwarded.subscribe((e: Event) => {\r\n if (e && e.type === \"scroll\") this.updateSticky();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.eventForwarded.unsubscribe();\r\n }\r\n\r\n @HostListener(\"window:resize\")\r\n @HostListener(\"window:scroll\")\r\n updateSticky(): void {\r\n const distanceToTop = this.parentElement.getBoundingClientRect().top;\r\n this.isSticky = distanceToTop < 1;\r\n this.isUpdating = true;\r\n this.cdr.detectChanges();\r\n this.updateTimer.run();\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[stickyClass]\"\r\n})\r\nexport class StickyClassDirective implements OnInit, OnDestroy {\r\n\r\n @Input() stickyClass: string;\r\n\r\n private stickyUpdated: Subscription;\r\n\r\n constructor(private events: EventsService, private element: ElementRef, private renderer: Renderer2) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {\r\n if (this.events.isSticky) {\r\n this.renderer.addClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n return;\r\n }\r\n this.renderer.removeClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stickyUpdated.unsubscribe();\r\n }\r\n}\r\n","import {Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output} from \"@angular/core\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dd],[drop-down]\",\r\n exportAs: \"dropdown\"\r\n})\r\nexport class DropdownDirective implements OnDestroy {\r\n\r\n protected static active: DropdownDirective = null;\r\n\r\n protected opened: boolean;\r\n protected disabled: boolean;\r\n\r\n @Input() closeInside: boolean;\r\n @Input() keyboardHandler: boolean;\r\n @Output() onShown: EventEmitter<DropdownDirective>;\r\n @Output() onHidden: EventEmitter<DropdownDirective>;\r\n @Output() onKeyboard: EventEmitter<KeyboardEvent>;\r\n\r\n private readonly onTap: (event: Event) => void;\r\n private readonly onKeyDown: (event: KeyboardEvent) => void;\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.element.nativeElement;\r\n }\r\n\r\n @HostBinding(\"class.open\")\r\n get isOpened(): boolean {\r\n return this.opened;\r\n }\r\n\r\n @HostBinding(\"class.disabled\")\r\n get getDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n @Input()\r\n set isDisabled(value: boolean) {\r\n this.disabled = value;\r\n if (!value) return;\r\n this.hide();\r\n }\r\n\r\n constructor(protected element: ElementRef<HTMLElement>) {\r\n this.opened = false;\r\n this.disabled = false;\r\n this.closeInside = true;\r\n this.keyboardHandler = true;\r\n this.onShown = new EventEmitter<any>();\r\n this.onHidden = new EventEmitter<any>();\r\n this.onKeyboard = new EventEmitter<KeyboardEvent>();\r\n this.onTap = (event: Event): void => {\r\n const target = event.target as Node;\r\n if (event[\"button\"]) return;\r\n if (this.nativeElement && this.nativeElement.contains(target) && !this.closeInside) {\r\n return;\r\n }\r\n setTimeout(() => this.hide(), event.type == \"touchend\" ? 250 : 100);\r\n };\r\n this.onKeyDown = (event: KeyboardEvent): void => {\r\n const input = event.target as HTMLInputElement;\r\n const notInput = input && input.tagName !== \"INPUT\" && input.tagName !== \"TEXTAREA\";\r\n if (\"Tab\" === event.key || !input || notInput) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n if (\"Esc\" === event.key || \"Escape\" === event.key) {\r\n this.hide();\r\n return;\r\n }\r\n this.onKeyboard.emit(event);\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (DropdownDirective.active === this) {\r\n DropdownDirective.active = null;\r\n this.onHidden.emit(this);\r\n }\r\n }\r\n\r\n showEvent(): void {\r\n this.onShown.emit(this);\r\n }\r\n\r\n hideEvent(): void {\r\n this.onHidden.emit(this);\r\n }\r\n\r\n setProperty(name: string, value: any): void {\r\n const elem = this.element.nativeElement;\r\n if (!elem) return;\r\n elem.style.setProperty(`--${name}`, value);\r\n }\r\n\r\n @HostListener(\"keydown.enter\", [\"$event\"])\r\n @HostListener(\"keydown.space\", [\"$event\"])\r\n show($event?: Event): void {\r\n if (this.opened) return;\r\n if ($event) {\r\n if (!this.keyboardHandler) return;\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n }\r\n if (this.disabled) return;\r\n this.opened = true;\r\n this.showEvent();\r\n DropdownDirective.active = this;\r\n // Prevent toggle from selecting an item right after it is shown\r\n setTimeout(() => {\r\n if (!this.opened) return;\r\n document.addEventListener(\"touchend\", this.onTap);\r\n document.addEventListener(\"mouseup\", this.onTap);\r\n document.addEventListener(\"keydown\", this.onKeyDown);\r\n }, 10);\r\n }\r\n\r\n hide(): void {\r\n if (!this.opened) return;\r\n this.opened = false;\r\n this.hideEvent();\r\n document.removeEventListener(\"touchend\", this.onTap);\r\n document.removeEventListener(\"mouseup\", this.onTap);\r\n document.removeEventListener(\"keydown\", this.onKeyDown);\r\n // Prevent toggle from refocus itself after it is hidden because of another toggle\r\n setTimeout(() => {\r\n if (DropdownDirective.active === this) {\r\n DropdownDirective.active = null;\r\n this.nativeElement?.focus();\r\n }\r\n }, 10);\r\n }\r\n}\r\n","import {Directive, ElementRef, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dropdownContent]\",\r\n exportAs: \"dropdown-content\",\r\n})\r\nexport class DropdownContentDirective implements OnInit, OnDestroy {\r\n\r\n protected observer: ResizeObserver;\r\n\r\n constructor(readonly element: ElementRef<HTMLElement>,\r\n readonly dropdown: DropdownDirective) {\r\n }\r\n\r\n ngOnInit() {\r\n if (typeof ResizeObserver === \"undefined\") {\r\n return;\r\n }\r\n this.observer = new ResizeObserver(entries => {\r\n let width = 0;\r\n let height = 0;\r\n entries.forEach(entry => {\r\n if (!entry.contentRect) return;\r\n width = Math.max(width, entry.contentRect.width);\r\n height = Math.max(height, entry.contentRect.height);\r\n });\r\n this.dropdown.setProperty(\"list-width\", `${width}px`);\r\n this.dropdown.setProperty(\"list-height\", `${height}px`);\r\n });\r\n this.observer.observe(this.element.nativeElement);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.observer?.unobserve(this.element.nativeElement);\r\n }\r\n}\r\n","import {ChangeDetectorRef, Directive, ElementRef, Inject, Input} from \"@angular/core\";\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\nimport {AsyncMethod, IToasterService, TOASTER_SERVICE} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[dropdownToggle]\",\r\n exportAs: \"dropdown-toggle\",\r\n})\r\nexport class DropdownToggleDirective extends AsyncMethodBase {\r\n\r\n @Input() beforeOpen: AsyncMethod;\r\n\r\n constructor(readonly element: ElementRef,\r\n readonly dropdown: DropdownDirective,\r\n @Inject(TOASTER_SERVICE) toaster: IToasterService,\r\n cdr: ChangeDetectorRef) {\r\n super(toaster, cdr);\r\n }\r\n\r\n protected getMethod(): AsyncMethod {\r\n return this.beforeOpen;\r\n }\r\n\r\n callMethod(): boolean {\r\n if (this.dropdown.isOpened) {\r\n this.dropdown.hide();\r\n } else if (!super.callMethod()) {\r\n this.dropdown.show();\r\n }\r\n return true;\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {StringUtils} from \"../utils/string.utils\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"[unorderedListItem]\"\r\n})\r\nexport class UnorderedListItemDirective implements OnChanges {\r\n\r\n @Input(\"unorderedListItem\") item: any;\r\n @Input() type: string;\r\n @Input() data: any;\r\n @Input() keyPrefix: string;\r\n @Input() listStyle: UnorderedListStyle;\r\n @Input() path: string;\r\n @Input() level: number;\r\n @Input() templates: UnorderedListTemplate[];\r\n @Input() defaultTemplates: UnorderedListTemplates;\r\n\r\n isArray: boolean;\r\n isObject: boolean;\r\n valueIsArray: boolean;\r\n valueIsObject: boolean;\r\n valueType: string;\r\n\r\n get elem(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private viewContainer: ViewContainerRef) {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.templates || !this.defaultTemplates || !this.item) return;\r\n const promise = this.item.value instanceof Promise ? this.item.value : Promise.resolve(this.item.value);\r\n promise.then(value => {\r\n this.item.value = value;\r\n this.path = ObjectUtils.isNullOrUndefined(this.path) ? \"\" : this.path.toString();\r\n this.isArray = ObjectUtils.isArray(this.data);\r\n this.isObject = ObjectUtils.isObject(this.data);\r\n this.valueIsArray = ObjectUtils.isArray(this.item.value);\r\n this.valueIsObject = ObjectUtils.isObject(this.item.value);\r\n this.valueType = ObjectUtils.getType(this.item.value);\r\n const context: any = this;\r\n const template = this\r\n .templates\r\n .find(t => t.type == this.type && ObjectUtils.evaluate(t.selector, context))?.templateRef || this.defaultTemplates[this.type];\r\n // Set view\r\n this.viewContainer.clear();\r\n this.viewContainer.createEmbeddedView(template, context);\r\n // Set classes\r\n if (this.type !== \"item\") return;\r\n this.item.classList = [];\r\n this.isClass(\"is-array\", this.valueIsArray);\r\n this.isClass(\"is-object\", this.valueIsObject);\r\n this.isClass(\"is-value\", !this.valueIsObject && !this.valueIsArray);\r\n this.isClass(`type-${this.valueType}`);\r\n this.isClass(`path-${this.path.replace(/\\./g, \"-\")}`);\r\n this.isClass(`key-${this.item.key}`);\r\n }, reason => {\r\n console.log(\"Can't handle promise rejection\", reason);\r\n });\r\n }\r\n\r\n private isClass(className: string, value: boolean = true): void {\r\n if (!value) return;\r\n this.item.classList.push(className);\r\n }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {UnorderedListTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: \"ng-template[type][selector]\"\r\n})\r\n\r\nexport class UnorderedListTemplateDirective implements UnorderedListTemplate {\r\n\r\n @Input() type: string;\r\n @Input() selector: string;\r\n\r\n constructor(readonly templateRef: TemplateRef<any>) {\r\n\r\n }\r\n}\r\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\n\nimport {DragEventHandler} from \"../../common-types\";\nimport {checkTransitions} from \"../../utils/misc\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\n\ntype DropListItem = Record<string, any>;\n\ntype DropListId = string | number;\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"drop-list\",\n styleUrls: [\"./drop-list.component.scss\"],\n templateUrl: \"./drop-list.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropListComponent),\n multi: true,\n }],\n})\nexport class DropListComponent implements OnChanges, ControlValueAccessor {\n\n @Input() disabled: boolean;\n @Input() unique: boolean;\n @Input() message: string;\n @Input() idField: string;\n @Input() labelField: string;\n @Input() value: DropListId[];\n @Input() context: DropListItem[];\n @Input() prepareItem: (i: DropListItem) => void;\n @Input() checkFn: DragEventHandler<boolean, \"data\">;\n @Input() dropFn: DragEventHandler<boolean, \"data\">;\n\n @ContentChild(\"itemTemplate\")\n itemTemplate: TemplateRef<any>;\n\n onChange: Function;\n onTouched: Function;\n valueMap: Record<DropListId, DropListItem>;\n\n remove: (index: number) => void;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.disabled = false;\n this.unique = false;\n this.idField = \"id\";\n this.labelField = \"label\";\n this.value = [];\n this.context = [];\n this.prepareItem = () => {};\n this.checkFn = () => false;\n this.dropFn = () => false;\n this.valueMap = {};\n this.remove = index => {\n this.changeValue(this.value.filter((_, i) => i !== index));\n };\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, data: any) {\n ev.preventDefault();\n if (!elem || !ObjectUtils.isFunction(this.checkFn) || !this.checkFn({ev, elem, data})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem) {\n return;\n }\n const data = JSON.parse(ev.dataTransfer.getData(\"itemData\") || \"{}\");\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n if (elem && ObjectUtils.isFunction(this.dropFn) && this.dropFn({ev, elem, data})) {\n // If drop is handled from outside function\n return;\n }\n const id = data[this.idField] || data.id;\n this.changeValue(this.value.concat([id]));\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.context || changes.idField) {\n this.valueMap = this.context?.reduce((res, item) => {\n // In case this is a dynamic form option which stores real value under props\n item = Object.assign({}, item, item.props || {});\n // Prepare item\n this.prepareItem(item);\n\n const id = item[this.idField] || item.id;\n res[id] = item;\n return res;\n }, {}) || {};\n this.cdr.detectChanges();\n }\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.value = Array.isArray(obj) ? obj : this.value;\n this.cdr.detectChanges();\n }\n\n protected changeValue(value: DropListId[]): void {\n this.value = this.unique ? ArrayUtils.unique(value) : value;\n this.onChange?.(value);\n this.onTouched?.();\n }\n}\n","<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\n","import {Component, Inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {StateService} from \"../../services/state.service\";\r\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\r\nimport {ICON_SERVICE, IIconService} from \"../../common-types\";\r\n\r\n@Component({\r\n standalone: false,\r\n selector: \"pagination-menu\",\r\n templateUrl: \"./pagination-menu.component.html\"\r\n})\r\nexport class PaginationMenuComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n @Input() maxSize: number;\r\n @Input() urlParam: string;\r\n @Input() directionLinks: boolean;\r\n @Input() boundaryLinks: boolean;\r\n\r\n pages: number[];\r\n firstLabel: string;\r\n prevLabel: string;\r\n nextLabel: string;\r\n lastLabel: string;\r\n\r\n get hasPrev(): boolean {\r\n return this.pagination.page > 1;\r\n }\r\n\r\n get hasNext(): boolean {\r\n return this.pagination.page < this.pagination.maxPage\r\n }\r\n\r\n private onRefresh: Subscription;\r\n\r\n constructor(public state: StateService, public pagination: PaginationDirective, @Inject(ICON_SERVICE) public icons: IIconService) {\r\n this.maxSize = 5;\r\n this.directionLinks = true;\r\n this.boundaryLinks = true;\r\n this.firstLabel = `<<`;\r\n this.prevLabel = `<`;\r\n this.nextLabel = `>`;\r\n this.lastLabel = `>>`;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.setPages());\r\n this.setIcon(\"firstLabel\", \"first-page\");\r\n this.setIcon(\"prevLabel\", \"prev-page\");\r\n this.setIcon(\"nextLabel\", \"next-page\");\r\n this.setIcon(\"lastLabel\", \"last-page\");\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.onRefresh) return;\r\n this.onRefresh.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.maxSize = isNaN(this.maxSize) || this.maxSize <= 0 ? 5 : this.maxSize;\r\n this.directionLinks = ObjectUtils.isBoolean(this.directionLinks) ? this.directionLinks : true;\r\n this.boundaryLinks = ObjectUtils.isBoolean(this.boundaryLinks) ? this.boundaryLinks : true;\r\n this.setPages();\r\n }\r\n\r\n paginate(page: number): void {\r\n if (this.pagination.page == page || this.pagination.maxPage < page || page < 1) return;\r\n if (!this.urlParam) {\r\n this.pagination.paginate(page);\r\n return;\r\n }\r\n const params = Object.assign({}, this.state.params);\r\n params[this.urlParam] = page.toString();\r\n const path = StateService.toPath(this.state.route, params);\r\n this.state.navigateByUrl(path);\r\n }\r\n\r\n protected setIcon(labelName: string, icon: string): void {\r\n this.icons.getIcon(icon, icon, false).then(i => {\r\n if (i == icon) return;\r\n this[labelName] = i;\r\n });\r\n }\r\n\r\n protected setPages(): number {\r\n if (!this.pagination) return;\r\n const totalPages = this.pagination.maxPage;\r\n let startPage = Math.max(this.pagination.page - Math.floor(this.maxSize / 2), 1);\r\n let endPage = startPage + this.maxSize - 1;\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = Math.max(endPage - this.maxSize + 1, 1);\r\n }\r\n const pages: number[] = [];\r\n for (let num = startPage; num <= endPage; num++) {\r\n pages.push(num);\r\n }\r\n this.pages = pages;\r\n }\r\n}\r\n","<div class=\"pagination-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(1)\" [innerHTML]=\"firstLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page - 1)\" [innerHTML]=\"prevLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\r\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.page + 1)\" [innerHTML]=\"nextLabel | safe\"></a>\r\n </li>\r\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\r\n <a class=\"page-link\" (click)=\"paginate(pagination.maxPage)\" [innerHTML]=\"lastLabel | safe\"></a>\r\n </li>\r\n </ul>\r\n</div>\r\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren, ElementRef,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild, ViewEncapsulation\n} from \"@angular/core\";\n\nimport {\n DragEventHandler,\n IPaginationData,\n ITableColumns,\n ITableDataQuery,\n ITableTemplates,\n PaginationItemContext,\n TableColumns,\n TableDataLoader\n} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UniqueUtils} from \"../../utils/unique.utils\";\nimport {checkTransitions} from \"../../utils/misc\";\n\nimport {DynamicTableTemplateDirective} from \"../../directives/dynamic-table-template.directive\";\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\nimport {MathUtils} from \"../../utils/math.utils\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"dynamic-table\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n templateUrl: \"./dynamic-table.component.html\",\n})\nexport class DynamicTableComponent implements AfterContentInit, AfterViewInit, OnChanges {\n\n @Input() dataLoader: TableDataLoader;\n @Input() data: any[];\n @Input() selected: any;\n @Input() page: number;\n @Input() urlParam: string;\n @Input() parallelData: any[];\n @Input() columns: TableColumns;\n\n /**\n * Parameter for displaying a simple filter search box\n */\n @Input() showFilter: boolean;\n\n /**\n * Parameter for specifying a label for filter\n */\n @Input() filterLabel: string;\n\n /**\n * Parameter for specifying a placeholder for filter\n */\n @Input() placeholder: string;\n\n /**\n * Parameter for displaying an item per page selector dropdown with the specified numbers\n */\n @Input() showItems: number[];\n\n /**\n * Parameter for setting how many items should be displayed by default\n */\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() filterTime: number;\n @Input() maxPages: number;\n @Input() directionLinks: boolean;\n @Input() boundaryLinks: boolean;\n @Input() orderBy: string;\n @Input() orderDescending: boolean;\n @Input() testId: string;\n @Input() titlePrefix: string;\n\n @Input() dragStartFn: DragEventHandler;\n @Input() dragEnterFn: DragEventHandler;\n @Input() dropFn: DragEventHandler<void>;\n\n tableId: string;\n templates: ITableTemplates;\n filter: string;\n query: ITableDataQuery;\n hasQuery: boolean;\n realColumns: ITableColumns;\n cols: string[];\n\n get items(): any[] {\n return !this.pagination ? [] : this.pagination.items;\n }\n\n @ContentChild(\"rowTemplate\", {static: true})\n rowTemplate: TemplateRef<any>;\n\n @ContentChild(\"wrapperTemplate\", {static: true})\n wrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"columnsTemplate\", {static: true})\n columnsTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultRowTemplate\", {static: true})\n defaultRowTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultWrapperTemplate\", {static: true})\n defaultWrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"pagination\")\n protected pagination: PaginationDirective;\n\n @ContentChildren(DynamicTableTemplateDirective)\n protected templateDirectives: QueryList<DynamicTableTemplateDirective>;\n\n protected static compare(orderBy: string, a: PaginationItemContext, b: PaginationItemContext): number {\n a = a.item ? a.item[orderBy] : null;\n b = b.item ? b.item[orderBy] : null;\n return ObjectUtils.compare(a, b);\n }\n\n constructor(protected element: ElementRef<HTMLElement>) {\n this.dataLoader = this.loadLocalData;\n this.placeholder = \"\";\n this.tableId = UniqueUtils.uuid();\n this.templates = {};\n this.filter = \"\";\n this.query = {};\n this.hasQuery = false;\n this.testId = \"table\";\n this.titlePrefix = \"label\";\n this.realColumns = {};\n }\n\n setProperty(name: string, value: any): void {\n const elem = this.element.nativeElement;\n if (!elem) return;\n elem.style.setProperty(`--${name}`, value);\n }\n\n ngAfterContentInit(): void {\n this.templates = this.templateDirectives.reduce((result, directive) => {\n if (ObjectUtils.isArray(directive.column)) {\n directive.column.forEach(column => {\n result[column] = directive;\n });\n return result;\n }\n if (!ObjectUtils.isString(directive.column) || directive.column.length == 0) return result;\n result[directive.column] = directive;\n return result;\n }, {});\n }\n\n ngAfterViewInit(): void {\n this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columns) {\n const columns = changes.columns.currentValue || [];\n this.realColumns = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {\n if (!ObjectUtils.isString(column) || column.length == 0)\n return result;\n result[column] = {title: `${this.titlePrefix}.${column}`, sort: column};\n return result;\n }, {}) : Object.keys(columns).reduce((result, key) => {\n const value = columns[key];\n result[key] = !value || ObjectUtils.isString(value)\n ? {title: `${this.titlePrefix}.${key}`, sort: value}\n : value;\n return result;\n }, {} as ITableColumns);\n this.cols = Object.keys(this.realColumns);\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n this.query = {};\n this.setProperty(\"cell-width\", MathUtils.round(100 / this.cols.length, 4) + \"%\");\n }\n this.hasQuery = this.cols.some(col => this.realColumns[col].filter);\n if (changes.orderBy && this.realColumns && this.cols) {\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.orderBy = this.orderBy in sortable ? this.orderBy : sortable[0] || null;\n }\n if (!changes.data && !changes.parallelData && !changes.itemsPerPage && !changes.orderBy && !changes.orderDescending) return;\n this.refresh();\n }\n\n onDragStart(ev: DragEvent, elem: HTMLElement, item: any) {\n if (!elem || !item || !ObjectUtils.isFunction(this.dragStartFn) || !this.dragStartFn({ev, elem, item})) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n ev.dataTransfer.setData(\"itemData\", JSON.stringify(item));\n ev.dataTransfer.setData(item.type, \"type\");\n ev.dataTransfer.setData(item.id, \"id\");\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n if (!elem || !item || !ObjectUtils.isFunction(this.dragEnterFn) || !this.dragEnterFn({ev, elem, item})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem || !item || !ObjectUtils.isFunction(this.dropFn)) {\n return;\n }\n const source = JSON.parse(ev.dataTransfer.getData(\"itemData\"));\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n this.dropFn({ev, elem, item, source});\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n refresh(time?: number): void {\n if (!this.pagination) return;\n this.pagination.refresh(time);\n }\n\n setFilter(filter: string) {\n this.filter = filter;\n this.refresh(this.filterTime ?? 300);\n }\n\n setSorting(column: string, toggle?: DropdownDirective) {\n if (toggle) {\n return;\n }\n this.orderDescending = column == this.orderBy && !this.orderDescending;\n this.orderBy = column;\n this.refresh();\n }\n\n setQueryValue(c: string, value: string | boolean) {\n const col = this.realColumns[c];\n if (!col?.filter) return;\n switch (col.filterType) {\n case \"enum\":\n const set = new Set((this.query[c] || []) as string[]);\n const val = `${value}`;\n if (set.has(val)) {\n set.delete(val);\n if (set.size === 0) {\n delete this.query[c];\n break;\n }\n } else {\n set.add(val);\n }\n this.query[c] = Array.from(set);\n break;\n case \"checkbox\":\n if (this.query[c]) {\n delete this.query[c];\n break;\n }\n this.query[c] = true;\n break;\n default:\n if (!value) {\n delete this.query[c];\n break;\n }\n this.query[c] = value;\n break;\n }\n this.refresh(this.filterTime ?? 300);\n }\n\n setItemsPerPage(count: number) {\n this.itemsPerPage = count;\n this.refresh();\n }\n\n loadData = (page: number, itemsPerPage: number): Promise<IPaginationData> => {\n const orderBy = this.realColumns[this.orderBy]?.sort;\n return this.dataLoader(page, itemsPerPage, orderBy, this.orderDescending, this.filter, this.query);\n };\n\n protected loadLocalData(page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean, filter: string): Promise<IPaginationData> {\n if (!this.data) {\n return Promise.resolve({\n total: 0,\n items: []\n });\n }\n const compare: (a: any, b: any) => number = orderDescending\n ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)\n : (a, b) => DynamicTableComponent.compare(orderBy, a, b);\n const from = (page - 1) * rowsPerPage;\n const dataLength = this.data.length;\n const length = Math.min(rowsPerPage, dataLength - from);\n const parallelData = this.parallelData || [];\n let data = this.data.map((item, ix) => {\n return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);\n });\n if (ObjectUtils.isString(filter) && filter.length > 0) {\n const filterRx = new RegExp(filter, \"gi\");\n data = data.filter(c => c.filter(filterRx));\n }\n const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);\n items.forEach((context, ix) => {\n context.index = from + ix;\n });\n return Promise.resolve({\n total: dataLength,\n items: items\n });\n }\n}\n","<ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\r\n <ng-template #defaultTemplate let-column=\"column\" let-item=\"item\">\r\n <span>{{ item[column] == undefined || item[column] == null ? '-' : item[column] }}</span>\r\n </ng-template>\r\n <ng-template #pureTemplate>\r\n <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\r\n </ng-template>\r\n <td [ngClass]=\"'column-' + column\"\r\n [attr.data-testid]=\"testId + '-' + column + '-' + context.rowIndex\" *ngIf=\"!template || !template.pure; else pureTemplate\">\r\n <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\" [context]=\"context\"></ng-container>\r\n </td>\r\n</ng-template>\r\n\r\n<ng-template #columnsTemplate let-context>\r\n <ng-container *ngFor=\"let column of cols\"\r\n [ngxTemplateOutlet]=\"columnTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"{\r\n template: templates[column],\r\n column: column\r\n }\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultRowTemplate let-context>\r\n <tr draggable=\"true\"\r\n #elem\r\n [ngClass]=\"{active: selected === context.item}\"\r\n (dragstart)=\"onDragStart($event, elem, context.item)\"\r\n (dragenter)=\"onDragEnter($event, elem, context.item)\"\r\n (dragleave)=\"onDragLeave($event, elem)\"\r\n (drop)=\"onDrop($event, elem, context.item)\">\r\n <ng-container [ngxTemplateOutlet]=\"columnsTemplate\" [context]=\"context\"></ng-container>\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #headerTemplate let-column=\"column\" let-toggle=\"toggle\">\r\n <ng-template #defaultCol>\r\n <span>{{ realColumns[column].title | translate }}</span>\r\n </ng-template>\r\n <a *ngIf=\"realColumns[column].sort; else defaultCol\"\r\n [ngClass]=\"['sort', orderBy !== column ? '' : (orderDescending ? 'sort-desc' : 'sort-asc')]\"\r\n (click)=\"setSorting(column, toggle)\">\r\n <span>{{ realColumns[column].title | translate }}</span>\r\n </a>\r\n</ng-template>\r\n\r\n<div class=\"dynamic-table\" #pagination=\"pagination\" [pagination]=\"loadData\" [page]=\"page\" [itemsPerPage]=\"itemsPerPage\" [updateTime]=\"updateTime\">\r\n <div class=\"table-features-row\">\r\n <ng-content select=\"[table-features-before]\"></ng-content>\r\n <div class=\"table-input-wrap table-search-filter\" *ngIf=\"showFilter\">\r\n <label *ngIf=\"filterLabel\" [attr.for]=\"tableId\">\r\n {{ filterLabel | translate }}\r\n </label>\r\n <input type=\"text\"\r\n class=\"search-input\"\r\n [attr.id]=\"tableId\"\r\n [attr.data-testid]=\"testId + '-filter-input'\"\r\n [placeholder]=\"placeholder | translate\"\r\n [ngModel]=\"filter\"\r\n (ngModelChange)=\"setFilter($event)\"/>\r\n </div>\r\n <div class=\"table-dropdown table-sort-dropdown\" dd #sortDd=\"dropdown\" *ngIf=\"orderBy\">\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: orderBy, toggle: sortDd}\"></ng-container>\r\n </div>\r\n <ul dropdownContent>\r\n <ng-container *ngFor=\"let column of cols\">\r\n <li [ngClass]=\"'sort-column sort-' + column\" *ngIf=\"realColumns[column].sort\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"table-input-wrap table-items-count\" *ngIf=\"showItems\">\r\n <label>\r\n {{ 'label.items.before' | translate }}\r\n </label>\r\n <div class=\"table-dropdown normal-dropdown\" dd>\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <a class=\"dropdown-link\">{{ itemsPerPage }}</a>\r\n </div>\r\n <ul dropdownContent>\r\n <ng-container *ngFor=\"let count of showItems\">\r\n <li [ngClass]=\"'item-count count-' + count\" (click)=\"setItemsPerPage(count)\">\r\n {{ count }}\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <label>\r\n {{ 'label.items.after' | translate }}\r\n </label>\r\n </div>\r\n <ng-content select=\"[table-features-after]\"></ng-content>\r\n </div>\r\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n <div class=\"table-responsive\">\r\n <ng-template #defaultWrapperTemplate>\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of cols\" [ngClass]=\"'header-column column-' + column\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"hasQuery\">\r\n <th *ngFor=\"let column of cols\" [ngClass]=\"['column-' + column, 'filter-column']\">\r\n <ng-container *ngIf=\"realColumns[column].filter\" [ngSwitch]=\"realColumns[column].filterType\">\r\n <ng-container *ngSwitchCase=\"'enum'\">\r\n <ng-template #optionItem let-option=\"option\">\r\n {{ (realColumns[column].enumPrefix ? realColumns[column].enumPrefix + '.' + option : option) | translate }}\r\n </ng-template>\r\n <div class=\"table-dropdown normal-dropdown\" dd [closeInside]=\"false\">\r\n <div class=\"table-toggle\" dropdownToggle>\r\n <a [ngClass]=\"'dropdown-link filter-link-' + column\">\r\n <span class=\"toggle-placeholder\" *ngIf=\"!query[column]\">\r\n {{ realColumns[column].title | translate }}\r\n </span>\r\n <span [ngClass]=\"['option-' + option, column + '-option-' + option, option]\"\r\n *ngFor=\"let option of query[column] | values; let ix = index\">\r\n <ng-container *ngIf=\"ix > 0\">, </ng-container>\r\n <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n </span>\r\n </a>\r\n </div>\r\n <ul dropdownContent>\r\n <li [ngClass]=\"[column + '-option', 'option-' + option, option]\"\r\n (click)=\"setQueryValue(column, option)\"\r\n *ngFor=\"let option of realColumns[column].enum\">\r\n <a [ngClass]=\"'toggle-link-' + column\">\r\n <input type=\"checkbox\" [checked]=\"query[column] | includes: option\">\r\n <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <input type=\"checkbox\"\r\n [attr.data-testid]=\"testId + '-filter-' + column\"\r\n [placeholder]=\"realColumns[column].title | translate\"\r\n [ngModel]=\"query[column]\"\r\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <input class=\"search-input\"\r\n type=\"text\"\r\n [attr.data-testid]=\"testId + '-filter-' + column\"\r\n [placeholder]=\"realColumns[column].title | translate\"\r\n [ngModel]=\"query[column]\"\r\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n </ng-container>\r\n </ng-container>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *paginationItem=\"let context\"\r\n [ngxTemplateOutlet]=\"rowTemplate\"\r\n [context]=\"context\"\r\n [additionalContext]=\"this\"></ng-container>\r\n </tbody>\r\n </table>\r\n </ng-template>\r\n\r\n <div class=\"table-wrapper\">\r\n <ng-content select=\"[table-top]\"></ng-content>\r\n <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n [context]=\"this\"></ng-container>\r\n <ng-content select=\"[table-bottom]\"></ng-content>\r\n </div>\r\n </div>\r\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\" [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n</div>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: \"fake-module-component\",\r\n template: \"\",\r\n})\r\nexport class FakeModuleComponent {\r\n\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n SimpleChanges, TemplateRef, ViewChild\r\n} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../../common-types\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {UnorderedListTemplateDirective} from \"../../directives/unordered-list-template.directive\";\r\n\r\n@Component({\r\n standalone: false,\r\n selector: \"unordered-list\",\r\n templateUrl: \"./unordered-list.component.html\"\r\n})\r\nexport class UnorderedListComponent implements OnChanges, AfterContentInit, AfterViewInit {\r\n\r\n @Input() data: any;\r\n @Input() keyPrefix: string;\r\n @Input() listStyle: UnorderedListStyle;\r\n @Input() path: string;\r\n @Input() level: number;\r\n @Input() templates: UnorderedListTemplate[];\r\n\r\n isArray: boolean;\r\n isObject: boolean;\r\n defaultTemplates: UnorderedListTemplates;\r\n\r\n @ContentChildren(UnorderedListTemplateDirective)\r\n private templateDirectives: QueryList<UnorderedListTemplateDirective>;\r\n\r\n @ViewChild(\"defaultKeyTemplate\")\r\n private defaultKeyTemplate: TemplateRef<any>;\r\n @ViewChild(\"defaultValueTemplate\")\r\n private defaultValueTemplate: TemplateRef<any>;\r\n @ViewChild(\"defaultItemTemplate\")\r\n private defaultItemTemplate: TemplateRef<any>;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n this.keyPrefix = \"\";\r\n this.listStyle = \"table\";\r\n this.path = \"\";\r\n this.level = 0;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.isArray = ObjectUtils.isArray(this.data);\r\n this.isObject = ObjectUtils.isObject(this.data);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n const templates = this.templateDirectives.toArray();\r\n this.templates = this.templates ? this.templates.concat(templates) : templates;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.defaultTemplates = {\r\n key: this.defaultKeyTemplate,\r\n value: this.defaultValueTemplate,\r\n item: this.defaultItemTemplate\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" let-isArray=\"isArray\" #defaultKeyTemplate>\r\n {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\r\n</ng-template>\r\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-val=\"item.value\" let-path=\"path\"\r\n let-templates=\"templates\" let-isObject=\"valueIsObject\" let-isArray=\"valueIsArray\" #defaultValueTemplate>\r\n <ng-template #value>\r\n <span [innerHTML]=\"val\"></span>\r\n </ng-template>\r\n <unordered-list [data]=\"val\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level + 1\"\r\n [templates]=\"templates\"\r\n *ngIf=\"(isObject || isArray); else value\"></unordered-list>\r\n</ng-template>\r\n<ng-template let-item=\"item\" let-data=\"data\" let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-path=\"path\" let-level=\"level\" let-templates=\"templates\" #defaultItemTemplate>\r\n <ng-template #itemKey>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"key\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-template #itemValue>\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"value\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </ng-template>\r\n <ng-container *ngIf=\"!isArray\">\r\n <th *ngIf=\"listStyle == 'table'; else itemKey\">\r\n <ng-container [ngTemplateOutlet]=\"itemKey\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <td *ngIf=\"listStyle == 'table'; else itemValue\">\r\n <ng-container [ngTemplateOutlet]=\"itemValue\"></ng-container>\r\n </td>\r\n</ng-template>\r\n<ng-template #value>\r\n <span [innerHTML]=\"data\"></span>\r\n</ng-template>\r\n<ng-container *ngIf=\"(isObject || isArray); else value\" [ngSwitch]=\"listStyle\">\r\n <ul [ngClass]=\"'level-' + level\" *ngSwitchCase=\"'list'\">\r\n <li *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </li>\r\n </ul>\r\n <table [ngClass]=\"'level-' + level\" *ngSwitchDefault>\r\n <tr *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\r\n <ng-container [unorderedListItem]=\"item\"\r\n type=\"item\"\r\n [data]=\"data\"\r\n [keyPrefix]=\"keyPrefix\"\r\n [listStyle]=\"listStyle\"\r\n [path]=\"path ? path + '.' + item.key : item.key\"\r\n [level]=\"level\"\r\n [templates]=\"templates\"\r\n [defaultTemplates]=\"defaultTemplates\"></ng-container>\r\n </tr>\r\n </table>\r\n</ng-container>\r\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild, EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges, Output,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {HttpErrorResponse, HttpEventType, HttpResponse} from \"@angular/common/http\";\nimport {lastValueFrom} from \"rxjs\";\n\nimport {\n API_SERVICE,\n IApiService,\n IFileUploadProcess,\n IFileUploadResult,\n IToasterService,\n TOASTER_SERVICE\n} from \"../../common-types\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {FileUtils} from \"../../utils/file.utils\";\nimport {BaseHttpClient} from \"../../services/base-http.client\";\n\n@Component({\n standalone: false,\n selector: \"upload\",\n styleUrls: [\"./upload.component.scss\"],\n templateUrl: \"./upload.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadComponent),\n multi: true,\n }],\n})\nexport class UploadComponent implements ControlValueAccessor, OnChanges {\n\n @Input() value: string | string[];\n @Input() disabled: boolean;\n @Input() accept: string | string[];\n @Input() baseUrl: string;\n @Input() message: string;\n @Input() multiple: boolean;\n @Input() buttonText: string;\n @Input() makeUpload: (f: File) => any;\n @Input() preProcess: (f: File) => boolean;\n @Output() onUploaded: EventEmitter<IFileUploadResult[]>;\n @Output() onRemove: EventEmitter<string[]>;\n\n acceptAttr: string;\n isImage: boolean;\n dropAllowed: boolean;\n processing: IFileUploadProcess[];\n\n onChange: Function;\n onTouched: Function;\n remove: (index?: number) => void;\n\n @ContentChild(\"uploadButton\")\n uploadButton: TemplateRef<any>;\n\n protected fileImageCache: any[];\n protected acceptTypes: string[];\n\n get http(): BaseHttpClient {\n return this.api.client as BaseHttpClient;\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n @Inject(API_SERVICE) private api: IApiService,\n @Inject(TOASTER_SERVICE) private toaster: IToasterService\n ) {\n this.value = null;\n this.disabled = false;\n this.fileImageCache = [];\n this.buttonText = \"button.select-files\";\n this.onUploaded = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n this.remove = index => {\n if (this.multiple) {\n const current = Array.from(this.value || []);\n current.splice(index, 1);\n this.writeValue(current);\n this.onRemove.emit(current);\n }\n this.writeValue(null);\n this.onRemove.emit([]);\n };\n }\n\n onDragEnter(ev: DragEvent): void {\n const types = Array.from(ev.dataTransfer.items || [])\n .filter(t => t.kind == \"file\")\n .map(t => t.type.toLowerCase());\n types.push(...Array.from(ev.dataTransfer.files || []).map(f => f.type.toLowerCase()));\n if (!types.some(type => ArrayUtils.has(this.acceptTypes, type))) {\n ev.preventDefault();\n return;\n }\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n }\n\n onDrop(): void {\n this.dropAllowed = false;\n }\n\n ngOnChanges(): void {\n this.accept = this.accept || \"\";\n this.acceptAttr = ObjectUtils.isString(this.accept) ? this.accept : this.accept.join(\",\");\n this.acceptTypes = ObjectUtils.isString(this.accept) && this.accept.length > 0\n ? this.accept.toLowerCase().split(\",\")\n : (ObjectUtils.isArray(this.accept) ? this.accept : []);\n this.isImage = /(png|jpg|jpeg|webp|gif)/gi.test(this.acceptAttr);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string | string[]) {\n this.value = value;\n this.cdr.markForCheck();\n this.onChange(this.value);\n this.onTouched(this.value);\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n onInputClick(ev: MouseEvent): void {\n const top = document.elementFromPoint(ev.clientX, ev.clientY);\n if (ev.target !== top && !this.processing) return;\n ev.preventDefault();\n }\n\n onInputChange(ev: Event): void {\n const input = ev.currentTarget as HTMLInputElement;\n if (this.processing) {\n input.value = \"\";\n return;\n }\n const length = input.files.length;\n if (length == 0) {\n this.writeValue(this.multiple ? [] : null);\n return;\n }\n const files: File[] = [];\n for (let i = 0; i <length; i++) {\n const file = input.files.item(i);\n if (this.acceptTypes.length == 0) {\n files.push(file);\n continue;\n }\n const type = file.type.toLowerCase();\n const ext = FileUtils.getExtension(file);\n if (!ArrayUtils.has(this.acceptTypes, type, ext)) continue;\n files.push(file);\n }\n if (files.length == 0) {\n this.toaster.error(\"message.invalid-files.error\");\n return;\n }\n this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {\n const ids = results.map(t => t._id || t.id);\n this.writeValue(this.multiple ? ids : (ids[0] || null));\n this.onUploaded.emit(results);\n });\n input.value = \"\";\n }\n\n getUrl(image: any): string {\n if (ObjectUtils.isBlob(image)) {\n let cache = this.fileImageCache.find(t => t.file == image);\n if (!cache) {\n cache = {file: image, url: URL.createObjectURL(image)};\n this.fileImageCache.push(cache);\n }\n return cache.url;\n }\n const url = !image ? null : image.imageUrl || image;\n if (!ObjectUtils.isString(url)) return null;\n if (url.startsWith(\"data:\")) return url;\n const baseUrl = this.baseUrl;\n const query = this.isImage ? `?type=preview` : ``;\n if (!baseUrl) {\n return `${url}${query}`;\n }\n return `${baseUrl}/${url}${query}`;\n }\n\n getBgUrl(image: any): string {\n return `url('${this.getUrl(image)}')`;\n }\n\n async processFiles(files: File[]): Promise<IFileUploadResult[]> {\n if (this.processing) return null;\n const headers = this.http.makeHeaders();\n const makeUpload = ObjectUtils.isFunction(this.makeUpload) ? this.makeUpload : f => {\n const form = new FormData();\n form.append(\"file\", f);\n return form;\n };\n const preProcess = ObjectUtils.isFunction(this.preProcess) ? this.preProcess : () => {\n return false;\n };\n this.processing = files.filter(f => !preProcess(f)).map(file => {\n const process: IFileUploadProcess = {\n file,\n progress: 0\n };\n process.promise = FileUtils.getFilePreview(file).then(preview => {\n process.preview = `url('${preview}')`;\n this.cdr.detectChanges();\n });\n return process;\n });\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const requests = this.processing.map(async p => {\n await p.promise;\n const request = this.http.post(baseUrl, makeUpload(p.file), {\n headers, observe: \"events\", reportProgress: true\n });\n request.subscribe(value => {\n if (value.type === HttpEventType.UploadProgress) {\n p.progress = Math.round(value.loaded / value.total * 100);\n this.cdr.detectChanges();\n }\n });\n return lastValueFrom(request)\n .then((res: HttpResponse<any>) => {\n const body = res.body;\n if (!ObjectUtils.isObject(body)) {\n return {id: body};\n }\n return body;\n }, (e: HttpErrorResponse) => {\n this.toaster.error(e.error?.message || e.message || `Can\"t upload file: ${p.file.name}`);\n return null;\n });\n });\n const results = await Promise.all(requests);\n this.processing = null;\n this.cdr.detectChanges();\n return results.filter(r => r !== null);\n }\n}\n","<ng-template #defaultUploadBtn let-loading=\"loading\">\r\n <a class=\"btn btn-primary\" [ngClass]=\"{loading: loading}\">\r\n {{ buttonText | translate }}\r\n </a>\r\n</ng-template>\r\n<ng-template #defaultDownloadBtn let-loading=\"loading\">\r\n <a class=\"btn btn-primary\" [ngClass]=\"{loading: loading}\">\r\n {{ 'button.download' | translate }}\r\n </a>\r\n</ng-template>\r\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\r\n <div class=\"upload-item\" [ngStyle]=\"!isImage ? {} : {backgroundImage: getBgUrl(item)}\">\r\n <a class=\"remove-item-btn\" (click)=\"remove(index)\"></a>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"upload\">\r\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\r\n <input type=\"file\"\r\n #input\r\n [multiple]=\"multiple\"\r\n [accept]=\"acceptAttr\"\r\n (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDrop()\"\r\n (drop)=\"onDrop()\"\r\n (click)=\"onInputClick($event)\"\r\n (blur)=\"onTouched($event)\"\r\n (change)=\"onInputChange($event)\"/>\r\n <div class=\"upload-message\"\r\n [ngClass]=\"{'has-value': value?.length}\"\r\n [innerHTML]=\"message | translate | safe:'html'\"\r\n *ngIf=\"message\">\r\n </div>\r\n <div class=\"upload-container\">\r\n\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\r\n *ngIf=\"!multiple && value\">\r\n </ng-container>\r\n <ng-container *ngIf=\"multiple\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: image, index: ix}\"\r\n *ngFor=\"let image of value; let ix = index\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"upload-item\"\r\n [ngStyle]=\"!proc.preview ? {} : {backgroundImage: proc.preview}\"\r\n *ngFor=\"let proc of processing\">\r\n <div class=\"upload-progress\">\r\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\r\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"upload-btn\" (click)=\"input.click()\">\r\n <ng-container [ngTemplateOutlet]=\"uploadButton || defaultUploadBtn\"\r\n [ngTemplateOutletContext]=\"{loading: !!processing, buttonText: buttonText}\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import {ErrorHandler} from \"@angular/core\";\r\nimport {EVENT_MANAGER_PLUGINS} from \"@angular/platform-browser\";\r\nimport {UrlSerializer} from \"@angular/router\";\r\nimport {DeviceDetectorService} from \"ngx-device-detector\";\r\n\r\nimport {IConfigService} from \"./common-types\";\r\n\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {AclService} from \"./services/acl.service\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {BaseHttpClient} from \"./services/base-http.client\";\r\nimport {BaseHttpService} from \"./services/base-http.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ErrorHandlerService} from \"./services/error-handler.service\";\r\nimport {EventsService} from \"./services/events.service\";\r\nimport {FormatterService} from \"./services/formatter.service\";\r\nimport {GlobalTemplateService} from \"./services/global-template.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {LanguageService} from \"./services/language.service\";\r\nimport {LocalHttpService} from \"./services/local-http.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {SocketService} from \"./services/socket.service\";\r\nimport {OpenApiService} from \"./services/open-api.service\";\r\nimport {StateService} from \"./services/state.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {StorageService} from \"./services/storage.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {ComponentLoaderService} from \"./services/component-loader.service\";\r\nimport {TranslatedUrlSerializer} from \"./services/translated-url.serializer\";\r\nimport {UniversalService} from \"./services/universal.service\";\r\nimport {WasmService} from \"./services/wasm.service\";\r\nimport {DragDropEventPlugin} from \"./plugins/drag-drop-event.plugin\";\r\nimport {ResizeEventPlugin} from \"./plugins/resize-event.plugin\";\r\nimport {ScrollEventPlugin} from \"./plugins/scroll-event.plugin\";\r\nimport {AsyncMethodBase} from \"./directives/async-method.base\";\r\nimport {AsyncMethodDirective} from \"./directives/async-method.directive\";\r\nimport {BackgroundDirective} from \"./directives/background.directive\";\r\nimport {ComponentLoaderDirective} from \"./directives/component-loader.directive\";\r\nimport {DynamicTableTemplateDirective} from \"./directives/dynamic-table-template.directive\";\r\nimport {GlobalTemplateDirective} from \"./directives/global-template.directive\";\r\nimport {IconDirective} from \"./directives/icon.directive\";\r\nimport {NgxTemplateOutletDirective} from \"./directives/ngx-template-outlet.directive\";\r\nimport {PaginationDirective} from \"./directives/pagination.directive\";\r\nimport {PaginationItemDirective} from \"./directives/pagination-item.directive\";\r\nimport {ResourceIfDirective} from \"./directives/resource-if.directive\";\r\nimport {StickyDirective} from \"./directives/sticky.directive\";\r\nimport {StickyClassDirective} from \"./directives/sticky-class.directive\";\r\nimport {DropdownDirective} from \"./directives/dropdown.directive\";\r\nimport {DropdownContentDirective} from \"./directives/dropdown-content.directive\";\r\nimport {DropdownToggleDirective} from \"./directives/dropdown-toggle.directive\";\r\nimport {UnorderedListItemDirective} from \"./directives/unordered-list-item.directive\";\r\nimport {UnorderedListTemplateDirective} from \"./directives/unordered-list-template.directive\";\r\n\r\nimport {ChunkPipe} from \"./pipes/chunk.pipe\";\r\nimport {EntriesPipe} from \"./pipes/entries.pipe\";\r\nimport {ExtraItemPropertiesPipe} from \"./pipes/extra-item-properties.pipe\";\r\nimport {FilterPipe} from \"./pipes/filter.pipe\";\r\nimport {FindPipe} from \"./pipes/find.pipe\";\r\nimport {FormatNumberPipe} from \"./pipes/format-number.pipe\";\r\nimport {GetOffsetPipe} from \"./pipes/get-offset.pipe\";\r\nimport {GetTypePipe} from \"./pipes/get-type.pipe\";\r\nimport {GetValuePipe} from \"./pipes/get-value.pipe\";\r\nimport {GlobalTemplatePipe} from \"./pipes/global-template.pipe\";\r\nimport {GroupByPipe} from \"./pipes/group-by.pipe\";\r\nimport {IncludesPipe} from \"./pipes/includes.pipe\";\r\nimport {IsTypePipe} from \"./pipes/is-type.pipe\";\r\nimport {JoinPipe} from \"./pipes/join.pipe\";\r\nimport {KeysPipe} from \"./pipes/keys.pipe\";\r\nimport {MapPipe} from \"./pipes/map.pipe\";\r\nimport {MaxPipe} from \"./pipes/max.pipe\";\r\nimport {MinPipe} from \"./pipes/min.pipe\";\r\nimport {PopPipe} from \"./pipes/pop.pipe\";\r\nimport {ReducePipe} from \"./pipes/reduce.pipe\";\r\nimport {RemapPipe} from \"./pipes/remap.pipe\";\r\nimport {ReplacePipe} from \"./pipes/replace.pipe\";\r\nimport {ReversePipe} from \"./pipes/reverse.pipe\";\r\nimport {RoundPipe} from \"./pipes/round.pipe\";\r\nimport {SafeHtmlPipe} from \"./pipes/safe-html.pipe\";\r\nimport {ShiftPipe} from \"./pipes/shift.pipe\";\r\nimport {SplitPipe} from \"./pipes/split.pipe\";\r\nimport {TranslatePipe} from \"./pipes/translate.pipe\";\r\nimport {ValuesPipe} from \"./pipes/values.pipe\";\r\n\r\nimport {DropListComponent} from \"./components/drop-list/drop-list.component\";\r\nimport {DynamicTableComponent} from \"./components/dynamic-table/dynamic-table.component\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\nimport {PaginationMenuComponent} from \"./components/pagination-menu/pagination-menu.component\";\r\nimport {UnorderedListComponent} from \"./components/unordered-list/unordered-list.component\";\r\nimport {UploadComponent} from \"./components/upload/upload.component\";\r\n\r\n// --- Pipes ---\r\nexport const pipes = [\r\n ChunkPipe,\r\n EntriesPipe,\r\n ExtraItemPropertiesPipe,\r\n FilterPipe,\r\n FindPipe,\r\n FormatNumberPipe,\r\n GetOffsetPipe,\r\n GetTypePipe,\r\n GetValuePipe,\r\n GlobalTemplatePipe,\r\n GroupByPipe,\r\n IncludesPipe,\r\n IsTypePipe,\r\n JoinPipe,\r\n KeysPipe,\r\n MapPipe,\r\n MaxPipe,\r\n MinPipe,\r\n PopPipe,\r\n ReducePipe,\r\n RemapPipe,\r\n ReplacePipe,\r\n ReversePipe,\r\n RoundPipe,\r\n SafeHtmlPipe,\r\n ShiftPipe,\r\n SplitPipe,\r\n TranslatePipe,\r\n ValuesPipe\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n AsyncMethodBase,\r\n AsyncMethodDirective,\r\n BackgroundDirective,\r\n ComponentLoaderDirective,\r\n DynamicTableTemplateDirective,\r\n GlobalTemplateDirective,\r\n IconDirective,\r\n NgxTemplateOutletDirective,\r\n PaginationDirective,\r\n PaginationItemDirective,\r\n ResourceIfDirective,\r\n StickyDirective,\r\n StickyClassDirective,\r\n DropdownDirective,\r\n DropdownContentDirective,\r\n DropdownToggleDirective,\r\n UnorderedListItemDirective,\r\n UnorderedListTemplateDirective\r\n];\r\n\r\n// --- Components ---\r\nexport const components = [\r\n DropListComponent,\r\n DynamicTableComponent,\r\n FakeModuleComponent,\r\n PaginationMenuComponent,\r\n UnorderedListComponent,\r\n UploadComponent\r\n];\r\n\r\nexport const providers = [\r\n ...pipes,\r\n BaseHttpClient,\r\n BaseHttpService,\r\n AuthGuard,\r\n AclService,\r\n ApiService,\r\n StaticAuthService,\r\n ConfigService,\r\n BaseDialogService,\r\n ErrorHandlerService,\r\n EventsService,\r\n FormatterService,\r\n GlobalTemplateService,\r\n IconService,\r\n LanguageService,\r\n LocalHttpService,\r\n OpenApiService,\r\n PromiseService,\r\n SocketService,\r\n StateService,\r\n StaticLanguageService,\r\n StorageService,\r\n BaseToasterService,\r\n ComponentLoaderService,\r\n TranslatedUrlSerializer,\r\n UniversalService,\r\n WasmService,\r\n DeviceDetectorService,\r\n GlobalTemplateService,\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: DragDropEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: ResizeEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: EVENT_MANAGER_PLUGINS,\r\n useClass: ScrollEventPlugin,\r\n multi: true\r\n },\r\n {\r\n provide: UrlSerializer,\r\n useExisting: TranslatedUrlSerializer\r\n },\r\n {\r\n provide: ErrorHandler,\r\n useExisting: ErrorHandlerService\r\n }\r\n\r\n];\r\n\r\nexport function loadConfig(config: IConfigService): any {\r\n return config.load;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {IWasi, IWasmExports, TypedArray} from \"../common-types\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class Wasi implements IWasi {\r\n\r\n protected env: {[key: string]: string};\r\n protected instantiated: boolean;\r\n protected wasi: any;\r\n protected wasm: IWasmExports;\r\n protected envStrings: string[];\r\n\r\n constructor() {\r\n this.env = {};\r\n this.instantiated = false;\r\n this.wasi = [\r\n \"emscripten_notify_memory_growth\",\r\n \"proc_exit\",\r\n \"environ_get\",\r\n \"environ_sizes_get\",\r\n \"fd_close\",\r\n \"fd_write\",\r\n \"fd_read\",\r\n \"fd_seek\",\r\n ].reduce((res, key) => {\r\n if (typeof this[key] === \"function\") {\r\n res[key] = this[key].bind(this);\r\n }\r\n return res;\r\n }, {});\r\n }\r\n\r\n instantiate(bytes: ArrayBuffer): Promise<IWasmExports> {\r\n if (this.instantiated) {\r\n throw new Error(\"WASI already instantiated\");\r\n }\r\n this.instantiated = true;\r\n return WebAssembly.instantiate(bytes, {\r\n wasi_snapshot_preview1: this.wasi,\r\n env: this.wasi\r\n }).then(module => {\r\n const exports = module.instance.exports as any;\r\n this.wasm = {\r\n ...exports,\r\n writeArrayToMemory: (array: TypedArray) => {\r\n const bytes = array.length * array.BYTES_PER_ELEMENT;\r\n const pointer = exports.malloc(bytes);\r\n const ctr = array.constructor as any;\r\n const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);\r\n heapArray.set(array);\r\n return pointer;\r\n },\r\n readArrayFromMemory: (pointer: number, array: TypedArray) => {\r\n const ctr = array.constructor as any;\r\n const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);\r\n array.set(heapArray);\r\n return array;\r\n }\r\n } as IWasmExports;\r\n this.updateMemoryViews();\r\n return this.wasm;\r\n });\r\n }\r\n\r\n protected updateMemoryViews(): void {\r\n const buffer = this.wasm.memory.buffer;\r\n this.wasm.HEAP8 = new Int8Array(buffer);\r\n this.wasm.HEAP16 = new Int16Array(buffer);\r\n this.wasm.HEAP32 = new Int32Array(buffer);\r\n this.wasm.HEAPU8 = new Uint8Array(buffer);\r\n this.wasm.HEAPU16 = new Uint16Array(buffer);\r\n this.wasm.HEAPU32 = new Uint32Array(buffer);\r\n this.wasm.HEAPF32 = new Float32Array(buffer);\r\n this.wasm.HEAPF64 = new Float64Array(buffer);\r\n }\r\n\r\n protected getEnvStrings(): string[] {\r\n if (!this.envStrings) {\r\n let x;\r\n const env = {};\r\n for (x in this.env) {\r\n if (this.env[x] === undefined) delete env[x]; else env[x] = this.env[x]\r\n }\r\n const strings = [];\r\n for (x in env) {\r\n strings.push(x + \"=\" + env[x])\r\n }\r\n this.envStrings = strings\r\n }\r\n return this.envStrings;\r\n }\r\n\r\n protected stringToAscii(str, buffer) {\r\n const HEAP8 = this.wasm.HEAP8;\r\n for (let i = 0; i < str.length; ++i) {\r\n HEAP8[buffer++ >> 0] = str.charCodeAt(i)\r\n }\r\n HEAP8[buffer >> 0] = 0\r\n }\r\n\r\n emscripten_notify_memory_growth(memoryIndex: number): void {\r\n this.updateMemoryViews();\r\n }\r\n\r\n proc_exit(rval: number): void {\r\n console.log(\"proc_exit\", rval);\r\n }\r\n\r\n environ_get(environ: number, environ_buf: number): number {\r\n if (!this.wasm.HEAP8.byteLength) {\r\n this.emscripten_notify_memory_growth(0);\r\n }\r\n const HEAPU32 = this.wasm.HEAPU32;\r\n let bufSize = 0;\r\n this.getEnvStrings().forEach((str: string, i: number) => {\r\n const ptr = environ_buf + bufSize;\r\n HEAPU32[environ + i * 4 >> 2] = ptr;\r\n this.stringToAscii(str, ptr);\r\n bufSize += str.length + 1\r\n });\r\n return 0\r\n }\r\n\r\n environ_sizes_get(penviron_count: number, penviron_buf_size: number): number {\r\n if (!this.wasm.HEAP8.byteLength) {\r\n this.emscripten_notify_memory_growth(0);\r\n }\r\n const HEAPU32 = this.wasm.HEAPU32;\r\n const strings = this.getEnvStrings();\r\n HEAPU32[penviron_count >> 2] = strings.length;\r\n let bufSize = 0;\r\n strings.forEach(function (string) {\r\n bufSize += string.length + 1\r\n });\r\n HEAPU32[penviron_buf_size >> 2] = bufSize;\r\n // WASI_ESUCCESS\r\n return 0\r\n }\r\n\r\n fd_close(fd: number): number {\r\n // WASI_ESUCCESS\r\n return 0;\r\n }\r\n\r\n fd_write(fd: number, iovs: number, iovs_len: number, nwritten: number): number {\r\n if (fd !== 1) {\r\n // WASI_EBADF\r\n return 8;\r\n }\r\n if (iovs_len !== 1) {\r\n // WASI_ENOSYS\r\n return 52;\r\n }\r\n this.wasm.HEAPU32[nwritten >> 2] = this.wasm.HEAPU32[iovs + 4 >> 2];\r\n // WASI_ESUCCESS\r\n return 0;\r\n }\r\n\r\n fd_read(fd: number, iovs: number, iovs_len: number, nread: number): number {\r\n // WASI_EINVAL\r\n return 28;\r\n }\r\n\r\n fd_seek(fd: number, offset: number, whence: number, newOffset: number): number {\r\n // WASI_EINVAL\r\n return 28;\r\n }\r\n}\r\n","import {\r\n APP_INITIALIZER,\r\n EnvironmentProviders,\r\n Injector,\r\n makeEnvironmentProviders,\r\n ModuleWithProviders,\r\n NgModule,\r\n Provider\r\n} from \"@angular/core\";\r\nimport {APP_BASE_HREF, CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {\r\n API_SERVICE,\r\n APP_BASE_URL,\r\n AUTH_SERVICE,\r\n CONFIG_SERVICE,\r\n DIALOG_SERVICE, DYNAMIC_MODULE_INFO, DynamicModuleInfo,\r\n ICON_SERVICE,\r\n IModuleConfig,\r\n LANGUAGE_SERVICE,\r\n PROMISE_SERVICE,\r\n RESIZE_DELAY,\r\n RESIZE_STRATEGY,\r\n ROOT_ELEMENT,\r\n SOCKET_IO_PATH,\r\n TOASTER_SERVICE,\r\n WASI_IMPLEMENTATION\r\n} from \"./common-types\";\r\nimport {components, directives, loadConfig, pipes, providers} from \"./ngx-utils.imports\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {Wasi} from \"./utils/wasi\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ROUTES} from \"@angular/router\";\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\n\r\nexport function loadBaseUrl(): string {\r\n if (typeof (document) === \"undefined\" || typeof (location) === \"undefined\") return \"/\";\r\n const scripts = Array.from(document.scripts);\r\n const currentScript = (document.currentScript as HTMLScriptElement);\r\n let currentUrl = new URL(currentScript?.src ?? \"http://localhost:4200/\");\r\n if (!currentScript) {\r\n try {\r\n // noinspection ExceptionCaughtLocallyJS\r\n throw new Error();\r\n } catch (e) {\r\n const qualifiedUrl = location.protocol + \"//\" + location.host;\r\n const stack = (e.stack || \"\") as string;\r\n const srcUrl = (\r\n stack.match(new RegExp(qualifiedUrl + \".*?\\\\.js\", \"g\")) ||\r\n stack.match(/http([A-Z0-9:\\/\\-.]+)\\.js/gi) ||\r\n [`${qualifiedUrl}/main.js`]\r\n ).shift();\r\n currentUrl = new URL(srcUrl ?? \"\");\r\n }\r\n }\r\n const mainScript = scripts.find(s => {\r\n if (!s.src) return false;\r\n const sUrl = new URL(s.src);\r\n return currentUrl.host === sUrl.host && sUrl.pathname.includes(\"main\");\r\n });\r\n const scriptUrl = !mainScript ? currentUrl : new URL(mainScript.src);\r\n const path = scriptUrl.pathname?.split(\"/\") ?? [];\r\n path.pop();\r\n return `${scriptUrl.protocol}//${scriptUrl.host}${path.join(\"/\")}/`;\r\n}\r\n\r\nexport function loadBaseHref(baseUrl: string): string {\r\n try {\r\n return new URL(baseUrl).pathname;\r\n } catch (e) {\r\n console.log(e);\r\n return \"/\";\r\n }\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n ...pipes,\r\n ...directives,\r\n ...components\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n exports: [\r\n ...pipes,\r\n ...directives,\r\n ...components,\r\n FormsModule\r\n ],\r\n providers: pipes\r\n})\r\nexport class NgxUtilsModule {\r\n\r\n private static getProviders(config?: IModuleConfig): Provider[] {\r\n return [\r\n ...providers,\r\n {\r\n provide: API_SERVICE,\r\n useExisting: (!config ? null : config.apiService) || ApiService\r\n },\r\n {\r\n provide: AUTH_SERVICE,\r\n useExisting: (!config ? null : config.authService) || StaticAuthService\r\n },\r\n {\r\n provide: ICON_SERVICE,\r\n useExisting: (!config ? null : config.iconService) || IconService\r\n },\r\n {\r\n provide: LANGUAGE_SERVICE,\r\n useExisting: (!config ? null : config.languageService) || StaticLanguageService\r\n },\r\n {\r\n provide: TOASTER_SERVICE,\r\n useExisting: (!config ? null : config.toasterService) || BaseToasterService\r\n },\r\n {\r\n provide: PROMISE_SERVICE,\r\n useExisting: (!config ? null : config.promiseService) || PromiseService\r\n },\r\n {\r\n provide: CONFIG_SERVICE,\r\n useExisting: (!config ? null : config.configService) || ConfigService\r\n },\r\n {\r\n provide: DIALOG_SERVICE,\r\n useExisting: (!config ? null : config.dialogService) || BaseDialogService\r\n },\r\n {\r\n provide: WASI_IMPLEMENTATION,\r\n useExisting: (!config ? null : config.wasiImplementation) || Wasi\r\n },\r\n {\r\n provide: APP_BASE_URL,\r\n useFactory: (!config ? null : config.baseUrl) || loadBaseUrl,\r\n deps: [Injector]\r\n },\r\n {\r\n provide: ROOT_ELEMENT,\r\n useValue: null\r\n },\r\n {\r\n provide: RESIZE_DELAY,\r\n useValue: (!config ? null : config.resizeDelay) ?? 50,\r\n },\r\n {\r\n provide: RESIZE_STRATEGY,\r\n useValue: (!config ? null : config.resizeStrategy) ?? \"object\",\r\n },\r\n {\r\n provide: SOCKET_IO_PATH,\r\n useValue: (!config ? null : config.socketPath) ?? \"/socket\",\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (!config ? null : config.initializeApp) || loadConfig,\r\n multi: true,\r\n deps: [(!config ? null : config.initializeApp) ? Injector : CONFIG_SERVICE]\r\n },\r\n {\r\n provide: APP_BASE_HREF,\r\n useFactory: loadBaseHref,\r\n deps: [APP_BASE_URL]\r\n }\r\n ];\r\n }\r\n\r\n static forRoot(config?: IModuleConfig): ModuleWithProviders<NgxUtilsModule> {\r\n return {\r\n ngModule: NgxUtilsModule,\r\n providers: NgxUtilsModule.getProviders(config)\r\n };\r\n }\r\n\r\n static provideUtils(config?: IModuleConfig): EnvironmentProviders {\r\n return makeEnvironmentProviders(NgxUtilsModule.getProviders(config));\r\n }\r\n\r\n static useDynamic(moduleInfo: DynamicModuleInfo): ModuleWithProviders<NgxUtilsModule> {\r\n return {\r\n ngModule: NgxUtilsModule,\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n multi: true,\r\n useValue: [\r\n {\r\n loadChildren: moduleInfo.loadChildren,\r\n matcher: AuthGuard.noRouteMatch\r\n },\r\n {\r\n component: FakeModuleComponent,\r\n matcher: AuthGuard.wildRouteMatch\r\n }\r\n ]\r\n },\r\n {\r\n provide: DYNAMIC_MODULE_INFO,\r\n useValue: moduleInfo,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UniversalService","i1","emptyRemove","EventManagerPlugin","defaultFilter","i1.FormatterService","i1.GlobalTemplateService","i2.UniversalService","i1.ComponentLoaderService","i1.PaginationDirective","i1.EventsService","i1.DropdownDirective","i2.GetValuePipe","i3.SafeHtmlPipe","i4.TranslatePipe","i3","i4.SafeHtmlPipe","i2","i3.NgxTemplateOutletDirective","i4.PaginationDirective","i5.PaginationItemDirective","i6.DropdownDirective","i7.DropdownContentDirective","i8.DropdownToggleDirective","i9.PaginationMenuComponent","i10.IncludesPipe","i11.TranslatePipe","i12.ValuesPipe","i3.EntriesPipe","i2.SafeHtmlPipe","i3.TranslatePipe"],"mappings":"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,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAAI;AAE9E,MAAM,SAAS,GAAG;AACd,IAAA,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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"}