@resolveio/client-lib-core 0.0.16 → 0.1.0
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/account-manager.service.mjs +9 -11
- package/esm2020/lib/auth/auth-guard.service.mjs +4 -8
- package/esm2020/lib/auth/auth-permissions.service.mjs +3 -3
- package/esm2020/lib/auth/auth.service.mjs +3 -3
- package/esm2020/lib/auth/auth365.component.mjs +3 -3
- package/esm2020/lib/auth/can-deactivate-guard.service.mjs +3 -3
- package/esm2020/lib/auth/enroll.component.mjs +3 -3
- package/esm2020/lib/auth/forgot-password.component.mjs +3 -3
- package/esm2020/lib/core.component.mjs +13 -138
- package/esm2020/lib/core.module.mjs +6 -17
- package/esm2020/lib/core.service.mjs +4 -12
- package/esm2020/lib/directive/focus.mjs +3 -3
- package/esm2020/lib/directive/scroll.mjs +3 -3
- package/esm2020/lib/home/home.component.mjs +7 -44
- package/esm2020/lib/logger/logger.component.mjs +3 -3
- package/esm2020/lib/offline-manager.service.mjs +3 -3
- package/esm2020/lib/pipes/domsanitizor.pipe.mjs +3 -3
- package/esm2020/lib/pipes/filter.pipe.mjs +6 -6
- package/esm2020/lib/pipes/json-parse.pipe.mjs +3 -3
- package/esm2020/lib/pipes/minus-currency.pipe.mjs +3 -3
- package/esm2020/lib/pipes/phone.pipe.mjs +3 -3
- package/esm2020/lib/pipes/pipe.module.mjs +4 -4
- package/esm2020/lib/pipes/reverse-list.pipe.mjs +3 -3
- package/esm2020/lib/pipes/titlecase.pipe.mjs +3 -3
- package/esm2020/lib/resolveio-class.mjs +3 -3
- package/esm2020/lib/shared/shared.module.mjs +4 -4
- package/esm2020/lib/socket-manager.service.mjs +4 -14
- package/esm2020/lib/socket.service.mjs +3 -3
- package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +3 -3
- package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +3 -3
- package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +3 -3
- package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +3 -3
- package/esm2020/lib/support-ticket/support-ticket.component.mjs +3 -3
- package/esm2020/lib/support-ticket/support-ticket.module.mjs +5 -6
- package/esm2020/lib/support-ticket/support-ticket.service.mjs +3 -3
- package/esm2020/lib/token-manager.service.mjs +3 -3
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +5 -21
- package/esm2020/lib/user-settings/user-settings.component.mjs +4 -4
- package/esm2020/lib/user-settings/user-settings.module.mjs +7 -10
- package/esm2020/lib/user-settings/user-settings.service.mjs +3 -3
- package/esm2020/lib/util/aws.service.mjs +3 -3
- package/esm2020/lib/util/validation.service.mjs +3 -3
- package/esm2020/lib/util/window-resize.service.mjs +3 -3
- package/esm2020/lib/util/window.service.mjs +3 -3
- package/esm2020/lib/widgets/alert/alert.service.mjs +3 -3
- package/esm2020/lib/widgets/chartjs/chart.component.mjs +3 -3
- package/esm2020/lib/widgets/chartjs/chart.module.mjs +4 -4
- package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +3 -3
- package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +4 -4
- package/esm2020/lib/widgets/data-table/data-table.component.mjs +3 -3
- package/esm2020/lib/widgets/data-table/data-table.module.mjs +4 -4
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +3 -3
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +4 -4
- package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +3 -3
- package/esm2020/lib/widgets/dialog/dialog.service.mjs +3 -3
- package/esm2020/lib/widgets/file/file-upload.component.mjs +4 -18
- package/esm2020/lib/widgets/file/file-upload.module.mjs +4 -4
- package/esm2020/lib/widgets/form-button/form-button.component.mjs +3 -3
- package/esm2020/lib/widgets/form-button/form-button.module.mjs +4 -4
- package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +5 -5
- package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +5 -5
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +3 -3
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +4 -4
- package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +3 -3
- package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +4 -4
- package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +3 -3
- package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +3 -3
- package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +3 -3
- package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +4 -4
- package/esm2020/lib/widgets/user-role/user-role.component.mjs +3 -3
- package/esm2020/lib/widgets/user-role/user-role.module.mjs +4 -4
- package/esm2020/public_api.mjs +1 -19
- package/fesm2015/resolveio-client-lib-core.mjs +489 -1283
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -1
- package/fesm2020/resolveio-client-lib-core.mjs +489 -1281
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -1
- package/lib/account-manager.service.d.ts +2 -3
- package/lib/core.component.d.ts +1 -11
- package/lib/core.module.d.ts +4 -6
- package/lib/core.service.d.ts +0 -4
- package/lib/home/home.component.d.ts +0 -6
- package/lib/user-settings/settings/users-settings.component.d.ts +0 -3
- package/package.json +14 -17
- package/public_api.d.ts +0 -18
- package/esm2020/lib/home/about-us.component.mjs +0 -34
- package/esm2020/lib/home/contact-us.component.mjs +0 -57
- package/esm2020/lib/home/demo.component.mjs +0 -59
- package/esm2020/lib/home/home.module.mjs +0 -46
- package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +0 -45
- package/esm2020/lib/standard-pages/faq/faq.component.mjs +0 -45
- package/esm2020/lib/standard-pages/features/features.component.mjs +0 -23
- package/esm2020/lib/standard-pages/home/home.component.mjs +0 -38
- package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +0 -23
- package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +0 -23
- package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +0 -37
- package/esm2020/lib/standard-pages/standard-pages.module.mjs +0 -65
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +0 -14
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +0 -34
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +0 -2
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +0 -76
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +0 -70
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +0 -10
- package/lib/home/about-us.component.d.ts +0 -15
- package/lib/home/contact-us.component.d.ts +0 -20
- package/lib/home/demo.component.d.ts +0 -25
- package/lib/home/home.module.d.ts +0 -12
- package/lib/standard-pages/contactus/contactus.component.d.ts +0 -17
- package/lib/standard-pages/faq/faq.component.d.ts +0 -17
- package/lib/standard-pages/features/features.component.d.ts +0 -12
- package/lib/standard-pages/home/home.component.d.ts +0 -14
- package/lib/standard-pages/howitwork/howitwork.component.d.ts +0 -12
- package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +0 -12
- package/lib/standard-pages/pricing/pricing.component.d.ts +0 -14
- package/lib/standard-pages/standard-pages.module.d.ts +0 -16
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +0 -7
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +0 -17
- package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +0 -5
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +0 -26
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +0 -20
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +0 -9
|
@@ -211,9 +211,9 @@ export class LoggerComponent extends BaseComponent {
|
|
|
211
211
|
}, () => { });
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
LoggerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
215
|
-
LoggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: LoggerComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: "<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class=\"row\">\n\t<div class=\"col-lg-12\">\n\t\t<div class=\"card\">\n\t\t\t<div class=\"card-header\"><b>Filters</b></div>\n\t\t\t<div class=\"card-body\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-lg-12\">\n\t\t\t\t\t\t<responsive-button-group collapseSize=\"900\">\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') && selectedTypes.includes('document') && selectedTypes.includes('query') && selectedTypes.includes('client-request') && selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('all')\">All</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('error')\">Errors</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('document') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('document')\">Document</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('query') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('query')\">Query</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('queryResponse') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('queryResponse')\">Query Response</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-request') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-request')\">Client Requests</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-response')\">Client Responses</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('callMethodInternal') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('callMethodInternal')\">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-danger\" (click)=\"removeAllLogs()\">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]=\"user\" (change)=\"getLogData()\" placeholder=\"Select User\">\n\t\t\t\t\t\t\t<ng-option *ngFor=\"let user of users\" [value]=\"user.fullname\">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Collection</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"collection\" (change)=\"getLogData()\" placeholder=\"Input Colls Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Method</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"method\" (change)=\"getLogData()\" placeholder=\"Input Methods Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Route</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"route\" (change)=\"getLogData()\" placeholder=\"Input Routes Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Document</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"id_document\" (change)=\"getLogData()\" placeholder=\"Input Ids Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date Start</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateStartElem\" ngbDatepicker #dStart=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dStart.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeStartElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date End</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateEndElem\" ngbDatepicker #dEnd=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dEnd.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeEndElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-lg-8\">\n\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t<option value=\"10\">10</option>\n\t\t\t<option value=\"25\">25</option>\n\t\t\t<option value=\"50\">50</option>\n\t\t\t<option value=\"100\">100</option>\n\t\t\t<option value=\"250\">250</option>\n\t\t\t<option value=\"500\">500</option>\n\t\t\t<option value=\"1000\">1000</option>\n\t\t\t<option value=\"5000\">5000</option>\n\t\t</select>\n\t</div>\n\t<div class=\"col-lg-4\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<ngb-accordion #acc=\"ngbAccordion\" activeIds=\"\">\n\t\t<ngb-panel *ngFor=\"let log of logs; let i = index\" [id]=\"'log_' + i\">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class=\"label-accordion\" style=\"width: 90%; height: 22px\">\n\t\t\t\t\t\t<strong class=\"pull-left\">Type: {{ log.type }}{{log.method ? ' - Method: ' + log.method : '' }}{{log.collection ? ' - Collection: ' + log.collection : '' }}{{log.user ? ' - User: ' + log.user : '' }}{{log.route ? ' - Route: ' + log.route : '' }}{{log.id_document ? ' - id_document: ' + log.id_document : '' }}{{log.messageId ? ' - messageId: ' + log.messageId : '' }}</strong>\n\t\t\t\t\t\t<p class=\"pull-right\">{{ log.createdAt | date : 'medium' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('log_' + i)\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('log_' + i)\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf=\"log.payload\">\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"!log.payload\">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<div class=\"col-lg-4\">\n\t\t<div class=\"row\"> \n\t\t\t<div class=\"col-lg-8\">\n\t\t\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t\t\t<option value=\"10\">10</option>\n\t\t\t\t\t<option value=\"25\">25</option>\n\t\t\t\t\t<option value=\"50\">50</option>\n\t\t\t\t\t<option value=\"100\">100</option>\n\t\t\t\t\t<option value=\"250\">250</option>\n\t\t\t\t\t<option value=\"500\">500</option>\n\t\t\t\t\t<option value=\"1000\">1000</option>\n\t\t\t\t\t<option value=\"5000\">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"col-lg-8\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>", styles: ["\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n"], components: [{ type: i3.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { type: i5.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }, { type: i5.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }], pipes: { "date": i6.DatePipe, "jsonParse": i8.JsonParsePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
216
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
214
|
+
LoggerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: LoggerComponent, deps: [{ token: i1.ProviderService }, { token: i2.DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
215
|
+
LoggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: LoggerComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: "<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class=\"row\">\n\t<div class=\"col-lg-12\">\n\t\t<div class=\"card\">\n\t\t\t<div class=\"card-header\"><b>Filters</b></div>\n\t\t\t<div class=\"card-body\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-lg-12\">\n\t\t\t\t\t\t<responsive-button-group collapseSize=\"900\">\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') && selectedTypes.includes('document') && selectedTypes.includes('query') && selectedTypes.includes('client-request') && selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('all')\">All</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('error')\">Errors</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('document') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('document')\">Document</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('query') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('query')\">Query</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('queryResponse') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('queryResponse')\">Query Response</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-request') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-request')\">Client Requests</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-response')\">Client Responses</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('callMethodInternal') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('callMethodInternal')\">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-danger\" (click)=\"removeAllLogs()\">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]=\"user\" (change)=\"getLogData()\" placeholder=\"Select User\">\n\t\t\t\t\t\t\t<ng-option *ngFor=\"let user of users\" [value]=\"user.fullname\">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Collection</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"collection\" (change)=\"getLogData()\" placeholder=\"Input Colls Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Method</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"method\" (change)=\"getLogData()\" placeholder=\"Input Methods Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Route</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"route\" (change)=\"getLogData()\" placeholder=\"Input Routes Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Document</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"id_document\" (change)=\"getLogData()\" placeholder=\"Input Ids Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date Start</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateStartElem\" ngbDatepicker #dStart=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dStart.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeStartElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date End</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateEndElem\" ngbDatepicker #dEnd=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dEnd.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeEndElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-lg-8\">\n\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t<option value=\"10\">10</option>\n\t\t\t<option value=\"25\">25</option>\n\t\t\t<option value=\"50\">50</option>\n\t\t\t<option value=\"100\">100</option>\n\t\t\t<option value=\"250\">250</option>\n\t\t\t<option value=\"500\">500</option>\n\t\t\t<option value=\"1000\">1000</option>\n\t\t\t<option value=\"5000\">5000</option>\n\t\t</select>\n\t</div>\n\t<div class=\"col-lg-4\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<ngb-accordion #acc=\"ngbAccordion\" activeIds=\"\">\n\t\t<ngb-panel *ngFor=\"let log of logs; let i = index\" [id]=\"'log_' + i\">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class=\"label-accordion\" style=\"width: 90%; height: 22px\">\n\t\t\t\t\t\t<strong class=\"pull-left\">Type: {{ log.type }}{{log.method ? ' - Method: ' + log.method : '' }}{{log.collection ? ' - Collection: ' + log.collection : '' }}{{log.user ? ' - User: ' + log.user : '' }}{{log.route ? ' - Route: ' + log.route : '' }}{{log.id_document ? ' - id_document: ' + log.id_document : '' }}{{log.messageId ? ' - messageId: ' + log.messageId : '' }}</strong>\n\t\t\t\t\t\t<p class=\"pull-right\">{{ log.createdAt | date : 'medium' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('log_' + i)\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('log_' + i)\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf=\"log.payload\">\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"!log.payload\">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<div class=\"col-lg-4\">\n\t\t<div class=\"row\"> \n\t\t\t<div class=\"col-lg-8\">\n\t\t\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t\t\t<option value=\"10\">10</option>\n\t\t\t\t\t<option value=\"25\">25</option>\n\t\t\t\t\t<option value=\"50\">50</option>\n\t\t\t\t\t<option value=\"100\">100</option>\n\t\t\t\t\t<option value=\"250\">250</option>\n\t\t\t\t\t<option value=\"500\">500</option>\n\t\t\t\t\t<option value=\"1000\">1000</option>\n\t\t\t\t\t<option value=\"5000\">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"col-lg-8\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>", styles: ["\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n"], components: [{ type: i3.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i4.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { type: i5.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }, { type: i5.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }], pipes: { "date": i6.DatePipe, "jsonParse": i8.JsonParsePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: LoggerComponent, decorators: [{
|
|
217
217
|
type: Component,
|
|
218
218
|
args: [{ providers: [ProviderService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<style>\n\t.label-accordion {\n\t\tfont-weight: bold;\n\t\tcolor: black;\n\t\tmargin-bottom: 0px;\n\t}\n\tngb-accordion {\n\t\twidth: 100%;\n\t}\n\t.hoverThis:hover {\n\t\tbackground: lightblue;\n\t\tcursor: pointer;\n\t}\n\t\n\t.fa-plus {\n\t\tcolor: black;\n\t}\n\t.fa-minus {\n\t\tcolor: black;\n\t}\n\t\n\t.selected {\n\t\tbackground-color: orange;\n\t}\n\t.selected:hover {\n\t\tcursor: pointer;\n\t}\n\t.card {\n\t\twidth: 100%;\n\t}\n</style>\n\n<div class=\"row\">\n\t<div class=\"col-lg-12\">\n\t\t<div class=\"card\">\n\t\t\t<div class=\"card-header\"><b>Filters</b></div>\n\t\t\t<div class=\"card-body\">\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<div class=\"col-lg-12\">\n\t\t\t\t\t\t<responsive-button-group collapseSize=\"900\">\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') && selectedTypes.includes('document') && selectedTypes.includes('query') && selectedTypes.includes('client-request') && selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('all')\">All</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('error') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('error')\">Errors</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('document') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('document')\">Document</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('query') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('query')\">Query</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('queryResponse') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('queryResponse')\">Query Response</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-request') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-request')\">Client Requests</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('client-response') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('client-response')\">Client Responses</button>\n\t\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"['btn', selectedTypes.includes('callMethodInternal') ? 'btn-success' : 'btn-warning']\" (click)=\"selectType('callMethodInternal')\">Call Method Internal</button>\n\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-danger\" (click)=\"removeAllLogs()\">REMOVE ALL LOGS</button>\n\t\t\t\t\t\t</responsive-button-group>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">User</label>\n\t\t\t\t\t\t<ng-select [(ngModel)]=\"user\" (change)=\"getLogData()\" placeholder=\"Select User\">\n\t\t\t\t\t\t\t<ng-option *ngFor=\"let user of users\" [value]=\"user.fullname\">{{user.fullname}}</ng-option>\n\t\t\t\t\t\t</ng-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Collection</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"collection\" (change)=\"getLogData()\" placeholder=\"Input Colls Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Method</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"method\" (change)=\"getLogData()\" placeholder=\"Input Methods Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Route</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"route\" (change)=\"getLogData()\" placeholder=\"Input Routes Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-2\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Document</label>\n\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"id_document\" (change)=\"getLogData()\" placeholder=\"Input Ids Sep By , & ! for !Not\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"row\" style=\"margin-top: 10px;\">\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date Start</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateStartElem\" ngbDatepicker #dStart=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dStart.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time Start</label>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeStartElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Date End</label>\n\t\t\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t\t\t<input class=\"form-control\" [(ngModel)]=\"dateEndElem\" ngbDatepicker #dEnd=\"ngbDatepicker\" (change)=\"getLogData()\">\n\t\t\t\t\t\t\t<div class=\"input-group-append\" (click)=\"dEnd.toggle()\">\n\t\t\t\t\t\t\t\t<div class=\"input-group-text\">\n\t\t\t\t\t\t\t\t\t<i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"col-lg-3\">\n\t\t\t\t\t\t<label class=\"form-control-label\">Time End</label><br>\n\t\t\t\t\t\t<ngb-timepicker [(ngModel)]=\"timeEndElem\" meridian=\"ON\" [seconds]=\"true\" (change)=\"getLogData()\"></ngb-timepicker>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-lg-8\">\n\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t<option value=\"10\">10</option>\n\t\t\t<option value=\"25\">25</option>\n\t\t\t<option value=\"50\">50</option>\n\t\t\t<option value=\"100\">100</option>\n\t\t\t<option value=\"250\">250</option>\n\t\t\t<option value=\"500\">500</option>\n\t\t\t<option value=\"1000\">1000</option>\n\t\t\t<option value=\"5000\">5000</option>\n\t\t</select>\n\t</div>\n\t<div class=\"col-lg-4\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<ngb-accordion #acc=\"ngbAccordion\" activeIds=\"\">\n\t\t<ngb-panel *ngFor=\"let log of logs; let i = index\" [id]=\"'log_' + i\">\n\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t<div> \n\t\t\t\t\t<label class=\"label-accordion\" style=\"width: 90%; height: 22px\">\n\t\t\t\t\t\t<strong class=\"pull-left\">Type: {{ log.type }}{{log.method ? ' - Method: ' + log.method : '' }}{{log.collection ? ' - Collection: ' + log.collection : '' }}{{log.user ? ' - User: ' + log.user : '' }}{{log.route ? ' - Route: ' + log.route : '' }}{{log.id_document ? ' - id_document: ' + log.id_document : '' }}{{log.messageId ? ' - messageId: ' + log.messageId : '' }}</strong>\n\t\t\t\t\t\t<p class=\"pull-right\">{{ log.createdAt | date : 'medium' }}</p>\n\t\t\t\t\t</label>\n\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('log_' + i)\" class=\"fa fa-plus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('log_' + i)\" class=\"fa fa-minus pull-right\" aria-hidden=\"true\"></i>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t<div *ngIf=\"log.payload\">\n\t\t\t\t\t<pre>{{ log.payload | jsonParse }}</pre>\n\t\t\t\t</div>\n\t\t\t\t<div *ngIf=\"!log.payload\">\n\t\t\t\t\tNo Data\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</ngb-panel>\n\t</ngb-accordion>\n</div>\n<div class=\"row\" style=\"margin-top: 10px\">\n\t<div class=\"col-lg-4\">\n\t\t<div class=\"row\"> \n\t\t\t<div class=\"col-lg-8\">\n\t\t\t\t<label class=\"form-control-label\">Entries Per Page</label>\n\t\t\t\t<select class=\"form-control\" [(ngModel)]=\"entries_per_page\" (change)=\"getLogData()\">\n\t\t\t\t\t<option value=\"10\">10</option>\n\t\t\t\t\t<option value=\"25\">25</option>\n\t\t\t\t\t<option value=\"50\">50</option>\n\t\t\t\t\t<option value=\"100\">100</option>\n\t\t\t\t\t<option value=\"250\">250</option>\n\t\t\t\t\t<option value=\"500\">500</option>\n\t\t\t\t\t<option value=\"1000\">1000</option>\n\t\t\t\t\t<option value=\"5000\">5000</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"col-lg-8\">\n\t\t<ngb-pagination class=\"float-right\"\n\t\tboundaryLinks=\"true\"\n\t\t[collectionSize]=\"log_cnt\"\n\t\tdirectionLinks=\"true\"\n\t\tellipses=\"false\"\n\t\t[(page)]=\"page_num\"\n\t\tmaxSize=\"6\"\n\t\t[pageSize]=\"entries_per_page\"\n\t\trotate=\"true\"\n\t\t(pageChange)=\"getLogData()\"\n\t\t>\n\t\t</ngb-pagination>\n\t</div>\n</div>" }]
|
|
219
219
|
}], ctorParameters: function () { return [{ type: i1.ProviderService }, { type: i2.DialogService }, { type: i0.ChangeDetectorRef }]; } });
|
|
@@ -99,9 +99,9 @@ export class OfflineManagerService {
|
|
|
99
99
|
collection.drop();
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
OfflineManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
103
|
-
OfflineManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
102
|
+
OfflineManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: OfflineManagerService, deps: [{ token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
103
|
+
OfflineManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: OfflineManagerService });
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: OfflineManagerService, decorators: [{
|
|
105
105
|
type: Injectable
|
|
106
106
|
}], ctorParameters: function () { return [{ type: i1.LocalStorageService }]; } });
|
|
107
107
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvb2ZmbGluZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUd6QyxNQUFNLE9BQU8scUJBQXFCO0lBTWpDLFlBQW9CLFFBQTZCO1FBQTdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBSjFDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFLdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUMvQixPQUFPLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDNUIsUUFBUSxFQUFFLFdBQVc7WUFDckIsVUFBVSxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVyQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25ELFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtB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SEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnbmd4LWxvY2Fsc3RvcmFnZSc7XG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuL21vZGVscy91c2VyLm1vZGVsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmFnZURCIH0gZnJvbSAnLi9vZmZsaW5lLWRiJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9mZmxpbmVNYW5hZ2VyU2VydmljZSB7XG5cblx0cHVibGljIG9mZmxpbmVNb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuXHRwcml2YXRlIF9vZmZsaW5lREI7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuXHRcdHRoaXMuX29mZmxpbmVEQiA9IG5ldyBTdG9yYWdlREIoe1xuXHRcdFx0c3RvcmFnZTogd2luZG93LmxvY2FsU3RvcmFnZSxcblx0XHRcdGRhdGFiYXNlOiAnb2ZmbGluZURCJyxcblx0XHRcdHByaW1hcnlLZXk6ICdfaWQnXG5cdFx0fSk7XG5cblx0XHRsZXQgbm93ID0gbmV3IERhdGUoKTtcblxuXHRcdGxldCBjb2xsZWN0aW9ucyA9IHRoaXMuX29mZmxpbmVEQi5nZXRDb2xsZWN0aW9ucygpO1xuXHRcdGNvbGxlY3Rpb25zLmZvckVhY2goY29sbGVjdGlvbiA9PiB7XG5cdFx0XHRsZXQgZW50cmllcyA9IHRoaXMuZmluZChjb2xsZWN0aW9uLCB7fSwge30sIHRydWUpO1xuXHRcdFx0ZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcblx0XHRcdFx0aWYgKCFlbnRyeS5oYXNPd25Qcm9wZXJ0eSgnb2ZmbGluZURhdGUnKSB8fCAhZW50cnkuaGFzT3duUHJvcGVydHkoJ29mZmxpbmVEYXRlRXhwaXJlcycpKSB7XG5cdFx0XHRcdFx0dGhpcy5yZW1vdmVEb2N1bWVudChjb2xsZWN0aW9uLCBlbnRyeS5faWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKG5vdy5nZXRUaW1lKCkgPj0gZW50cnkub2ZmbGluZURhdGVFeHBpcmVzLmdldFRpbWUoKSkge1xuXHRcdFx0XHRcdHRoaXMucmVtb3ZlRG9jdW1lbnQoY29sbGVjdGlvbiwgZW50cnkuZGF0YS5faWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzZXRPZmZsaW5lKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5vZmZsaW5lTW9kZS5uZXh0KHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBzYXZlVXNlcih1c2VyOiBVc2VyTW9kZWwpIHtcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5zZXQoJ3VzZXInLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VXNlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXQoJ3VzZXInKTtcblx0fVxuXG5cdHB1YmxpYyByZW1vdmVVc2VyKCkge1xuXHRcdHRoaXMuX3N0b3JhZ2UucmVtb3ZlKCd1c2VyJyk7XG5cdH1cblxuXHRwdWJsaWMgZmluZChjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBxdWVyeTogT2JqZWN0LCBvcHRpb25zID0ge30sIHRvdGFsID0gZmFsc2UpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5fb2ZmbGluZURCLmdldChjb2xsZWN0aW9uTmFtZSk7XG5cblx0XHRpZiAoY29sbGVjdGlvbikge1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb24uZmluZChxdWVyeSwgb3B0aW9ucywgdG90YWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdHB1YmxpYyBmaW5kT25lKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIHF1ZXJ5OiBPYmplY3QpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5fb2ZmbGluZURCLmdldChjb2xsZWN0aW9uTmFtZSk7XG5cblx0XHRpZiAoY29sbGVjdGlvbikge1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb24uZmluZE9uZShxdWVyeSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwdWJsaWMgaW5zZXJ0RG9jdW1lbnQoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgZGF0YTogT2JqZWN0LCBleHBpcmVzRGF0ZT86IERhdGUpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5fb2ZmbGluZURCLmdldChjb2xsZWN0aW9uTmFtZSk7XG5cblx0XHRsZXQgaWQgPSAnJztcblxuXHRcdGlmIChjb2xsZWN0aW9uICYmIGRhdGEgJiYgKCFBcnJheS5pc0FycmF5KGRhdGEpIHx8IGRhdGEubGVuZ3RoKSkge1xuXHRcdFx0aWQgPSBjb2xsZWN0aW9uLmluc2VydChkYXRhLCBleHBpcmVzRGF0ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGlkO1xuXHR9XG5cblx0cHVibGljIHVwZGF0ZURvY3VtZW50KGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGRhdGE6IE9iamVjdCkge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLl9vZmZsaW5lREIuZ2V0KGNvbGxlY3Rpb25OYW1lKTtcblxuXHRcdGlmIChjb2xsZWN0aW9uKSB7XG5cdFx0XHRsZXQgZG9jID0gY29sbGVjdGlvbi5maW5kT25lKHtfaWQ6IGRhdGFbJ19pZCddfSk7XG5cblx0XHRcdGlmIChkb2MpIHtcblx0XHRcdFx0ZGF0YVsnX192J10gKz0gMTtcblx0XHRcdFx0Y29sbGVjdGlvbi51cGRhdGUoZGF0YVsnX2lkJ10sIGRhdGEpO1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdHB1YmxpYyB1cGRhdGVEb2N1bWVudFByb3BzKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGRvY19pZDogc3RyaW5nLCB1cGRhdGVQYXJhbXM6IGFueVtdLCBkb2NfX3Y6IG51bWJlcikge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLl9vZmZsaW5lREIuZ2V0KGNvbGxlY3Rpb25OYW1lKTtcblxuXHRcdGlmIChjb2xsZWN0aW9uKSB7XG5cdFx0XHRsZXQgZG9jID0gY29sbGVjdGlvbi5maW5kT25lKHtfaWQ6IGRvY19pZH0pO1xuXG5cdFx0XHRpZiAoZG9jKSB7XG5cdFx0XHRcdHVwZGF0ZVBhcmFtcy5mb3JFYWNoKGRhdGEgPT4ge1xuXHRcdFx0XHRcdGRvY1tkYXRhLnByb3BdID0gZGF0YS5kYXRhO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRkb2MuX192ICs9IDE7XG5cblx0XHRcdFx0Y29sbGVjdGlvbi51cGRhdGUoe19pZDogZG9jX2lkfSwgZG9jKTtcblxuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gMDtcblx0fVxuXHRcblx0cHVibGljIHJlbW92ZURvY3VtZW50KGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcblx0XHRjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5fb2ZmbGluZURCLmdldChjb2xsZWN0aW9uTmFtZSk7XG5cblx0XHRpZiAoY29sbGVjdGlvbikge1xuXHRcdFx0Y29sbGVjdGlvbi5yZW1vdmUoaWQpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBkcm9wQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLl9vZmZsaW5lREIuZ2V0KGNvbGxlY3Rpb25OYW1lKTtcblxuXHRcdGNvbGxlY3Rpb24uZHJvcCgpO1xuXHR9XG5cblx0Ly8gcHVibGljIHNhdmVEYXRhV2l0aEtleShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuXHQvLyBcdGNvbnNvbGUubG9nKCdTYXZpbmcnLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuXHQvLyBcdHRoaXMuX3N0b3JhZ2Uuc2V0KGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcblx0Ly8gfVxuXG5cdC8vIHB1YmxpYyBnZXREYXRhV2l0aEtleShrZXk6IHN0cmluZykge1xuXHQvLyBcdHJldHVybiBKU09OLnBhcnNlKHRoaXMuX3N0b3JhZ2UuZ2V0KGtleSksIGRhdGVSZXZpdmVyKTtcblx0Ly8gfVxufVxuIl19
|
|
@@ -17,9 +17,9 @@ export class DomSanitizorPipe {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
DomSanitizorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
21
|
-
DomSanitizorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
20
|
+
DomSanitizorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DomSanitizorPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
21
|
+
DomSanitizorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DomSanitizorPipe, name: "safe" });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: DomSanitizorPipe, decorators: [{
|
|
23
23
|
type: Pipe,
|
|
24
24
|
args: [{
|
|
25
25
|
name: 'safe'
|
|
@@ -8,9 +8,9 @@ export class FilterEqualPipe {
|
|
|
8
8
|
return items.filter(it => it[field] === value);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
FilterEqualPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
12
|
-
FilterEqualPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
11
|
+
FilterEqualPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterEqualPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
12
|
+
FilterEqualPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterEqualPipe, name: "filterEqual", pure: false });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterEqualPipe, decorators: [{
|
|
14
14
|
type: Pipe,
|
|
15
15
|
args: [{
|
|
16
16
|
name: 'filterEqual',
|
|
@@ -25,9 +25,9 @@ export class FilterNotEqualPipe {
|
|
|
25
25
|
return items.filter(it => it[field] !== value);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
FilterNotEqualPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
29
|
-
FilterNotEqualPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
28
|
+
FilterNotEqualPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterNotEqualPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
29
|
+
FilterNotEqualPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterNotEqualPipe, name: "filterNotEqual" });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: FilterNotEqualPipe, decorators: [{
|
|
31
31
|
type: Pipe,
|
|
32
32
|
args: [{
|
|
33
33
|
name: 'filterNotEqual'
|
|
@@ -17,9 +17,9 @@ export class JsonParsePipe {
|
|
|
17
17
|
return JSON.stringify(parse, null, 2);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
JsonParsePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
21
|
-
JsonParsePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
20
|
+
JsonParsePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: JsonParsePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
21
|
+
JsonParsePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: JsonParsePipe, name: "jsonParse", pure: false });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: JsonParsePipe, decorators: [{
|
|
23
23
|
type: Pipe,
|
|
24
24
|
args: [{
|
|
25
25
|
name: 'jsonParse',
|
|
@@ -5,9 +5,9 @@ export class MinusCurrencyPipe {
|
|
|
5
5
|
return value.charAt(0) === '-' ? '(' + value.substring(1, value.length) + ')' : value;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
MinusCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
9
|
-
MinusCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
8
|
+
MinusCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MinusCurrencyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
9
|
+
MinusCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MinusCurrencyPipe, name: "minusCurrency" });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: MinusCurrencyPipe, decorators: [{
|
|
11
11
|
type: Pipe,
|
|
12
12
|
args: [{
|
|
13
13
|
name: 'minusCurrency'
|
|
@@ -36,9 +36,9 @@ export class PhonePipe {
|
|
|
36
36
|
return (country + ' (' + city + ') ' + number).trim();
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
PhonePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
40
|
-
PhonePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
39
|
+
PhonePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PhonePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
40
|
+
PhonePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PhonePipe, name: "phone" });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PhonePipe, decorators: [{
|
|
42
42
|
type: Pipe,
|
|
43
43
|
args: [{
|
|
44
44
|
name: 'phone'
|
|
@@ -9,8 +9,8 @@ import { JsonParsePipe } from './json-parse.pipe';
|
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class PipeModule {
|
|
11
11
|
}
|
|
12
|
-
PipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
13
|
-
PipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
|
|
12
|
+
PipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
PipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PipeModule, declarations: [FilterEqualPipe,
|
|
14
14
|
FilterNotEqualPipe,
|
|
15
15
|
PhonePipe,
|
|
16
16
|
ReversePipe,
|
|
@@ -25,8 +25,8 @@ PipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
|
|
|
25
25
|
DomSanitizorPipe,
|
|
26
26
|
TitleCaseAndUnderscorePipe,
|
|
27
27
|
JsonParsePipe] });
|
|
28
|
-
PipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
28
|
+
PipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PipeModule });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: PipeModule, decorators: [{
|
|
30
30
|
type: NgModule,
|
|
31
31
|
args: [{
|
|
32
32
|
declarations: [
|
|
@@ -6,9 +6,9 @@ export class ReversePipe {
|
|
|
6
6
|
return value.slice(0).reverse();
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
ReversePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
10
|
-
ReversePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
9
|
+
ReversePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ReversePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
10
|
+
ReversePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ReversePipe, name: "reverse" });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ReversePipe, decorators: [{
|
|
12
12
|
type: Pipe,
|
|
13
13
|
args: [{
|
|
14
14
|
name: 'reverse'
|
|
@@ -10,9 +10,9 @@ export class TitleCaseAndUnderscorePipe {
|
|
|
10
10
|
return strArray.join(' ');
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
TitleCaseAndUnderscorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
14
|
-
TitleCaseAndUnderscorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
13
|
+
TitleCaseAndUnderscorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TitleCaseAndUnderscorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
14
|
+
TitleCaseAndUnderscorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TitleCaseAndUnderscorePipe, name: "titleCase", pure: false });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: TitleCaseAndUnderscorePipe, decorators: [{
|
|
16
16
|
type: Pipe,
|
|
17
17
|
args: [{
|
|
18
18
|
name: 'titleCase',
|
|
@@ -33,9 +33,9 @@ export class ProviderService {
|
|
|
33
33
|
this._fb = _fb;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
ProviderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
37
|
-
ProviderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
36
|
+
ProviderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProviderService, deps: [{ token: i1.CoreService }, { token: i2.Router }, { token: i3.SocketManagerService }, { token: i4.AccountManagerService }, { token: i5.AlertService }, { token: i6.ValidationService }, { token: i7.AwsService }, { token: i8.FormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
ProviderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProviderService });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ProviderService, decorators: [{
|
|
39
39
|
type: Injectable
|
|
40
40
|
}], ctorParameters: function () { return [{ type: i1.CoreService }, { type: i2.Router }, { type: i3.SocketManagerService }, { type: i4.AccountManagerService }, { type: i5.AlertService }, { type: i6.ValidationService }, { type: i7.AwsService }, { type: i8.FormBuilder }]; } });
|
|
41
41
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWlvLWNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3Jlc29sdmVpby1jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7QUFFaEQsTUFBTSxPQUFPLGFBQWE7SUFDekIsWUFBc0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztDQUMxRDtBQUdELE1BQU0sT0FBTyxlQUFlO0lBQzNCLFlBQ1EsSUFBaUIsRUFDakIsT0FBZSxFQUNmLE9BQTZCLEVBQzdCLFFBQStCLEVBQy9CLE1BQW9CLEVBQ3BCLEdBQXNCLEVBQ3RCLElBQWdCLEVBQ2hCLEdBQWdCO1FBUGhCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBQ3JCLENBQUM7OzRHQVZRLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL3dpZGdldHMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBY2NvdW50TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL2FjY291bnQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTb2NrZXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc29ja2V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4vY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi91dGlsL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBd3NTZXJ2aWNlIH0gZnJvbSAnLi91dGlsL2F3cy5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIEJhc2VDb21wb25lbnQge1xuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcHJvdmlkZXJTZXJ2aWNlOiBQcm92aWRlclNlcnZpY2UpIHt9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm92aWRlclNlcnZpY2Uge1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwdWJsaWMgX2FwcDogQ29yZVNlcnZpY2UsXG5cdFx0cHVibGljIF9yb3V0ZXI6IFJvdXRlcixcblx0XHRwdWJsaWMgX3NvY2tldDogU29ja2V0TWFuYWdlclNlcnZpY2UsXG5cdFx0cHVibGljIF9hY2NvdW50OiBBY2NvdW50TWFuYWdlclNlcnZpY2UsXG5cdFx0cHVibGljIF9hbGVydDogQWxlcnRTZXJ2aWNlLFxuXHRcdHB1YmxpYyBfdnM6IFZhbGlkYXRpb25TZXJ2aWNlLFxuXHRcdHB1YmxpYyBfYXdzOiBBd3NTZXJ2aWNlLFxuXHRcdHB1YmxpYyBfZmI6IEZvcm1CdWlsZGVyXG5cdCkge31cbn0iXX0=
|
|
@@ -13,8 +13,8 @@ import { CommonModule } from '@angular/common';
|
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export class SharedModule {
|
|
15
15
|
}
|
|
16
|
-
SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
17
|
-
SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
|
|
16
|
+
SharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SharedModule, imports: [ReactiveFormsModule,
|
|
18
18
|
FormsModule,
|
|
19
19
|
CollapseTableModule,
|
|
20
20
|
RouterModule,
|
|
@@ -37,7 +37,7 @@ SharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
|
37
37
|
NgSelectModule,
|
|
38
38
|
SortTableModule,
|
|
39
39
|
CommonModule] });
|
|
40
|
-
SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.
|
|
40
|
+
SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SharedModule, imports: [[
|
|
41
41
|
ReactiveFormsModule,
|
|
42
42
|
FormsModule,
|
|
43
43
|
CollapseTableModule,
|
|
@@ -62,7 +62,7 @@ SharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
|
62
62
|
NgSelectModule,
|
|
63
63
|
SortTableModule,
|
|
64
64
|
CommonModule] });
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SharedModule, decorators: [{
|
|
66
66
|
type: NgModule,
|
|
67
67
|
args: [{
|
|
68
68
|
imports: [
|
|
@@ -248,16 +248,6 @@ export class SocketManagerService {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
-
else if (data[3] === 'method' && data[4] === 'setWSAppVersion') {
|
|
252
|
-
if (this.socketStatus === WebSocket.OPEN) {
|
|
253
|
-
this._socket.send(...data);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
if (!this._sendQueue.filter(a => JSON.stringify(a) === JSON.stringify(data)).length) {
|
|
257
|
-
this._sendQueue.splice(0, 0, data);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
251
|
else if (data[3] === 'method') {
|
|
262
252
|
if (this.socketStatus === WebSocket.OPEN) {
|
|
263
253
|
if (!this._sendQueue.filter(a => JSON.stringify(a) === JSON.stringify(data)).length) {
|
|
@@ -352,9 +342,9 @@ export class SocketManagerService {
|
|
|
352
342
|
return this._socket.readyState$;
|
|
353
343
|
}
|
|
354
344
|
}
|
|
355
|
-
SocketManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
356
|
-
SocketManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
345
|
+
SocketManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SocketManagerService, deps: [{ token: i1.SocketService }, { token: i2.OfflineManagerService }, { token: i3.AlertService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
346
|
+
SocketManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SocketManagerService });
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: SocketManagerService, decorators: [{
|
|
358
348
|
type: Injectable
|
|
359
349
|
}], ctorParameters: function () { return [{ type: i1.SocketService }, { type: i2.OfflineManagerService }, { type: i3.AlertService }, { type: i4.Router }]; } });
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zb2NrZXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBR3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFnQmhDLFlBQW9CLE9BQXNCLEVBQVUsUUFBK0IsRUFBVSxNQUFvQixFQUFVLE9BQWU7UUFBdEgsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFibEksY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxjQUFTLEdBQW9DLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXJCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLDRCQUF1QixHQUFHLElBQUks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L0M7eUJBQ0k7d0JBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzdEO29CQUVELElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDaEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMvRTtpQkFDRDthQUNEO1NBQ0Q7YUFDSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDM0I7U0FDRDtJQUNGLENBQUM7SUFFRCxTQUFTO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNqQyxDQUFDOztpSEEvWVcsb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvY2tldFNlcnZpY2UgfSBmcm9tICcuL3NvY2tldC5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aXZlQ2xpZW50U3Vic2NyaXB0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9zdWJzY3JpcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgZGF0ZVJldml2ZXIsIGRlZXBDb3B5IH0gZnJvbSAnLi91dGlsL2NvbW1vbi5oZWxwZXInO1xuaW1wb3J0IHsgT2ZmbGluZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL3dpZGdldHMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU29ja2V0TWFuYWdlclNlcnZpY2Uge1xuXHRwcml2YXRlIHNvY2tldFN0YXR1cztcblxuXHRwcml2YXRlIG1lc3NhZ2VJZCA9IDA7XG5cdHByaXZhdGUgX2NiQXJyYXkgPSBbXTtcblx0cHJpdmF0ZSBfc3ViQXJyYXk6IEFjdGl2ZUNsaWVudFN1YnNjcmlwdGlvbk1vZGVsW10gPSBbXTtcblx0cHJpdmF0ZSBfc2VuZFF1ZXVlID0gW107XG5cdHByaXZhdGUgX29mZmxpbmVVcGRhdGVzID0gW107XG5cblx0cHJpdmF0ZSBfcnVubmluZ1F1ZXVlID0gZmFsc2U7XG5cdHByaXZhdGUgaW5pdENvbm5lY3Rpb24gPSBmYWxzZTtcblxuXHRwcml2YXRlIF9jb25uZWN0aW9uRGVsYXlUaW1lb3V0ID0gbnVsbDtcblxuXHRwdWJsaWMgb25lcnJvcjogKCkgPT4gdm9pZCA9IGZ1bmN0aW9uICgpIHt9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3NvY2tldDogU29ja2V0U2VydmljZSwgcHJpdmF0ZSBfb2ZmbGluZTogT2ZmbGluZU1hbmFnZXJTZXJ2aWNlLCBwcml2YXRlIF9hbGVydDogQWxlcnRTZXJ2aWNlLCBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcikge31cblxuXHRwdWJsaWMgaW5pdFNvY2tldE1hbmFnZXIoKTogdm9pZCB7XG5cdFx0dGhpcy5fc29ja2V0LnJlYWR5U3RhdGUkLnN1YnNjcmliZShzb2NrZXRTdGF0dXMgPT4ge1xuXHRcdFx0dGhpcy5zb2NrZXRTdGF0dXMgPSBzb2NrZXRTdGF0dXM7XG5cdFx0fSk7XG5cblx0XHR0aGlzLl9zb2NrZXQub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcblx0XHRcdGxldCByZXNEYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhLCBkYXRlUmV2aXZlcik7XG5cblx0XHRcdGlmIChyZXNEYXRhLmRhdGEgPT09ICdyZWxvYWRXU0NvbW1hbmQnKSB7XG5cdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWYgKyAnP2ZvcmNlUmVsb2FkPXRydWUnO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAocmVzRGF0YS5kYXRhID09PSAncmVjb25uZWN0V1NDb21tYW5kJykge1xuXHRcdFx0XHR0aGlzLl9zb2NrZXQucmVjb25uZWN0KCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChyZXNEYXRhLmRhdGEgPT09ICdkaXNjb25uZWN0V1NDb21tYW5kJykge1xuXHRcdFx0XHR0aGlzLmNsb3NlU29ja2V0KCk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBvZmZsaW5lSW5kZXggPSB0aGlzLl9vZmZsaW5lVXBkYXRlcy5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gcmVzRGF0YS5tZXNzYWdlSWQpO1xuXHRcdFx0aWYgKG9mZmxpbmVJbmRleCA+PSAwKSB7XG5cdFx0XHRcdHRoaXMuX29mZmxpbmUucmVtb3ZlRG9jdW1lbnQodGhpcy5fb2ZmbGluZVVwZGF0ZXNbb2ZmbGluZUluZGV4XS50eXBlLCB0aGlzLl9vZmZsaW5lVXBkYXRlc1tvZmZsaW5lSW5kZXhdLmlkX29mZmxpbmVfZG9jKTtcblx0XHRcdFx0dGhpcy5fb2ZmbGluZVVwZGF0ZXMuc3BsaWNlKG9mZmxpbmVJbmRleCwgMSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChyZXNEYXRhLmRhdGEgIT09ICdBQ0snICYmIHJlc0RhdGEuZGF0YSAhPT0gJ05BQ0snKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9jYkFycmF5Lm1hcChhID0+IGEubWVzc2FnZUlkKS5pbmNsdWRlcyhyZXNEYXRhLm1lc3NhZ2VJZCkpIHtcdFxuXHRcdFx0XHRcdGxldCBpbmRleCA9IHRoaXMuX2NiQXJyYXkuZmluZEluZGV4KGEgPT4gYS5tZXNzYWdlSWQgPT09IHJlc0RhdGEubWVzc2FnZUlkKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLl9jYkFycmF5W2luZGV4XS50aW1lcklkKTtcblxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuX2NiQXJyYXlbaW5kZXhdLmNiKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXlbaW5kZXhdLmNiKHJlc0RhdGEuaGFzRXJyb3IgPyByZXNEYXRhLmRhdGEgOiBudWxsLCByZXNEYXRhLmhhc0Vycm9yID8gbnVsbCA6IHJlc0RhdGEuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXlbaW5kZXhdLnJlc29sdmVGbihyZXNEYXRhLmhhc0Vycm9yID8gcmVzRGF0YS5kYXRhIDogbnVsbCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKHJlc0RhdGEuaGFzRXJyb3IpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLl9jYkFycmF5W2luZGV4XS5yZWplY3RGbihyZXNEYXRhLmRhdGEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXlbaW5kZXhdLnJlc29sdmVGbihyZXNEYXRhLmRhdGEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAodGhpcy5fc3ViQXJyYXkubWFwKGEgPT4gYS5tZXNzYWdlSWQpLmluY2x1ZGVzKHJlc0RhdGEubWVzc2FnZUlkKSkge1x0XG5cdFx0XHRcdFx0bGV0IGluZGV4ID0gdGhpcy5fc3ViQXJyYXkuZmluZEluZGV4KGEgPT4gYS5tZXNzYWdlSWQgPT09IHJlc0RhdGEubWVzc2FnZUlkKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fc3ViQXJyYXlbaW5kZXhdLnN1YmplY3QubmV4dChyZXNEYXRhLmRhdGEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLl9zb2NrZXQub25vcGVuID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuXHRcdFx0dGhpcy5fY29ubmVjdGlvbkRlbGF5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0ID0gbnVsbDtcblxuXHRcdFx0XHR0aGlzLl9vZmZsaW5lLnNldE9mZmxpbmUoZmFsc2UpO1xuXHRcdFx0XHRcblx0XHRcdFx0bGV0IGNvbGxlY3Rpb25VcGRhdGVzID0gdGhpcy5fb2ZmbGluZS5maW5kKCdjb2xsZWN0aW9uVXBkYXRlJywge30pO1xuXG5cdFx0XHRcdGNvbGxlY3Rpb25VcGRhdGVzLmZvckVhY2godXBkYXRlID0+IHtcblx0XHRcdFx0XHRsZXQgbWVzc2FnZUlkID0gdGhpcy5tZXNzYWdlSWQrKztcblxuXHRcdFx0XHRcdHRoaXMuX29mZmxpbmVVcGRhdGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0aWRfb2ZmbGluZV9kb2M6IHVwZGF0ZS5faWQsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0XHRcdHR5cGU6ICdjb2xsZWN0aW9uVXBkYXRlJ1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0dXBkYXRlLmRhdGFbMl0gPSBtZXNzYWdlSWQ7XG5cblx0XHRcdFx0XHRpZiAodXBkYXRlLnR5cGUgPT09ICd1cGRhdGVEb2N1bWVudCcgJiYgdXBkYXRlLm9sZERhdGEpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS5kYXRhWzRdID0gJ3VwZGF0ZURvY3VtZW50T2ZmbGluZSc7XG5cdFx0XHRcdFx0XHR1cGRhdGUuZGF0YVswXSA9ICdPZmZsaW5lIC0gJyArIHVwZGF0ZS5kYXRhWzBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGlmICh1cGRhdGUudHlwZSA9PT0gJ3VwZGF0ZURvY3VtZW50UHJvcHMnICYmIHVwZGF0ZS5vbGREYXRhKSB7XG5cdFx0XHRcdFx0XHR1cGRhdGUuZGF0YVs0XSA9ICd1cGRhdGVEb2N1bWVudFByb3BzT2ZmbGluZSc7XG5cdFx0XHRcdFx0XHR1cGRhdGUuZGF0YVswXSA9ICdPZmZsaW5lIC0gJyArIHVwZGF0ZS5kYXRhWzBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS5kYXRhWzBdID0gJ09mZmxpbmUgLSAnICsgdXBkYXRlLmRhdGFbMF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRpZiAoY29sbGVjdGlvblVwZGF0ZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5zZW5kKCdPZmZsaW5lIFVwZGF0ZXMnLCBuZXcgRGF0ZSgpLCB0aGlzLm1lc3NhZ2VJZCsrLCAnb2ZmbGluZScsIGNvbGxlY3Rpb25VcGRhdGVzLnNvcnQoKGEsIGIpID0+IGEuZGF0ZS5nZXRUaW1lKCkgLSBiLmRhdGUuZ2V0VGltZSgpKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5pbml0Q29ubmVjdGlvbikge1xuXHRcdFx0XHRcdHRoaXMuX3N1YkFycmF5LmZvckVhY2goc3ViID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc2VuZChzdWIubWVzc2FnZVJvdXRlLCBuZXcgRGF0ZSgpLCBzdWIubWVzc2FnZUlkLCAnc3Vic2NyaXB0aW9uJywgJ3N1YicsIHN1Yi5zdWJzY3JpcHRpb24sIC4uLnN1Yi5wYXJhbWV0ZXJzKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuaW5pdENvbm5lY3Rpb24gPSB0cnVlO1xuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fTtcblxuXHRcdHRoaXMuX3NvY2tldC5vbmVycm9yID0gKGV2OiBFcnJvckV2ZW50KSA9PiB7XG5cdFx0XHRpZiAodGhpcy5fY29ubmVjdGlvbkRlbGF5VGltZW91dCkge1xuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy5fY29ubmVjdGlvbkRlbGF5VGltZW91dCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhuZXcgRGF0ZSgpLCAnU09DS0VUIEVSUk9SJywgZXYpO1xuXHRcdFx0dGhpcy5vbmVycm9yKCk7XG5cdFx0fTtcblxuXHRcdHRoaXMuX3NvY2tldC5vbmNsb3NlID0gKGV2OiBDbG9zZUV2ZW50KSA9PiB7XG5cdFx0XHRpZiAodGhpcy5fY29ubmVjdGlvbkRlbGF5VGltZW91dCkge1xuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy5fY29ubmVjdGlvbkRlbGF5VGltZW91dCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaW5pdENvbm5lY3Rpb24pIHtcblx0XHRcdFx0aWYgKCF0aGlzLl9ydW5uaW5nUXVldWUpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5fc2VuZFF1ZXVlLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fcnVubmluZ1F1ZXVlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLl9zZW5kUXVldWUubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuX3NvY2tldCAmJiB0aGlzLl9zb2NrZXQud3MpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy5zb2NrZXRTdGF0dXMgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgbmV4dFNlbmRJdGVtID0gdGhpcy5fc2VuZFF1ZXVlLnBvcCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9zb2NrZXQuc2VuZCguLi5uZXh0U2VuZEl0ZW0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLl9ydW5uaW5nUXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LCAyNSk7XG5cdH1cblxuXHRwdWJsaWMgb3BlblNvY2tldChlbnZpcm9ubWVudCwgcHJvdG9jb2xzKSB7XG5cdFx0dGhpcy5fc29ja2V0Lm9wZW5Tb2NrZXQoZW52aXJvbm1lbnQsIHByb3RvY29scyk7XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VTb2NrZXQoKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNsb3NlKCk7XG5cdH1cblxuXHRwdWJsaWMgY2FsbChtZXRob2Q6IHN0cmluZywgLi4ucGFyYW1ldGVyczogYW55W10pIHtcblx0XHRsZXQgcmVzb2x2ZUZuID0gbnVsbDtcblx0XHRsZXQgcmVqZWN0Rm4gPSBudWxsO1xuXG5cdFx0bGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRyZXNvbHZlRm4gPSByZXNvbHZlO1xuXHRcdFx0cmVqZWN0Rm4gPSByZWplY3Q7XG5cdFx0fSk7XG5cblx0XHRsZXQgbWVzc2FnZUlkID0gdGhpcy5tZXNzYWdlSWQrKztcblxuXHRcdGxldCB0aW1lcklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuX2NiQXJyYXkuZmlsdGVyKGEgPT4gYS5tZXNzYWdlSWQgPT09IG1lc3NhZ2VJZClbMF0pIHtcblx0XHRcdFx0dGhpcy5zZW5kKCh0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKCc/JykgPyB0aGlzLl9yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLl9yb3V0ZXIudXJsLmluZGV4T2YoJz8nKSkgOiB0aGlzLl9yb3V0ZXIudXJsKSwgbmV3IERhdGUoKSwgbWVzc2FnZUlkLCAnbWV0aG9kUmVzcG9uc2UnLCBtZXRob2QsIC4uLnBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGNsZWFySW50ZXJ2YWwodGltZXJJZCk7XG5cdFx0XHR9XG5cdFx0fSwgNTAwMCk7XG5cblx0XHRpZiAocGFyYW1ldGVyc1twYXJhbWV0ZXJzLmxlbmd0aCAtIDFdICYmIHR5cGVvZihwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoIC0gMV0pID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aGlzLl9jYkFycmF5LnB1c2goe1xuXHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0Y2I6IHBhcmFtZXRlcnMucG9wKCksXG5cdFx0XHRcdHJlc29sdmVGbjogcmVzb2x2ZUZuLFxuXHRcdFx0XHRyZWplY3RGbjogcmVqZWN0Rm4sXG5cdFx0XHRcdHRpbWVySWQ6IHRpbWVySWQsXG5cdFx0XHRcdHJldHJ5Q250OiAwXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLl9jYkFycmF5LnB1c2goe1xuXHRcdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdFx0Y2I6IG51bGwsXG5cdFx0XHRcdHJlc29sdmVGbjogcmVzb2x2ZUZuLFxuXHRcdFx0XHRyZWplY3RGbjogcmVqZWN0Rm4sXG5cdFx0XHRcdHRpbWVySWQ6IHRpbWVySWQsXG5cdFx0XHRcdHJldHJ5Q250OiAwXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRsZXQgY250ID0gcGFyYW1ldGVycy5sZW5ndGg7XG5cdFx0d2hpbGUgKChwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoIC0gMV0gPT09IHVuZGVmaW5lZCB8fCBwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoIC0gMV0gPT09IG51bGwpICYmIGNudCA+IDApIHtcblx0XHRcdHBhcmFtZXRlcnMucG9wKCk7XG5cdFx0XHRjbnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcblx0XHR9XG5cblx0XHR0aGlzLnNlbmQoKHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMoJz8nKSA/IHRoaXMuX3JvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMuX3JvdXRlci51cmwuaW5kZXhPZignPycpKSA6IHRoaXMuX3JvdXRlci51cmwpLCBuZXcgRGF0ZSgpLCBtZXNzYWdlSWQsICdtZXRob2QnLCBtZXRob2QsIC4uLnBhcmFtZXRlcnMpO1xuXG5cdFx0cmV0dXJuIHByb21pc2U7XG5cdH1cblxuXHRwdWJsaWMgc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogc3RyaW5nLCAuLi5wYXJhbWV0ZXJzKSB7XG5cdFx0Y29uc3QgY29weVBhcmFtZXRlcnMgPSBkZWVwQ29weShwYXJhbWV0ZXJzKTtcblx0XHRjb25zdCBuZXdTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG5cdFx0bGV0IG1lc3NhZ2VJZCA9IHRoaXMubWVzc2FnZUlkKys7XG5cblx0XHR0aGlzLl9zdWJBcnJheS5wdXNoKHtcblx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0bWVzc2FnZVJvdXRlOiAodGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcygnPycpID8gdGhpcy5fcm91dGVyLnVybC5zdWJzdHJpbmcoMCwgdGhpcy5fcm91dGVyLnVybC5pbmRleE9mKCc/JykpIDogdGhpcy5fcm91dGVyLnVybCksXG5cdFx0XHRzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvbixcblx0XHRcdHBhcmFtZXRlcnM6IGNvcHlQYXJhbWV0ZXJzLFxuXHRcdFx0c3ViamVjdDogbmV3U3ViamVjdFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IG5ld1N1YmplY3QucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnVuc3Vic2NyaWJlKG1lc3NhZ2VJZCwgc3Vic2NyaXB0aW9uLCAuLi5jb3B5UGFyYW1ldGVycyk7XG5cdFx0XHR0aGlzLl9zdWJBcnJheS5zcGxpY2UodGhpcy5fc3ViQXJyYXkubWFwKGEgPT4gYS5tZXNzYWdlSWQpLmluZGV4T2YobWVzc2FnZUlkKSwgMSk7XG5cdFx0fSkpO1xuXG5cdFx0dGhpcy5zZW5kKCh0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKCc/JykgPyB0aGlzLl9yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLl9yb3V0ZXIudXJsLmluZGV4T2YoJz8nKSkgOiB0aGlzLl9yb3V0ZXIudXJsKSwgbmV3IERhdGUoKSwgbWVzc2FnZUlkLCAnc3Vic2NyaXB0aW9uJywgJ3N1YicsIHN1YnNjcmlwdGlvbiwgLi4uY29weVBhcmFtZXRlcnMpO1xuXG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblxuXHRwdWJsaWMgc3Vic2NyaWJlQnlwYXNzUm91dGUoc3Vic2NyaXB0aW9uOiBzdHJpbmcsIC4uLnBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBjb3B5UGFyYW1ldGVycyA9IGRlZXBDb3B5KHBhcmFtZXRlcnMpO1xuXHRcdGNvbnN0IG5ld1N1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cblx0XHRsZXQgbWVzc2FnZUlkID0gdGhpcy5tZXNzYWdlSWQrKztcblxuXHRcdHRoaXMuX3N1YkFycmF5LnB1c2goe1xuXHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRtZXNzYWdlUm91dGU6ICdCeXBhc3MnLFxuXHRcdFx0c3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb24sXG5cdFx0XHRwYXJhbWV0ZXJzOiBjb3B5UGFyYW1ldGVycyxcblx0XHRcdHN1YmplY3Q6IG5ld1N1YmplY3Rcblx0XHR9KTtcblxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSBuZXdTdWJqZWN0LnBpcGUoZmluYWxpemUoKCkgPT4ge1xuXHRcdFx0dGhpcy51bnN1YnNjcmliZShtZXNzYWdlSWQsIHN1YnNjcmlwdGlvbiwgLi4uY29weVBhcmFtZXRlcnMpO1xuXHRcdFx0dGhpcy5fc3ViQXJyYXkuc3BsaWNlKHRoaXMuX3N1YkFycmF5Lm1hcChhID0+IGEubWVzc2FnZUlkKS5pbmRleE9mKG1lc3NhZ2VJZCksIDEpO1xuXHRcdH0pKTtcblxuXHRcdHRoaXMuc2VuZCgnQnlwYXNzJywgbmV3IERhdGUoKSwgbWVzc2FnZUlkLCAnc3Vic2NyaXB0aW9uJywgJ3N1YicsIHN1YnNjcmlwdGlvbiwgLi4uY29weVBhcmFtZXRlcnMpO1xuXG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblxuXHRwdWJsaWMgdW5zdWJzY3JpYmUobWVzc2FnZUlkLCBzdWJzY3JpcHRpb246IHN0cmluZywgLi4ucGFyYW1ldGVycykge1xuXHRcdHRoaXMuc2VuZCgodGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcygnPycpID8gdGhpcy5fcm91dGVyLnVybC5zdWJzdHJpbmcoMCwgdGhpcy5fcm91dGVyLnVybC5pbmRleE9mKCc/JykpIDogdGhpcy5fcm91dGVyLnVybCksIG5ldyBEYXRlKCksIG1lc3NhZ2VJZCwgJ3N1YnNjcmlwdGlvbicsICd1bnN1YicsIHN1YnNjcmlwdGlvbiwgLi4ucGFyYW1ldGVycyk7XG5cdH1cblx0XG5cdHByaXZhdGUgc2VuZCguLi5kYXRhOiBhbnlbXSkge1xuXHRcdGlmIChkYXRhWzNdID09PSAnc3Vic2NyaXB0aW9uJykge1xuXHRcdFx0aWYgKHRoaXMuc29ja2V0U3RhdHVzID09PSBXZWJTb2NrZXQuT1BFTikge1xuXHRcdFx0XHR0aGlzLl9zb2NrZXQuc2VuZCguLi5kYXRhKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZiAoIXRoaXMuX3NlbmRRdWV1ZS5maWx0ZXIoYSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoZGF0YSkpLmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMuX3NlbmRRdWV1ZS5zcGxpY2UoMCwgMCwgZGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZWxzZSBpZiAoZGF0YVszXSA9PT0gJ21ldGhvZCcgJiYgZGF0YVs0XSA9PT0gJ3NldFdTQXBwVmVyc2lvbicpIHtcblx0XHRcdGlmICh0aGlzLnNvY2tldFN0YXR1cyA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcblx0XHRcdFx0dGhpcy5fc29ja2V0LnNlbmQoLi4uZGF0YSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKCF0aGlzLl9zZW5kUXVldWUuZmlsdGVyKGEgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGRhdGEpKS5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9zZW5kUXVldWUuc3BsaWNlKDAsIDAsIGRhdGEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2UgaWYgKGRhdGFbM10gPT09ICdtZXRob2QnKSB7XG5cdFx0XHRpZiAodGhpcy5zb2NrZXRTdGF0dXMgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cdFx0XHRcdGlmICghdGhpcy5fc2VuZFF1ZXVlLmZpbHRlcihhID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShkYXRhKSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VuZFF1ZXVlLnNwbGljZSgwLCAwLCBkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmIChkYXRhWzRdID09PSAnaW5zZXJ0RG9jdW1lbnQnKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2V0QWxlcnQoJ3dhcm5pbmcnLCAnVGhpcyBpbnNlcnQgY29tbWFuZCBoYXMgbm90IHRha2VuIHBsYWNlIG9uIHRoZSBzZXJ2ZXIgeWV0IGJlY2F1c2UgeW91IGFyZSBvZmZsaW5lLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHN5bmMgdXAgbmV4dCB0aW1lIHlvdSBhcmUgb25saW5lIGFzIGxvbmcgYXMgeW91IGRvIG5vdCBjbGVhciB5b3VyIGNhY2hlIScpO1xuXG5cdFx0XHRcdFx0dGhpcy5fb2ZmbGluZS5pbnNlcnREb2N1bWVudCgnY29sbGVjdGlvblVwZGF0ZScsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICdpbnNlcnQnLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0XHRcdG9sZERhdGE6IG51bGwsXG5cdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRsZXQgcmVzID0gdGhpcy5fb2ZmbGluZS5pbnNlcnREb2N1bWVudChkYXRhWzVdLCBkYXRhWzZdKTtcblxuXHRcdFx0XHRcdGxldCBjYiA9IHRoaXMuX2NiQXJyYXkuZmlsdGVyKGEgPT4gYS5tZXNzYWdlSWQgPT09IGRhdGFbMl0pWzBdO1xuXHRcdFx0XHRcdGlmIChjYiAmJiBjYi5jYikge1xuXHRcdFx0XHRcdFx0Y2IuY2IobnVsbCwgcmVzKTtcblxuXHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheS5zcGxpY2UodGhpcy5fY2JBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gZGF0YVsyXSksIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChkYXRhWzRdID09PSAndXBkYXRlRG9jdW1lbnQnKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2V0QWxlcnQoJ3dhcm5pbmcnLCAnVGhpcyB1cGRhdGUgY29tbWFuZCBoYXMgbm90IHRha2VuIHBsYWNlIG9uIHRoZSBzZXJ2ZXIgeWV0IGJlY2F1c2UgeW91IGFyZSBvZmZsaW5lLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHN5bmMgdXAgbmV4dCB0aW1lIHlvdSBhcmUgb25saW5lIGFzIGxvbmcgYXMgeW91IGRvIG5vdCBjbGVhciB5b3VyIGNhY2hlIScpO1xuXHRcdFx0XHRcdHRoaXMuX29mZmxpbmUuaW5zZXJ0RG9jdW1lbnQoJ2NvbGxlY3Rpb25VcGRhdGUnLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAndXBkYXRlRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0XHRcdG9sZERhdGE6IHRoaXMuX29mZmxpbmUuZmluZE9uZShkYXRhWzVdLCBkYXRhWzZdLl9pZCksXG5cdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAodGhpcy5fb2ZmbGluZS5maW5kT25lKGRhdGFbNV0sIHtfaWQ6IGRhdGFbNl0uX2lkfSkpIHtcblx0XHRcdFx0XHRcdHRoaXMuX29mZmxpbmUudXBkYXRlRG9jdW1lbnQoZGF0YVs1XSwgZGF0YVs2XSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0NvdWxkIG5vdCBmaW5kIE9mZmxpbmUgZGF0YScsIGRhdGFbNV0sIGRhdGFbNl0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCBjYiA9IHRoaXMuX2NiQXJyYXkuZmlsdGVyKGEgPT4gYS5tZXNzYWdlSWQgPT09IGRhdGFbMl0pWzBdO1xuXHRcdFx0XHRcdGlmIChjYiAmJiBjYi5jYikge1xuXHRcdFx0XHRcdFx0Y2IuY2IobnVsbCwgMSk7XG5cdFx0XHRcdFx0XHR0aGlzLl9jYkFycmF5LnNwbGljZSh0aGlzLl9jYkFycmF5LmZpbmRJbmRleChhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKSwgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKGRhdGFbNF0gPT09ICd1cGRhdGVEb2N1bWVudFByb3BzJykge1xuXHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNldEFsZXJ0KCd3YXJuaW5nJywgJ1RoaXMgdXBkYXRlIGNvbW1hbmQgaGFzIG5vdCB0YWtlbiBwbGFjZSBvbiB0aGUgc2VydmVyIHlldCBiZWNhdXNlIHlvdSBhcmUgb2ZmbGluZS4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBzeW5jIHVwIG5leHQgdGltZSB5b3UgYXJlIG9ubGluZSBhcyBsb25nIGFzIHlvdSBkbyBub3QgY2xlYXIgeW91ciBjYWNoZSEnKTtcblx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLmluc2VydERvY3VtZW50KCdjb2xsZWN0aW9uVXBkYXRlJywge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3VwZGF0ZURvY3VtZW50UHJvcHMnLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0XHRcdG9sZERhdGE6IHRoaXMuX29mZmxpbmUuZmluZE9uZShkYXRhWzVdLCBkYXRhWzZdKSxcblx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKClcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmICh0aGlzLl9vZmZsaW5lLmZpbmRPbmUoZGF0YVs1XSwge19pZDogZGF0YVs2XX0pKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLnVwZGF0ZURvY3VtZW50UHJvcHMoZGF0YVs1XSwgZGF0YVs2XSwgZGF0YVs3XSwgZGF0YVs4XSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0NvdWxkIG5vdCBmaW5kIE9mZmxpbmUgZGF0YScsIGRhdGFbNV0sIGRhdGFbNl0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCBjYiA9IHRoaXMuX2NiQXJyYXkuZmlsdGVyKGEgPT4gYS5tZXNzYWdlSWQgPT09IGRhdGFbMl0pWzBdO1xuXHRcdFx0XHRcdGlmIChjYiAmJiBjYi5jYikge1xuXHRcdFx0XHRcdFx0Y2IuY2IobnVsbCwgMSk7XG5cdFx0XHRcdFx0XHR0aGlzLl9jYkFycmF5LnNwbGljZSh0aGlzLl9jYkFycmF5LmZpbmRJbmRleChhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKSwgMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKGRhdGFbNF0gPT09ICdyZW1vdmVEb2N1bWVudCcpIHtcblx0XHRcdFx0XHR0aGlzLl9hbGVydC5zZXRBbGVydCgnd2FybmluZycsICdUaGlzIHJlbW92ZSBjb21tYW5kIGhhcyBub3QgdGFrZW4gcGxhY2Ugb24gdGhlIHNlcnZlciB5ZXQgYmVjYXVzZSB5b3UgYXJlIG9mZmxpbmUuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgc3luYyB1cCBuZXh0IHRpbWUgeW91IGFyZSBvbmxpbmUgYXMgbG9uZyBhcyB5b3UgZG8gbm90IGNsZWFyIHlvdXIgY2FjaGUhJyk7XG5cdFx0XHRcdFx0dGhpcy5fb2ZmbGluZS5pbnNlcnREb2N1bWVudCgnY29sbGVjdGlvblVwZGF0ZScsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICdyZW1vdmVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0XHRcdFx0b2xkRGF0YTogbnVsbCxcblx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKClcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmICh0aGlzLl9vZmZsaW5lLmZpbmRPbmUoZGF0YVs1XSwge19pZDogZGF0YVs2XX0pKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLnJlbW92ZURvY3VtZW50KGRhdGFbNV0sIGRhdGFbNl0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZmluZCBPZmZsaW5lIGRhdGEnLCBkYXRhWzVdLCBkYXRhWzZdKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgY2IgPSB0aGlzLl9jYkFycmF5LmZpbHRlcihhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKVswXTtcblx0XHRcdFx0XHRpZiAoY2IgJiYgY2IuY2IpIHtcblx0XHRcdFx0XHRcdGNiLmNiKG51bGwsIDEpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheS5zcGxpY2UodGhpcy5fY2JBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gZGF0YVsyXSksIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNlIGlmIChkYXRhWzNdID09PSAnb2ZmbGluZScpIHtcblx0XHRcdGlmICh0aGlzLnNvY2tldFN0YXR1cyA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcblx0XHRcdFx0dGhpcy5fc29ja2V0LnNlbmQoLi4uZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Z2V0U3RhdHVzKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb2NrZXQucmVhZHlTdGF0ZSQ7XG5cdH1cbn1cbiJdfQ==
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zb2NrZXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBR3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFnQmhDLFlBQW9CLE9BQXNCLEVBQVUsUUFBK0IsRUFBVSxNQUFvQixFQUFVLE9BQWU7UUFBdEgsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFibEksY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxjQUFTLEdBQW9DLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXJCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLDRCQUF1QixHQUFHLElBQUks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QUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQy9FO2lCQUNEO2FBQ0Q7U0FDRDthQUNJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtnQkFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUMzQjtTQUNEO0lBQ0YsQ0FBQztJQUVELFNBQVM7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ2pDLENBQUM7O2lIQXJZVyxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ja2V0U2VydmljZSB9IGZyb20gJy4vc29ja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3RpdmVDbGllbnRTdWJzY3JpcHRpb25Nb2RlbCB9IGZyb20gJy4vbW9kZWxzL3N1YnNjcmlwdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBkYXRlUmV2aXZlciwgZGVlcENvcHkgfSBmcm9tICcuL3V0aWwvY29tbW9uLmhlbHBlcic7XG5pbXBvcnQgeyBPZmZsaW5lTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL29mZmxpbmUtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0cy9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb2NrZXRNYW5hZ2VyU2VydmljZSB7XG5cdHByaXZhdGUgc29ja2V0U3RhdHVzO1xuXG5cdHByaXZhdGUgbWVzc2FnZUlkID0gMDtcblx0cHJpdmF0ZSBfY2JBcnJheSA9IFtdO1xuXHRwcml2YXRlIF9zdWJBcnJheTogQWN0aXZlQ2xpZW50U3Vic2NyaXB0aW9uTW9kZWxbXSA9IFtdO1xuXHRwcml2YXRlIF9zZW5kUXVldWUgPSBbXTtcblx0cHJpdmF0ZSBfb2ZmbGluZVVwZGF0ZXMgPSBbXTtcblxuXHRwcml2YXRlIF9ydW5uaW5nUXVldWUgPSBmYWxzZTtcblx0cHJpdmF0ZSBpbml0Q29ubmVjdGlvbiA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX2Nvbm5lY3Rpb25EZWxheVRpbWVvdXQgPSBudWxsO1xuXG5cdHB1YmxpYyBvbmVycm9yOiAoKSA9PiB2b2lkID0gZnVuY3Rpb24gKCkge307XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc29ja2V0OiBTb2NrZXRTZXJ2aWNlLCBwcml2YXRlIF9vZmZsaW5lOiBPZmZsaW5lTWFuYWdlclNlcnZpY2UsIHByaXZhdGUgX2FsZXJ0OiBBbGVydFNlcnZpY2UsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyKSB7fVxuXG5cdHB1YmxpYyBpbml0U29ja2V0TWFuYWdlcigpOiB2b2lkIHtcblx0XHR0aGlzLl9zb2NrZXQucmVhZHlTdGF0ZSQuc3Vic2NyaWJlKHNvY2tldFN0YXR1cyA9PiB7XG5cdFx0XHR0aGlzLnNvY2tldFN0YXR1cyA9IHNvY2tldFN0YXR1cztcblx0XHR9KTtcblxuXHRcdHRoaXMuX3NvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuXHRcdFx0bGV0IHJlc0RhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEsIGRhdGVSZXZpdmVyKTtcblxuXHRcdFx0aWYgKHJlc0RhdGEuZGF0YSA9PT0gJ3JlbG9hZFdTQ29tbWFuZCcpIHtcblx0XHRcdFx0d2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZiArICc/Zm9yY2VSZWxvYWQ9dHJ1ZSc7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChyZXNEYXRhLmRhdGEgPT09ICdyZWNvbm5lY3RXU0NvbW1hbmQnKSB7XG5cdFx0XHRcdHRoaXMuX3NvY2tldC5yZWNvbm5lY3QoKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYgKHJlc0RhdGEuZGF0YSA9PT0gJ2Rpc2Nvbm5lY3RXU0NvbW1hbmQnKSB7XG5cdFx0XHRcdHRoaXMuY2xvc2VTb2NrZXQoKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IG9mZmxpbmVJbmRleCA9IHRoaXMuX29mZmxpbmVVcGRhdGVzLmZpbmRJbmRleChhID0+IGEubWVzc2FnZUlkID09PSByZXNEYXRhLm1lc3NhZ2VJZCk7XG5cdFx0XHRpZiAob2ZmbGluZUluZGV4ID49IDApIHtcblx0XHRcdFx0dGhpcy5fb2ZmbGluZS5yZW1vdmVEb2N1bWVudCh0aGlzLl9vZmZsaW5lVXBkYXRlc1tvZmZsaW5lSW5kZXhdLnR5cGUsIHRoaXMuX29mZmxpbmVVcGRhdGVzW29mZmxpbmVJbmRleF0uaWRfb2ZmbGluZV9kb2MpO1xuXHRcdFx0XHR0aGlzLl9vZmZsaW5lVXBkYXRlcy5zcGxpY2Uob2ZmbGluZUluZGV4LCAxKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHJlc0RhdGEuZGF0YSAhPT0gJ0FDSycgJiYgcmVzRGF0YS5kYXRhICE9PSAnTkFDSycpIHtcblx0XHRcdFx0aWYgKHRoaXMuX2NiQXJyYXkubWFwKGEgPT4gYS5tZXNzYWdlSWQpLmluY2x1ZGVzKHJlc0RhdGEubWVzc2FnZUlkKSkge1x0XG5cdFx0XHRcdFx0bGV0IGluZGV4ID0gdGhpcy5fY2JBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gcmVzRGF0YS5tZXNzYWdlSWQpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XG5cdFx0XHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMuX2NiQXJyYXlbaW5kZXhdLnRpbWVySWQpO1xuXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5fY2JBcnJheVtpbmRleF0uY2IpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheVtpbmRleF0uY2IocmVzRGF0YS5oYXNFcnJvciA/IHJlc0RhdGEuZGF0YSA6IG51bGwsIHJlc0RhdGEuaGFzRXJyb3IgPyBudWxsIDogcmVzRGF0YS5kYXRhKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheVtpbmRleF0ucmVzb2x2ZUZuKHJlc0RhdGEuaGFzRXJyb3IgPyByZXNEYXRhLmRhdGEgOiBudWxsKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzRGF0YS5oYXNFcnJvcikge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXlbaW5kZXhdLnJlamVjdEZuKHJlc0RhdGEuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheVtpbmRleF0ucmVzb2x2ZUZuKHJlc0RhdGEuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmICh0aGlzLl9zdWJBcnJheS5tYXAoYSA9PiBhLm1lc3NhZ2VJZCkuaW5jbHVkZXMocmVzRGF0YS5tZXNzYWdlSWQpKSB7XHRcblx0XHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLl9zdWJBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gcmVzRGF0YS5tZXNzYWdlSWQpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zdWJBcnJheVtpbmRleF0uc3ViamVjdC5uZXh0KHJlc0RhdGEuZGF0YSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuX3NvY2tldC5vbm9wZW4gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG5cdFx0XHR0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuX2Nvbm5lY3Rpb25EZWxheVRpbWVvdXQgPSBudWxsO1xuXG5cdFx0XHRcdHRoaXMuX29mZmxpbmUuc2V0T2ZmbGluZShmYWxzZSk7XG5cdFx0XHRcdFxuXHRcdFx0XHRsZXQgY29sbGVjdGlvblVwZGF0ZXMgPSB0aGlzLl9vZmZsaW5lLmZpbmQoJ2NvbGxlY3Rpb25VcGRhdGUnLCB7fSk7XG5cblx0XHRcdFx0Y29sbGVjdGlvblVwZGF0ZXMuZm9yRWFjaCh1cGRhdGUgPT4ge1xuXHRcdFx0XHRcdGxldCBtZXNzYWdlSWQgPSB0aGlzLm1lc3NhZ2VJZCsrO1xuXG5cdFx0XHRcdFx0dGhpcy5fb2ZmbGluZVVwZGF0ZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRpZF9vZmZsaW5lX2RvYzogdXBkYXRlLl9pZCxcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRcdFx0dHlwZTogJ2NvbGxlY3Rpb25VcGRhdGUnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHR1cGRhdGUuZGF0YVsyXSA9IG1lc3NhZ2VJZDtcblxuXHRcdFx0XHRcdGlmICh1cGRhdGUudHlwZSA9PT0gJ3VwZGF0ZURvY3VtZW50JyAmJiB1cGRhdGUub2xkRGF0YSkge1xuXHRcdFx0XHRcdFx0dXBkYXRlLmRhdGFbNF0gPSAndXBkYXRlRG9jdW1lbnRPZmZsaW5lJztcblx0XHRcdFx0XHRcdHVwZGF0ZS5kYXRhWzBdID0gJ09mZmxpbmUgLSAnICsgdXBkYXRlLmRhdGFbMF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKHVwZGF0ZS50eXBlID09PSAndXBkYXRlRG9jdW1lbnRQcm9wcycgJiYgdXBkYXRlLm9sZERhdGEpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZS5kYXRhWzRdID0gJ3VwZGF0ZURvY3VtZW50UHJvcHNPZmZsaW5lJztcblx0XHRcdFx0XHRcdHVwZGF0ZS5kYXRhWzBdID0gJ09mZmxpbmUgLSAnICsgdXBkYXRlLmRhdGFbMF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dXBkYXRlLmRhdGFbMF0gPSAnT2ZmbGluZSAtICcgKyB1cGRhdGUuZGF0YVswXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChjb2xsZWN0aW9uVXBkYXRlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLnNlbmQoJ09mZmxpbmUgVXBkYXRlcycsIG5ldyBEYXRlKCksIHRoaXMubWVzc2FnZUlkKyssICdvZmZsaW5lJywgY29sbGVjdGlvblVwZGF0ZXMuc29ydCgoYSwgYikgPT4gYS5kYXRlLmdldFRpbWUoKSAtIGIuZGF0ZS5nZXRUaW1lKCkpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLmluaXRDb25uZWN0aW9uKSB7XG5cdFx0XHRcdFx0dGhpcy5fc3ViQXJyYXkuZm9yRWFjaChzdWIgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5zZW5kKHN1Yi5tZXNzYWdlUm91dGUsIG5ldyBEYXRlKCksIHN1Yi5tZXNzYWdlSWQsICdzdWJzY3JpcHRpb24nLCAnc3ViJywgc3ViLnN1YnNjcmlwdGlvbiwgLi4uc3ViLnBhcmFtZXRlcnMpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5pbml0Q29ubmVjdGlvbiA9IHRydWU7XG5cdFx0XHR9LCAxMDAwKTtcblx0XHR9O1xuXG5cdFx0dGhpcy5fc29ja2V0Lm9uZXJyb3IgPSAoZXY6IEVycm9yRXZlbnQpID0+IHtcblx0XHRcdGlmICh0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0KSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0KTtcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKG5ldyBEYXRlKCksICdTT0NLRVQgRVJST1InLCBldik7XG5cdFx0XHR0aGlzLm9uZXJyb3IoKTtcblx0XHR9O1xuXG5cdFx0dGhpcy5fc29ja2V0Lm9uY2xvc2UgPSAoZXY6IENsb3NlRXZlbnQpID0+IHtcblx0XHRcdGlmICh0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0KSB7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLl9jb25uZWN0aW9uRGVsYXlUaW1lb3V0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pbml0Q29ubmVjdGlvbikge1xuXHRcdFx0XHRpZiAoIXRoaXMuX3J1bm5pbmdRdWV1ZSkge1xuXHRcdFx0XHRcdGlmICh0aGlzLl9zZW5kUXVldWUubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9ydW5uaW5nUXVldWUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuX3NlbmRRdWV1ZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5fc29ja2V0ICYmIHRoaXMuX3NvY2tldC53cykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLnNvY2tldFN0YXR1cyA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBuZXh0U2VuZEl0ZW0gPSB0aGlzLl9zZW5kUXVldWUucG9wKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX3NvY2tldC5zZW5kKC4uLm5leHRTZW5kSXRlbSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuX3J1bm5pbmdRdWV1ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sIDI1KTtcblx0fVxuXG5cdHB1YmxpYyBvcGVuU29ja2V0KGVudmlyb25tZW50LCBwcm90b2NvbHMpIHtcblx0XHR0aGlzLl9zb2NrZXQub3BlblNvY2tldChlbnZpcm9ubWVudCwgcHJvdG9jb2xzKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZVNvY2tldCgpIHtcblx0XHR0aGlzLl9zb2NrZXQuY2xvc2UoKTtcblx0fVxuXG5cdHB1YmxpYyBjYWxsKG1ldGhvZDogc3RyaW5nLCAuLi5wYXJhbWV0ZXJzOiBhbnlbXSkge1xuXHRcdGxldCByZXNvbHZlRm4gPSBudWxsO1xuXHRcdGxldCByZWplY3RGbiA9IG51bGw7XG5cblx0XHRsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHJlc29sdmVGbiA9IHJlc29sdmU7XG5cdFx0XHRyZWplY3RGbiA9IHJlamVjdDtcblx0XHR9KTtcblxuXHRcdGxldCBtZXNzYWdlSWQgPSB0aGlzLm1lc3NhZ2VJZCsrO1xuXG5cdFx0bGV0IHRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5fY2JBcnJheS5maWx0ZXIoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gbWVzc2FnZUlkKVswXSkge1xuXHRcdFx0XHR0aGlzLnNlbmQoKHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMoJz8nKSA/IHRoaXMuX3JvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMuX3JvdXRlci51cmwuaW5kZXhPZignPycpKSA6IHRoaXMuX3JvdXRlci51cmwpLCBuZXcgRGF0ZSgpLCBtZXNzYWdlSWQsICdtZXRob2RSZXNwb25zZScsIG1ldGhvZCwgLi4ucGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcblx0XHRcdH1cblx0XHR9LCA1MDAwKTtcblxuXHRcdGlmIChwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3RoIC0gMV0gJiYgdHlwZW9mKHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGggLSAxXSkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuX2NiQXJyYXkucHVzaCh7XG5cdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRjYjogcGFyYW1ldGVycy5wb3AoKSxcblx0XHRcdFx0cmVzb2x2ZUZuOiByZXNvbHZlRm4sXG5cdFx0XHRcdHJlamVjdEZuOiByZWplY3RGbixcblx0XHRcdFx0dGltZXJJZDogdGltZXJJZCxcblx0XHRcdFx0cmV0cnlDbnQ6IDBcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHRoaXMuX2NiQXJyYXkucHVzaCh7XG5cdFx0XHRcdG1lc3NhZ2VJZDogbWVzc2FnZUlkLFxuXHRcdFx0XHRjYjogbnVsbCxcblx0XHRcdFx0cmVzb2x2ZUZuOiByZXNvbHZlRm4sXG5cdFx0XHRcdHJlamVjdEZuOiByZWplY3RGbixcblx0XHRcdFx0dGltZXJJZDogdGltZXJJZCxcblx0XHRcdFx0cmV0cnlDbnQ6IDBcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGxldCBjbnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcblx0XHR3aGlsZSAoKHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGggLSAxXSA9PT0gdW5kZWZpbmVkIHx8IHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGggLSAxXSA9PT0gbnVsbCkgJiYgY250ID4gMCkge1xuXHRcdFx0cGFyYW1ldGVycy5wb3AoKTtcblx0XHRcdGNudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuXHRcdH1cblxuXHRcdHRoaXMuc2VuZCgodGhpcy5fcm91dGVyLnVybC5pbmNsdWRlcygnPycpID8gdGhpcy5fcm91dGVyLnVybC5zdWJzdHJpbmcoMCwgdGhpcy5fcm91dGVyLnVybC5pbmRleE9mKCc/JykpIDogdGhpcy5fcm91dGVyLnVybCksIG5ldyBEYXRlKCksIG1lc3NhZ2VJZCwgJ21ldGhvZCcsIG1ldGhvZCwgLi4ucGFyYW1ldGVycyk7XG5cblx0XHRyZXR1cm4gcHJvbWlzZTtcblx0fVxuXG5cdHB1YmxpYyBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBzdHJpbmcsIC4uLnBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBjb3B5UGFyYW1ldGVycyA9IGRlZXBDb3B5KHBhcmFtZXRlcnMpO1xuXHRcdGNvbnN0IG5ld1N1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cblx0XHRsZXQgbWVzc2FnZUlkID0gdGhpcy5tZXNzYWdlSWQrKztcblxuXHRcdHRoaXMuX3N1YkFycmF5LnB1c2goe1xuXHRcdFx0bWVzc2FnZUlkOiBtZXNzYWdlSWQsXG5cdFx0XHRtZXNzYWdlUm91dGU6ICh0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKCc/JykgPyB0aGlzLl9yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLl9yb3V0ZXIudXJsLmluZGV4T2YoJz8nKSkgOiB0aGlzLl9yb3V0ZXIudXJsKSxcblx0XHRcdHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uLFxuXHRcdFx0cGFyYW1ldGVyczogY29weVBhcmFtZXRlcnMsXG5cdFx0XHRzdWJqZWN0OiBuZXdTdWJqZWN0XG5cdFx0fSk7XG5cblx0XHRjb25zdCBvYnNlcnZhYmxlID0gbmV3U3ViamVjdC5waXBlKGZpbmFsaXplKCgpID0+IHtcblx0XHRcdHRoaXMudW5zdWJzY3JpYmUobWVzc2FnZUlkLCBzdWJzY3JpcHRpb24sIC4uLmNvcHlQYXJhbWV0ZXJzKTtcblx0XHRcdHRoaXMuX3N1YkFycmF5LnNwbGljZSh0aGlzLl9zdWJBcnJheS5tYXAoYSA9PiBhLm1lc3NhZ2VJZCkuaW5kZXhPZihtZXNzYWdlSWQpLCAxKTtcblx0XHR9KSk7XG5cblx0XHR0aGlzLnNlbmQoKHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXMoJz8nKSA/IHRoaXMuX3JvdXRlci51cmwuc3Vic3RyaW5nKDAsIHRoaXMuX3JvdXRlci51cmwuaW5kZXhPZignPycpKSA6IHRoaXMuX3JvdXRlci51cmwpLCBuZXcgRGF0ZSgpLCBtZXNzYWdlSWQsICdzdWJzY3JpcHRpb24nLCAnc3ViJywgc3Vic2NyaXB0aW9uLCAuLi5jb3B5UGFyYW1ldGVycyk7XG5cblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcblx0fVxuXG5cdHB1YmxpYyBzdWJzY3JpYmVCeXBhc3NSb3V0ZShzdWJzY3JpcHRpb246IHN0cmluZywgLi4ucGFyYW1ldGVycykge1xuXHRcdGNvbnN0IGNvcHlQYXJhbWV0ZXJzID0gZGVlcENvcHkocGFyYW1ldGVycyk7XG5cdFx0Y29uc3QgbmV3U3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuXHRcdGxldCBtZXNzYWdlSWQgPSB0aGlzLm1lc3NhZ2VJZCsrO1xuXG5cdFx0dGhpcy5fc3ViQXJyYXkucHVzaCh7XG5cdFx0XHRtZXNzYWdlSWQ6IG1lc3NhZ2VJZCxcblx0XHRcdG1lc3NhZ2VSb3V0ZTogJ0J5cGFzcycsXG5cdFx0XHRzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvbixcblx0XHRcdHBhcmFtZXRlcnM6IGNvcHlQYXJhbWV0ZXJzLFxuXHRcdFx0c3ViamVjdDogbmV3U3ViamVjdFxuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IG5ld1N1YmplY3QucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnVuc3Vic2NyaWJlKG1lc3NhZ2VJZCwgc3Vic2NyaXB0aW9uLCAuLi5jb3B5UGFyYW1ldGVycyk7XG5cdFx0XHR0aGlzLl9zdWJBcnJheS5zcGxpY2UodGhpcy5fc3ViQXJyYXkubWFwKGEgPT4gYS5tZXNzYWdlSWQpLmluZGV4T2YobWVzc2FnZUlkKSwgMSk7XG5cdFx0fSkpO1xuXG5cdFx0dGhpcy5zZW5kKCdCeXBhc3MnLCBuZXcgRGF0ZSgpLCBtZXNzYWdlSWQsICdzdWJzY3JpcHRpb24nLCAnc3ViJywgc3Vic2NyaXB0aW9uLCAuLi5jb3B5UGFyYW1ldGVycyk7XG5cblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcblx0fVxuXG5cdHB1YmxpYyB1bnN1YnNjcmliZShtZXNzYWdlSWQsIHN1YnNjcmlwdGlvbjogc3RyaW5nLCAuLi5wYXJhbWV0ZXJzKSB7XG5cdFx0dGhpcy5zZW5kKCh0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKCc/JykgPyB0aGlzLl9yb3V0ZXIudXJsLnN1YnN0cmluZygwLCB0aGlzLl9yb3V0ZXIudXJsLmluZGV4T2YoJz8nKSkgOiB0aGlzLl9yb3V0ZXIudXJsKSwgbmV3IERhdGUoKSwgbWVzc2FnZUlkLCAnc3Vic2NyaXB0aW9uJywgJ3Vuc3ViJywgc3Vic2NyaXB0aW9uLCAuLi5wYXJhbWV0ZXJzKTtcblx0fVxuXHRcblx0cHJpdmF0ZSBzZW5kKC4uLmRhdGE6IGFueVtdKSB7XG5cdFx0aWYgKGRhdGFbM10gPT09ICdzdWJzY3JpcHRpb24nKSB7XG5cdFx0XHRpZiAodGhpcy5zb2NrZXRTdGF0dXMgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cdFx0XHRcdHRoaXMuX3NvY2tldC5zZW5kKC4uLmRhdGEpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICghdGhpcy5fc2VuZFF1ZXVlLmZpbHRlcihhID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShkYXRhKSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VuZFF1ZXVlLnNwbGljZSgwLCAwLCBkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRlbHNlIGlmIChkYXRhWzNdID09PSAnbWV0aG9kJykge1xuXHRcdFx0aWYgKHRoaXMuc29ja2V0U3RhdHVzID09PSBXZWJTb2NrZXQuT1BFTikge1xuXHRcdFx0XHRpZiAoIXRoaXMuX3NlbmRRdWV1ZS5maWx0ZXIoYSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoZGF0YSkpLmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMuX3NlbmRRdWV1ZS5zcGxpY2UoMCwgMCwgZGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZiAoZGF0YVs0XSA9PT0gJ2luc2VydERvY3VtZW50Jykge1xuXHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNldEFsZXJ0KCd3YXJuaW5nJywgJ1RoaXMgaW5zZXJ0IGNvbW1hbmQgaGFzIG5vdCB0YWtlbiBwbGFjZSBvbiB0aGUgc2VydmVyIHlldCBiZWNhdXNlIHlvdSBhcmUgb2ZmbGluZS4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBzeW5jIHVwIG5leHQgdGltZSB5b3UgYXJlIG9ubGluZSBhcyBsb25nIGFzIHlvdSBkbyBub3QgY2xlYXIgeW91ciBjYWNoZSEnKTtcblxuXHRcdFx0XHRcdHRoaXMuX29mZmxpbmUuaW5zZXJ0RG9jdW1lbnQoJ2NvbGxlY3Rpb25VcGRhdGUnLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnaW5zZXJ0Jyxcblx0XHRcdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdFx0XHRvbGREYXRhOiBudWxsLFxuXHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKVxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0bGV0IHJlcyA9IHRoaXMuX29mZmxpbmUuaW5zZXJ0RG9jdW1lbnQoZGF0YVs1XSwgZGF0YVs2XSk7XG5cblx0XHRcdFx0XHRsZXQgY2IgPSB0aGlzLl9jYkFycmF5LmZpbHRlcihhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKVswXTtcblx0XHRcdFx0XHRpZiAoY2IgJiYgY2IuY2IpIHtcblx0XHRcdFx0XHRcdGNiLmNiKG51bGwsIHJlcyk7XG5cblx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXkuc3BsaWNlKHRoaXMuX2NiQXJyYXkuZmluZEluZGV4KGEgPT4gYS5tZXNzYWdlSWQgPT09IGRhdGFbMl0pLCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAoZGF0YVs0XSA9PT0gJ3VwZGF0ZURvY3VtZW50Jykge1xuXHRcdFx0XHRcdHRoaXMuX2FsZXJ0LnNldEFsZXJ0KCd3YXJuaW5nJywgJ1RoaXMgdXBkYXRlIGNvbW1hbmQgaGFzIG5vdCB0YWtlbiBwbGFjZSBvbiB0aGUgc2VydmVyIHlldCBiZWNhdXNlIHlvdSBhcmUgb2ZmbGluZS4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBzeW5jIHVwIG5leHQgdGltZSB5b3UgYXJlIG9ubGluZSBhcyBsb25nIGFzIHlvdSBkbyBub3QgY2xlYXIgeW91ciBjYWNoZSEnKTtcblx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLmluc2VydERvY3VtZW50KCdjb2xsZWN0aW9uVXBkYXRlJywge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3VwZGF0ZURvY3VtZW50Jyxcblx0XHRcdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdFx0XHRvbGREYXRhOiB0aGlzLl9vZmZsaW5lLmZpbmRPbmUoZGF0YVs1XSwgZGF0YVs2XS5faWQpLFxuXHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKVxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKHRoaXMuX29mZmxpbmUuZmluZE9uZShkYXRhWzVdLCB7X2lkOiBkYXRhWzZdLl9pZH0pKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLnVwZGF0ZURvY3VtZW50KGRhdGFbNV0sIGRhdGFbNl0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZmluZCBPZmZsaW5lIGRhdGEnLCBkYXRhWzVdLCBkYXRhWzZdKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgY2IgPSB0aGlzLl9jYkFycmF5LmZpbHRlcihhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKVswXTtcblx0XHRcdFx0XHRpZiAoY2IgJiYgY2IuY2IpIHtcblx0XHRcdFx0XHRcdGNiLmNiKG51bGwsIDEpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheS5zcGxpY2UodGhpcy5fY2JBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gZGF0YVsyXSksIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChkYXRhWzRdID09PSAndXBkYXRlRG9jdW1lbnRQcm9wcycpIHtcblx0XHRcdFx0XHR0aGlzLl9hbGVydC5zZXRBbGVydCgnd2FybmluZycsICdUaGlzIHVwZGF0ZSBjb21tYW5kIGhhcyBub3QgdGFrZW4gcGxhY2Ugb24gdGhlIHNlcnZlciB5ZXQgYmVjYXVzZSB5b3UgYXJlIG9mZmxpbmUuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgc3luYyB1cCBuZXh0IHRpbWUgeW91IGFyZSBvbmxpbmUgYXMgbG9uZyBhcyB5b3UgZG8gbm90IGNsZWFyIHlvdXIgY2FjaGUhJyk7XG5cdFx0XHRcdFx0dGhpcy5fb2ZmbGluZS5pbnNlcnREb2N1bWVudCgnY29sbGVjdGlvblVwZGF0ZScsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdFx0XHRvbGREYXRhOiB0aGlzLl9vZmZsaW5lLmZpbmRPbmUoZGF0YVs1XSwgZGF0YVs2XSksXG5cdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAodGhpcy5fb2ZmbGluZS5maW5kT25lKGRhdGFbNV0sIHtfaWQ6IGRhdGFbNl19KSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fb2ZmbGluZS51cGRhdGVEb2N1bWVudFByb3BzKGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sIGRhdGFbOF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZmluZCBPZmZsaW5lIGRhdGEnLCBkYXRhWzVdLCBkYXRhWzZdKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgY2IgPSB0aGlzLl9jYkFycmF5LmZpbHRlcihhID0+IGEubWVzc2FnZUlkID09PSBkYXRhWzJdKVswXTtcblx0XHRcdFx0XHRpZiAoY2IgJiYgY2IuY2IpIHtcblx0XHRcdFx0XHRcdGNiLmNiKG51bGwsIDEpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2JBcnJheS5zcGxpY2UodGhpcy5fY2JBcnJheS5maW5kSW5kZXgoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gZGF0YVsyXSksIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmIChkYXRhWzRdID09PSAncmVtb3ZlRG9jdW1lbnQnKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2V0QWxlcnQoJ3dhcm5pbmcnLCAnVGhpcyByZW1vdmUgY29tbWFuZCBoYXMgbm90IHRha2VuIHBsYWNlIG9uIHRoZSBzZXJ2ZXIgeWV0IGJlY2F1c2UgeW91IGFyZSBvZmZsaW5lLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHN5bmMgdXAgbmV4dCB0aW1lIHlvdSBhcmUgb25saW5lIGFzIGxvbmcgYXMgeW91IGRvIG5vdCBjbGVhciB5b3VyIGNhY2hlIScpO1xuXHRcdFx0XHRcdHRoaXMuX29mZmxpbmUuaW5zZXJ0RG9jdW1lbnQoJ2NvbGxlY3Rpb25VcGRhdGUnLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAncmVtb3ZlRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdFx0XHRcdG9sZERhdGE6IG51bGwsXG5cdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAodGhpcy5fb2ZmbGluZS5maW5kT25lKGRhdGFbNV0sIHtfaWQ6IGRhdGFbNl19KSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fb2ZmbGluZS5yZW1vdmVEb2N1bWVudChkYXRhWzVdLCBkYXRhWzZdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnQ291bGQgbm90IGZpbmQgT2ZmbGluZSBkYXRhJywgZGF0YVs1XSwgZGF0YVs2XSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IGNiID0gdGhpcy5fY2JBcnJheS5maWx0ZXIoYSA9PiBhLm1lc3NhZ2VJZCA9PT0gZGF0YVsyXSlbMF07XG5cdFx0XHRcdFx0aWYgKGNiICYmIGNiLmNiKSB7XG5cdFx0XHRcdFx0XHRjYi5jYihudWxsLCAxKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NiQXJyYXkuc3BsaWNlKHRoaXMuX2NiQXJyYXkuZmluZEluZGV4KGEgPT4gYS5tZXNzYWdlSWQgPT09IGRhdGFbMl0pLCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZWxzZSBpZiAoZGF0YVszXSA9PT0gJ29mZmxpbmUnKSB7XG5cdFx0XHRpZiAodGhpcy5zb2NrZXRTdGF0dXMgPT09IFdlYlNvY2tldC5PUEVOKSB7XG5cdFx0XHRcdHRoaXMuX3NvY2tldC5zZW5kKC4uLmRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldFN0YXR1cygpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ja2V0LnJlYWR5U3RhdGUkO1xuXHR9XG59XG4iXX0=
|