@esfaenza/admin-module 15.2.26 → 15.2.27
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.
- package/esm2020/lib/admin-module.comms.service.mjs +4 -4
- package/esm2020/lib/admin-module.module.mjs +5 -5
- package/esm2020/lib/components/_shared/node_detail.component.loc.mjs +4 -4
- package/esm2020/lib/components/_shared/node_detail.component.mjs +4 -4
- package/esm2020/lib/components/audits/adm_audits.component.loc.mjs +4 -4
- package/esm2020/lib/components/audits/adm_audits.component.mjs +16 -19
- package/esm2020/lib/components/dynamic_views/adm_dynamic_views.component.loc.mjs +4 -4
- package/esm2020/lib/components/dynamic_views/adm_dynamic_views.component.mjs +18 -21
- package/esm2020/lib/components/enqueues/adm_enq.component.loc.mjs +4 -4
- package/esm2020/lib/components/enqueues/adm_enq.component.mjs +16 -18
- package/esm2020/lib/components/logs/adm_logs.component.loc.mjs +4 -4
- package/esm2020/lib/components/logs/adm_logs.component.mjs +12 -14
- package/esm2020/lib/components/metrics/metrics_search.component.loc.mjs +4 -4
- package/esm2020/lib/components/metrics/metrics_search.component.mjs +46 -50
- package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +4 -4
- package/esm2020/lib/components/profiler/adm_profiler.component.mjs +24 -32
- package/esm2020/lib/components/topact/topact_search.component.loc.mjs +4 -4
- package/esm2020/lib/components/topact/topact_search.component.mjs +30 -35
- package/esm2020/lib/components/workers/adm_wrk.component.loc.mjs +4 -4
- package/esm2020/lib/components/workers/adm_wrk.component.mjs +29 -48
- package/esm2020/lib/models/components/ProfilerDataNode.loc.mjs +4 -4
- package/esm2020/lib/pipes/format_time.pipe.mjs +4 -4
- package/esm2020/lib/services/admin-module.base.service.mjs +131 -0
- package/fesm2015/esfaenza-admin-module.mjs +367 -241
- package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
- package/fesm2020/esfaenza-admin-module.mjs +334 -268
- package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
- package/lib/components/audits/adm_audits.component.d.ts +4 -4
- package/lib/components/dynamic_views/adm_dynamic_views.component.d.ts +5 -5
- package/lib/components/enqueues/adm_enq.component.d.ts +4 -4
- package/lib/components/logs/adm_logs.component.d.ts +4 -4
- package/lib/components/metrics/metrics_search.component.d.ts +5 -5
- package/lib/components/profiler/adm_profiler.component.d.ts +6 -7
- package/lib/components/topact/topact_search.component.d.ts +4 -4
- package/lib/components/workers/adm_wrk.component.d.ts +7 -5
- package/lib/services/admin-module.base.service.d.ts +41 -0
- package/package.json +5 -12
- package/esm2020/lib/models/externals/Repository.mjs +0 -25
- package/lib/models/externals/Repository.d.ts +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-module/src/lib/models/components/AuditsView.ts","../../../projects/admin-module/src/lib/models/externals/Repository.ts","../../../projects/admin-module/src/lib/tokens.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-module/src/lib/models/shared/KeyValue.ts","../../../projects/admin-module/src/lib/models/components/ProcessesView.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-module/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.html","../../../projects/admin-module/src/lib/models/components/LocksView.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-module/src/lib/models/components/MetricsView.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-module/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-module/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-module/src/lib/admin-module-messages.ts","../../../projects/admin-module/src/lib/admin-module.comms.service.ts","../../../projects/admin-module/src/lib/admin-module.module.ts","../../../projects/admin-module/src/public-api.ts","../../../projects/admin-module/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n}","export const Repository = {\r\n GET_Director_ChangeProcessConsumerGroup: \"/api/Director/ChangeProcessConsumerGroup\",\r\n GET_Director_ClearAllCaches: \"/api/Director/ClearAllCaches\",\r\n GET_Director_GetConsumerGroups: \"/api/Director/GetConsumerGroups#cache\",\r\n GET_Director_GetInfos: \"/api/Director/GetInfos\",\r\n GET_Director_GetMetrics: \"/api/Director/GetMetrics\",\r\n POST_Director_GetMetrics: \"/api/Director/GetMetrics\",\r\n POST_Director_GetProfilerDataNodes: \"/api/Director/GetProfilerDataNodes\",\r\n POST_Director_GetServerAudits: \"/api/Director/GetServerAudits\",\r\n POST_Director_GetDynamicViewData: \"/api/Director/GetDynamicViewData\",\r\n POST_Director_GetServerLocks: \"/api/Director/GetServerLocks\",\r\n GET_Director_GetServerLogs: \"/api/Director/GetServerLogs\",\r\n GET_Director_GetDynamicViews: \"/api/Director/GetDynamicViews\",\r\n POST_Director_GetServerWorkers: \"/api/Director/GetServerWorkers\",\r\n POST_Director_GetTopActivities: \"/api/Director/GetTopActivities\",\r\n GET_Director_GetWorkerStatus: \"/api/Director/GetWorkerStatus\",\r\n GET_Director_InvalidateServerSideCache: \"/api/Director/InvalidateServerSideCache\",\r\n GET_Director_KillProcess: \"/api/Director/KillProcess\",\r\n GET_Director_SetProcessTracing: \"/api/Director/SetProcessTracing\",\r\n GET_Director_StartWorker: \"/api/Director/StartWorker\",\r\n GET_Director_StopWorker: \"/api/Director/StopWorker\",\r\n GET_Director_GetNodeStats: \"/api/Director/GetNodeStats\",\r\n GET_Director_GetSessionStats: \"/api/Director/GetSessionStats\",\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { InterComService, InboundMessageTypes } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\"\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerAudits\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerAudits\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: AuditsView) {\r\n this.http.post<AuditsView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <!-- Per ora commentato -->\r\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n\r\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\r\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\r\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\r\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\r\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\r\n\r\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let item\">{{item.user}}</span>\r\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\r\n <span *td=\"'Action'; let item\">{{item.action}}</span>\r\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\r\n <span *td=\"'Route'; let item\">{{item.route}}</span>\r\n <span *td=\"'Args'; let item\">{{item.args}}</span>\r\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\r\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\r\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\r\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Operatore\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\"\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerWorkers\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerWorkers\"], this.searchView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: ProcessesView) {\r\n this.http.post<ProcessesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n toggleTracing(process: any, tracing: boolean) {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"] || process.properties[\"INST_ID\"])\r\n .set(\"sid\", process.properties[\"sid\"] || process.properties[\"SID\"])\r\n .set(\"serial\", process.properties[\"serial\"] || process.properties[\"SERIAL\"])\r\n .set(\"enable\", tracing.toString());\r\n this.http.get<string>(Repository[\"GET_Director_SetProcessTracing\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n () => {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", process.properties[\"inst_id\"] || process.properties[\"INST_ID\"])\r\n .set(\"sid\", process.properties[\"sid\"] || process.properties[\"SID\"])\r\n .set(\"serial\", process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.http.get<string>(Repository[\"GET_Director_KillProcess\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n loadCgDictionaries() {\r\n this.http.get<KeyValue[]>(Repository[\"GET_Director_GetConsumerGroups\"]).subscribe(t => this.CGs = t);\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n doChangeCg() {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"])\r\n .set(\"sid\", this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"])\r\n .set(\"serial\", this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"])\r\n .set(\"consumer_group\", this.newCg);\r\n this.http.get<string>(Repository[\"GET_Director_ChangeProcessConsumerGroup\"], pars).subscribe(t => {\r\n this.msgExts.manageStringResponse(t, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n });\r\n\r\n return true;\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [SelectLabel]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Operatore' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [SelectLabel]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [SelectLabel]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [SelectLabel]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span> \r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\"\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n \r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Dettaglio Attività Nodo' | localize: lc}}\r\n <span *ngIf=\"NodeDetails\"> {{NodeDetails.nodeid}}</span>\r\n </h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"NodeDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\r\n </div>\r\n <div class=\"col-md-6\">\r\n\t\t\t\t\t<strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\r\n </div>\r\n </div>\r\n\t\t\t<div>\r\n\t\t\t\t<h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\r\n\t\t\t\t{{NodeDetails.nodedescription}}\r\n\t\t\t</div>\r\n\t\t\t<div style=\"max-height: 200px; overflow: auto\" *ngIf=\"(NodeDetails?.waitstack?.length || 0) > 0\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\r\n <div *ngFor=\"let wait of NodeDetails.waitstack; let i = index;\">\r\n <ng-container *ngFor=\"let _ of [].constructor(i+1)\">-</ng-container> {{wait.nodeid}} - {{wait.nodedescription}}: \r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \r\n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\r\n </div>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\r\n <es-line-chart *ngIf=\"NodeDetails.sessionchart\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"NodeDetails.sessionchart\"\r\n [Legend]=\"true\" \r\n name=\"nodeDetailSessionChart\"\r\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <es-pie-chart *ngIf=\"NodeDetails.loadchart\" [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\"\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n \r\n constructor(\r\n private expExts: ExportService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(Repository[\"POST_Director_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(Repository[\"POST_Director_GetProfilerDataNodes\"], this.searchView);\r\n }\r\n\r\n POSTGetItems(url: string, data: ProfilerDataNodesView) {\r\n this.http.post<ProfilerDataNodesView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n });\r\n }\r\n\r\n prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n this.http.post<ProfilerDataNodesView>(Repository[\"POST_Director_GetProfilerDataNodes\"], view).subscribe(t => {\r\n let items: ProfilerDataNode[] = this.expExts.deserializeForExport(t.items, ProfilerDataNode);\r\n dataCallBack(items);\r\n });\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n let pars = new HttpParams().set('nodeId', nodeId);\r\n this.http.get<NodeStats>(Repository.GET_Director_GetNodeStats, pars).subscribe(t => {\r\n this.NodeDetails = t;\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span> \r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\r\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\r\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\r\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\r\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\r\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\r\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\r\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\r\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\r\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\r\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\r\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\r\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\r\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\r\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\r\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\r\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\r\n\r\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\r\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\r\nimport { catchError, takeUntil } from \"rxjs/operators\";\r\nimport { ReplaySubject, interval, of } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { ActiveSession } from \"../../models/components/ActiveSession\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\"\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n \r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n this.updateRealTimeWindow();\r\n });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data = await this.http.post<TopActivitiesDataView>(Repository.POST_Director_GetTopActivities, data).toPromise();\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(Repository.POST_Director_GetTopActivities, this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(Repository.POST_Director_GetTopActivities, sv, update);\r\n }\r\n\r\n POSTGetItems(url: string, data: TopActivitiesDataView, update: boolean) {\r\n\r\n this.http.post<TopActivitiesDataView>(url, data).subscribe(async (t) => {\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = t;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n var dirinfos = await this.http.get<DirectorInfos>(Repository.GET_Director_GetInfos, null, null, false).pipe(catchError(_ => of(null as DirectorInfos))).toPromise();\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, t, dirinfos);\r\n });\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n let pars = new HttpParams().set('nodeId', nodeId);\r\n this.http.get<NodeStats>(Repository.GET_Director_GetNodeStats, pars).subscribe(t => {\r\n this.NodeDetails = t;\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n chart.Chart.events.on(\"ready\", () => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n setTimeout(() => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n\r\n // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom\r\n }, 500);\r\n });\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number) {\r\n this.SessionDetails = null;\r\n let pars = new HttpParams().set('sid', sessionId).set('serial', serialNo);\r\n this.http.get<SessionStats>(Repository.GET_Director_GetSessionStats, pars).subscribe(t => {\r\n this.SessionDetails = t;\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span> \r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadSessionDetails(session.sid, session.serial); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n <!-- <es-table [(ngModel)]=\"SelectedSessions\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">Timestamp</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Net</th>\r\n <th>IO</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\" style=\"text-wrap: nowrap;\"><strong>{{session.sampletime | loc_date: 'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td>{{session.cputime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.waittime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.dbtime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.scripttime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.throttletime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.sleeptime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.nettime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.iotime | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{thread.waittime | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\"\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerLocks\"], this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(Repository[\"POST_Director_GetServerLocks\"], this.locksView);\r\n }\r\n\r\n POSTGetProcesses(url: string, data: LocksView) {\r\n this.http.post<LocksView>(url, data).subscribe(t => {\r\n this.locksView = t;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\"\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n var pars = new HttpParams().set(\"from\", this.searchView.filterfrom || \"\").set(\"to\", this.searchView.filterto || \"\")\r\n this.http.get<Metric[]>(Repository[\"GET_Director_GetMetrics\"], pars).subscribe(t => this.Metrics = t);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(Repository[\"POST_Director_GetMetrics\"], this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(Repository[\"POST_Director_GetMetrics\"], searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n POSTGetItems(url: string, data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n this.http.post<MetricsView>(url, data).subscribe(async (t) => {\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = t;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n t.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n });\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Metriche di Sistema' | localize: lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { Repository } from \"../../models/externals/Repository\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\"\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.http.get<string>(Repository[\"GET_Director_GetServerLogs\"]).subscribe(t => { this.Log = t; });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { Repository } from \"../../models/externals/Repository\";\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\"\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.http.get<KeyValue[]>(Repository.GET_Director_GetDynamicViews).subscribe(t => { this.Names = t });\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(Repository.POST_Director_GetDynamicViewData, this.searchView);\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems(Repository.POST_Director_GetDynamicViewData, this.searchView);\r\n }\r\n\r\n POSTGetItems(url: string, data: DynamicViewsView) {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n\r\n //Aggiorno il riferimento per refreshare la es-table\r\n this.searchView = JSON.parse(JSON.stringify(this.searchView));\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n this.searchView = null;\r\n }\r\n\r\n this.http.post<DynamicViewsView>(url, data).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n });\r\n }\r\n\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [SelectLabel]=\"'Nome' | localize: lc\"></form-select>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div *ngIf=\"badSearch\" class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\r\n <ng-container *ngIf=\"!badSearch\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && searchView.items.length > 0\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n <div *ngIf=\"searchView && searchView.items.length == 0 && !searchView.searchinprogress\" class=\"card card-info app-white-text app-padding-10\">\r\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-module-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-module outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n// Material\r\nimport { MatIconModule } from '@angular/material/icon'\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDayjsDateModule } from \"@esfaenza/material-dayjs-adapter\";\r\nimport { MatLegacyInputModule as MatInputModule } from \"@angular/material/legacy-input\";\r\n\r\n// Libs\r\nimport { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-module.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS } from \"./tokens\";\r\n\r\ndeclare var myconfig;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } }\r\n ]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Material\r\n MatDatepickerModule,\r\n MatDayjsDateModule,\r\n MatIconModule,\r\n MatInputModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n NgxMatDatetimePickerModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES],\r\n declarations: [...COMPONENTS, ...PIPES],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-module: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-module\r\n */\r\n\r\nexport * from './lib/admin-module.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-module-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i8","i9","i10","i3","i4","i11.NodeDetailComponent","i11","i12.NodeDetailComponent","i5","MatInputModule","i1.AdminModuleCommService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAO,UAAW,SAAQ,SAAgB,CAAA;AAC5C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAaJ;;ACrBM,MAAM,UAAU,GAAG;AACtB,IAAA,uCAAuC,EAAE,0CAA0C;AACnF,IAAA,2BAA2B,EAAE,8BAA8B;AAC3D,IAAA,8BAA8B,EAAE,uCAAuC;AACvE,IAAA,qBAAqB,EAAE,wBAAwB;AAC/C,IAAA,uBAAuB,EAAE,0BAA0B;AACnD,IAAA,wBAAwB,EAAE,0BAA0B;AACpD,IAAA,kCAAkC,EAAE,oCAAoC;AACxE,IAAA,6BAA6B,EAAE,+BAA+B;AAC9D,IAAA,gCAAgC,EAAE,kCAAkC;AACpE,IAAA,4BAA4B,EAAE,8BAA8B;AAC5D,IAAA,0BAA0B,EAAE,6BAA6B;AACzD,IAAA,4BAA4B,EAAE,+BAA+B;AAC7D,IAAA,8BAA8B,EAAE,gCAAgC;AAChE,IAAA,8BAA8B,EAAE,gCAAgC;AAChE,IAAA,4BAA4B,EAAE,+BAA+B;AAC7D,IAAA,sCAAsC,EAAE,yCAAyC;AACjF,IAAA,wBAAwB,EAAE,2BAA2B;AACrD,IAAA,8BAA8B,EAAE,iCAAiC;AACjE,IAAA,wBAAwB,EAAE,2BAA2B;AACrD,IAAA,uBAAuB,EAAE,0BAA0B;AACnD,IAAA,yBAAyB,EAAE,4BAA4B;AACvD,IAAA,4BAA4B,EAAE,+BAA+B;CAChE;;MCrBY,eAAe,GAA2B,IAAI,cAAc,CAAS,iBAAiB,EAAE;MACxF,iBAAiB,GAA4B,IAAI,cAAc,CAAU,mBAAmB;;ACCnG,MAAO,WAAY,SAAQ,mBAAmB,CAAA;AAChD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1F,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACjE;;wGArBQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACHX;MA2Ba,kBAAkB,CAAA;AAQ3B,IAAA,WAAA,CACW,EAAuB,EACtB,QAAyB,EACzB,YAAgC,EAChC,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,GAAW,EACV,iBAA0B,EAAA;QAPrD,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QACV,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAS;AAdzD,QAAA,IAAA,CAAA,UAAU,GAAe,IAAI,UAAU,EAAE,CAAC;QAC1C,IAAO,CAAA,OAAA,GAAe,EAAE,CAAC;QACzB,IAAW,CAAA,WAAA,GAAe,EAAE,CAAC;QAC7B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAarC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAE/H,IAAI,CAAC,WAAW,GAAG;AACf,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;AACjC,YAAA,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;AACnC,YAAA,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;AACjC,YAAA,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;AACrC,YAAA,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;SAC1C,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG;AACX,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;SACnD,CAAC;KACL;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAM,EAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACzG;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAa,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;AACnF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAe,aAAA,CAAA,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;AAClE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAqB,EAAA;;;AAGtB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACvF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChG,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACvF;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3E,SAAC,CAAC,CAAC;KACN;;+GArFQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAef,eAAe,EAAA,EAAA,EAAA,KAAA,EACf,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhBpB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EC3B/B,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,igRAgGM,EDxEa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,CAAA,CAAA;2FAG/D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,YAAY,EAAA,aAAA,EACP,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAA,QAAA,EAAA,igRAAA,EAAA,CAAA;;0BAkBnE,MAAM;2BAAC,eAAe,CAAA;;0BACtB,MAAM;2BAAC,iBAAiB,CAAA;;;ME3CpB,QAAQ,CAAA;IACjB,WAAmB,CAAA,EAAU,EAAS,WAAmB,EAAA;QAAtC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAQ;KAAK;AACjE;;ACAK,MAAO,aAAc,SAAQ,SAAsB,CAAA;AACrD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAU7B;;ACTK,MAAO,SAAU,SAAQ,mBAAmB,CAAA;AAC9C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2CAA2C,EAAE,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACzG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,6CAA6C,EAAE,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACvG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gDAAgD,EAAE,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC3G,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACxF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4BAA4B,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAClF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qCAAqC,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC3F,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,4FAA4F,EAAE,CAAC,8FAA8F,CAAC,CAAC,CAAC;KACvN;;sGA1BQ,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0GAAT,SAAS,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;ACHX;MA+Ba,eAAe,CAAA;AAYxB,IAAA,WAAA,CACY,OAAuB,EACvB,OAAuB,EACxB,EAAuB,EACtB,YAAgC,EAChC,QAAyB,EACzB,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,GAAW,EAAA;QARpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACxB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAnBzC,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,aAAa,EAAE,CAAC;QAChD,IAAU,CAAA,UAAA,GAAiC,EAAE,CAAC;QAE9C,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAEzB,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QACvB,IAAM,CAAA,MAAA,GAAe,EAAE,CAAC;QACxB,IAAW,CAAA,WAAA,GAAe,EAAE,CAAC;QAC7B,IAAc,CAAA,cAAA,GAAe,EAAE,CAAC;;QA0HvC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAG,CAAA,GAAA,GAAe,EAAE,CAAC;QACrB,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AA/GlC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAE/H,IAAI,CAAC,UAAU,GAAG;YACd,IAAI,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,0BAA0B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;YACxI,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC;AAC7I,YAAA,IAAI,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;AAChG,YAAA,IAAI,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,sBAAsB,CAAC;SACjH,CAAC;KACL;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,CAAC,aAAa,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvI,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC9B;IAED,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAgB,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;AACvF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAgB,cAAA,CAAA,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;AACnE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAwB,EAAA;AACzB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACxF;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,SAAC,CAAC,CAAC;KACN;IAED,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,KAAgC,EAAA;QACxC,QAAQ,KAAK,CAAC,EAAE;AACZ,YAAA,KAAK,UAAU;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAAC,MAAM;AAC7D,YAAA,KAAK,WAAW;gBAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAC,MAAM;AAC/D,YAAA,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;AACjD,YAAA,KAAK,WAAW;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;AAC7D,SAAA;KACJ;IAED,aAAa,CAAC,OAAY,EAAE,OAAgB,EAAA;AACxC,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;AACtB,aAAA,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjF,aAAA,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClE,aAAA,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC3E,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,CAAC,gCAAgC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YACpF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gDAAgD,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrI,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;QACpB,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAChC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAAC,EACjD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4FAA4F,CAAC,EACzG,MAAK;AACD,YAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;AACtB,iBAAA,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACjF,iBAAA,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClE,iBAAA,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC9E,gBAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACnK,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACV;AAYD,IAAA,eAAe,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACpC,SAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,kBAAkB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;KACxG;IAED,aAAa,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACnC,QAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA,EAAE,CAAC,CAAC;KACzC;IAED,UAAU,GAAA;AACN,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;aACtB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;aACvG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACxF,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjG,aAAA,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,CAAC,yCAAyC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC7F,YAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC;KACf;;AA1KQ,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,mQAqBZ,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBlB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EC/B5B,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,kwPA0GM,ED9Ea,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,CAAA,CAAA;2FAG7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACI,SAAS,EAAA,aAAA,EACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,QAAA,EAAA,kwPAAA,EAAA,CAAA;;0BAwBjE,MAAM;2BAAC,eAAe,CAAA;4CAoHN,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ,CAAA;gBACO,WAAW,EAAA,CAAA;sBAApC,SAAS;uBAAC,aAAa,CAAA;;;AErKtB,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;AACxD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;QACzD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACtE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAClE;;gHAtBQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACEJ,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB,CAAA;CAuC5B,CAAA;AArCG,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEjB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEX,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC;AACN,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC;AACT,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEd,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEb,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEjB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC;AACR,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEhB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC;AACV,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEhB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;AACF,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE5B,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC;AACR,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEnB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC;AACT,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEvB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEtB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAErB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,qBAAqB,CAAC;AACf,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,yBAAyB,CAAC;AACP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEhC,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,qBAAqB,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEvB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,uBAAuB,CAAC;AACf,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEtB,UAAA,CAAA;AADC,IAAA,MAAM,CAAC,GAAG,EAAE,oBAAoB,CAAC;AACZ,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAtCb,gBAAgB,GAAA,UAAA,CAAA;IAD5B,kBAAkB,CAAC,mBAAmB,CAAC;AAC3B,CAAA,EAAA,gBAAgB,CAuC5B;;ACzCK,MAAO,qBAAsB,SAAQ,SAA2B,CAAA;AAClE,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAI7B;;ACJK,MAAO,uBAAwB,SAAQ,mBAAmB,CAAA;AAC5D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC7E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACtE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAClE;;oHAxBQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACCL,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AAClD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,6BAA6B,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;KACvD;;0GAdQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACHX;MAkBa,mBAAmB,CAAA;AAM5B,IAAA,WAAA,CAAmB,EAAuB,EAAA;QAAvB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;AAFhC,QAAA,IAAA,CAAA,OAAO,GAA0B,IAAI,YAAY,EAAW,CAAC;KAExB;IAE/C,QAAQ,GAAA;QACJ,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC;YAC1C,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClD,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACpD,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAChD,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YACxD,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC5D,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;YACtD,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAC7D,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACnD,SAAA,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;;gHAzBQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EClBhC,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,slHA4DM,ED7Ca,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,CAAA,CAAA;2FAGjE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,aAAa,EAAA,aAAA,EACR,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,QAAA,EAAA,slHAAA,EAAA,CAAA;0GAKjE,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEI,OAAO,EAAA,CAAA;sBAAhB,MAAM;;;AEtBX;MA4Ba,oBAAoB,CAAA;AAM7B,IAAA,WAAA,CACY,OAAsB,EACvB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,IAAiB,EACjB,KAAqB,EACI,GAAW,EAAA;QAPpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;QACvB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACI,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAbzC,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,qBAAqB,EAAE,CAAC;AAenE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC;AACpG,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAW,SAAA,CAAA,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC;AACxE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAgC,EAAA;AACjC,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,oCAAoC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,oCAAoC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACxF;IAED,YAAY,CAAC,GAAW,EAAE,IAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC3D,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AACjF,SAAC,CAAC,CAAC;KACN;AAED,IAAA,aAAa,CAAC,YAAY,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,UAAU,CAAC,oCAAoC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACxG,YAAA,IAAI,KAAK,GAAuB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7F,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,eAAe,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/E,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;;AAzFQ,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,oOAcjB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAdlB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAHlB,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,0BCzBpF,kkMA4EM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhDO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,cAAc,EAAA,SAAA,EACb,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC,EAAA,QAAA,EAAA,kkMAAA,EAAA,CAAA;;0BAiB3E,MAAM;2BAAC,eAAe,CAAA;;;AEvCzB,MAAO,qBAAsB,SAAQ,SAAsB,CAAA;AAC7D,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAK7B;;ACLK,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AACvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAE1D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;KAC3C;;+GA1BQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACHX;MA6Ca,yBAAyB,CAAA;AAelC,IAAA,WAAA,CACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,IAAiB,EACjB,KAAqB,EACI,GAAW,EAAA;QAPrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACI,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAtBzC,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,qBAAqB,EAAE,CAAC;QAIhE,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAW,GAAG,CAAC;QAKrB,IAAQ,CAAA,QAAA,GAA+B,IAAI,CAAC;AAE1C,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QA8HpE,IAAuB,CAAA,uBAAA,GAAmC,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,uBAAuB,GAAgC;YACnD,CAAC,SAAS,GAAG,KAAK;YAClB,CAAC,UAAU,GAAG,MAAM;YACpB,CAAC,YAAY,GAAG,WAAW;YAC3B,CAAC,QAAQ,GAAG,IAAI;YAChB,CAAC,SAAS,GAAG,SAAS;YACtB,CAAC,cAAc,GAAG,YAAY;YAC9B,CAAC,WAAW,GAAG,OAAO;YACtB,CAAC,QAAQ,GAAG,IAAI;SACnB,CAAC;QA+FF,IAAwB,CAAA,wBAAA,GAAmC,EAAE,CAAC;AA3N1D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;;QAGJ,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAC/D,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,MAAM,oBAAoB,GAAA;AACtB,QAAA,IAAI,IAAI,GAAG,IAAI,qBAAqB,EAAE,CAAC;AACvC,QAAA,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,UAAU,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChH,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE/D,IAAI,CAAC,IAAI,CAAC,QAAQ;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACxC,iBAAA;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAwB,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC;AACjG,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAS,OAAA,CAAA,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC;AACrE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAgC,EAAA;AACjC,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,8BAA8B,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACxF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,MAAM,UAAU,CAAC,SAAqB,GAAA,IAAI,EAAE,MAAkB,GAAA,KAAK,EAAE,kBAAA,GAA4C,IAAI,EAAA;AACjH,QAAA,IAAI,EAAE,GAAG,kBAAkB,IAAI,IAAI,CAAC,UAAU,CAAC;AAC/C,QAAA,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ;AAChD,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEtC,IAAI,2BAA2B,GAC/B,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3F,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEvF,QAAA,EAAE,CAAC,cAAc,GAAG,2BAA2B,CAAC;AAChD,QAAA,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,8BAA8B,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;KAC5E;AAED,IAAA,YAAY,CAAC,GAAW,EAAE,IAA2B,EAAE,MAAe,EAAA;AAElE,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAI;;YAEnE,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7E,aAAA;;AAGD,YAAA,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,UAAU,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACpK,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;AAED,IAAA,eAAe,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,UAAU,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/E,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;AAoBD,IAAA,cAAc,CAAC,MAAe,EAAE,kBAAmB,EAAE,QAAwB,EAAA;AACzE,QAAA,IAAI,SAAS,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;AACV,SAAA;QAED,IAAI,MAAM,GAAgB,EAAE,CAAC;AAC7B,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE;gBAC1B,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1F,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,aAAA;AACJ,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAExC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBACjC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1G,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9B,IAAI,IAAI,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAClG,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,aAAA;AACJ,SAAA;AACI,aAAA;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAChH,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,SAAA;KACJ;IAID,iBAAiB,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAQ,EAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACxF,SAAA;;AAEG,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;AAMD,IAAA,oBAAoB,CAAC,KAAiD,EAAA;QAClE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC;QAClJ,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;AAE1I,QAAA,IAAI,gBAAgB,GAA0B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1F,QAAA,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;AAClH,QAAA,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;KACjD;AAED,IAAA,aAAa,CAAC,KAAyB,EAAE,iBAAA,GAA6B,IAAI,EAAA;AACtE,QAAA,IAAG,iBAAiB;AAChB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE/B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AACZ,YAAA,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,YAAA,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3F,UAAU,CAAC,MAAK;AACQ,gBAAA,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,gBAAA,KAAK,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;aAG9F,EAAE,GAAG,CAAC,CAAC;AACZ,SAAC,CAAC,CAAC;KACN;IAUD,kBAAkB,CAAC,SAAiB,EAAE,QAAgB,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACrF,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,sBAAsB,CAAC,SAAyC,EAAA;AAC5D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,qBAAqB,CAAC,MAAK;YACvB,IAAI,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtF,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;YAEtC,IAAI,MAAM,GAAgB,EAAE,CAAC;AAC7B,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,gBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE;oBAC1B,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1F,oBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACf,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAA;AACJ,aAAA;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAExC,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;AACjC,oBAAA,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY;wBACxB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,aAAA;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtD,SAAC,CAAC,CAAC;KACN;;AA9RQ,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kOAuBtB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvBlB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAHvB,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,0BC1C/E,8vkBA+PM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlNO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,eAAe,EAAA,SAAA,EACd,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA,QAAA,EAAA,8vkBAAA,EAAA,CAAA;;0BA0BtE,MAAM;2BAAC,eAAe,CAAA;;;AElEzB,MAAO,SAAU,SAAQ,SAAsB,CAAA;AACjD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAK7B;;ACJK,MAAO,SAAU,SAAQ,mBAAmB,CAAA;AAC9C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC9E,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC9C;;sGAPQ,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0GAAT,SAAS,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;ACHX;MAwBa,eAAe,CAAA;AAIxB,IAAA,WAAA,CACW,EAAuB,EACtB,YAAgC,EACjC,OAAsB,EACrB,QAAyB,EACzB,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,GAAW,EAAA;QAPrC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QACjC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAXzC,QAAA,IAAA,CAAA,SAAS,GAAc,IAAI,SAAS,EAAE,CAAC;AAa1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAM,EAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACzG;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAY,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;AAChF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAiB,eAAA,CAAA,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;AAChE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAoB,EAAA;AACrB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACrF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;AAE5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACrF;IAED,gBAAgB,CAAC,GAAW,EAAE,IAAe,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAY,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC/C,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;AACxE,SAAC,CAAC,CAAC;KACN;;AA7DQ,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,oOAYZ,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZlB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ECxB5B,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,84EAiCM,EDZa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,CAAA,CAAA;2FAG7D,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACI,SAAS,EAAA,aAAA,EACJ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAA,QAAA,EAAA,84EAAA,EAAA,CAAA;;0BAejE,MAAM;2BAAC,eAAe,CAAA;;;AEjCzB,MAAO,WAAY,SAAQ,SAAiB,CAAA;AAC9C,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAS7B;;ACTK,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AAClD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACjE;;0GAXQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACHX;MA+Ba,mBAAmB,CAAA;AAW5B,IAAA,WAAA,CACW,QAAqB,EACrB,EAAuB,EACtB,YAAgC,EAChC,QAAkB,EAClB,QAAyB,EACzB,IAAiB,EACjB,KAAqB,EACI,GAAW,EAAA;QAPrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACI,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QAhBxC,IAAiB,CAAA,iBAAA,GAAoE,EAAE,CAAC;AAEzF,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE,CAAC;QAG5C,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAW,GAAG,CAAC;QAgFtB,IAAS,CAAA,SAAA,GAAe,EAAE,CAAA;QAC1B,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;AAvEhC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,CAAC,WAAW,EAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC5B;IAED,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;AAEnC,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;QACnH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,UAAU,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;KACzG;IAED,MAAM,MAAM,CAAC,aAAa,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAc,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;AACxF,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAU,QAAA,CAAA,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;AACtE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAAsB,EAAA;AACvB,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,UAAU,CAAC,YAAqB,IAAI,EAAE,SAAkB,KAAK,EAAE,qBAAkC,IAAI,EAAA;AACjG,QAAA,IAAI,CAAC,MAAM;AACP,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;;AAExC,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,MAAM,CAAC;AAC9C,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,kBAAkB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC5G;AAOD,IAAA,YAAY,CAAC,GAAW,EAAE,IAAiB,EAAE,MAAe,EAAA;QACxD,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE7F,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAI;;YAEzD,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;oBAC9B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;AAC3D,wBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,iBAAA;;AAEG,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AAC9E,aAAA;AACI,iBAAA;;AAED,gBAAA,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AAChB,oBAAA,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjB,wBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAA,IAAI,IAAI,EAAE;4BACN,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAM,EAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvH,4BAAA,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACzC,gCAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,gCAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzB,6BAAA;AACJ,yBAAA;AACL,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;IAED,gBAAgB,CAAC,YAAqB,KAAK,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS;YACpC,OAAO;AAEX,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3H;AAED,IAAA,iBAAiB,CAAC,MAAc,EAAE,WAAwB,EAAE,SAA6B,EAAA;AACrF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClM;IAEO,SAAS,CAAC,MAAc,EAAE,KAAkB,EAAA;QAChD,OAAO,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;KAChG;IAID,iBAAiB,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAQ,EAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACxF,SAAA;;AAEG,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvC;;AAlKQ,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kOAmBhB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnBlB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAHjB,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,0BC5B1E,2/NAyFM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1DO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,gBAAgB,EAAA,SAAA,EACf,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAA,QAAA,EAAA,2/NAAA,EAAA,CAAA;;0BAsBjE,MAAM;2BAAC,eAAe,CAAA;;;AE9CzB,MAAO,UAAW,SAAQ,mBAAmB,CAAA;AAC/C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;KAC1D;;uGAJQ,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACHX;MAoBa,gBAAgB,CAAA;AAGzB,IAAA,WAAA,CACY,QAAyB,EACzB,IAAiB,EACjB,EAAuB,EACvB,KAAqB,EAAA;QAHrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,UAAU,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAM,EAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;KACrG;;6GAdQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,ECpB7B,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2KAIM,EDaa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,CAAA,CAAA;2FAG9D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACI,UAAU,EAAA,aAAA,EACL,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAA,QAAA,EAAA,2KAAA,EAAA,CAAA;;;AEfrE,MAAO,gBAAiB,SAAQ,SAAsB,CAAA;AACxD,IAAA,WAAA,GAAA,EAAgB,KAAK,EAAE,CAAC,EAAE;AAG7B;;ACFK,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AACvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,qCAAqC,EAAE,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACjG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,uCAAuC,EAAE,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACpG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,iEAAiE,EAAE,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACzI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,+CAA+C,EAAE,CAAC,mCAAmC,CAAC,CAAC,CAAC;KAC/G;;+GATQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACHX;MA0Ba,wBAAwB,CAAA;AAYjC,IAAA,WAAA,CACW,EAAuB,EACtB,QAAyB,EACzB,YAAgC,EAChC,IAAiB,EACjB,KAAqB,EACrB,QAAkB,EACO,GAAW,EAAA;QANrC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAqB;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAChC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACO,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;AAjBzC,QAAA,IAAA,CAAA,UAAU,GAAqB,IAAI,gBAAgB,EAAE,CAAC;QACtD,IAAK,CAAA,KAAA,GAAe,EAAE,CAAC;QAEvB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;;QAGzB,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;AAW1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClI;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,UAAU,CAAC,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,IAAM,EAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA,EAAE,CAAC,CAAC;AACtG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAM,EAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACzG;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KACrC;IAED,MAAM,IAAI,CAAC,aAAa,EAAA;AACpB,QAAA,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAmB,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1F,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,CAAc,YAAA,CAAA,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;AACnE,SAAA;KACJ;AAED,IAAA,IAAI,CAAC,SAA2B,EAAA;;;AAG5B,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,gCAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,SAAA;AACI,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;IAED,UAAU,CAAC,YAAqB,IAAI,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,SAAS;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,gCAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACnF;IAED,YAAY,CAAC,GAAW,EAAE,IAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAGjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,OAAO;AACV,SAAA;;AAEG,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;QAG3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC9C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACtD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5E,SAAC,CAAC,CAAC;KACN;;AA3FQ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,uMAmBrB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnBlB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EC1BrC,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+oFAsCM,EDfa,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA,CAAA,CAAA;2FAGtE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,mBAAmB,EAAA,aAAA,EACd,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,EAAA,QAAA,EAAA,+oFAAA,EAAA,CAAA;;0BAsB1E,MAAM;2BAAC,eAAe,CAAA;;;AE7C/B;MAIa,cAAc,CAAA;AAEvB,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,SAAS,CAAC,KAAsB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,YAAY,CAAC,CAAkB,EAAA;AAC3B,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AAElC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;AACvC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAC;AACzC,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;AACvC,QAAA,OAAO,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;KACzC;;2GAlBQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;;;ACH7B;AACO,MAAM,MAAM,GAAG,gBAAgB;AAEtC;IACY,gBAEX;AAFD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAFW,eAAe,KAAf,eAAe,GAE1B,EAAA,CAAA,CAAA;;ACND;MAYa,sBAAsB,CAAA;AAE/B,IAAA,WAAA,CAAoB,QAAyB,EAAA;QAAzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;KAAK;IAE3C,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAkB,KAAI,EAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KAClH;IAEO,cAAc,CAAC,IAAqB,EAAE,OAAY,EAAA;AACtD,QAAA,QAAQ,IAAI;YACR,KAAK,eAAe,CAAC,OAAO;gBACxB,IAAI,QAAQ,CAAC,UAAU;AACnB,oBAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,OAAO,CAAC,CAAC;gBAC9D,MAAM;AACb,SAAA;KACJ;;mHAhBQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACXX;AAiDa,MAAA,WAAW,GAAG;AACzB,IAAA;AACE,QAAA,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;AACjB,YAAA,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACjI,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACxH,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC3H,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACtH,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACjH,YAAA,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAChI,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AAC9H,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE;AACjJ,SAAA;AACF,KAAA;EACD;AAEF,MAAM,OAAO,GAAG;;IAEd,YAAY;IACZ,WAAW;;IAGX,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACbW,oBAAc;;IAGd,WAAW;IACX,aAAa;IACb,gBAAgB;;IAGhB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,yBAAyB;IACzB,gBAAgB;IAChB,cAAc;IACd,0BAA0B;AAE1B,IAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,eAAe;IACf,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB;IACxB,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,mBAAmB;CACpB,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,cAAc;CACf,CAAA;MAUY,SAAS,CAAA;AACpB,IAAA,WAAA,CAAoB,WAAmC,EAAA;QAAnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAwB;AACrD,QAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;;sGAJU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,iBAvBpB,eAAe;QACf,oBAAoB;QACpB,yBAAyB;QACzB,wBAAwB;QACxB,gBAAgB;QAChB,kBAAkB;QAClB,eAAe;QACf,mBAAmB;AACnB,QAAA,mBAAmB,EAInB,cAAc,CAAA,EAAA,OAAA,EAAA;;QAxCd,YAAY;QACZ,WAAW;;QAGX,mBAAmB;QACnB,kBAAkB;QAClB,aAAa;QACbD,oBAAc;;QAGd,WAAW;QACX,aAAa;QACb,gBAAgB;;QAGhB,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,yBAAyB;QACzB,gBAAgB;QAChB,cAAc;QACd,0BAA0B,EAAAV,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;AA6Bf,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,EALT,SAAA,EAAA;QACT,sBAAsB;AACtB,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAO,CAAC,CAAC,QAAQ,CAAC,yBAAyB,EAAE;AACxF,KAAA,EAAA,OAAA,EAAA,CALY,OAAO,CAAA,EAAA,CAAA,CAAA;2FAOT,SAAS,EAAA,UAAA,EAAA,CAAA;kBARrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACrB,oBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;AACvC,oBAAA,SAAS,EAAE;wBACT,sBAAsB;AACtB,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAO,CAAC,CAAC,QAAQ,CAAC,yBAAyB,EAAE;AACxF,qBAAA;AACF,iBAAA,CAAA;;;ACpHD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"esfaenza-admin-module.mjs","sources":["../../../projects/admin-module/src/lib/models/components/AuditsView.ts","../../../projects/admin-module/src/lib/tokens.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.loc.ts","../../../projects/admin-module/src/lib/services/admin-module.base.service.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.ts","../../../projects/admin-module/src/lib/components/audits/adm_audits.component.html","../../../projects/admin-module/src/lib/models/shared/KeyValue.ts","../../../projects/admin-module/src/lib/models/components/ProcessesView.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.loc.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.ts","../../../projects/admin-module/src/lib/components/workers/adm_wrk.component.html","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.loc.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNode.ts","../../../projects/admin-module/src/lib/models/components/ProfilerDataNodesView.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.loc.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.loc.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.ts","../../../projects/admin-module/src/lib/components/_shared/node_detail.component.html","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.ts","../../../projects/admin-module/src/lib/components/profiler/adm_profiler.component.html","../../../projects/admin-module/src/lib/models/components/TopActivitiesDataView.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.loc.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.ts","../../../projects/admin-module/src/lib/components/topact/topact_search.component.html","../../../projects/admin-module/src/lib/models/components/LocksView.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.loc.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.ts","../../../projects/admin-module/src/lib/components/enqueues/adm_enq.component.html","../../../projects/admin-module/src/lib/models/components/MetricsView.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.loc.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.ts","../../../projects/admin-module/src/lib/components/metrics/metrics_search.component.html","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.loc.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.ts","../../../projects/admin-module/src/lib/components/logs/adm_logs.component.html","../../../projects/admin-module/src/lib/models/components/DynamicViewsView.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.loc.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.ts","../../../projects/admin-module/src/lib/components/dynamic_views/adm_dynamic_views.component.html","../../../projects/admin-module/src/lib/pipes/format_time.pipe.ts","../../../projects/admin-module/src/lib/admin-module-messages.ts","../../../projects/admin-module/src/lib/admin-module.comms.service.ts","../../../projects/admin-module/src/lib/admin-module.module.ts","../../../projects/admin-module/src/public-api.ts","../../../projects/admin-module/src/esfaenza-admin-module.ts"],"sourcesContent":["import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Audit } from \"./Audit\";\r\n\r\nexport class AuditsView extends AppSearch<Audit> {\r\n constructor() {\r\n super();\r\n this.filteraction = '';\r\n this.filterhttp = '';\r\n }\r\n\r\n filterda: string;\r\n filtera: string;\r\n filteruser: string;\r\n filterroute: string;\r\n filteraction: string;\r\n filteraddress: string;\r\n filterhttp: string;\r\n filterargs: string;\r\n filterobjid: string;\r\n filterobjtype: string;\r\n filterconversationid: string;\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const ADM_MODULE_PATH: InjectionToken<string> = new InjectionToken<string>('ADM_MODULE_PATH');\r\nexport const ADM_CONVERSATIONS: InjectionToken<boolean> = new InjectionToken<boolean>('ADM_CONVERSATIONS');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmAuditLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Audit Applicativi\", [\"Search Application Audits\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Chiamata REST\", [\"REST Call\"]);\r\n super.set(\"it->en\", \"Aggiornamento\", [\"Update\"]);\r\n super.set(\"it->en\", \"Route\", [\"Route\"]);\r\n super.set(\"it->en\", \"Azione\", [\"Action\"]);\r\n super.set(\"it->en\", \"Metodo HTTP\", [\"HTTP Method\"]);\r\n super.set(\"it->en\", \"Argomenti\", [\"Arguments\"]);\r\n super.set(\"it->en\", \"ID Oggetto\", [\"Object ID\"]);\r\n super.set(\"it->en\", \"Tipo Oggetto\", [\"Object Type\"]);\r\n super.set(\"it->en\", \"Dati Oggetto\", [\"Object Data\"]);\r\n super.set(\"it->en\", \"Carico gli Audit dell'Applicazione\", [\"Loading Application Audits\"]);\r\n super.set(\"it->en\", \"Data\", [\"Date\"]);\r\n super.set(\"it->en\", \"Indirizzo\", [\"Address\"]);\r\n super.set(\"it->en\", \"Risposta HTTP\", [\"HTTP Response\"]);\r\n super.set(\"it->en\", \"Codice Errore Applicativo\", [\"Application Error Code\"]);\r\n super.set(\"it->en\", \"Cod. Conversation\", [\"Conversation ID\"]);\r\n }\r\n}","// Angular\r\nimport { Injectable, Injector } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// ES\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Configurazioni\r\nimport { ProcessesView } from \"../models/components/ProcessesView\";\r\nimport { firstValueFrom, catchError, of } from \"rxjs\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { TopActivitiesDataView } from \"../models/components/TopActivitiesDataView\";\r\nimport { DirectorInfos } from \"../models/components/DirectorInfos\";\r\nimport { NodeStats } from \"../models/components/NodeStats\";\r\nimport { SessionStats } from \"../models/components/SessionStats\";\r\nimport { ProfilerDataNodesView } from \"../models/components/ProfilerDataNodesView\";\r\nimport { MetricsView } from \"../models/components/MetricsView\";\r\nimport { Metric } from \"../models/components/Metric\";\r\nimport { LocksView } from \"../models/components/LocksView\";\r\nimport { DynamicViewsView } from \"../models/components/DynamicViewsView\";\r\nimport { AuditsView } from \"../models/components/AuditsView\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Director_ChangeProcessConsumerGroup: string = \"/api/Director/ChangeProcessConsumerGroup\";\r\nconst GET_Director_ClearAllCaches: string = \"/api/Director/ClearAllCaches\";\r\nconst GET_Director_GetConsumerGroups: string = \"/api/Director/GetConsumerGroups#cache\";\r\nconst GET_Director_GetInfos: string = \"/api/Director/GetInfos\";\r\nconst GET_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetMetrics: string = \"/api/Director/GetMetrics\";\r\nconst POST_Director_GetProfilerDataNodes: string = \"/api/Director/GetProfilerDataNodes\";\r\nconst POST_Director_GetServerAudits: string = \"/api/Director/GetServerAudits\";\r\nconst POST_Director_GetDynamicViewData: string = \"/api/Director/GetDynamicViewData\";\r\nconst POST_Director_GetServerLocks: string = \"/api/Director/GetServerLocks\";\r\nconst GET_Director_GetServerLogs: string = \"/api/Director/GetServerLogs\";\r\nconst GET_Director_GetDynamicViews: string = \"/api/Director/GetDynamicViews\";\r\nconst POST_Director_GetServerWorkers: string = \"/api/Director/GetServerWorkers\";\r\nconst POST_Director_GetTopActivities: string = \"/api/Director/GetTopActivities\";\r\nconst GET_Director_GetWorkerStatus: string = \"/api/Director/GetWorkerStatus\";\r\nconst GET_Director_InvalidateServerSideCache: string = \"/api/Director/InvalidateServerSideCache\";\r\nconst GET_Director_KillProcess: string = \"/api/Director/KillProcess\";\r\nconst GET_Director_SetProcessTracing: string = \"/api/Director/SetProcessTracing\";\r\nconst GET_Director_StartWorker: string = \"/api/Director/StartWorker\";\r\nconst GET_Director_StopWorker: string = \"/api/Director/StopWorker\";\r\nconst GET_Director_GetNodeStats: string = \"/api/Director/GetNodeStats\";\r\nconst GET_Director_GetSessionStats: string = \"/api/Director/GetSessionStats\";\r\n\r\n@Injectable()\r\nexport class AdminModuleBaseService {\r\n public http: HTTPService;\r\n public msgExts: MessageService;\r\n\r\n constructor(private injector: Injector) {\r\n this.http = this.injector.get(HTTPService);\r\n this.msgExts = this.injector.get(MessageService);\r\n }\r\n\r\n public async getServerWorkers(sv: ProcessesView): Promise<ProcessesView> {\r\n let ret: ProcessesView = await firstValueFrom(this.http.post<ProcessesView>(POST_Director_GetServerWorkers, sv));\r\n return ret;\r\n }\r\n\r\n public async doSetProcessTracing(instanceid: string, sid: string, serial: string, enable: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid)\r\n .set(\"sid\", sid)\r\n .set(\"serial\", serial)\r\n .set(\"enable\", enable);\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_SetProcessTracing, pars));\r\n return ret;\r\n }\r\n\r\n public async doKillProcess(instanceid: string, sid: string, serial: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid)\r\n .set(\"sid\", sid)\r\n .set(\"serial\", serial);\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_KillProcess, pars));\r\n return ret;\r\n }\r\n\r\n public async doChangeProcessConsumerGroup(instanceid: string, sid: string, serial: string, consumerGroup: string): Promise<string> {\r\n var pars = new HttpParams()\r\n .set(\"instanceid\", instanceid)\r\n .set(\"sid\", sid)\r\n .set(\"serial\", serial)\r\n .set(\"consumer_group\", consumerGroup);\r\n\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_ChangeProcessConsumerGroup, pars));\r\n return ret;\r\n }\r\n\r\n public async getConsumerGroups(): Promise<KeyValue[]> {\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetConsumerGroups));\r\n return ret;\r\n }\r\n\r\n public async getServerLogs(): Promise<string> {\r\n let ret: string = await firstValueFrom(this.http.get<string>(GET_Director_GetServerLogs));\r\n return ret;\r\n }\r\n\r\n public async getTopActivities(sv: TopActivitiesDataView): Promise<TopActivitiesDataView> {\r\n let ret: TopActivitiesDataView = await firstValueFrom(this.http.post<TopActivitiesDataView>(POST_Director_GetTopActivities, sv));\r\n return ret;\r\n }\r\n\r\n public async getInfos(): Promise<DirectorInfos> {\r\n let ret: DirectorInfos = await firstValueFrom(this.http.get<DirectorInfos>(GET_Director_GetInfos, null, null, false).pipe(catchError(_ => of(null as DirectorInfos))));\r\n return ret;\r\n }\r\n\r\n public async getNodeStats(nodeId: string): Promise<NodeStats> {\r\n let pars = new HttpParams().set(\"nodeId\", nodeId);\r\n let ret: NodeStats = await firstValueFrom(this.http.get<NodeStats>(GET_Director_GetNodeStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getSessionStats(sid: string, serial: string): Promise<SessionStats> {\r\n let pars = new HttpParams().set('sid', sid).set('serial', serial);\r\n let ret: SessionStats = await firstValueFrom(this.http.get<SessionStats>(GET_Director_GetSessionStats, pars));\r\n return ret;\r\n }\r\n\r\n public async getProfilerDataNodes(sv: ProfilerDataNodesView): Promise<ProfilerDataNodesView> {\r\n let ret: ProfilerDataNodesView = await firstValueFrom(this.http.post<ProfilerDataNodesView>(POST_Director_GetProfilerDataNodes, sv));\r\n return ret;\r\n }\r\n\r\n public async getMetrics(sv: MetricsView): Promise<MetricsView> {\r\n let ret: MetricsView = await firstValueFrom(this.http.post<MetricsView>(POST_Director_GetMetrics, sv));\r\n return ret;\r\n }\r\n\r\n public async getMetricsList(from: string, to: string): Promise<Metric[]> {\r\n let pars = new HttpParams()\r\n .set(\"from\", from || \"\")\r\n .set(\"to\", to || \"\");\r\n\r\n let ret: Metric[] = await firstValueFrom(this.http.get<Metric[]>(GET_Director_GetMetrics, pars));\r\n return ret.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public async getServerLocks(sv: LocksView): Promise<LocksView> {\r\n let ret: LocksView = await firstValueFrom(this.http.post<LocksView>(POST_Director_GetServerLocks, sv));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViewData(sv: DynamicViewsView): Promise<DynamicViewsView> {\r\n let ret: DynamicViewsView = await firstValueFrom(this.http.post<DynamicViewsView>(POST_Director_GetDynamicViewData, sv));\r\n return ret;\r\n }\r\n\r\n public async getDynamicViews(): Promise<KeyValue[]> {\r\n let ret: KeyValue[] = await firstValueFrom(this.http.get<KeyValue[]>(GET_Director_GetDynamicViews));\r\n return ret;\r\n }\r\n\r\n public async getServerAudits(sv: AuditsView): Promise<AuditsView> {\r\n let ret: AuditsView = await firstValueFrom(this.http.post<AuditsView>(POST_Director_GetServerAudits, sv));\r\n return ret;\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InterComService, InboundMessageTypes } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { AuditsView } from \"../../models/components/AuditsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH, ADM_CONVERSATIONS } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmAuditLoc } from \"./adm_audits.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"adm_audits\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }],\r\n templateUrl: \"./adm_audits.component.html\"\r\n})\r\nexport class AdmAuditsComponent {\r\n\r\n public searchView: AuditsView = new AuditsView();\r\n public Actions: KeyValue[] = [];\r\n public HttpMethods: KeyValue[] = [];\r\n public searchInProgress: boolean = false;\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string,\r\n @Inject(ADM_CONVERSATIONS) public usesConversations: boolean) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.HttpMethods = [\r\n { id: \"GET\", description: \"GET\" },\r\n { id: \"POST\", description: \"POST\" },\r\n { id: \"PUT\", description: \"PUT\" },\r\n { id: \"PATCH\", description: \"PATCH\" },\r\n { id: \"DELETE\", description: \"DELETE\" }\r\n ];\r\n\r\n this.Actions = [\r\n { id: \"C\", description: this.lc.loc(\"Chiamata REST\") },\r\n { id: \"U\", description: this.lc.loc(\"Aggiornamento\") },\r\n { id: \"D\", description: this.lc.loc(\"Elimina\") }\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<AuditsView>(\"HotAudittato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serveraudits`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotAudittato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: AuditsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n else {\r\n this.searchView = new AuditsView();\r\n this.searchView.filterda = dayjs().add(-1, \"month\").format(this.lc.token(\"getSmallDateFormat\"));\r\n this.searchView.filtera = dayjs().format(this.lc.token(\"getSmallDateFormat\"));\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchInProgress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetProcesses(this.searchView);\r\n }\r\n\r\n async POSTGetProcesses(data: AuditsView) {\r\n this.searchView = await this.adms.getServerAudits(data);\r\n this.searchInProgress = false;\r\n this.localStorage.setItem(\"HotAudittato\", this.searchView).subscribe();\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Audit Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'A' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'ID Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Tipo Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <!-- Per ora commentato -->\r\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | localize: lc\"></form-input>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico gli Audit dell\\'Applicazione' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n\r\n <span *th=\"'Timestamp'\">{{'Data' | localize: lc}}</span>\r\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\r\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\r\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\r\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\r\n\r\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let item\">{{item.user}}</span>\r\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\r\n <span *td=\"'Action'; let item\">{{item.action}}</span>\r\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\r\n <span *td=\"'Route'; let item\">{{item.route}}</span>\r\n <span *td=\"'Args'; let item\">{{item.args}}</span>\r\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\r\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\r\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\r\n <span *td=\"'ObjectData'; let item\">{{item.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","export class KeyValue {\r\n constructor(public id: string, public description: string) { }\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class ProcessesView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtertenant: string;\r\n filteruser: string;\r\n filterstate: string;\r\n filterglobal: boolean;\r\n filtertype: string;\r\n filterthreadtype: string;\r\n filterthreadstatus: string;\r\n filterinwait: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmWrkLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Gruppo di Consumo modificato con successo\", [\"Consumer Group succesfully changed\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Gruppo di Consumo\", [\"Errors changing Consumer Group\"]);\r\n super.set(\"it->en\", \"Modifica Gruppo di Consumo\", [\"Change Consumer Group\"]);\r\n super.set(\"it->en\", \"Nuovo Gruppo di Consumo\", [\"New Consumer Group\"]);\r\n super.set(\"it->en\", \"Tipo Thread\", [\"Thread Type\"]);\r\n super.set(\"it->en\", \"Stato Thread\", [\"Thread Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Stato\", [\"State\"]);\r\n super.set(\"it->en\", \"In Attesa\", [\"In Wait\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n super.set(\"it->en\", \"Ricerca Processi Applicativi\", [\"Search Application Processes\"]);\r\n super.set(\"it->en\", \"Operatore\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Errori nella modifica del Tracing del Processo\", [\"Errors toggling Process Tracing\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Carico i Processi Applicativi\", [\"Loading Application Processes\"]);\r\n super.set(\"it->en\", \"Attiva Tracing Processo\", [\"Activate Process Tracing\"]);\r\n super.set(\"it->en\", \"Disattiva Tracing Progetto\", [\"Deactivate Process Tracing\"]);\r\n super.set(\"it->en\", \"Ammazza Processo\", [\"Kill Process\"]);\r\n super.set(\"it->en\", \"Errori durante la Kill del Processo\", [\"Errors killing the Process\"]);\r\n super.set(\"it->en\", \"Processo ucciso con successo\", [\"Process succesfully killed\"]);\r\n super.set(\"it->en\", \"Conferma Terminazione del Processo\", [\"Confirm Process Kill\"]);\r\n super.set(\"it->en\", \"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\", [\"Are you sure you wish to kill the selected process? The associated user will be disconnected\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { InboundMessageTypes, InterComService, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { EsTableOperationDefinition } from \"@esfaenza/es-table\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ProcessesView } from \"../../models/components/ProcessesView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmWrkLoc } from \"./adm_wrk.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_wrk\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }],\r\n templateUrl: \"./adm_wrk.component.html\"\r\n})\r\nexport class AdmWrkComponent {\r\n\r\n public searchView: ProcessesView = new ProcessesView();\r\n public DynamicOps: EsTableOperationDefinition[] = [];\r\n public storageSub: any;\r\n public valueToShow: string = \"\";\r\n\r\n public Types: KeyValue[] = [];\r\n public States: KeyValue[] = [];\r\n public ThreadTypes: KeyValue[] = [];\r\n public ThreadStatuses: KeyValue[] = [];\r\n\r\n constructor(\r\n private utiExts: UtilityService,\r\n private msgExts: MessageService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private intercom: InterComService,\r\n private http: HTTPService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n\r\n this.DynamicOps = [\r\n new EsTableOperationDefinition(\"trace_on\", this.lc.loc(\"Attiva Tracing Processo\"), \"fa fa-circle text-danger\", \"\", \"trace_enabled\", \"N\"),\r\n new EsTableOperationDefinition(\"trace_off\", this.lc.loc(\"Disattiva Tracing Progetto\"), \"fa fa-circle text-success\", \"\", \"trace_enabled\", \"Y\"),\r\n new EsTableOperationDefinition(\"kill\", this.lc.loc(\"Ammazza Processo\"), \"fa fa-ban text-danger\"),\r\n new EsTableOperationDefinition(\"change_cg\", this.lc.loc(\"Modifica Gruppo di Consumo\"), \"fa fa-edit text-info\")\r\n ];\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n Init(ignoreStorage) {\r\n this.Types = [new KeyValue(\"USER\", \"USER\"), new KeyValue(\"BACKGROUND\", \"BACKGROUND\"), new KeyValue(\"JOB\", \"JOB\")];\r\n this.States = [new KeyValue(\"ACTIVE\", \"ACTIVE\"), new KeyValue(\"INACTIVE\", \"INACTIVE\"), new KeyValue(\"KILLED\", \"KILLED\")];\r\n this.ThreadTypes = [\"APITHREAD\", \"APIPUSHTHREAD\", \"BACKGROUNDTHREAD\", \"JOBTHREAD\", \"PARALLELSLAVETHREAD\"].map(t => new KeyValue(t, t));\r\n this.ThreadStatuses = [\"ACTIVE\", \"IDLE\", \"THROTTLING\", \"KILLED\"].map(t => new KeyValue(t, t));\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProcessesView>(\"HotProcessato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverworkers`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotProcessato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProcessesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetServerWorkers();\r\n }\r\n else {\r\n this.searchView = new ProcessesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetServerWorkers();\r\n }\r\n\r\n async POSTGetServerWorkers() {\r\n this.searchView = await this.adms.getServerWorkers(this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotProcessato\", this.searchView).subscribe();\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n onOperation(event: { id: string, item: any }) {\r\n switch (event.id) {\r\n case \"trace_on\": this.toggleTracing(event.item, true); break;\r\n case \"trace_off\": this.toggleTracing(event.item, false); break;\r\n case \"kill\": this.killProcess(event.item); break;\r\n case \"change_cg\": this.changeProcessCg(event.item); break;\r\n }\r\n }\r\n\r\n async toggleTracing(process: any, tracing: boolean) {\r\n let res = await this.adms.doSetProcessTracing(process.properties[\"inst_id\"] || process.properties[\"INST_ID\"], process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"], tracing.toString());\r\n this.msgExts.manageStringResponse(res, \"\", this.lc.loc(\"Errori nella modifica del Tracing del Processo\"), () => this.sendSearch());\r\n }\r\n\r\n killProcess(process: any) {\r\n this.msgExts.simpleWarningWithChoice(\r\n this.lc.loc(\"Conferma Terminazione del Processo\"),\r\n this.lc.loc(\"Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso\"),\r\n async () => {\r\n let res = await this.adms.doKillProcess(process.properties[\"inst_id\"] || process.properties[\"INST_ID\"], process.properties[\"sid\"] || process.properties[\"SID\"], process.properties[\"serial\"] || process.properties[\"SERIAL\"]);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Processo ucciso con successo\"), this.lc.loc(\"Errori durante la Kill del Processo\"), () => this.sendSearch());\r\n });\r\n }\r\n\r\n //********************************************** Gestione modifica Consumer Group ***************************************\r\n\r\n newCg: string = \"\";\r\n CGs: KeyValue[] = [];\r\n CgDictionariesLoaded: boolean = false;\r\n ProcessOnEdit: any;\r\n\r\n @ViewChild(\"cgFrom\") cgFrom: NgForm;\r\n @ViewChild(\"dlgChangeCg\") dlgChangeCg: ModalDirective;\r\n\r\n changeProcessCg(process: any) {\r\n this.ProcessOnEdit = process;\r\n if (!this.CgDictionariesLoaded) {\r\n this.loadCgDictionaries();\r\n this.CgDictionariesLoaded = true;\r\n }\r\n this.setupChangeCg();\r\n this.dlgChangeCg.show();\r\n }\r\n\r\n async loadCgDictionaries() {\r\n this.CGs = await this.adms.getConsumerGroups();\r\n }\r\n\r\n setupChangeCg() {\r\n this.utiExts.cleanForm(this.cgFrom)\r\n setTimeout(() => { this.newCg = \"\" });\r\n }\r\n\r\n async doChangeCg() {\r\n let res = await this.adms.doChangeProcessConsumerGroup(this.ProcessOnEdit.properties[\"inst_id\"] || this.ProcessOnEdit.properties[\"INST_ID\"], this.ProcessOnEdit.properties[\"sid\"] || this.ProcessOnEdit.properties[\"SID\"], this.ProcessOnEdit.properties[\"serial\"] || this.ProcessOnEdit.properties[\"SERIAL\"], this.newCg);\r\n this.msgExts.manageStringResponse(res, this.lc.loc(\"Gruppo di Consumo modificato con successo\"), this.lc.loc(\"Errori nella modifica del Gruppo di Consumo\"), () => this.sendSearch());\r\n return true;\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [SelectLabel]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Operatore' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'Utente' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [SelectLabel]=\"'Stato' | localize: lc\" [Source]=\"States\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [SelectLabel]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [SelectLabel]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <div class=\"col-xl-1 col-lg-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span> \r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Indietro' | localize: lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | localize: lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'Nuovo Gruppo di Consumo' | localize: lc\" [(ngModel)]=\"newCg\" name=\"newCg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | localize: lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class ProfilerDataNodeLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"ID Padre\", [\"Parent ID\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"])\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"])\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Export, ExportLocalization } from \"@esfaenza/extensions\";\r\n\r\nimport { ProfilerDataNodeLoc } from \"./ProfilerDataNode.loc\";\r\n\r\n@ExportLocalization(ProfilerDataNodeLoc)\r\nexport class ProfilerDataNode {\r\n @Export(10, \"ID Padre\")\r\n parentid: string;\r\n @Export(20, \"ID\")\r\n id: string;\r\n @Export(30, \"Descrizione\")\r\n description: string;\r\n @Export(40, \"Chiamate\")\r\n calls: number;\r\n @Export(50, \"Tempo\")\r\n time: number;\r\n @Export(60, \"Tempo Max\")\r\n peaktime: number;\r\n @Export(70, \"Tempo Min\")\r\n mintime: number;\r\n @Export(80, \"Tempo Medio\")\r\n avgtime: number;\r\n @Export(90, \"Tempo Specifico\")\r\n timewithoutchildren: number;\r\n @Export(100, \"Percentuale\")\r\n percentage: number;\r\n @Export(110, \"Chiamate Periodo\")\r\n snapdeltacalls: number;\r\n @Export(120, \"Tempo Periodo\")\r\n snapdeltatime: number;\r\n @Export(130, \"Tempo Max Periodo\")\r\n snappeaktime: number;\r\n @Export(140, \"Tempo Min Periodo\")\r\n snapmintime: number;\r\n @Export(150, \"Tempo Medio Periodo\")\r\n snapavgtime: number;\r\n @Export(160, \"Tempo Specifico Periodo\")\r\n snaptimewithoutchildren: number;\r\n @Export(170, \"Percentuale Periodo\")\r\n snappercentage: number;\r\n @Export(180, \"Nome Tipologia Evento\")\r\n eventtypename: string;\r\n @Export(190, \"Nome Classe Attesa\")\r\n waitclassname: string;\r\n}","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { ProfilerDataNode } from \"./ProfilerDataNode\";\r\n\r\nexport class ProfilerDataNodesView extends AppSearch<ProfilerDataNode>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmProfilerComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Profiler del Server\", [\"Server Profiler\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"ID\", [\"ID\"]);\r\n super.set(\"it->en\", \"Descrizione\", [\"Description\"]);\r\n super.set(\"it->en\", \"Chiamate\", [\"Calls\"]);\r\n super.set(\"it->en\", \"Tempo\", [\"Time\"]);\r\n super.set(\"it->en\", \"Tempo Max\", [\"Peak Time\"]);\r\n super.set(\"it->en\", \"Tempo Min\", [\"Min. Time\"]);\r\n super.set(\"it->en\", \"Tempo Medio\", [\"Avg. Time\"]);\r\n super.set(\"it->en\", \"Tempo Specifico\", [\"Specific Time\"]);\r\n super.set(\"it->en\", \"Percentuale\", [\"Percentage\"]);\r\n super.set(\"it->en\", \"Chiamate Periodo\", [\"Calls for Period\"]);\r\n super.set(\"it->en\", \"Tempo Periodo\", [\"Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Max Periodo\", [\"Peak Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Min Periodo\", [\"Min. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Medio Periodo\", [\"Avg. Time for Period\"]);\r\n super.set(\"it->en\", \"Tempo Specifico Periodo\", [\"Specific Time for Period\"]);\r\n super.set(\"it->en\", \"Percentuale Periodo\", [\"Percentage for Period\"]);\r\n super.set(\"it->en\", \"Nome Tipologia Evento\", [\"Event Type Name\"]);\r\n super.set(\"it->en\", \"Nome Classe Attesa\", [\"Wait Class Name\"]);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NodeDetailLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Dettaglio Attività Nodo\", [\"Activity Node Details\"]);\r\n super.set(\"it->en\", \"Tipo Evento\", [\"Event Type\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso (Con Figli)\", [\"Elapsed (With Children)\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class\"]);\r\n super.set(\"it->en\", \"Tempo Trascorso\", [\"Elapsed (No Children)\"]);\r\n super.set(\"it->en\", \"Stack di Attesa\", [\"Wait Stack\"]);\r\n super.set(\"it->en\", \"Utilizzo Risorse\", [\"Resources Usage\"]);\r\n super.set(\"it->en\", \"Esecuzioni\", [\"Executions\"]);\r\n\t\tsuper.set(\"it->en\", \"Dettaglio evento\", [\"Event detail\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { KeyValueColor, LineChartData, LineSerie, PieChartData } from \"@esfaenza/es-charts\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Applicazione\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\n// Localizzazione\r\nimport { NodeDetailLoc } from \"./node_detail.component.loc\";\r\n\r\n@Component({\r\n selector: \"node-detail\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],\r\n templateUrl: \"./node_detail.component.html\"\r\n})\r\nexport class NodeDetailComponent {\r\n\r\n @Input() NodeDetails: NodeStats;\r\n\r\n @Output() onClose: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n \r\n constructor(public lc: LocalizationService) { }\r\n\r\n ngOnInit() {\r\n let serie = new LineSerie(this.lc.loc(\"Sessioni Attive\"), this.NodeDetails.activesessions);\r\n this.NodeDetails.sessionchart = new LineChartData([serie]);\r\n this.NodeDetails.loadchart = new PieChartData([\r\n new KeyValueColor(\"CPU\", this.NodeDetails.cpuperc),\r\n new KeyValueColor(\"Wait\", this.NodeDetails.waitperc),\r\n new KeyValueColor(\"DB\", this.NodeDetails.dbperc),\r\n new KeyValueColor(\"Script\", this.NodeDetails.scriptperc),\r\n new KeyValueColor(\"Throttle\", this.NodeDetails.throttleperc),\r\n new KeyValueColor(\"Sleep\", this.NodeDetails.sleepperc),\r\n new KeyValueColor(\"Networking\", this.NodeDetails.networkperc),\r\n new KeyValueColor(\"IO\", this.NodeDetails.ioperc)\r\n ]);\r\n }\r\n\r\n closeDialog() {\r\n this.onClose.emit(true);\r\n }\r\n}","<div class=\"modal-dialog modal-xl\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Dettaglio Attività Nodo' | localize: lc}}\r\n <span *ngIf=\"NodeDetails\"> {{NodeDetails.nodeid}}</span>\r\n </h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"NodeDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\r\n </div>\r\n <div class=\"col-md-6\">\r\n\t\t\t\t\t<strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\r\n </div>\r\n </div>\r\n\t\t\t<div>\r\n\t\t\t\t<h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\r\n\t\t\t\t{{NodeDetails.nodedescription}}\r\n\t\t\t</div>\r\n\t\t\t<div style=\"max-height: 200px; overflow: auto\" *ngIf=\"(NodeDetails?.waitstack?.length || 0) > 0\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\r\n <div *ngFor=\"let wait of NodeDetails.waitstack; let i = index;\">\r\n <ng-container *ngFor=\"let _ of [].constructor(i+1)\">-</ng-container> {{wait.nodeid}} - {{wait.nodedescription}}: \r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \r\n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\r\n </div>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\r\n <es-line-chart *ngIf=\"NodeDetails.sessionchart\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"NodeDetails.sessionchart\"\r\n [Legend]=\"true\" \r\n name=\"nodeDetailSessionChart\"\r\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <es-pie-chart *ngIf=\"NodeDetails.loadchart\" [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// Applicazione\r\nimport { ProfilerDataNode } from \"../../models/components/ProfilerDataNode\";\r\nimport { ProfilerDataNodesView } from \"../../models/components/ProfilerDataNodesView\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmProfilerComponentLoc } from \"./adm_profiler.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_profiler\",\r\n providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],\r\n templateUrl: \"./adm_profiler.component.html\"\r\n})\r\nexport class AdmProfilerComponent {\r\n public searchView: ProfilerDataNodesView = new ProfilerDataNodesView();\r\n public storageSub: any;\r\n\r\n public NodeDetails: NodeStats;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<ProfilerDataNodesView>(\"HotSearchProfilato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/profiler`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchProfilato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: ProfilerDataNodesView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView);\r\n }\r\n else {\r\n this.searchView = new ProfilerDataNodesView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(this.searchView);\r\n }\r\n\r\n async POSTGetItems(data: ProfilerDataNodesView) {\r\n this.searchView = await this.adms.getProfilerDataNodes(data);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotSearchProfilato\", this.searchView).subscribe();\r\n }\r\n\r\n async prepareExport(dataCallBack) {\r\n var view = JSON.parse(JSON.stringify(this.searchView));\r\n view.page = 1;\r\n view.itemsperpageoverride = 9999999;\r\n let res = await this.adms.getProfilerDataNodes(view);\r\n dataCallBack(res.items, ProfilerDataNode);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(nodeId);\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Profiler del Server' | localize: lc}}</span> \r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Descrizione' | localize: lc}}</span>\r\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\r\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\r\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\r\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\r\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\r\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\r\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\r\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\r\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\r\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\r\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\r\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\r\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\r\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\r\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\r\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\r\n\r\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren }}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n <span *td=\"'17' let item\">{{item.eventtypename}}</span>\r\n <span *td=\"'18' let item\">{{item.waitclassname}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { TopActivity } from \"./TopActivity\";\r\n\r\nexport class TopActivitiesDataView extends AppSearch<TopActivity>{\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filterrealtime: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmTopActivitieLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessioni Attive\", [\"Active Sessions\"]);\r\n super.set(\"it->en\", \"Prime Istruzioni\", [\"Top Nodes\"]);\r\n super.set(\"it->en\", \"Prime Sessioni\", [\"Top Sessions\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Attività Principali\", [\"Top Activities\"]);\r\n super.set(\"it->en\", \"Descrizione Nodo\", [\"Node Description\"]);\r\n super.set(\"it->en\", \"Nodo\", [\"Node\"]);\r\n super.set(\"it->en\", \"Attività\", [\"Activity\"]);\r\n super.set(\"it->en\", \"Limite\", [\"Limit\"]);\r\n super.set(\"it->en\", \"Tipo Nodo\", [\"Node Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n super.set(\"it->en\", \"Tenant\", [\"Tenant\"]);\r\n super.set(\"it->en\", \"Processo\", [\"Process\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Thread Massimi\", [\"Maximum Threads\"]);\r\n super.set(\"it->en\", \"CPU\", [\"CPUs\"]);\r\n super.set(\"it->en\", \"Classe Attesa\", [\"Wait Class Name\"]);\r\n\r\n super.set(\"it->en\", \"Seriale\", [\"Serial\"]);\r\n super.set(\"it->en\", \"Stato\", [\"Status\"]);\r\n super.set(\"it->en\", \"Tipo\", [\"Type\"]);\r\n super.set(\"it->en\", \"Utente\", [\"User\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { BaseChartComponent, DateValue, Limit, LineChartData, LineSerie } from \"@esfaenza/es-charts\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ItemsSelection } from \"@esfaenza/es-table\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as am4charts from \"@amcharts/amcharts4/charts\";\r\nimport { takeUntil } from \"rxjs/operators\";\r\nimport { ReplaySubject, interval, of } from \"rxjs\";\r\nimport { Dayjs } from \"dayjs\";\r\n\r\n// Modelli\r\nimport { DirectorInfos } from \"../../models/components/DirectorInfos\";\r\nimport { TopActivitiesDataView } from \"../../models/components/TopActivitiesDataView\";\r\nimport { TopNode } from \"../../models/components/TopNode\";\r\nimport { TopSession } from \"../../models/components/TopSession\";\r\nimport { NodeStats } from \"../../models/components/NodeStats\";\r\n\r\nimport { SessionStats } from \"../../models/components/SessionStats\";\r\nimport { SessionThread } from \"../../models/components/SessionThread\";\r\n\r\n// Applicazione\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmTopActivitieLoc } from \"./topact_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"topact_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }],\r\n templateUrl: \"./topact_search.component.html\"\r\n})\r\nexport class AdmTopActivitiesComponent {\r\n public searchView: TopActivitiesDataView = new TopActivitiesDataView();\r\n public storageSub: any;\r\n private LastDataPoint: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n private ChartInstance: BaseChartComponent;\r\n public NodeDetails: NodeStats;\r\n\r\n private rtWindow: { from: Dayjs, to: Dayjs } = null;\r\n\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n \r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // Ogni minuto calcolo qual è la finestra del realTime\r\n interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {\r\n this.updateRealTimeWindow();\r\n });\r\n\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n async updateRealTimeWindow() {\r\n let data = new TopActivitiesDataView();\r\n data = await this.adms.getTopActivities(data);\r\n let reference = data.items[0];\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = this.dateExts.getDateConvertion(itemref.sampletime);\r\n\r\n if (!this.rtWindow)\r\n this.rtWindow = { from: theD, to: theD };\r\n else {\r\n if (theD.isBefore(this.rtWindow.from))\r\n this.rtWindow.from = theD;\r\n if (theD.isAfter(this.rtWindow.to))\r\n this.rtWindow.to = theD;\r\n }\r\n }\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TopActivitiesDataView>(\"HotSearchTopAct\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/topact`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchTopAct\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TopActivitiesDataView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new TopActivitiesDataView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: TopActivitiesDataView = null) {\r\n let sv = searchViewOverride ?? this.searchView;\r\n if ((sv.filterfrom || sv.filterto) && !this.rtWindow)\r\n await this.updateRealTimeWindow();\r\n\r\n let dateRequestOnRealtimeWindow: boolean =\r\n sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&\r\n sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);\r\n\r\n sv.filterrealtime = dateRequestOnRealtimeWindow;\r\n sv.searchinprogress = true;\r\n\r\n this.POSTGetItems(sv, update);\r\n }\r\n\r\n async POSTGetItems(data: TopActivitiesDataView, update: boolean) {\r\n let res = await this.adms.getTopActivities(data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.searchView = res;\r\n this.localStorage.setItem(\"HotSearchTopAct\", this.searchView).subscribe();\r\n }\r\n // DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia\r\n let dirinfos = await this.adms.getInfos();\r\n this.searchView.searchinprogress = false;\r\n this.reviewBindings(update, res, dirinfos);\r\n }\r\n\r\n loadNodeDetails(nodeId: string) {\r\n this.NodeDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.NodeDetails = await this.adms.getNodeStats(nodeId);\r\n });\r\n }\r\n\r\n // **************************************************** Trasformazione da searchview con unico elemento con tutto ai 3 elementi:\r\n // **************************************************** Grafico, TopNodes e TopSessions\r\n TopActiveSessions: LineChartData;\r\n TopNodes: TopNode[];\r\n TopSessions: TopSession[];\r\n DirInfos: DirectorInfos;\r\n seriesPropertiesMapping: { [index: string]: LineSerie } = {};\r\n propertiesSeriesMapping: { [index: string]: string } = {\r\n [\"cputime\"]: \"CPU\",\r\n [\"waittime\"]: \"Wait\",\r\n [\"scripttime\"]: \"Scripting\",\r\n [\"dbtime\"]: \"DB\",\r\n [\"nettime\"]: \"Network\",\r\n [\"throttletime\"]: \"Throttling\",\r\n [\"sleeptime\"]: \"Sleep\",\r\n [\"iotime\"]: \"IO\"\r\n };\r\n\r\n reviewBindings(update: boolean, searchViewOverride?, dirInfos?: DirectorInfos) {\r\n let reference = (searchViewOverride ?? this.searchView).items[0];\r\n this.TopNodes = reference.topnodes;\r\n this.TopSessions = reference.topsessions;\r\n this.DirInfos = dirInfos;\r\n\r\n if (!reference.actsessions || reference.actsessions.length == 0) {\r\n this.TopActiveSessions = null;\r\n return;\r\n }\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(reference.actsessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping[props[i]] = s;\r\n }\r\n }\r\n\r\n for (let i = 0; i < reference.actsessions.length; i++) {\r\n let itemref = reference.actsessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n\r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))\r\n this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n if (update && this.ChartInstance) {\r\n let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n if (series.some(t => t.values.length > 0)) {\r\n this.ChartInstance.addData(data);\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n else {\r\n this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc(\"Thread Massimi\")));\r\n this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n }\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n\r\n private from: Date;\r\n private to: Date;\r\n\r\n dataSelectionChanged(event: { from: Date, to: Date, initial: boolean }) {\r\n this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : \"\") : event.from;\r\n this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : \"\") : event.to;\r\n\r\n var pseudoSearchView: TopActivitiesDataView = JSON.parse(JSON.stringify(this.searchView));\r\n pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token(\"getFullDateDisplayFormat\")) : \"\";\r\n this.sendSearch(true, true, pseudoSearchView);\r\n }\r\n\r\n onChartLoaded(chart: BaseChartComponent, overwriteInstance: boolean = true) {\r\n if(overwriteInstance)\r\n this.ChartInstance = chart;\r\n\r\n chart.Chart.events.on(\"ready\", () => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n setTimeout(() => {\r\n (<am4charts.XYChart>chart.Chart).xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));\r\n (<am4charts.XYChart>chart.Chart).yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));\r\n\r\n // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom\r\n }, 500);\r\n });\r\n }\r\n\r\n // **************************************************** Gestione dettaglio sessione\r\n\r\n SessionDetails: SessionStats;\r\n SelectedTopNodes: TopNode[];\r\n SelectedSessions: LineChartData;\r\n\r\n seriesPropertiesMapping2: { [index: string]: LineSerie } = {};\r\n\r\n loadSessionDetails(sessionId: number, serialNo: number) {\r\n this.SessionDetails = null;\r\n requestAnimationFrame(async () => {\r\n this.SessionDetails = await this.adms.getSessionStats(sessionId?.toString(), serialNo?.toString());\r\n this.threadSelectionChanged(null);\r\n });\r\n }\r\n\r\n threadSelectionChanged(selection?: ItemsSelection<SessionThread>) {\r\n this.SelectedTopNodes = null;\r\n this.SelectedSessions = null;\r\n\r\n requestAnimationFrame(() => {\r\n let sessDet = (selection?.count || 0) == 0 ? this.SessionDetails : selection.items[0];\r\n\r\n this.SelectedTopNodes = sessDet.nodes;\r\n\r\n let series: LineSerie[] = []; \r\n let props = Object.keys(sessDet.sessions[0]);\r\n for (let i = 0; i < props.length; i++) {\r\n if (props[i] != 'sampletime') {\r\n let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, \"sessions\");\r\n series.push(s);\r\n this.seriesPropertiesMapping2[props[i]] = s;\r\n }\r\n }\r\n \r\n for (let i = 0; i < sessDet.sessions.length; i++) {\r\n let itemref = sessDet.sessions[i];\r\n let theD = new Date(itemref.sampletime);\r\n \r\n for (let i = 0; i < props.length; i++)\r\n if (props[i] != 'sampletime')\r\n this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));\r\n }\r\n\r\n this.SelectedSessions = new LineChartData(series);\r\n\r\n });\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Attività Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </span> \r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attività' | localize: lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadSessionDetails(session.sid, session.serial); dlgSessionDetails.show();\">{{session.sid}}</span></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attività' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attività</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n <!-- <es-table [(ngModel)]=\"SelectedSessions\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">Timestamp</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Net</th>\r\n <th>IO</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-session>\r\n <td class=\"app-col-min\" style=\"text-wrap: nowrap;\"><strong>{{session.sampletime | loc_date: 'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td>{{session.cputime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.waittime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.dbtime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.scripttime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.throttletime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.sleeptime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.nettime | number : '1.1-2' : 'it'}}</td>\r\n <td>{{session.iotime | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table> -->\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{thread.waittime | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class LocksView extends AppSearch<GenericItem>{\r\n constructor() { super(); }\r\n\r\n filtersid: string;\r\n filterlock: string;\r\n filterglobal: boolean;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmEnqLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Ricerca Lock Applicativi\", [\"Search Application Locks\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico i Lock Applicativi\", [\"Loading Application Locks\"]);\r\n super.set(\"it->en\", \"Globale\", [\"Global\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { ExportService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { LocksView } from \"../../models/components/LocksView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmEnqLoc } from \"./adm_enq.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_enq\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }],\r\n templateUrl: \"./adm_enq.component.html\"\r\n})\r\nexport class AdmEnqComponent {\r\n public locksView: LocksView = new LocksView();\r\n public storageSub: any;\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n public expExts: ExportService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<LocksView>(\"HotEnqueue\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverenqueues`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotEnqueue\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: LocksView) {\r\n if (HotPotato) {\r\n this.locksView = HotPotato;\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n else {\r\n this.locksView = new LocksView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n if (resetPage)\r\n this.locksView.page = 1;\r\n\r\n this.POSTGetProcesses(this.locksView);\r\n }\r\n\r\n async POSTGetProcesses(data: LocksView) {\r\n this.locksView = await this.adms.getServerLocks(data);\r\n this.locksView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotEnqueue\", this.locksView).subscribe();\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Lock Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Nome' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | localize: lc}}</span>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AppSearch } from \"@esfaenza/es-table\";\r\nimport { Metric } from \"./Metric\";\r\n\r\nexport class MetricsView extends AppSearch<Metric> {\r\n constructor() { super(); }\r\n\r\n filterfrom: string;\r\n filterto: string;\r\n filtersid: string;\r\n filterserial: string;\r\n filtermetrics: string[];\r\n filterrealtime: boolean;\r\n fitlerinstance: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmMetricsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Metriche di Sistema\", [\"System Metrics\"]);\r\n super.set(\"it->en\", \"Cod. Sessione\", [\"Session ID\"]);\r\n super.set(\"it->en\", \"Seriale Sessione\", [\"Session Serial\"]);\r\n super.set(\"it->en\", \"Filtra Metriche...\", [\"Filter Metrics...\"]);\r\n super.set(\"it->en\", \"Carico i Dati\", [\"Loading Data\"]);\r\n super.set(\"it->en\", \"Aggiorna ogni\", [\"Update every\"]);\r\n super.set(\"it->en\", \"secondo/i\", [\"second/s\"]);\r\n super.set(\"it->en\", \"Istanza Metriche\", [\"Metrics Instance\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { BaseChartComponent } from \"@esfaenza/es-charts\";\r\nimport { DateService, InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { Metric } from \"../../models/components/Metric\";\r\nimport { MetricChart } from \"../../models/components/MetricChart\";\r\nimport { MetricsView } from \"../../models/components/MetricsView\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmMetricsLoc } from \"./metrics_search.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"metrics_search\",\r\n providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }],\r\n templateUrl: \"./metrics_search.component.html\"\r\n})\r\nexport class AdmMetricsComponent {\r\n\r\n public Metrics: Metric[];\r\n private MetricsChartCache: { [name: string]: { chart: BaseChartComponent, lastTs: Date } } = {};\r\n\r\n public searchView: MetricsView = new MetricsView();\r\n public storageSub: any;\r\n\r\n public autoUpdate: boolean = false;\r\n public seconds: string = \"5\";\r\n\r\n constructor(\r\n public dateExts: DateService,\r\n public lc: LocalizationService,\r\n private localStorage: PreferencesService,\r\n private location: Location,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n ngOnInit() {\r\n this.storageSub = this.route.queryParams.subscribe(params => {\r\n this.Init(params[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n Init(ignoreStore) {\r\n this.doInit(ignoreStore);\r\n }\r\n\r\n async dateChanged() {\r\n // Pulizia di tutti i parametri di ricerca dipendenti dalle date\r\n this.metricsToShow = [];\r\n this.Metrics = [];\r\n this.instanceRequired = false;\r\n this.Instances = [];\r\n this.selectedInstance = \"\";\r\n this.searchView.filtermetrics = [];\r\n\r\n this.Metrics = await this.adms.getMetricsList(this.searchView.filterfrom || \"\", this.searchView.filterto || \"\");\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<MetricsView>(\"HotSearchMetrics\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/metrics`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotSearchMetrics\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: MetricsView) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems(this.searchView, false);\r\n }\r\n else {\r\n this.searchView = new MetricsView();\r\n this.sendSearch();\r\n }\r\n this.dateChanged();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n sendSearch(resetPage: boolean = true, update: boolean = false, searchViewOverride: MetricsView = null) {\r\n if (!update)\r\n this.MetricsChartCache = {};\r\n\r\n this.searchView.searchinprogress = true;\r\n // Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza\r\n this.searchView.itemsperpageoverride = 999999;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.POSTGetItems(searchViewOverride ?? this.searchView, update);\r\n }\r\n\r\n public Instances: KeyValue[] = []\r\n public selectedInstance = \"\";\r\n public instanceRequired: boolean = false;\r\n public metricsToShow: Metric[] = [];\r\n\r\n async POSTGetItems(data: MetricsView, update: boolean) {\r\n data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);\r\n\r\n let res = await this.adms.getMetrics(data);\r\n //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table\r\n if (!update) {\r\n this.selectedInstance = \"\";\r\n this.metricsToShow = [];\r\n this.searchView = res;\r\n this.searchView.items.forEach(m => {\r\n if (m.instance && !this.Instances.find(t => t.id == m.instance))\r\n this.Instances.push(new KeyValue(m.instance, m.instance));\r\n });\r\n this.instanceRequired = this.Instances.length > 1;\r\n if (this.Instances.length == 1) {\r\n this.selectedInstance = this.Instances[0].id;\r\n this.instanceSelected();\r\n }\r\n else\r\n this.instanceSelected(true);\r\n this.localStorage.setItem(\"HotSearchMetrics\", this.searchView).subscribe();\r\n }\r\n else {\r\n // Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico\r\n res.items.forEach(m => {\r\n m.values.forEach(c => {\r\n let refm = this.MetricsChartCache[this.metricKey(m, c)];\r\n if (refm) {\r\n c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });\r\n if (c.series.some(t => t.values.length > 0)) {\r\n refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];\r\n refm.chart.addData(c);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n this.searchView.searchinprogress = false;\r\n }\r\n\r\n instanceSelected(allowNull: boolean = false) {\r\n if (!this.selectedInstance && !allowNull)\r\n return;\r\n\r\n this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));\r\n }\r\n\r\n linkChartToMetric(metric: Metric, metricChart: MetricChart, chartComp: BaseChartComponent) {\r\n this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };\r\n }\r\n\r\n private metricKey(metric: Metric, value: MetricChart): string {\r\n return metric.name + \" - \" + value.xtitle + (metric.instance ? \" - \" + metric.instance : \"\");\r\n }\r\n\r\n // #region Gestione update automatico\r\n updateTimer: any;\r\n autoUpdateChanged() {\r\n if (!/^[1-9]\\d*$/.test(this.seconds))\r\n this.seconds = '10';\r\n const secondsInMs = parseInt(this.seconds, null) * 1000;\r\n if (this.autoUpdate) {\r\n this.sendSearch(false, true);\r\n this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);\r\n }\r\n else\r\n clearInterval(this.updateTimer);\r\n }\r\n // #endregion\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Metriche di Sistema' | localize: lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'A' | localize: lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Cod. Sessione' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Seriale Sessione' | localize: lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filtra Metriche...' | localize: lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | localize: lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" name=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | localize: lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmLogsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Log del Server\", [\"Server Logs\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\n// Localizzazione\r\nimport { AdmLogsLoc } from \"./adm_logs.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_logs\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }],\r\n templateUrl: \"./adm_logs.component.html\"\r\n})\r\nexport class AdmLogsComponent {\r\n public Log: string;\r\n\r\n constructor(\r\n private intercom: InterComService,\r\n private lc: LocalizationService,\r\n private route: ActivatedRoute, \r\n private adms: AdminModuleBaseService) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Log = await this.adms.getServerLogs();\r\n }\r\n}","<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\n\r\nexport class DynamicViewsView extends AppSearch<GenericItem> {\r\n constructor() { super(); }\r\n\r\n filtername: string;\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class AdmDynamicViewsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n super.set(\"it->en\", \"Ricerca Viste Dinamiche Applicative\", [\"Search Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Nome\", [\"Name\"]);\r\n super.set(\"it->en\", \"Carico le Viste Dinamiche Applicative\", [\"Loading Application Dynamic Views\"]);\r\n super.set(\"it->en\", \"Il nome della vista è obbligatorio per le operazioni di ricerca\", [\"View Name is mandatory for search operations\"]);\r\n super.set(\"it->en\", \"Nessun elemento trovato per la vista dinamica\", [\"No element found for Dynamic View\"]);\r\n }\r\n}","// Angular\r\nimport { Component, Inject } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\n\r\n// Applicazione\r\nimport { DynamicViewsView } from \"../../models/components/DynamicViewsView\";\r\nimport { KeyValue } from \"../../models/shared/KeyValue\";\r\nimport { ADM_MODULE_PATH } from \"../../tokens\";\r\n\r\n// Localizzazione\r\nimport { AdmDynamicViewsLoc } from \"./adm_dynamic_views.component.loc\";\r\nimport { AdminModuleBaseService } from \"../../services/admin-module.base.service\";\r\n\r\n@Component({\r\n selector: \"adm_dynamic_views\",\r\n viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],\r\n templateUrl: \"./adm_dynamic_views.component.html\"\r\n})\r\nexport class AdmDynamicViewsComponent {\r\n\r\n public searchView: DynamicViewsView = new DynamicViewsView();\r\n public Names: KeyValue[] = [];\r\n public storageSub: any;\r\n public badSearch: boolean = false;\r\n\r\n public currentName: string = \"\";\r\n\r\n // Staccato dalla view perché deve essere distrutta e ricreata di continuo\r\n public filterName:string = \"\";\r\n\r\n constructor(\r\n public lc: LocalizationService,\r\n private intercom: InterComService,\r\n private localStorage: PreferencesService,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private adms: AdminModuleBaseService,\r\n @Inject(ADM_MODULE_PATH) private mod: string) {\r\n\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n async ngOnInit() {\r\n this.Names = await this.adms.getDynamicViews();\r\n this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params[\"ignoreStorage\"]); });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.storageSub)\r\n this.storageSub.unsubscribe();\r\n }\r\n\r\n async Init(ignoreStorage) {\r\n let item = await this.localStorage.getItem<DynamicViewsView>(\"HotDinamitato\").toPromise();\r\n if (!ignoreStorage && item) {\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(`/pages/${this.mod}/serverviews`);\r\n this.route.snapshot.queryParams = [];\r\n await this.localStorage.removeItem(\"HotDinamitato\").toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: DynamicViewsView) {\r\n //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti\r\n //Altirmenti genero il modello nuovo normalmente\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.POSTGetItems();\r\n }\r\n else {\r\n this.searchView = new DynamicViewsView();\r\n this.sendSearch();\r\n }\r\n }\r\n\r\n sendSearch(resetPage: boolean = true) {\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n this.searchView.filtername = this.filterName;\r\n this.POSTGetItems();\r\n }\r\n\r\n async POSTGetItems() {\r\n if (!this.searchView.filtername) {\r\n this.badSearch = true;\r\n AppSearch.reset(this.searchView);\r\n\r\n //Aggiorno il riferimento per refreshare la es-table\r\n this.searchView = JSON.parse(JSON.stringify(this.searchView));\r\n return;\r\n }\r\n else\r\n this.badSearch = false;\r\n\r\n // Per force-resettare l'estable\r\n if (this.currentName != this.searchView.filtername) {\r\n this.currentName = this.searchView.filtername;\r\n this.searchView = null;\r\n }\r\n\r\n this.searchView = await this.adms.getDynamicViewData(this.searchView);\r\n this.searchView.searchinprogress = false;\r\n this.localStorage.setItem(\"HotDinamitato\", this.searchView).subscribe();\r\n }\r\n\r\n}","<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Ricerca Viste Dinamiche Applicative' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [SelectLabel]=\"'Nome' | localize: lc\"></form-select>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div *ngIf=\"badSearch\" class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista è obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\r\n <ng-container *ngIf=\"!badSearch\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && searchView.items.length > 0\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n <div *ngIf=\"searchView && searchView.items.length == 0 && !searchView.searchinprogress\" class=\"card card-info app-white-text app-padding-10\">\r\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({ name: 'format_time' })\r\nexport class FormatTimePipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n transform(value: number | string) {\r\n return this.secondsToHms(value);\r\n }\r\n\r\n secondsToHms(d: number | string): string {\r\n d = Number(d);\r\n var h = Math.floor(d / 3600);\r\n var m = Math.floor(d % 3600 / 60);\r\n var s = Math.floor(d % 3600 % 60);\r\n \r\n var hDisplay = h > 0 ? h + \" h, \" : \"\";\r\n var mDisplay = m > 0 ? m + \" min, \" : \"\";\r\n var sDisplay = s > 0 ? s + \" sec\" : \"\";\r\n return hDisplay + mDisplay + sDisplay; \r\n }\r\n}","/** Chiave di questo modulo, da utilizzare per i messaggi */\r\nexport const MK_ADM = \"EsAdminModule\";\r\n\r\n/** Messaggi gestiti da questo modulo */\r\nexport enum AdmMessageTypes{\r\n Message\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { InterComService, InterComMessage } from \"@esfaenza/extensions\";\r\n\r\n// Modelli\r\nimport { AdmMessageTypes, MK_ADM } from \"./admin-module-messages\";\r\n\r\ndeclare var myconfig;\r\n\r\n@Injectable()\r\nexport class AdminModuleCommService {\r\n\r\n constructor(private intercom: InterComService) { }\r\n\r\n public register() {\r\n this.intercom.register(MK_ADM);\r\n this.intercom.outbounds[MK_ADM].subscribe((t: InterComMessage) => { this.handleOutbound(t.type, t.message); });\r\n }\r\n\r\n private handleOutbound(type: AdmMessageTypes, message: any) {\r\n switch (type) {\r\n case AdmMessageTypes.Message:\r\n if (myconfig.DEBUG_MODE)\r\n console.log(\"@admin-module outbound message: \" + message);\r\n break;\r\n }\r\n }\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\n// Material\r\nimport { MatIconModule } from '@angular/material/icon'\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDayjsDateModule } from \"@esfaenza/material-dayjs-adapter\";\r\nimport { MatLegacyInputModule as MatInputModule } from \"@angular/material/legacy-input\";\r\n\r\n// Libs\r\nimport { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { TooltipModule } from \"ngx-bootstrap/tooltip\";\r\n\r\n// Esfaenza\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { EsChartsModule } from \"@esfaenza/es-charts\";\r\nimport { EsGertrudeModule } from \"@esfaenza/gertrude\";\r\nimport { ExtensionsModule } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { ContextMenuModule } from \"@esfaenza/ngx-contextmenu\";\r\n\r\n// Components\r\nimport { AdmAuditsComponent } from \"./components/audits/adm_audits.component\";\r\nimport { AdmWrkComponent } from \"./components/workers/adm_wrk.component\";\r\nimport { AdmProfilerComponent } from \"./components/profiler/adm_profiler.component\";\r\nimport { AdmTopActivitiesComponent } from \"./components/topact/topact_search.component\";\r\nimport { AdmEnqComponent } from \"./components/enqueues/adm_enq.component\";\r\nimport { AdmMetricsComponent } from \"./components/metrics/metrics_search.component\";\r\nimport { AdmLogsComponent } from \"./components/logs/adm_logs.component\";\r\nimport { NodeDetailComponent } from \"./components/_shared/node_detail.component\";\r\nimport { AdmDynamicViewsComponent } from \"./components/dynamic_views/adm_dynamic_views.component\";\r\n\r\n// Pipes\r\nimport { FormatTimePipe } from \"./pipes/format_time.pipe\";\r\n\r\n// Communication Service\r\nimport { AdminModuleCommService } from \"./admin-module.comms.service\";\r\n\r\n// Tokens\r\nimport { ADM_CONVERSATIONS } from \"./tokens\";\r\nimport { AdminModuleBaseService } from \"./services/admin-module.base.service\";\r\n\r\ndeclare var myconfig;\r\n\r\nexport const routeConfig = [\r\n {\r\n path: \"\", children: [\r\n { path: \"serverworkers\", component: AdmWrkComponent, data: { title: \"Ricerca Processi Applicativi\", internalNavigation: false } },\r\n { path: \"profiler\", component: AdmProfilerComponent, data: { title: \"Profiler del Server\", internalNavigation: false } },\r\n { path: \"topact\", component: AdmTopActivitiesComponent, data: { title: \"Attività Principali\", internalNavigation: false } },\r\n { path: \"metrics\", component: AdmMetricsComponent, data: { title: \"Metriche di Sistema\", internalNavigation: false } },\r\n { path: \"serverlogs\", component: AdmLogsComponent, data: { title: \"Log del Server\", internalNavigation: false } },\r\n { path: \"serveraudits\", component: AdmAuditsComponent, data: { title: \"Ricerca Audit Applicativi\", internalNavigation: false } },\r\n { path: \"serverenqueues\", component: AdmEnqComponent, data: { title: \"Ricerca Lock Applicativi\", internalNavigation: false } },\r\n { path: \"serverviews\", component: AdmDynamicViewsComponent, data: { title: \"Ricerca Viste Dinamiche Applicative\", internalNavigation: false } }\r\n ]\r\n }\r\n];\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n\r\n // Material\r\n MatDatepickerModule,\r\n MatDayjsDateModule,\r\n MatIconModule,\r\n MatInputModule,\r\n\r\n // Bootstrap\r\n ModalModule,\r\n TooltipModule,\r\n BsDropdownModule,\r\n\r\n // Esfaenza e componenti visuali\r\n ContextMenuModule,\r\n LocalizationModule,\r\n ExtensionsModule,\r\n EsTableModule,\r\n FormsAndValidationsModule,\r\n EsGertrudeModule,\r\n EsChartsModule,\r\n NgxMatDatetimePickerModule,\r\n\r\n RouterModule.forChild(routeConfig),\r\n];\r\n\r\nconst COMPONENTS = [\r\n AdmWrkComponent,\r\n AdmProfilerComponent,\r\n AdmTopActivitiesComponent,\r\n AdmDynamicViewsComponent,\r\n AdmLogsComponent,\r\n AdmAuditsComponent,\r\n AdmEnqComponent,\r\n AdmMetricsComponent,\r\n NodeDetailComponent\r\n];\r\n\r\nconst PIPES = [\r\n FormatTimePipe\r\n]\r\n\r\n@NgModule({\r\n imports: [...MODULES],\r\n declarations: [...COMPONENTS, ...PIPES],\r\n providers: [\r\n AdminModuleCommService,\r\n { provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }\r\n ]\r\n})\r\nexport class AdmModule {\r\n constructor(private commService: AdminModuleCommService) {\r\n console.log(\"@esfaenza/admin-module: BOOTSTRAP\");\r\n this.commService.register();\r\n }\r\n}","/*\r\n * Public API Surface of admin-module\r\n */\r\n\r\nexport * from './lib/admin-module.module';\r\nexport * from './lib/tokens';\r\nexport * from \"./lib/admin-module-messages\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i5","i6.AdminModuleBaseService","i6","i8","i9","i10","i11","i3","i11.NodeDetailComponent","i12.NodeDetailComponent","i1","i4.AdminModuleBaseService","MatInputModule","i1.AdminModuleCommService"],"mappings":"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"}
|