@resolveio/client-lib-core 1.6.0 → 1.6.1
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/logger/logger.component.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/new/support-ticket-new.component.mjs +3 -3
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +3 -3
- package/fesm2015/resolveio-client-lib-core.mjs +10 -10
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -1
- package/fesm2020/resolveio-client-lib-core.mjs +10 -10
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -212,9 +212,9 @@ export class LoggerComponent extends BaseComponent {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
LoggerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: LoggerComponent, deps: [{ token: i1.ProviderService }, { token: i2.DialogService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
215
|
-
LoggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", 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"], dependencies: [{ kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i4.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i4.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i4.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "directive", type: i4.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"] }, { kind: "component", type: i4.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "component", type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }, { kind: "component", type: i5.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { kind: "component", type: i6.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"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i8.JsonParsePipe, name: "jsonParse" }, { kind: "pipe", type: i7.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
215
|
+
LoggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", 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 float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('log_' + i)\" class=\"fa fa-minus float-end\" 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"], dependencies: [{ kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i4.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i4.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i4.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "directive", type: i4.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"] }, { kind: "component", type: i4.NgbPagination, selector: "ngb-pagination", inputs: ["disabled", "boundaryLinks", "directionLinks", "ellipses", "rotate", "collectionSize", "maxSize", "page", "pageSize", "size"], outputs: ["pageChange"] }, { kind: "component", type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }, { kind: "component", type: i5.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { kind: "component", type: i6.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"] }, { kind: "component", type: i6.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i8.JsonParsePipe, name: "jsonParse" }, { kind: "pipe", type: i7.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
216
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: LoggerComponent, decorators: [{
|
|
217
217
|
type: Component,
|
|
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
|
|
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 float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('log_' + i)\" class=\"fa fa-minus float-end\" 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 }]; } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9sb2dnZXIvbG9nZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9sb2dnZXIvbG9nZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQVFqRSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFhO0lBMEJqRCxZQUFvQixTQUEwQixFQUFVLEdBQWtCLEVBQVUsR0FBc0I7UUFDekcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF4QjFHLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBRWpCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUVaLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1gsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNY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LENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3dpZGdldHMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9sb2dnZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIExvZ2dlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cdGxvZ3M6IGFueVtdID0gW107XG5cblx0ZW50cmllc19wZXJfcGFnZSA9IDI1O1xuXHRwYWdlX251bSA9IDE7XG5cdGxvZ19jbnQgPSAwO1xuXG5cdHVzZXIgPSBudWxsO1xuXHR1c2VycyA9IFtdO1xuXG5cdGRhdGVTdGFydEVsZW07XG5cdGRhdGVFbmRFbGVtO1xuXHR0aW1lU3RhcnRFbGVtO1xuXHR0aW1lRW5kRWxlbTtcblx0ZGF0ZVN0YXJ0OiBEYXRlO1xuXHRkYXRlRW5kOiBEYXRlO1xuXG5cdHNlbGVjdGVkVHlwZXMgPSBbXTtcblxuXHRjb2xsZWN0aW9uID0gJyc7XG5cdG1ldGhvZCA9ICcnO1xuXHRyb3V0ZSA9ICcnO1xuXHRpZF9kb2N1bWVudCA9ICcnO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UsIHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0aWYgKCF0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkucm9sZXMuc3VwZXJfYWRtaW4pIHtcblx0XHRcdHRoaXMuX3NlcnZpY2VzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKTtcblx0XHR9XG5cblx0XHR0aGlzLnN1YnNjcmlwdGlvbiQucHVzaCh0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LnN1YnNjcmliZSgnYWxsVXNlcnMnKS5zdWJzY3JpYmUodXNlcnMgPT4ge1xuXHRcdFx0dGhpcy51c2VycyA9IHVzZXJzO1xuXG5cdFx0XHR0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0fSkpO1xuXG5cdFx0bGV0IGpzRGF0ZVN0YXJ0ID0gbmV3IERhdGUoKTtcblx0XHRqc0RhdGVTdGFydC5zZXRIb3VycygwLCAwLCAwLCAwKTtcblx0XHRsZXQgZGF0ZV9zdGFydCA9IG5ldyBEYXRlKG1vbWVudChqc0RhdGVTdGFydCkuc3VidHJhY3QoMTAsICdkYXlzJykudG9EYXRlKCkpO1xuXHRcdHRoaXMuZGF0ZVN0YXJ0RWxlbSA9IHt5ZWFyOiBkYXRlX3N0YXJ0LmdldEZ1bGxZZWFyKCksIG1vbnRoOiBkYXRlX3N0YXJ0LmdldE1vbnRoKCkgKyAxLCBkYXk6IGRhdGVfc3RhcnQuZ2V0RGF0ZSgpfTtcblx0XHR0aGlzLnRpbWVTdGFydEVsZW0gPSB7aG91cjogMCwgbWludXRlOiAwLCBzZWNvbmQ6IDB9O1xuXG5cdFx0bGV0IGpzRGF0ZUVuZCA9IG5ldyBEYXRlKCk7XG5cdFx0anNEYXRlRW5kLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG5cdFx0bGV0IGRhdGVfZW5kID0ganNEYXRlRW5kO1xuXHRcdHRoaXMuZGF0ZUVuZEVsZW0gPSB7eWVhcjogZGF0ZV9lbmQuZ2V0RnVsbFllYXIoKSwgbW9udGg6IGRhdGVfZW5kLmdldE1vbnRoKCkgKyAxLCBkYXk6IGRhdGVfZW5kLmdldERhdGUoKX07XG5cdFx0dGhpcy50aW1lRW5kRWxlbSA9IHtob3VyOiAyMywgbWludXRlOiA1OSwgc2Vjb25kOiA1OX07XG5cblx0XHR0aGlzLmdldExvZ0RhdGEoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uJC5mb3JFYWNoKHN1YiA9PiB7XG5cdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdGdldExvZ0RhdGEoKSB7XG5cdFx0dGhpcy5kYXRlU3RhcnQgPSBuZXcgRGF0ZSh0aGlzLmRhdGVTdGFydEVsZW0ueWVhciwgdGhpcy5kYXRlU3RhcnRFbGVtLm1vbnRoIC0gMSwgdGhpcy5kYXRlU3RhcnRFbGVtLmRheSwgdGhpcy50aW1lU3RhcnRFbGVtLmhvdXIsIHRoaXMudGltZVN0YXJ0RWxlbS5taW51dGUsIHRoaXMudGltZVN0YXJ0RWxlbS5zZWNvbmQsIDApO1xuXHRcdHRoaXMuZGF0ZUVuZCA9IG5ldyBEYXRlKHRoaXMuZGF0ZUVuZEVsZW0ueWVhciwgdGhpcy5kYXRlRW5kRWxlbS5tb250aCAtIDEsIHRoaXMuZGF0ZUVuZEVsZW0uZGF5LCB0aGlzLnRpbWVFbmRFbGVtLmhvdXIsIHRoaXMudGltZUVuZEVsZW0ubWludXRlLCB0aGlzLnRpbWVFbmRFbGVtLnNlY29uZCwgOTk5KTtcblxuXHRcdGxldCBxdWVyeTogYW55ID0ge1xuXHRcdFx0JGFuZDogW1xuXHRcdFx0XHR7Y3JlYXRlZEF0OiB7JGd0ZTogdGhpcy5kYXRlU3RhcnR9fSxcblx0XHRcdFx0e2NyZWF0ZWRBdDogeyRsdGU6IHRoaXMuZGF0ZUVuZH19XG5cdFx0XHRdXG5cdFx0fTtcblxuXHRcdGlmICghdGhpcy5zZWxlY3RlZFR5cGVzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7dHlwZTogeyRpbjogdGhpcy5zZWxlY3RlZFR5cGVzfX0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNvbGxlY3Rpb24pIHtcblx0XHRcdGlmICh0aGlzLmNvbGxlY3Rpb24uaW5jbHVkZXMoJywnKSkge1xuXHRcdFx0XHRsZXQgY29sbGVjdGlvbnMgPSB0aGlzLmNvbGxlY3Rpb24uc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gIWEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0aWYgKGNvbGxlY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7Y29sbGVjdGlvbjogeyRpbjogY29sbGVjdGlvbnN9fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbm90Q29sbGVjdGlvbnMgPSB0aGlzLmNvbGxlY3Rpb24uc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRub3RDb2xsZWN0aW9ucy5mb3JFYWNoKG5vdCA9PiB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtjb2xsZWN0aW9uOiB7JG5lOiBub3QucmVwbGFjZSgnIScsICcnKX19KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKHRoaXMuY29sbGVjdGlvbi5zdGFydHNXaXRoKCchJykpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2NvbGxlY3Rpb246IHskbmU6IHRoaXMuY29sbGVjdGlvbi5yZXBsYWNlKCchJywgJycpLnRyaW0oKX19KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2NvbGxlY3Rpb246IHRoaXMuY29sbGVjdGlvbi50cmltKCl9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1ldGhvZCkge1xuXHRcdFx0aWYgKHRoaXMubWV0aG9kLmluY2x1ZGVzKCcsJykpIHtcblx0XHRcdFx0bGV0IG1ldGhvZHMgPSB0aGlzLm1ldGhvZC5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiAhYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRpZiAobWV0aG9kcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRpbjogbWV0aG9kc319KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBub3RNZXRob2RzID0gdGhpcy5tZXRob2Quc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRub3RNZXRob2RzLmZvckVhY2gobm90ID0+IHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRuZTogbm90LnJlcGxhY2UoJyEnLCAnJyl9fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICh0aGlzLm1ldGhvZC5zdGFydHNXaXRoKCchJykpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRuZTogdGhpcy5tZXRob2QucmVwbGFjZSgnIScsICcnKS50cmltKCl9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHttZXRob2Q6IHRoaXMubWV0aG9kLnRyaW0oKX0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucm91dGUpIHtcblx0XHRcdGlmICh0aGlzLnJvdXRlLmluY2x1ZGVzKCcsJykpIHtcblx0XHRcdFx0bGV0IHJvdXRlcyA9IHRoaXMucm91dGUuc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gIWEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0aWYgKHJvdXRlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe3JvdXRlOiB7JGluOiByb3V0ZXN9fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbm90Um91dGVzID0gdGhpcy5yb3V0ZS5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiBhLnN0YXJ0c1dpdGgoJyEnKSk7XG5cdFx0XHRcdG5vdFJvdXRlcy5mb3JFYWNoKG5vdCA9PiB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtyb3V0ZTogeyRuZTogbm90LnJlcGxhY2UoJyEnLCAnJyl9fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICh0aGlzLnJvdXRlLnN0YXJ0c1dpdGgoJyEnKSkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7cm91dGU6IHskbmU6IHRoaXMucm91dGUucmVwbGFjZSgnIScsICcnKS50cmltKCl9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtyb3V0ZTogdGhpcy5yb3V0ZS50cmltKCl9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHRpZiAodGhpcy5pZF9kb2N1bWVudCkge1xuXHRcdFx0aWYgKHRoaXMuaWRfZG9jdW1lbnQuaW5jbHVkZXMoJywnKSkge1xuXHRcdFx0XHRsZXQgaWRfZG9jdW1lbnRzID0gdGhpcy5pZF9kb2N1bWVudC5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiAhYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRpZiAoaWRfZG9jdW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7aWRfZG9jdW1lbnQ6IHskaW46IGlkX2RvY3VtZW50c319KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBub3RJZHMgPSB0aGlzLmlkX2RvY3VtZW50LnNwbGl0KCcsJykubWFwKGEgPT4gYS50cmltKCkpLmZpbHRlcihhID0+IGEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0bm90SWRzLmZvckVhY2gobm90ID0+IHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2lkX2RvY3VtZW50OiB7JG5lOiBub3QucmVwbGFjZSgnIScsICcnKX19KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKHRoaXMuaWRfZG9jdW1lbnQuc3RhcnRzV2l0aCgnIScpKSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtpZF9kb2N1bWVudDogeyRuZTogdGhpcy5pZF9kb2N1bWVudC5yZXBsYWNlKCchJywgJycpLnRyaW0oKX19KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2lkX2RvY3VtZW50OiB0aGlzLmlkX2RvY3VtZW50LnRyaW0oKX0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudXNlcikge1xuXHRcdFx0cXVlcnkuJGFuZC5wdXNoKHt1c2VyOiB0aGlzLnVzZXJ9KTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mKHRoaXMuZW50cmllc19wZXJfcGFnZSkgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aGlzLmVudHJpZXNfcGVyX3BhZ2UgPSBwYXJzZUludCh0aGlzLmVudHJpZXNfcGVyX3BhZ2UpO1xuXHRcdH1cblx0XHRcblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2ZpbmRXaXRoT3B0aW9ucycsICdsb2dzJywgcXVlcnksIHtzb3J0OiB7Y3JlYXRlZEF0OiAtMX0sIGxpbWl0OiB0aGlzLmVudHJpZXNfcGVyX3BhZ2UsIHNraXA6IHRoaXMuZW50cmllc19wZXJfcGFnZSAqICh0aGlzLnBhZ2VfbnVtIC0gMSl9LCAoZXJyLCByZXMpID0+IHtcblx0XHRcdHRoaXMubG9ncyA9IHJlcztcblxuXHRcdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdjb3VudENvbGxlY3Rpb25XaXRoUXVlcnknLCAnbG9ncycsIHF1ZXJ5LCAoZXJyLCByZXMpID0+IHtcblx0XHRcdHRoaXMubG9nX2NudCA9IHJlcztcblxuXHRcdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0c2VsZWN0VHlwZSh0eXBlOiBzdHJpbmcpIHtcblx0XHRpZiAodHlwZSAhPT0gJ2FsbCcpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzLnNwbGljZSh0aGlzLnNlbGVjdGVkVHlwZXMuaW5kZXhPZih0eXBlKSwgMSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzLnB1c2godHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRUeXBlcy5sZW5ndGggPT09IDcpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzID0gW107XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzID0gWydlcnJvcicsICdkb2N1bWVudCcsICdxdWVyeScsICdxdWVyeVJlc3BvbnNlJywgJ2NsaWVudC1yZXF1ZXN0JywgJ2NsaWVudC1yZXNwb25zZScsICdjYWxsTWV0aG9kSW50ZXJuYWwnXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmxvZ3MgPSBbXTtcblxuXHRcdGlmICh0aGlzLnNlbGVjdGVkVHlwZXMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmdldExvZ0RhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRpY29uKHR5cGUpIHtcblx0XHRpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuXHRcdFx0cmV0dXJuICdkYW5nZXInO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0eXBlID09PSAnZG9jdW1lbnQnKSB7XG5cdFx0XHRyZXR1cm4gJ2luZm8nO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0eXBlID09PSAnY2xpZW50LXJlc3BvbnNlJykge1xuXHRcdFx0cmV0dXJuICdzdWNjZXNzJztcblx0XHR9XG5cdFx0ZWxzZSBpZiAodHlwZSA9PT0gJ2NsaWVudC1yZXF1ZXN0Jykge1xuXHRcdFx0cmV0dXJuICdwcmltYXJ5Jztcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gJ3NlY29uZGFyeSc7XG5cdFx0fVxuXHR9XG5cblx0cmVtb3ZlQWxsTG9ncygpIHtcblx0XHR0aGlzLl9kcy5jb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFsbCBsb2dzPycpLnRoZW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdyZW1vdmVBbGxEb2N1bWVudHMnLCAnbG9ncycpO1xuXHRcdH0sICgpID0+IHsgfSk7XG5cdH1cbn1cbiIsIjxzdHlsZT5cblx0LmxhYmVsLWFjY29yZGlvbiB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxuXHRuZ2ItYWNjb3JkaW9uIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXHQuaG92ZXJUaGlzOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kOiBsaWdodGJsdWU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cdFxuXHQuZmEtcGx1cyB7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHR9XG5cdC5mYS1taW51cyB7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHR9XG5cdFxuXHQuc2VsZWN0ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcblx0fVxuXHQuc2VsZWN0ZWQ6aG92ZXIge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXHQuY2FyZCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbjwvc3R5bGU+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuXHRcdDxkaXYgY2xhc3M9XCJjYXJkXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj48Yj5GaWx0ZXJzPC9iPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuXHRcdFx0XHRcdFx0PHJlc3BvbnNpdmUtYnV0dG9uLWdyb3VwIGNvbGxhcHNlU2l6ZT1cIjkwMFwiPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJbJ2J0bicsIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ2Vycm9yJykgJiYgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnZG9jdW1lbnQnKSAmJiBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdxdWVyeScpICYmIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ2NsaWVudC1yZXF1ZXN0JykgJiYgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlc3BvbnNlJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnYWxsJylcIj5BbGw8L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiWydidG4nLCBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdlcnJvcicpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ2Vycm9yJylcIj5FcnJvcnM8L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiWydidG4nLCBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdkb2N1bWVudCcpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ2RvY3VtZW50JylcIj5Eb2N1bWVudDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJbJ2J0bicsIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ3F1ZXJ5JykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgncXVlcnknKVwiPlF1ZXJ5PC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygncXVlcnlSZXNwb25zZScpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ3F1ZXJ5UmVzcG9uc2UnKVwiPlF1ZXJ5IFJlc3BvbnNlPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlcXVlc3QnKSA/ICdidG4tc3VjY2VzcycgOiAnYnRuLXdhcm5pbmcnXVwiIChjbGljayk9XCJzZWxlY3RUeXBlKCdjbGllbnQtcmVxdWVzdCcpXCI+Q2xpZW50IFJlcXVlc3RzPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlc3BvbnNlJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnY2xpZW50LXJlc3BvbnNlJylcIj5DbGllbnQgUmVzcG9uc2VzPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2FsbE1ldGhvZEludGVybmFsJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnY2FsbE1ldGhvZEludGVybmFsJylcIj5DYWxsIE1ldGhvZCBJbnRlcm5hbDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cInJlbW92ZUFsbExvZ3MoKVwiPlJFTU9WRSBBTEwgTE9HUzwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC9yZXNwb25zaXZlLWJ1dHRvbi1ncm91cD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5Vc2VyPC9sYWJlbD5cblx0XHRcdFx0XHRcdDxuZy1zZWxlY3QgWyhuZ01vZGVsKV09XCJ1c2VyXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlcnNcIiBbdmFsdWVdPVwidXNlci5mdWxsbmFtZVwiPnt7dXNlci5mdWxsbmFtZX19PC9uZy1vcHRpb24+XG5cdFx0XHRcdFx0XHQ8L25nLXNlbGVjdD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkNvbGxlY3Rpb248L2xhYmVsPlxuXHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJjb2xsZWN0aW9uXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IENvbGxzIFNlcCBCeSAsICYgISBmb3IgIU5vdFwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuXHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+TWV0aG9kPC9sYWJlbD5cblx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwibWV0aG9kXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IE1ldGhvZHMgU2VwIEJ5ICwgJiAhIGZvciAhTm90XCI+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5Sb3V0ZTwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInJvdXRlXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IFJvdXRlcyBTZXAgQnkgLCAmICEgZm9yICFOb3RcIj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRvY3VtZW50PC9sYWJlbD5cblx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaWRfZG9jdW1lbnRcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiIHBsYWNlaG9sZGVyPVwiSW5wdXQgSWRzIFNlcCBCeSAsICYgISBmb3IgIU5vdFwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRhdGUgU3RhcnQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZGF0ZVN0YXJ0RWxlbVwiIG5nYkRhdGVwaWNrZXIgI2RTdGFydD1cIm5nYkRhdGVwaWNrZXJcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCIgKGNsaWNrKT1cImRTdGFydC50b2dnbGUoKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctM1wiPlxuXHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+VGltZSBTdGFydDwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8bmdiLXRpbWVwaWNrZXIgWyhuZ01vZGVsKV09XCJ0aW1lU3RhcnRFbGVtXCIgbWVyaWRpYW49XCJPTlwiIFtzZWNvbmRzXT1cInRydWVcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiPjwvbmdiLXRpbWVwaWNrZXI+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5EYXRlIEVuZDwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJkYXRlRW5kRWxlbVwiIG5nYkRhdGVwaWNrZXIgI2RFbmQ9XCJuZ2JEYXRlcGlja2VyXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiIChjbGljayk9XCJkRW5kLnRvZ2dsZSgpXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5UaW1lIEVuZDwvbGFiZWw+PGJyPlxuXHRcdFx0XHRcdFx0PG5nYi10aW1lcGlja2VyIFsobmdNb2RlbCldPVwidGltZUVuZEVsZW1cIiBtZXJpZGlhbj1cIk9OXCIgW3NlY29uZHNdPVwidHJ1ZVwiIChjaGFuZ2UpPVwiZ2V0TG9nRGF0YSgpXCI+PC9uZ2ItdGltZXBpY2tlcj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+RW50cmllcyBQZXIgUGFnZTwvbGFiZWw+XG5cdFx0PHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZW50cmllc19wZXJfcGFnZVwiIChjaGFuZ2UpPVwiZ2V0TG9nRGF0YSgpXCI+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTBcIj4xMDwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwXCI+MTAwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMjUwXCI+MjUwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiNTAwXCI+NTAwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwMFwiPjEwMDA8L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MDAwXCI+NTAwMDwvb3B0aW9uPlxuXHRcdDwvc2VsZWN0PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG5cdFx0PG5nYi1wYWdpbmF0aW9uIGNsYXNzPVwiZmxvYXQtcmlnaHRcIlxuXHRcdGJvdW5kYXJ5TGlua3M9XCJ0cnVlXCJcblx0XHRbY29sbGVjdGlvblNpemVdPVwibG9nX2NudFwiXG5cdFx0ZGlyZWN0aW9uTGlua3M9XCJ0cnVlXCJcblx0XHRlbGxpcHNlcz1cImZhbHNlXCJcblx0XHRbKHBhZ2UpXT1cInBhZ2VfbnVtXCJcblx0XHRtYXhTaXplPVwiNlwiXG5cdFx0W3BhZ2VTaXplXT1cImVudHJpZXNfcGVyX3BhZ2VcIlxuXHRcdHJvdGF0ZT1cInRydWVcIlxuXHRcdChwYWdlQ2hhbmdlKT1cImdldExvZ0RhdGEoKVwiXG5cdFx0PlxuXHRcdDwvbmdiLXBhZ2luYXRpb24+XG5cdDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4XCI+XG5cdDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBhY3RpdmVJZHM9XCJcIj5cblx0XHQ8bmdiLXBhbmVsICpuZ0Zvcj1cImxldCBsb2cgb2YgbG9nczsgbGV0IGkgPSBpbmRleFwiIFtpZF09XCInbG9nXycgKyBpXCI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cblx0XHRcdFx0PGRpdj4gXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtYWNjb3JkaW9uXCIgc3R5bGU9XCJ3aWR0aDogOTAlOyBoZWlnaHQ6IDIycHhcIj5cblx0XHRcdFx0XHRcdDxzdHJvbmcgY2xhc3M9XCJwdWxsLWxlZnRcIj5UeXBlOiB7eyBsb2cudHlwZSB9fXt7bG9nLm1ldGhvZCA/ICcgLSBNZXRob2Q6ICcgKyBsb2cubWV0aG9kIDogJycgfX17e2xvZy5jb2xsZWN0aW9uID8gJyAtIENvbGxlY3Rpb246ICcgKyBsb2cuY29sbGVjdGlvbiA6ICcnIH19e3tsb2cudXNlciA/ICcgLSBVc2VyOiAnICsgbG9nLnVzZXIgOiAnJyB9fXt7bG9nLnJvdXRlID8gJyAtIFJvdXRlOiAnICsgbG9nLnJvdXRlIDogJycgfX17e2xvZy5pZF9kb2N1bWVudCA/ICcgLSBpZF9kb2N1bWVudDogJyArIGxvZy5pZF9kb2N1bWVudCA6ICcnIH19e3tsb2cubWVzc2FnZUlkID8gJyAtIG1lc3NhZ2VJZDogJyArIGxvZy5tZXNzYWdlSWQgOiAnJyB9fTwvc3Ryb25nPlxuXHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+e3sgbG9nLmNyZWF0ZWRBdCB8IGRhdGUgOiAnbWVkaXVtJyB9fTwvcD5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ2xvZ18nICsgaSlcIiBjbGFzcz1cImZhIGZhLXBsdXMgcHVsbC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cblx0XHRcdFx0XHQ8aSAqbmdJZj1cImFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ2xvZ18nICsgaSlcIiBjbGFzcz1cImZhIGZhLW1pbnVzIHB1bGwtcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbENvbnRlbnQ+XG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJsb2cucGF5bG9hZFwiPlxuXHRcdFx0XHRcdDxwcmU+e3sgbG9nLnBheWxvYWQgfCBqc29uUGFyc2UgfX08L3ByZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgKm5nSWY9XCIhbG9nLnBheWxvYWRcIj5cblx0XHRcdFx0XHRObyBEYXRhXG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L25nYi1wYW5lbD5cblx0PC9uZ2ItYWNjb3JkaW9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4XCI+XG5cdDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJyb3dcIj4gXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLThcIj5cblx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+RW50cmllcyBQZXIgUGFnZTwvbGFiZWw+XG5cdFx0XHRcdDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImVudHJpZXNfcGVyX3BhZ2VcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiNTBcIj41MDwvb3B0aW9uPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIxMDBcIj4xMDA8L29wdGlvbj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMjUwXCI+MjUwPC9vcHRpb24+XG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjUwMFwiPjUwMDwvb3B0aW9uPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIxMDAwXCI+MTAwMDwvb3B0aW9uPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MDAwXCI+NTAwMDwvb3B0aW9uPlxuXHRcdFx0XHQ8L3NlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XG5cdFx0PG5nYi1wYWdpbmF0aW9uIGNsYXNzPVwiZmxvYXQtcmlnaHRcIlxuXHRcdGJvdW5kYXJ5TGlua3M9XCJ0cnVlXCJcblx0XHRbY29sbGVjdGlvblNpemVdPVwibG9nX2NudFwiXG5cdFx0ZGlyZWN0aW9uTGlua3M9XCJ0cnVlXCJcblx0XHRlbGxpcHNlcz1cImZhbHNlXCJcblx0XHRbKHBhZ2UpXT1cInBhZ2VfbnVtXCJcblx0XHRtYXhTaXplPVwiNlwiXG5cdFx0W3BhZ2VTaXplXT1cImVudHJpZXNfcGVyX3BhZ2VcIlxuXHRcdHJvdGF0ZT1cInRydWVcIlxuXHRcdChwYWdlQ2hhbmdlKT1cImdldExvZ0RhdGEoKVwiXG5cdFx0PlxuXHRcdDwvbmdiLXBhZ2luYXRpb24+XG5cdDwvZGl2PlxuPC9kaXY+Il19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9sb2dnZXIvbG9nZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9sb2dnZXIvbG9nZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQVFqRSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFhO0lBMEJqRCxZQUFvQixTQUEwQixFQUFVLEdBQWtCLEVBQVUsR0FBc0I7UUFDekcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF4QjFHLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBRWpCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUVaLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1gsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNY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LENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3dpZGdldHMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9sb2dnZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIExvZ2dlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdHN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cdGxvZ3M6IGFueVtdID0gW107XG5cblx0ZW50cmllc19wZXJfcGFnZSA9IDI1O1xuXHRwYWdlX251bSA9IDE7XG5cdGxvZ19jbnQgPSAwO1xuXG5cdHVzZXIgPSBudWxsO1xuXHR1c2VycyA9IFtdO1xuXG5cdGRhdGVTdGFydEVsZW07XG5cdGRhdGVFbmRFbGVtO1xuXHR0aW1lU3RhcnRFbGVtO1xuXHR0aW1lRW5kRWxlbTtcblx0ZGF0ZVN0YXJ0OiBEYXRlO1xuXHRkYXRlRW5kOiBEYXRlO1xuXG5cdHNlbGVjdGVkVHlwZXMgPSBbXTtcblxuXHRjb2xsZWN0aW9uID0gJyc7XG5cdG1ldGhvZCA9ICcnO1xuXHRyb3V0ZSA9ICcnO1xuXHRpZF9kb2N1bWVudCA9ICcnO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UsIHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblx0XHRzdXBlcihfc2VydmljZXMpO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0aWYgKCF0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkucm9sZXMuc3VwZXJfYWRtaW4pIHtcblx0XHRcdHRoaXMuX3NlcnZpY2VzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKTtcblx0XHR9XG5cblx0XHR0aGlzLnN1YnNjcmlwdGlvbiQucHVzaCh0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LnN1YnNjcmliZSgnYWxsVXNlcnMnKS5zdWJzY3JpYmUodXNlcnMgPT4ge1xuXHRcdFx0dGhpcy51c2VycyA9IHVzZXJzO1xuXG5cdFx0XHR0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0fSkpO1xuXG5cdFx0bGV0IGpzRGF0ZVN0YXJ0ID0gbmV3IERhdGUoKTtcblx0XHRqc0RhdGVTdGFydC5zZXRIb3VycygwLCAwLCAwLCAwKTtcblx0XHRsZXQgZGF0ZV9zdGFydCA9IG5ldyBEYXRlKG1vbWVudChqc0RhdGVTdGFydCkuc3VidHJhY3QoMTAsICdkYXlzJykudG9EYXRlKCkpO1xuXHRcdHRoaXMuZGF0ZVN0YXJ0RWxlbSA9IHt5ZWFyOiBkYXRlX3N0YXJ0LmdldEZ1bGxZZWFyKCksIG1vbnRoOiBkYXRlX3N0YXJ0LmdldE1vbnRoKCkgKyAxLCBkYXk6IGRhdGVfc3RhcnQuZ2V0RGF0ZSgpfTtcblx0XHR0aGlzLnRpbWVTdGFydEVsZW0gPSB7aG91cjogMCwgbWludXRlOiAwLCBzZWNvbmQ6IDB9O1xuXG5cdFx0bGV0IGpzRGF0ZUVuZCA9IG5ldyBEYXRlKCk7XG5cdFx0anNEYXRlRW5kLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG5cdFx0bGV0IGRhdGVfZW5kID0ganNEYXRlRW5kO1xuXHRcdHRoaXMuZGF0ZUVuZEVsZW0gPSB7eWVhcjogZGF0ZV9lbmQuZ2V0RnVsbFllYXIoKSwgbW9udGg6IGRhdGVfZW5kLmdldE1vbnRoKCkgKyAxLCBkYXk6IGRhdGVfZW5kLmdldERhdGUoKX07XG5cdFx0dGhpcy50aW1lRW5kRWxlbSA9IHtob3VyOiAyMywgbWludXRlOiA1OSwgc2Vjb25kOiA1OX07XG5cblx0XHR0aGlzLmdldExvZ0RhdGEoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uJC5mb3JFYWNoKHN1YiA9PiB7XG5cdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdGdldExvZ0RhdGEoKSB7XG5cdFx0dGhpcy5kYXRlU3RhcnQgPSBuZXcgRGF0ZSh0aGlzLmRhdGVTdGFydEVsZW0ueWVhciwgdGhpcy5kYXRlU3RhcnRFbGVtLm1vbnRoIC0gMSwgdGhpcy5kYXRlU3RhcnRFbGVtLmRheSwgdGhpcy50aW1lU3RhcnRFbGVtLmhvdXIsIHRoaXMudGltZVN0YXJ0RWxlbS5taW51dGUsIHRoaXMudGltZVN0YXJ0RWxlbS5zZWNvbmQsIDApO1xuXHRcdHRoaXMuZGF0ZUVuZCA9IG5ldyBEYXRlKHRoaXMuZGF0ZUVuZEVsZW0ueWVhciwgdGhpcy5kYXRlRW5kRWxlbS5tb250aCAtIDEsIHRoaXMuZGF0ZUVuZEVsZW0uZGF5LCB0aGlzLnRpbWVFbmRFbGVtLmhvdXIsIHRoaXMudGltZUVuZEVsZW0ubWludXRlLCB0aGlzLnRpbWVFbmRFbGVtLnNlY29uZCwgOTk5KTtcblxuXHRcdGxldCBxdWVyeTogYW55ID0ge1xuXHRcdFx0JGFuZDogW1xuXHRcdFx0XHR7Y3JlYXRlZEF0OiB7JGd0ZTogdGhpcy5kYXRlU3RhcnR9fSxcblx0XHRcdFx0e2NyZWF0ZWRBdDogeyRsdGU6IHRoaXMuZGF0ZUVuZH19XG5cdFx0XHRdXG5cdFx0fTtcblxuXHRcdGlmICghdGhpcy5zZWxlY3RlZFR5cGVzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRlbHNlIHtcblx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7dHlwZTogeyRpbjogdGhpcy5zZWxlY3RlZFR5cGVzfX0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNvbGxlY3Rpb24pIHtcblx0XHRcdGlmICh0aGlzLmNvbGxlY3Rpb24uaW5jbHVkZXMoJywnKSkge1xuXHRcdFx0XHRsZXQgY29sbGVjdGlvbnMgPSB0aGlzLmNvbGxlY3Rpb24uc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gIWEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0aWYgKGNvbGxlY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7Y29sbGVjdGlvbjogeyRpbjogY29sbGVjdGlvbnN9fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbm90Q29sbGVjdGlvbnMgPSB0aGlzLmNvbGxlY3Rpb24uc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRub3RDb2xsZWN0aW9ucy5mb3JFYWNoKG5vdCA9PiB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtjb2xsZWN0aW9uOiB7JG5lOiBub3QucmVwbGFjZSgnIScsICcnKX19KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKHRoaXMuY29sbGVjdGlvbi5zdGFydHNXaXRoKCchJykpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2NvbGxlY3Rpb246IHskbmU6IHRoaXMuY29sbGVjdGlvbi5yZXBsYWNlKCchJywgJycpLnRyaW0oKX19KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2NvbGxlY3Rpb246IHRoaXMuY29sbGVjdGlvbi50cmltKCl9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1ldGhvZCkge1xuXHRcdFx0aWYgKHRoaXMubWV0aG9kLmluY2x1ZGVzKCcsJykpIHtcblx0XHRcdFx0bGV0IG1ldGhvZHMgPSB0aGlzLm1ldGhvZC5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiAhYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRpZiAobWV0aG9kcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRpbjogbWV0aG9kc319KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBub3RNZXRob2RzID0gdGhpcy5tZXRob2Quc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRub3RNZXRob2RzLmZvckVhY2gobm90ID0+IHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRuZTogbm90LnJlcGxhY2UoJyEnLCAnJyl9fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICh0aGlzLm1ldGhvZC5zdGFydHNXaXRoKCchJykpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe21ldGhvZDogeyRuZTogdGhpcy5tZXRob2QucmVwbGFjZSgnIScsICcnKS50cmltKCl9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHttZXRob2Q6IHRoaXMubWV0aG9kLnRyaW0oKX0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucm91dGUpIHtcblx0XHRcdGlmICh0aGlzLnJvdXRlLmluY2x1ZGVzKCcsJykpIHtcblx0XHRcdFx0bGV0IHJvdXRlcyA9IHRoaXMucm91dGUuc3BsaXQoJywnKS5tYXAoYSA9PiBhLnRyaW0oKSkuZmlsdGVyKGEgPT4gIWEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0aWYgKHJvdXRlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe3JvdXRlOiB7JGluOiByb3V0ZXN9fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgbm90Um91dGVzID0gdGhpcy5yb3V0ZS5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiBhLnN0YXJ0c1dpdGgoJyEnKSk7XG5cdFx0XHRcdG5vdFJvdXRlcy5mb3JFYWNoKG5vdCA9PiB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtyb3V0ZTogeyRuZTogbm90LnJlcGxhY2UoJyEnLCAnJyl9fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmICh0aGlzLnJvdXRlLnN0YXJ0c1dpdGgoJyEnKSkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7cm91dGU6IHskbmU6IHRoaXMucm91dGUucmVwbGFjZSgnIScsICcnKS50cmltKCl9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtyb3V0ZTogdGhpcy5yb3V0ZS50cmltKCl9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHRpZiAodGhpcy5pZF9kb2N1bWVudCkge1xuXHRcdFx0aWYgKHRoaXMuaWRfZG9jdW1lbnQuaW5jbHVkZXMoJywnKSkge1xuXHRcdFx0XHRsZXQgaWRfZG9jdW1lbnRzID0gdGhpcy5pZF9kb2N1bWVudC5zcGxpdCgnLCcpLm1hcChhID0+IGEudHJpbSgpKS5maWx0ZXIoYSA9PiAhYS5zdGFydHNXaXRoKCchJykpO1xuXHRcdFx0XHRpZiAoaWRfZG9jdW1lbnRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdHF1ZXJ5LiRhbmQucHVzaCh7aWRfZG9jdW1lbnQ6IHskaW46IGlkX2RvY3VtZW50c319KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBub3RJZHMgPSB0aGlzLmlkX2RvY3VtZW50LnNwbGl0KCcsJykubWFwKGEgPT4gYS50cmltKCkpLmZpbHRlcihhID0+IGEuc3RhcnRzV2l0aCgnIScpKTtcblx0XHRcdFx0bm90SWRzLmZvckVhY2gobm90ID0+IHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2lkX2RvY3VtZW50OiB7JG5lOiBub3QucmVwbGFjZSgnIScsICcnKX19KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0aWYgKHRoaXMuaWRfZG9jdW1lbnQuc3RhcnRzV2l0aCgnIScpKSB7XG5cdFx0XHRcdFx0cXVlcnkuJGFuZC5wdXNoKHtpZF9kb2N1bWVudDogeyRuZTogdGhpcy5pZF9kb2N1bWVudC5yZXBsYWNlKCchJywgJycpLnRyaW0oKX19KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRxdWVyeS4kYW5kLnB1c2goe2lkX2RvY3VtZW50OiB0aGlzLmlkX2RvY3VtZW50LnRyaW0oKX0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudXNlcikge1xuXHRcdFx0cXVlcnkuJGFuZC5wdXNoKHt1c2VyOiB0aGlzLnVzZXJ9KTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mKHRoaXMuZW50cmllc19wZXJfcGFnZSkgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aGlzLmVudHJpZXNfcGVyX3BhZ2UgPSBwYXJzZUludCh0aGlzLmVudHJpZXNfcGVyX3BhZ2UpO1xuXHRcdH1cblx0XHRcblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2ZpbmRXaXRoT3B0aW9ucycsICdsb2dzJywgcXVlcnksIHtzb3J0OiB7Y3JlYXRlZEF0OiAtMX0sIGxpbWl0OiB0aGlzLmVudHJpZXNfcGVyX3BhZ2UsIHNraXA6IHRoaXMuZW50cmllc19wZXJfcGFnZSAqICh0aGlzLnBhZ2VfbnVtIC0gMSl9LCAoZXJyLCByZXMpID0+IHtcblx0XHRcdHRoaXMubG9ncyA9IHJlcztcblxuXHRcdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdjb3VudENvbGxlY3Rpb25XaXRoUXVlcnknLCAnbG9ncycsIHF1ZXJ5LCAoZXJyLCByZXMpID0+IHtcblx0XHRcdHRoaXMubG9nX2NudCA9IHJlcztcblxuXHRcdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9XG5cblx0c2VsZWN0VHlwZSh0eXBlOiBzdHJpbmcpIHtcblx0XHRpZiAodHlwZSAhPT0gJ2FsbCcpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzLnNwbGljZSh0aGlzLnNlbGVjdGVkVHlwZXMuaW5kZXhPZih0eXBlKSwgMSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzLnB1c2godHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRUeXBlcy5sZW5ndGggPT09IDcpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzID0gW107XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFR5cGVzID0gWydlcnJvcicsICdkb2N1bWVudCcsICdxdWVyeScsICdxdWVyeVJlc3BvbnNlJywgJ2NsaWVudC1yZXF1ZXN0JywgJ2NsaWVudC1yZXNwb25zZScsICdjYWxsTWV0aG9kSW50ZXJuYWwnXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmxvZ3MgPSBbXTtcblxuXHRcdGlmICh0aGlzLnNlbGVjdGVkVHlwZXMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmdldExvZ0RhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRpY29uKHR5cGUpIHtcblx0XHRpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuXHRcdFx0cmV0dXJuICdkYW5nZXInO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0eXBlID09PSAnZG9jdW1lbnQnKSB7XG5cdFx0XHRyZXR1cm4gJ2luZm8nO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0eXBlID09PSAnY2xpZW50LXJlc3BvbnNlJykge1xuXHRcdFx0cmV0dXJuICdzdWNjZXNzJztcblx0XHR9XG5cdFx0ZWxzZSBpZiAodHlwZSA9PT0gJ2NsaWVudC1yZXF1ZXN0Jykge1xuXHRcdFx0cmV0dXJuICdwcmltYXJ5Jztcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXR1cm4gJ3NlY29uZGFyeSc7XG5cdFx0fVxuXHR9XG5cblx0cmVtb3ZlQWxsTG9ncygpIHtcblx0XHR0aGlzLl9kcy5jb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFsbCBsb2dzPycpLnRoZW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdyZW1vdmVBbGxEb2N1bWVudHMnLCAnbG9ncycpO1xuXHRcdH0sICgpID0+IHsgfSk7XG5cdH1cbn1cbiIsIjxzdHlsZT5cblx0LmxhYmVsLWFjY29yZGlvbiB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxuXHRuZ2ItYWNjb3JkaW9uIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXHQuaG92ZXJUaGlzOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kOiBsaWdodGJsdWU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cdFxuXHQuZmEtcGx1cyB7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHR9XG5cdC5mYS1taW51cyB7XG5cdFx0Y29sb3I6IGJsYWNrO1xuXHR9XG5cdFxuXHQuc2VsZWN0ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTtcblx0fVxuXHQuc2VsZWN0ZWQ6aG92ZXIge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXHQuY2FyZCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbjwvc3R5bGU+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuXHRcdDxkaXYgY2xhc3M9XCJjYXJkXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj48Yj5GaWx0ZXJzPC9iPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuXHRcdFx0XHRcdFx0PHJlc3BvbnNpdmUtYnV0dG9uLWdyb3VwIGNvbGxhcHNlU2l6ZT1cIjkwMFwiPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJbJ2J0bicsIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ2Vycm9yJykgJiYgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnZG9jdW1lbnQnKSAmJiBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdxdWVyeScpICYmIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ2NsaWVudC1yZXF1ZXN0JykgJiYgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlc3BvbnNlJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnYWxsJylcIj5BbGw8L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiWydidG4nLCBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdlcnJvcicpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ2Vycm9yJylcIj5FcnJvcnM8L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW25nQ2xhc3NdPVwiWydidG4nLCBzZWxlY3RlZFR5cGVzLmluY2x1ZGVzKCdkb2N1bWVudCcpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ2RvY3VtZW50JylcIj5Eb2N1bWVudDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJbJ2J0bicsIHNlbGVjdGVkVHlwZXMuaW5jbHVkZXMoJ3F1ZXJ5JykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgncXVlcnknKVwiPlF1ZXJ5PC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygncXVlcnlSZXNwb25zZScpID8gJ2J0bi1zdWNjZXNzJyA6ICdidG4td2FybmluZyddXCIgKGNsaWNrKT1cInNlbGVjdFR5cGUoJ3F1ZXJ5UmVzcG9uc2UnKVwiPlF1ZXJ5IFJlc3BvbnNlPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlcXVlc3QnKSA/ICdidG4tc3VjY2VzcycgOiAnYnRuLXdhcm5pbmcnXVwiIChjbGljayk9XCJzZWxlY3RUeXBlKCdjbGllbnQtcmVxdWVzdCcpXCI+Q2xpZW50IFJlcXVlc3RzPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2xpZW50LXJlc3BvbnNlJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnY2xpZW50LXJlc3BvbnNlJylcIj5DbGllbnQgUmVzcG9uc2VzPC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cIlsnYnRuJywgc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcygnY2FsbE1ldGhvZEludGVybmFsJykgPyAnYnRuLXN1Y2Nlc3MnIDogJ2J0bi13YXJuaW5nJ11cIiAoY2xpY2spPVwic2VsZWN0VHlwZSgnY2FsbE1ldGhvZEludGVybmFsJylcIj5DYWxsIE1ldGhvZCBJbnRlcm5hbDwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cInJlbW92ZUFsbExvZ3MoKVwiPlJFTU9WRSBBTEwgTE9HUzwvYnV0dG9uPlxuXHRcdFx0XHRcdFx0PC9yZXNwb25zaXZlLWJ1dHRvbi1ncm91cD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5Vc2VyPC9sYWJlbD5cblx0XHRcdFx0XHRcdDxuZy1zZWxlY3QgWyhuZ01vZGVsKV09XCJ1c2VyXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy1vcHRpb24gKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlcnNcIiBbdmFsdWVdPVwidXNlci5mdWxsbmFtZVwiPnt7dXNlci5mdWxsbmFtZX19PC9uZy1vcHRpb24+XG5cdFx0XHRcdFx0XHQ8L25nLXNlbGVjdD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkNvbGxlY3Rpb248L2xhYmVsPlxuXHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJjb2xsZWN0aW9uXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IENvbGxzIFNlcCBCeSAsICYgISBmb3IgIU5vdFwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuXHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+TWV0aG9kPC9sYWJlbD5cblx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwibWV0aG9kXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IE1ldGhvZHMgU2VwIEJ5ICwgJiAhIGZvciAhTm90XCI+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5Sb3V0ZTwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInJvdXRlXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIiBwbGFjZWhvbGRlcj1cIklucHV0IFJvdXRlcyBTZXAgQnkgLCAmICEgZm9yICFOb3RcIj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRvY3VtZW50PC9sYWJlbD5cblx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiaWRfZG9jdW1lbnRcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiIHBsYWNlaG9sZGVyPVwiSW5wdXQgSWRzIFNlcCBCeSAsICYgISBmb3IgIU5vdFwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkRhdGUgU3RhcnQ8L2xhYmVsPlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZGF0ZVN0YXJ0RWxlbVwiIG5nYkRhdGVwaWNrZXIgI2RTdGFydD1cIm5nYkRhdGVwaWNrZXJcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCIgKGNsaWNrKT1cImRTdGFydC50b2dnbGUoKVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbGctM1wiPlxuXHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+VGltZSBTdGFydDwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8bmdiLXRpbWVwaWNrZXIgWyhuZ01vZGVsKV09XCJ0aW1lU3RhcnRFbGVtXCIgbWVyaWRpYW49XCJPTlwiIFtzZWNvbmRzXT1cInRydWVcIiAoY2hhbmdlKT1cImdldExvZ0RhdGEoKVwiPjwvbmdiLXRpbWVwaWNrZXI+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5EYXRlIEVuZDwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJkYXRlRW5kRWxlbVwiIG5nYkRhdGVwaWNrZXIgI2RFbmQ9XCJuZ2JEYXRlcGlja2VyXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiIChjbGljayk9XCJkRW5kLnRvZ2dsZSgpXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0zXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtbGFiZWxcIj5UaW1lIEVuZDwvbGFiZWw+PGJyPlxuXHRcdFx0XHRcdFx0PG5nYi10aW1lcGlja2VyIFsobmdNb2RlbCldPVwidGltZUVuZEVsZW1cIiBtZXJpZGlhbj1cIk9OXCIgW3NlY29uZHNdPVwidHJ1ZVwiIChjaGFuZ2UpPVwiZ2V0TG9nRGF0YSgpXCI+PC9uZ2ItdGltZXBpY2tlcj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XG5cdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sLWxhYmVsXCI+RW50cmllcyBQZXIgUGFnZTwvbGFiZWw+XG5cdFx0PHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZW50cmllc19wZXJfcGFnZVwiIChjaGFuZ2UpPVwiZ2V0TG9nRGF0YSgpXCI+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTBcIj4xMDwvb3B0aW9uPlxuXHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwXCI+MTAwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMjUwXCI+MjUwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiNTAwXCI+NTAwPC9vcHRpb24+XG5cdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwMFwiPjEwMDA8L29wdGlvbj5cblx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MDAwXCI+NTAwMDwvb3B0aW9uPlxuXHRcdDwvc2VsZWN0PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG5cdFx0PG5nYi1wYWdpbmF0aW9uIGNsYXNzPVwiZmxvYXQtcmlnaHRcIlxuXHRcdGJvdW5kYXJ5TGlua3M9XCJ0cnVlXCJcblx0XHRbY29sbGVjdGlvblNpemVdPVwibG9nX2NudFwiXG5cdFx0ZGlyZWN0aW9uTGlua3M9XCJ0cnVlXCJcblx0XHRlbGxpcHNlcz1cImZhbHNlXCJcblx0XHRbKHBhZ2UpXT1cInBhZ2VfbnVtXCJcblx0XHRtYXhTaXplPVwiNlwiXG5cdFx0W3BhZ2VTaXplXT1cImVudHJpZXNfcGVyX3BhZ2VcIlxuXHRcdHJvdGF0ZT1cInRydWVcIlxuXHRcdChwYWdlQ2hhbmdlKT1cImdldExvZ0RhdGEoKVwiXG5cdFx0PlxuXHRcdDwvbmdiLXBhZ2luYXRpb24+XG5cdDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4XCI+XG5cdDxuZ2ItYWNjb3JkaW9uICNhY2M9XCJuZ2JBY2NvcmRpb25cIiBhY3RpdmVJZHM9XCJcIj5cblx0XHQ8bmdiLXBhbmVsICpuZ0Zvcj1cImxldCBsb2cgb2YgbG9nczsgbGV0IGkgPSBpbmRleFwiIFtpZF09XCInbG9nXycgKyBpXCI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cblx0XHRcdFx0PGRpdj4gXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtYWNjb3JkaW9uXCIgc3R5bGU9XCJ3aWR0aDogOTAlOyBoZWlnaHQ6IDIycHhcIj5cblx0XHRcdFx0XHRcdDxzdHJvbmcgY2xhc3M9XCJwdWxsLWxlZnRcIj5UeXBlOiB7eyBsb2cudHlwZSB9fXt7bG9nLm1ldGhvZCA/ICcgLSBNZXRob2Q6ICcgKyBsb2cubWV0aG9kIDogJycgfX17e2xvZy5jb2xsZWN0aW9uID8gJyAtIENvbGxlY3Rpb246ICcgKyBsb2cuY29sbGVjdGlvbiA6ICcnIH19e3tsb2cudXNlciA/ICcgLSBVc2VyOiAnICsgbG9nLnVzZXIgOiAnJyB9fXt7bG9nLnJvdXRlID8gJyAtIFJvdXRlOiAnICsgbG9nLnJvdXRlIDogJycgfX17e2xvZy5pZF9kb2N1bWVudCA/ICcgLSBpZF9kb2N1bWVudDogJyArIGxvZy5pZF9kb2N1bWVudCA6ICcnIH19e3tsb2cubWVzc2FnZUlkID8gJyAtIG1lc3NhZ2VJZDogJyArIGxvZy5tZXNzYWdlSWQgOiAnJyB9fTwvc3Ryb25nPlxuXHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+e3sgbG9nLmNyZWF0ZWRBdCB8IGRhdGUgOiAnbWVkaXVtJyB9fTwvcD5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ2xvZ18nICsgaSlcIiBjbGFzcz1cImZhIGZhLXBsdXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdDxpICpuZ0lmPVwiYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnbG9nXycgKyBpKVwiIGNsYXNzPVwiZmEgZmEtbWludXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwibG9nLnBheWxvYWRcIj5cblx0XHRcdFx0XHQ8cHJlPnt7IGxvZy5wYXlsb2FkIHwganNvblBhcnNlIH19PC9wcmU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWxvZy5wYXlsb2FkXCI+XG5cdFx0XHRcdFx0Tm8gRGF0YVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0PC9uZ2ItcGFuZWw+XG5cdDwvbmdiLWFjY29yZGlvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweFwiPlxuXHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cblx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+IFxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XG5cdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPkVudHJpZXMgUGVyIFBhZ2U8L2xhYmVsPlxuXHRcdFx0XHQ8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJlbnRyaWVzX3Blcl9wYWdlXCIgKGNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTBcIj4xMDwvb3B0aW9uPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIyNVwiPjI1PC9vcHRpb24+XG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjUwXCI+NTA8L29wdGlvbj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwXCI+MTAwPC9vcHRpb24+XG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjI1MFwiPjI1MDwvb3B0aW9uPlxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCI1MDBcIj41MDA8L29wdGlvbj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiMTAwMFwiPjEwMDA8L29wdGlvbj5cblx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiNTAwMFwiPjUwMDA8L29wdGlvbj5cblx0XHRcdFx0PC9zZWxlY3Q+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxuXHRcdDxuZ2ItcGFnaW5hdGlvbiBjbGFzcz1cImZsb2F0LXJpZ2h0XCJcblx0XHRib3VuZGFyeUxpbmtzPVwidHJ1ZVwiXG5cdFx0W2NvbGxlY3Rpb25TaXplXT1cImxvZ19jbnRcIlxuXHRcdGRpcmVjdGlvbkxpbmtzPVwidHJ1ZVwiXG5cdFx0ZWxsaXBzZXM9XCJmYWxzZVwiXG5cdFx0WyhwYWdlKV09XCJwYWdlX251bVwiXG5cdFx0bWF4U2l6ZT1cIjZcIlxuXHRcdFtwYWdlU2l6ZV09XCJlbnRyaWVzX3Blcl9wYWdlXCJcblx0XHRyb3RhdGU9XCJ0cnVlXCJcblx0XHQocGFnZUNoYW5nZSk9XCJnZXRMb2dEYXRhKClcIlxuXHRcdD5cblx0XHQ8L25nYi1wYWdpbmF0aW9uPlxuXHQ8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -193,12 +193,12 @@ export class SupportTicketDetailComponent extends BaseComponent {
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
SupportTicketDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: SupportTicketDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.SupportTicketService }, { token: i3.ProviderService }, { token: i4.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
-
SupportTicketDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: SupportTicketDetailComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus
|
|
196
|
+
SupportTicketDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: SupportTicketDetailComponent, selector: "ng-component", providers: [ProviderService], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"card\">\n <div class=\"card-header\"><b>General Info</b></div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-lg-4\">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: 'short'}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card\">\n <div class=\"card-header\"><b>Problem Description</b></div>\n <div class=\"card-body\">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"supportTicketMessages\" *ngIf=\"data\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Messages</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"card\" *ngFor=\"let message of data.messages; let i = index;\">\n <div class=\"card-header\"><b>User: {{message.user}} - Date: {{message.date | date : 'short'}}</b></div>\n <div class=\"card-body\" [ngClass]=\"[message.type === 'ResolveIO' ? 'selected' : '']\">\n <div class=\"row\" style=\"width: 100%\">\n <div class=\"col-lg-10\">\n <pre>{{message.message}}</pre>\n </div>\n <div class=\"col-lg-2\">\n <responsive-button-group collapseSize=\"900\">\n <button type=\"button\" class=\"btn btn-warning\" (click)=\"editMessage(i)\" *ngIf=\"isMyMessage(message)\">Edit</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteMessage(i)\" *ngIf=\"isMyMessage(message)\">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" style=\"margin-top: 10px;\">\n <div class=\"col-lg-12\">\n <button type=\"button\" class=\"btn btn-success\" (click)=\"newMessage()\">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"files\">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class=\"label-accordion\">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('files')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('files')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)=\"onFileAdded($event)\" (fileRemoved)=\"onFilesRemoved($event)\" [files]=\"files\" [allowDelete]=\"true\" [allowReplace]=\"true\"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <responsive-button-group collapseSize=\"900\">\n <button class=\"btn btn-warning\" type=\"button\" (click)=\"edit()\">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n ", styles: ["\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n"], dependencies: [{ kind: "component", type: i5.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i5.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i5.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i5.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i6.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FileUploadComponent, selector: "file-upload", inputs: ["files", "allowDelete", "allowReplace", "showFileUpload", "fileType"], outputs: ["filesChanged", "fileAdded", "fileRemoved"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "pipe", type: i7.DatePipe, name: "date" }] });
|
|
197
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: SupportTicketDetailComponent, decorators: [{
|
|
198
198
|
type: Component,
|
|
199
|
-
args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus
|
|
199
|
+
args: [{ providers: [ProviderService], template: "<style>\n .label-accordion {\n font-weight: bold;\n color: black;\n margin-bottom: 0px;\n }\n\n .fa-plus {\n color: black;\n }\n\n .fa-minus {\n color: black;\n }\n\n ngb-accordion {\n width: 100%;\n }\n\n dl {\n margin-bottom: 0px;\n }\n\n .selected {\n background-color: lightblue;\n }\n</style>\n\n<div class=\"col-lg-12\" *ngIf=\"data\">\n <div class=\"row\">\n <ngb-accordion #acc=\"ngbAccordion\" activeIds=\"supportTicketInfo, supportTicketMessages, files\">\n <ngb-panel id=\"supportTicketInfo\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Support Ticket Info</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketInfo')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"card\">\n <div class=\"card-header\"><b>General Info</b></div>\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-lg-4\">\n <dl>\n <dt>Support Ticket #</dt>\n <dd>{{data.support_ticket_number | number}}</dd>\n <dt>Date Created</dt>\n <dd>{{data.date_created | date: 'short'}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Type</dt>\n <dd>{{data.type}}</dd>\n <dt>User</dt>\n <dd>{{data.user_created}}</dd>\n </dl>\n </div>\n <div class=\"col-lg-4\">\n <dl>\n <dt>Status</dt>\n <dd>{{ data.status }}</dd>\n </dl>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card\">\n <div class=\"card-header\"><b>Problem Description</b></div>\n <div class=\"card-body\">\n <pre>{{data.issue}}</pre>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"supportTicketMessages\" *ngIf=\"data\">\n <ng-template ngbPanelTitle>\n <div> \n <label class=\"label-accordion\">Messages</label>\n <i *ngIf=\"!acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n <i *ngIf=\"acc.activeIds.includes('supportTicketMessages')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n </div>\n </ng-template>\n <ng-template ngbPanelContent>\n <div class=\"row\">\n <div class=\"col-lg-12\">\n <div class=\"card\" *ngFor=\"let message of data.messages; let i = index;\">\n <div class=\"card-header\"><b>User: {{message.user}} - Date: {{message.date | date : 'short'}}</b></div>\n <div class=\"card-body\" [ngClass]=\"[message.type === 'ResolveIO' ? 'selected' : '']\">\n <div class=\"row\" style=\"width: 100%\">\n <div class=\"col-lg-10\">\n <pre>{{message.message}}</pre>\n </div>\n <div class=\"col-lg-2\">\n <responsive-button-group collapseSize=\"900\">\n <button type=\"button\" class=\"btn btn-warning\" (click)=\"editMessage(i)\" *ngIf=\"isMyMessage(message)\">Edit</button>\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"deleteMessage(i)\" *ngIf=\"isMyMessage(message)\">Delete</button>\n </responsive-button-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\" style=\"margin-top: 10px;\">\n <div class=\"col-lg-12\">\n <button type=\"button\" class=\"btn btn-success\" (click)=\"newMessage()\">New Message</button>\n </div>\n </div>\n </ng-template>\n </ngb-panel>\n <ngb-panel id=\"files\">\n\t\t\t\t<ng-template ngbPanelTitle>\n\t\t\t\t\t<div> \n\t\t\t\t\t\t<label class=\"label-accordion\">Support Ticket Files</label>\n\t\t\t\t\t\t<i *ngIf=\"!acc.activeIds.includes('files')\" class=\"fa fa-plus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t\t<i *ngIf=\"acc.activeIds.includes('files')\" class=\"fa fa-minus float-end\" aria-hidden=\"true\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template ngbPanelContent>\n\t\t\t\t\t<file-upload #fileUpload (fileAdded)=\"onFileAdded($event)\" (fileRemoved)=\"onFilesRemoved($event)\" [files]=\"files\" [allowDelete]=\"true\" [allowReplace]=\"true\"></file-upload>\n\t\t\t\t</ng-template>\n\t\t\t</ngb-panel>\n </ngb-accordion>\n </div>\n <div class=\"row\" style=\"padding-top: 15px;\">\n <responsive-button-group collapseSize=\"900\">\n <button class=\"btn btn-warning\" type=\"button\" (click)=\"edit()\">Edit Support Ticket</button>\n </responsive-button-group>\n </div>\n</div>\n " }]
|
|
200
200
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.SupportTicketService }, { type: i3.ProviderService }, { type: i4.DialogService }]; }, propDecorators: { fileUpload: [{
|
|
201
201
|
type: ViewChild,
|
|
202
202
|
args: ['fileUpload', { static: true }]
|
|
203
203
|
}] } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBQ2hCLENBQUM7QUFPckQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGFBQWE7SUFXOUQsWUFBb0IsTUFBc0IsRUFBVSxJQUEwQixFQUFVLFNBQTBCLEVBQVUsR0FBa0I7UUFDN0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQVA5SSxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFLbkMsVUFBSyxHQUFnQixFQUFFLENBQUM7SUFJeEIsQ0FBQztJQUVELFFBQVE7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b0JBQzdILGdDQUFnQztvQkFDaEMsc0RBQXNEO29CQUN0RCxvR0FBb0c7b0JBQ3BHLHdEQUF3RDtvQkFDeEQsUUFBUTtvQkFDUixLQUFLO29CQUNMLFVBQVU7b0JBQ1YscUZBQXFGO29CQUNyRixLQUFLO29CQUNMLE1BQU07aUJBQ047cUJBQ0k7b0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLHFDQUFxQyxDQUFDLENBQUM7b0JBQ3JGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7aUJBQ2xEO1lBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU87UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNsRSxDQUFDOzt5SEF6TVcsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUNBSjdCLENBQUMsZUFBZSxDQUFDLHlLQ1g3QixvOU1BcUlJOzJGRHRIUyw0QkFBNEI7a0JBTHhDLFNBQVM7Z0NBQ0UsQ0FBQyxlQUFlLENBQUM7a01BTWEsVUFBVTtzQkFBbEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdXBwb3J0VGlja2V0U2VydmljZSB9IGZyb20gJy4uL3N1cHBvcnQtdGlja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdXBwb3J0LXRpY2tldC5tb2RlbCc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUubW9kZWwnOztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9zdXBwb3J0LXRpY2tldC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgU3VwcG9ydFRpY2tldERldGFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnLCB7c3RhdGljOiB0cnVlfSkgZmlsZVVwbG9hZDtcblxuXHRzdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG5cdGlkOiBzdHJpbmc7XG5cdGRhdGE6IFN1cHBvcnRUaWNrZXRNb2RlbDtcblxuXHRmaWxlczogRmlsZU1vZGVsW10gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgX3N0czogU3VwcG9ydFRpY2tldFNlcnZpY2UsIHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UsIHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXHRcdFxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmlkID0gdGhpcy5fcm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuXHRcdHRoaXMuX3N0cy5zZXRTZWxlY3RlZFN1cHBvcnRUaWNrZXQodGhpcy5pZCk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRHZXRTdXBwb3J0VGlja2V0V2l0aElkJywgdGhpcy5pZCwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoIXJlcykge1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9saXN0Jyk7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZmluZCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHRoaXMuZGF0YSA9IHJlcztcblx0XHR9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uJC5mb3JFYWNoKHN1YiA9PiB7XG5cdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uRmlsZUFkZGVkKGZpbGU6IEZpbGVNb2RlbCkge1x0XG5cdFx0dGhpcy5kYXRhLmZpbGVzLnB1c2goZmlsZS5faWQpO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoZXJyIHx8ICFyZXMpIHtcblx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc3VwcG9ydCB0aWNrZXQgZmlsZXMnKTtcblx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSB1cGRhdGUgc3VwcG9ydC10aWNrZXQgZmlsZXMgYWRkJywgW1xuXHRcdFx0XHRcdHRoaXMuZGF0YS5maWxlcywgZXJyXG5cdFx0XHRcdF0pO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdpbmZvJywgJ1NlbmRpbmcgZW1haWwocykuJyk7XG5cblx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0Ly8gXHRpZiAoZXJyRW1haWwgfHwgIXJlc0VtYWlsKSB7XG5cdFx0XHRcdC8vIFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IGVtYWlsIHN1cHBvcnQgdGlja2V0Jyk7XG5cdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHQvLyBcdFx0XHR7cHJvcDogJ3N0YXR1cycsIGRhdGE6IHRoaXMuZGF0YS5zdGF0dXN9LCBlcnJFbWFpbFxuXHRcdFx0XHQvLyBcdFx0XSk7XG5cdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHQvLyBcdGVsc2Uge1xuXHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgVGlja2V0IGVtYWlsIGhhcyBiZWVuIHNlbnQnKTtcblx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdC8vIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0b25GaWxlc1JlbW92ZWQoZmlsZTogRmlsZU1vZGVsKSB7XG5cdFx0dGhpcy5fZHMuY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSBhIGZpbGU/IFRoaXMgd2lsbCBlbWFpbCBhbGwgY3VycmVudCB3YXRjaGVycz8nKS50aGVuKHllcyA9PiB7XG5cdFx0XHRpZiAodGhpcy5kYXRhLmZpbGVzLmluZGV4T2YoZmlsZS5faWQpICE9PSAtMSkge1xuXHRcdFx0XHR0aGlzLmRhdGEuZmlsZXMuc3BsaWNlKHRoaXMuZGF0YS5maWxlcy5pbmRleE9mKGZpbGUuX2lkKSwgMSk7XG5cblx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGVyciB8fCAhcmVzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzdXBwb3J0LXRpY2tldCBmaWxlcycpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSB1cGRhdGUgZmlsZXMgcmVtb3ZlJywgW1xuXHRcdFx0XHRcdFx0XHR7cHJvcDogJ2ZpbGVzJywgZGF0YTogdGhpcy5kYXRhLmZpbGVzfSwgZXJyXG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGVkaXQoKSB7XG5cdFx0dGhpcy5fc2VydmljZXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvc3VwcG9ydC10aWNrZXQvZWRpdC8nICsgdGhpcy5pZCk7XG5cdH1cblxuXHRuZXdNZXNzYWdlKCkge1xuXHRcdHRoaXMuX2RzLmlucHV0KCdJbnB1dCBNZXNzYWdlJywgW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ01lc3NhZ2UnLFxuXHRcdFx0XHRmb3JtOiAnbWVzc2FnZScsXG5cdFx0XHRcdGRhdGE6ICcnLFxuXHRcdFx0XHR2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0XHRcdHZhbGlkYXRvckVycm9yczogWydyZXF1aXJlZCddLFxuXHRcdFx0XHR2YWxpZGF0b3JNc2c6IFsnTWVzc2FnZSBpcyByZXF1aXJlZCddLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJ1xuXHRcdFx0fVxuXHRcdF0pLnRoZW4oY2xvc2UgPT4ge1xuXHRcdFx0dGhpcy5kYXRhLm1lc3NhZ2VzLnB1c2goe1xuXHRcdFx0XHRtZXNzYWdlOiBjbG9zZS5tZXNzYWdlLnZhbHVlLFxuXHRcdFx0XHRpZF91c2VyOiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuX2lkLFxuXHRcdFx0XHR1c2VyOiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuZnVsbG5hbWUsXG5cdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdHR5cGU6ICdDbGllbnQnXG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gdXBkYXRlZCcpO1xuXG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBlbWFpbCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdFx0Ly8gXHRcdF0pO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IFRpY2tldCBlbWFpbCBoYXMgYmVlbiBzZW50Jyk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdTdXBwb3J0IFRpY2tldCBEZXRhaWwgLSBBZGQgTWVzc2FnZScpO1xuXHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdTdXBwb3J0IHRpY2tldCBjb3VsZCBub3QgdXBkYXRlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGVkaXRNZXNzYWdlKGluZGV4KSB7XG5cdFx0bGV0IG1lc3NhZ2UgPSB0aGlzLmRhdGEubWVzc2FnZXNbaW5kZXhdO1xuXHRcdHRoaXMuX2RzLmlucHV0KCdJbnB1dCBNZXNzYWdlJywgW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ01lc3NhZ2UnLFxuXHRcdFx0XHRmb3JtOiAnbWVzc2FnZScsXG5cdFx0XHRcdGRhdGE6IG1lc3NhZ2UubWVzc2FnZSxcblx0XHRcdFx0dmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuXHRcdFx0XHR2YWxpZGF0b3JFcnJvcnM6IFsncmVxdWlyZWQnXSxcblx0XHRcdFx0dmFsaWRhdG9yTXNnOiBbJ01lc3NhZ2UgaXMgcmVxdWlyZWQnXSxcblx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYSdcblx0XHRcdH1cblx0XHRdKS50aGVuKGNsb3NlID0+IHtcblx0XHRcdG1lc3NhZ2UubWVzc2FnZSA9IGNsb3NlLm1lc3NhZ2UudmFsdWU7XG5cblx0XHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydFVwZGF0ZVN1cHBvcnRUaWNrZXQnLCB0aGlzLmRhdGEsIChlcnIsIHJlcykgPT4ge1xuXHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgdGlja2V0IGhhcyBiZWVuIHVwZGF0ZWQnKTtcblxuXHRcdFx0XHRcdC8vIHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbFN1cHBvcnQoJ3NlbmRTdXBwb3J0VGlja2V0TW9kaWZpZWRFbWFpbCcsIHRoaXMuZGF0YSwgdGhpcy5kYXRhLmZpbGVzLCAoZXJyRW1haWwsIHJlc0VtYWlsKSA9PiB7XG5cdFx0XHRcdFx0Ly8gXHRpZiAoZXJyRW1haWwgfHwgIXJlc0VtYWlsKSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZW1haWwgc3VwcG9ydCB0aWNrZXQnKTtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSBlbWFpbCBzdXBwb3J0LXRpY2tldCcsIFtcblx0XHRcdFx0XHQvLyBcdFx0XHR7cHJvcDogJ3N0YXR1cycsIGRhdGE6IHRoaXMuZGF0YS5zdGF0dXN9LCBlcnJFbWFpbFxuXHRcdFx0XHRcdC8vIFx0XHRdKTtcblx0XHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0XHQvLyBcdGVsc2Uge1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCBUaWNrZXQgZW1haWwgaGFzIGJlZW4gc2VudCcpO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnaW5zZXJ0RXJyb3JMb2cnLCAnU3VwcG9ydCBUaWNrZXQgRGV0YWlsIC0gQWRkIE1lc3NhZ2UnKTtcblx0XHRcdFx0XHR0aGlzLl9kcy5lcnJvcignU3VwcG9ydCB0aWNrZXQgY291bGQgbm90IHVwZGF0ZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LCAoKSA9PiB7fSk7XG5cdH1cblxuXHRkZWxldGVNZXNzYWdlKGluZGV4KSB7XG5cdFx0dGhpcy5fZHMuY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIG1lc3NhZ2U/JykudGhlbigoKSA9PiB7XG5cdFx0XHR0aGlzLmRhdGEubWVzc2FnZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gdXBkYXRlZCcpO1xuXG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBlbWFpbCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdFx0Ly8gXHRcdF0pO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IFRpY2tldCBlbWFpbCBoYXMgYmVlbiBzZW50Jyk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdTdXBwb3J0IFRpY2tldCBEZXRhaWwgLSBBZGQgTWVzc2FnZScpO1xuXHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdTdXBwb3J0IHRpY2tldCBjb3VsZCBub3QgdXBkYXRlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGlzTXlNZXNzYWdlKG1lc3NhZ2UpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLl9pZCA9PT0gbWVzc2FnZS5pZF91c2VyO1xuXHR9XG59IiwiPHN0eWxlPlxuICAgIC5sYWJlbC1hY2NvcmRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgfVxuXG4gICAgLmZhLXBsdXMge1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgfVxuXG4gICAgLmZhLW1pbnVzIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cblxuICAgIG5nYi1hY2NvcmRpb24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICBkbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICB9XG5cbiAgICAuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG4gICAgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiICpuZ0lmPVwiZGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPG5nYi1hY2NvcmRpb24gI2FjYz1cIm5nYkFjY29yZGlvblwiIGFjdGl2ZUlkcz1cInN1cHBvcnRUaWNrZXRJbmZvLCBzdXBwb3J0VGlja2V0TWVzc2FnZXMsIGZpbGVzXCI+XG4gICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbC1hY2NvcmRpb25cIj5TdXBwb3J0IFRpY2tldCBJbmZvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgcHVsbC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldEluZm8nKVwiIGNsYXNzPVwiZmEgZmEtbWludXMgcHVsbC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+PGI+R2VuZXJhbCBJbmZvPC9iPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlN1cHBvcnQgVGlja2V0ICM8L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57e2RhdGEuc3VwcG9ydF90aWNrZXRfbnVtYmVyIHwgbnVtYmVyfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5EYXRlIENyZWF0ZWQ8L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57e2RhdGEuZGF0ZV9jcmVhdGVkIHwgZGF0ZTogJ3Nob3J0J319PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+VHlwZTwvZHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPnt7ZGF0YS50eXBlfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Vc2VyPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3tkYXRhLnVzZXJfY3JlYXRlZH19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+U3RhdHVzPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3sgZGF0YS5zdGF0dXMgfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj48Yj5Qcm9ibGVtIERlc2NyaXB0aW9uPC9iPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3tkYXRhLmlzc3VlfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ2ItcGFuZWw+XG4gICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldE1lc3NhZ2VzXCIgKm5nSWY9XCJkYXRhXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IFxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwtYWNjb3JkaW9uXCI+TWVzc2FnZXM8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldE1lc3NhZ2VzJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgcHVsbC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldE1lc3NhZ2VzJylcIiBjbGFzcz1cImZhIGZhLW1pbnVzIHB1bGwtcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZGF0YS5tZXNzYWdlczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+PGI+VXNlcjoge3ttZXNzYWdlLnVzZXJ9fSAtIERhdGU6IHt7bWVzc2FnZS5kYXRlIHwgZGF0ZSA6ICdzaG9ydCd9fTwvYj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiIFtuZ0NsYXNzXT1cIlttZXNzYWdlLnR5cGUgPT09ICdSZXNvbHZlSU8nID8gJ3NlbGVjdGVkJyA6ICcnXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPnt7bWVzc2FnZS5tZXNzYWdlfX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlc3BvbnNpdmUtYnV0dG9uLWdyb3VwIGNvbGxhcHNlU2l6ZT1cIjkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiAoY2xpY2spPVwiZWRpdE1lc3NhZ2UoaSlcIiAqbmdJZj1cImlzTXlNZXNzYWdlKG1lc3NhZ2UpXCI+RWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIChjbGljayk9XCJkZWxldGVNZXNzYWdlKGkpXCIgKm5nSWY9XCJpc015TWVzc2FnZShtZXNzYWdlKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jlc3BvbnNpdmUtYnV0dG9uLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cIm5ld01lc3NhZ2UoKVwiPk5ldyBNZXNzYWdlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmdiLXBhbmVsPlxuICAgICAgICAgICAgPG5nYi1wYW5lbCBpZD1cImZpbGVzXCI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxuXHRcdFx0XHRcdDxkaXY+IFxuXHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFiZWwtYWNjb3JkaW9uXCI+U3VwcG9ydCBUaWNrZXQgRmlsZXM8L2xhYmVsPlxuXHRcdFx0XHRcdFx0PGkgKm5nSWY9XCIhYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnZmlsZXMnKVwiIGNsYXNzPVwiZmEgZmEtcGx1cyBwdWxsLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdFx0PGkgKm5nSWY9XCJhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdmaWxlcycpXCIgY2xhc3M9XCJmYSBmYS1taW51cyBwdWxsLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuXHRcdFx0XHRcdDxmaWxlLXVwbG9hZCAjZmlsZVVwbG9hZCAoZmlsZUFkZGVkKT1cIm9uRmlsZUFkZGVkKCRldmVudClcIiAoZmlsZVJlbW92ZWQpPVwib25GaWxlc1JlbW92ZWQoJGV2ZW50KVwiIFtmaWxlc109XCJmaWxlc1wiIFthbGxvd0RlbGV0ZV09XCJ0cnVlXCIgW2FsbG93UmVwbGFjZV09XCJ0cnVlXCI+PC9maWxlLXVwbG9hZD5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmdiLXBhbmVsPlxuICAgICAgICA8L25nYi1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHg7XCI+XG4gICAgICAgIDxyZXNwb25zaXZlLWJ1dHRvbi1ncm91cCBjb2xsYXBzZVNpemU9XCI5MDBcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImVkaXQoKVwiPkVkaXQgU3VwcG9ydCBUaWNrZXQ8L2J1dHRvbj5cbiAgICAgICAgPC9yZXNwb25zaXZlLWJ1dHRvbi1ncm91cD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuICAgICJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9zdXBwb3J0LXRpY2tldC9kZXRhaWwvc3VwcG9ydC10aWNrZXQtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBQ2hCLENBQUM7QUFPckQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGFBQWE7SUFXOUQsWUFBb0IsTUFBc0IsRUFBVSxJQUEwQixFQUFVLFNBQTBCLEVBQVUsR0FBa0I7UUFDN0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFzQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQVA5SSxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFLbkMsVUFBSyxHQUFnQixFQUFFLENBQUM7SUFJeEIsQ0FBQztJQUVELFFBQVE7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b0JBQzdILGdDQUFnQztvQkFDaEMsc0RBQXNEO29CQUN0RCxvR0FBb0c7b0JBQ3BHLHdEQUF3RDtvQkFDeEQsUUFBUTtvQkFDUixLQUFLO29CQUNMLFVBQVU7b0JBQ1YscUZBQXFGO29CQUNyRixLQUFLO29CQUNMLE1BQU07aUJBQ047cUJBQ0k7b0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLHFDQUFxQyxDQUFDLENBQUM7b0JBQ3JGLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7aUJBQ2xEO1lBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU87UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNsRSxDQUFDOzt5SEF6TVcsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUNBSjdCLENBQUMsZUFBZSxDQUFDLHlLQ1g3Qiw4OE1BcUlJOzJGRHRIUyw0QkFBNEI7a0JBTHhDLFNBQVM7Z0NBQ0UsQ0FBQyxlQUFlLENBQUM7a01BTWEsVUFBVTtzQkFBbEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdXBwb3J0VGlja2V0U2VydmljZSB9IGZyb20gJy4uL3N1cHBvcnQtdGlja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1cHBvcnRUaWNrZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zdXBwb3J0LXRpY2tldC5tb2RlbCc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUubW9kZWwnOztcblxuQENvbXBvbmVudCh7XG5cdHByb3ZpZGVyczogW1Byb3ZpZGVyU2VydmljZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9zdXBwb3J0LXRpY2tldC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgU3VwcG9ydFRpY2tldERldGFpbENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnLCB7c3RhdGljOiB0cnVlfSkgZmlsZVVwbG9hZDtcblxuXHRzdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG5cdGlkOiBzdHJpbmc7XG5cdGRhdGE6IFN1cHBvcnRUaWNrZXRNb2RlbDtcblxuXHRmaWxlczogRmlsZU1vZGVsW10gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgX3N0czogU3VwcG9ydFRpY2tldFNlcnZpY2UsIHByaXZhdGUgX3NlcnZpY2VzOiBQcm92aWRlclNlcnZpY2UsIHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXHRcdFxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLmlkID0gdGhpcy5fcm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xuXHRcdHRoaXMuX3N0cy5zZXRTZWxlY3RlZFN1cHBvcnRUaWNrZXQodGhpcy5pZCk7XG5cblx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ3N1cHBvcnRHZXRTdXBwb3J0VGlja2V0V2l0aElkJywgdGhpcy5pZCwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoIXJlcykge1xuXHRcdFx0XHR0aGlzLl9zZXJ2aWNlcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9zdXBwb3J0LXRpY2tldC9saXN0Jyk7XG5cdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZmluZCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHRoaXMuZGF0YSA9IHJlcztcblx0XHR9KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uJC5mb3JFYWNoKHN1YiA9PiB7XG5cdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uRmlsZUFkZGVkKGZpbGU6IEZpbGVNb2RlbCkge1x0XG5cdFx0dGhpcy5kYXRhLmZpbGVzLnB1c2goZmlsZS5faWQpO1xuXG5cdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRpZiAoZXJyIHx8ICFyZXMpIHtcblx0XHRcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc3VwcG9ydCB0aWNrZXQgZmlsZXMnKTtcblx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSB1cGRhdGUgc3VwcG9ydC10aWNrZXQgZmlsZXMgYWRkJywgW1xuXHRcdFx0XHRcdHRoaXMuZGF0YS5maWxlcywgZXJyXG5cdFx0XHRcdF0pO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdpbmZvJywgJ1NlbmRpbmcgZW1haWwocykuJyk7XG5cblx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0Ly8gXHRpZiAoZXJyRW1haWwgfHwgIXJlc0VtYWlsKSB7XG5cdFx0XHRcdC8vIFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IGVtYWlsIHN1cHBvcnQgdGlja2V0Jyk7XG5cdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHQvLyBcdFx0XHR7cHJvcDogJ3N0YXR1cycsIGRhdGE6IHRoaXMuZGF0YS5zdGF0dXN9LCBlcnJFbWFpbFxuXHRcdFx0XHQvLyBcdFx0XSk7XG5cdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHQvLyBcdGVsc2Uge1xuXHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgVGlja2V0IGVtYWlsIGhhcyBiZWVuIHNlbnQnKTtcblx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdC8vIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0b25GaWxlc1JlbW92ZWQoZmlsZTogRmlsZU1vZGVsKSB7XG5cdFx0dGhpcy5fZHMuY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSBhIGZpbGU/IFRoaXMgd2lsbCBlbWFpbCBhbGwgY3VycmVudCB3YXRjaGVycz8nKS50aGVuKHllcyA9PiB7XG5cdFx0XHRpZiAodGhpcy5kYXRhLmZpbGVzLmluZGV4T2YoZmlsZS5faWQpICE9PSAtMSkge1xuXHRcdFx0XHR0aGlzLmRhdGEuZmlsZXMuc3BsaWNlKHRoaXMuZGF0YS5maWxlcy5pbmRleE9mKGZpbGUuX2lkKSwgMSk7XG5cblx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGVyciB8fCAhcmVzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9kcy5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzdXBwb3J0LXRpY2tldCBmaWxlcycpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSB1cGRhdGUgZmlsZXMgcmVtb3ZlJywgW1xuXHRcdFx0XHRcdFx0XHR7cHJvcDogJ2ZpbGVzJywgZGF0YTogdGhpcy5kYXRhLmZpbGVzfSwgZXJyXG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGVkaXQoKSB7XG5cdFx0dGhpcy5fc2VydmljZXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvc3VwcG9ydC10aWNrZXQvZWRpdC8nICsgdGhpcy5pZCk7XG5cdH1cblxuXHRuZXdNZXNzYWdlKCkge1xuXHRcdHRoaXMuX2RzLmlucHV0KCdJbnB1dCBNZXNzYWdlJywgW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ01lc3NhZ2UnLFxuXHRcdFx0XHRmb3JtOiAnbWVzc2FnZScsXG5cdFx0XHRcdGRhdGE6ICcnLFxuXHRcdFx0XHR2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0XHRcdHZhbGlkYXRvckVycm9yczogWydyZXF1aXJlZCddLFxuXHRcdFx0XHR2YWxpZGF0b3JNc2c6IFsnTWVzc2FnZSBpcyByZXF1aXJlZCddLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0dHlwZTogJ3RleHRhcmVhJ1xuXHRcdFx0fVxuXHRcdF0pLnRoZW4oY2xvc2UgPT4ge1xuXHRcdFx0dGhpcy5kYXRhLm1lc3NhZ2VzLnB1c2goe1xuXHRcdFx0XHRtZXNzYWdlOiBjbG9zZS5tZXNzYWdlLnZhbHVlLFxuXHRcdFx0XHRpZF91c2VyOiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuX2lkLFxuXHRcdFx0XHR1c2VyOiB0aGlzLl9zZXJ2aWNlcy5fYWNjb3VudC5nZXRVc2VyKCkuZnVsbG5hbWUsXG5cdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdHR5cGU6ICdDbGllbnQnXG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gdXBkYXRlZCcpO1xuXG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBlbWFpbCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdFx0Ly8gXHRcdF0pO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IFRpY2tldCBlbWFpbCBoYXMgYmVlbiBzZW50Jyk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdTdXBwb3J0IFRpY2tldCBEZXRhaWwgLSBBZGQgTWVzc2FnZScpO1xuXHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdTdXBwb3J0IHRpY2tldCBjb3VsZCBub3QgdXBkYXRlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGVkaXRNZXNzYWdlKGluZGV4KSB7XG5cdFx0bGV0IG1lc3NhZ2UgPSB0aGlzLmRhdGEubWVzc2FnZXNbaW5kZXhdO1xuXHRcdHRoaXMuX2RzLmlucHV0KCdJbnB1dCBNZXNzYWdlJywgW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ01lc3NhZ2UnLFxuXHRcdFx0XHRmb3JtOiAnbWVzc2FnZScsXG5cdFx0XHRcdGRhdGE6IG1lc3NhZ2UubWVzc2FnZSxcblx0XHRcdFx0dmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuXHRcdFx0XHR2YWxpZGF0b3JFcnJvcnM6IFsncmVxdWlyZWQnXSxcblx0XHRcdFx0dmFsaWRhdG9yTXNnOiBbJ01lc3NhZ2UgaXMgcmVxdWlyZWQnXSxcblx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdHR5cGU6ICd0ZXh0YXJlYSdcblx0XHRcdH1cblx0XHRdKS50aGVuKGNsb3NlID0+IHtcblx0XHRcdG1lc3NhZ2UubWVzc2FnZSA9IGNsb3NlLm1lc3NhZ2UudmFsdWU7XG5cblx0XHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnc3VwcG9ydFVwZGF0ZVN1cHBvcnRUaWNrZXQnLCB0aGlzLmRhdGEsIChlcnIsIHJlcykgPT4ge1xuXHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX2FsZXJ0LnNldEFsZXJ0KCdzdWNjZXNzJywgJ1N1cHBvcnQgdGlja2V0IGhhcyBiZWVuIHVwZGF0ZWQnKTtcblxuXHRcdFx0XHRcdC8vIHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbFN1cHBvcnQoJ3NlbmRTdXBwb3J0VGlja2V0TW9kaWZpZWRFbWFpbCcsIHRoaXMuZGF0YSwgdGhpcy5kYXRhLmZpbGVzLCAoZXJyRW1haWwsIHJlc0VtYWlsKSA9PiB7XG5cdFx0XHRcdFx0Ly8gXHRpZiAoZXJyRW1haWwgfHwgIXJlc0VtYWlsKSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX2RzLmVycm9yKCdDb3VsZCBub3QgZW1haWwgc3VwcG9ydCB0aWNrZXQnKTtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdzdXBwb3J0LXRpY2tldC1kZXRhaWwgLSBlbWFpbCBzdXBwb3J0LXRpY2tldCcsIFtcblx0XHRcdFx0XHQvLyBcdFx0XHR7cHJvcDogJ3N0YXR1cycsIGRhdGE6IHRoaXMuZGF0YS5zdGF0dXN9LCBlcnJFbWFpbFxuXHRcdFx0XHRcdC8vIFx0XHRdKTtcblx0XHRcdFx0XHQvLyBcdH1cblx0XHRcdFx0XHQvLyBcdGVsc2Uge1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCBUaWNrZXQgZW1haWwgaGFzIGJlZW4gc2VudCcpO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX3NlcnZpY2VzLl9zb2NrZXQuY2FsbCgnaW5zZXJ0RXJyb3JMb2cnLCAnU3VwcG9ydCBUaWNrZXQgRGV0YWlsIC0gQWRkIE1lc3NhZ2UnKTtcblx0XHRcdFx0XHR0aGlzLl9kcy5lcnJvcignU3VwcG9ydCB0aWNrZXQgY291bGQgbm90IHVwZGF0ZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LCAoKSA9PiB7fSk7XG5cdH1cblxuXHRkZWxldGVNZXNzYWdlKGluZGV4KSB7XG5cdFx0dGhpcy5fZHMuY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIG1lc3NhZ2U/JykudGhlbigoKSA9PiB7XG5cdFx0XHR0aGlzLmRhdGEubWVzc2FnZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuXHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdzdXBwb3J0VXBkYXRlU3VwcG9ydFRpY2tldCcsIHRoaXMuZGF0YSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLl9zZXJ2aWNlcy5fYWxlcnQuc2V0QWxlcnQoJ3N1Y2Nlc3MnLCAnU3VwcG9ydCB0aWNrZXQgaGFzIGJlZW4gdXBkYXRlZCcpO1xuXG5cdFx0XHRcdFx0Ly8gdGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsU3VwcG9ydCgnc2VuZFN1cHBvcnRUaWNrZXRNb2RpZmllZEVtYWlsJywgdGhpcy5kYXRhLCB0aGlzLmRhdGEuZmlsZXMsIChlcnJFbWFpbCwgcmVzRW1haWwpID0+IHtcblx0XHRcdFx0XHQvLyBcdGlmIChlcnJFbWFpbCB8fCAhcmVzRW1haWwpIHtcblx0XHRcdFx0XHQvLyBcdFx0dGhpcy5fZHMuZXJyb3IoJ0NvdWxkIG5vdCBlbWFpbCBzdXBwb3J0IHRpY2tldCcpO1xuXHRcdFx0XHRcdC8vIFx0XHR0aGlzLl9zZXJ2aWNlcy5fc29ja2V0LmNhbGwoJ2luc2VydEVycm9yTG9nJywgJ3N1cHBvcnQtdGlja2V0LWRldGFpbCAtIGVtYWlsIHN1cHBvcnQtdGlja2V0JywgW1xuXHRcdFx0XHRcdC8vIFx0XHRcdHtwcm9wOiAnc3RhdHVzJywgZGF0YTogdGhpcy5kYXRhLnN0YXR1c30sIGVyckVtYWlsXG5cdFx0XHRcdFx0Ly8gXHRcdF0pO1xuXHRcdFx0XHRcdC8vIFx0fVxuXHRcdFx0XHRcdC8vIFx0ZWxzZSB7XG5cdFx0XHRcdFx0Ly8gXHRcdHRoaXMuX3NlcnZpY2VzLl9hbGVydC5zZXRBbGVydCgnc3VjY2VzcycsICdTdXBwb3J0IFRpY2tldCBlbWFpbCBoYXMgYmVlbiBzZW50Jyk7XG5cdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0Ly8gfSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2VydmljZXMuX3NvY2tldC5jYWxsKCdpbnNlcnRFcnJvckxvZycsICdTdXBwb3J0IFRpY2tldCBEZXRhaWwgLSBBZGQgTWVzc2FnZScpO1xuXHRcdFx0XHRcdHRoaXMuX2RzLmVycm9yKCdTdXBwb3J0IHRpY2tldCBjb3VsZCBub3QgdXBkYXRlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sICgpID0+IHt9KTtcblx0fVxuXG5cdGlzTXlNZXNzYWdlKG1lc3NhZ2UpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2VydmljZXMuX2FjY291bnQuZ2V0VXNlcigpLl9pZCA9PT0gbWVzc2FnZS5pZF91c2VyO1xuXHR9XG59IiwiPHN0eWxlPlxuICAgIC5sYWJlbC1hY2NvcmRpb24ge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgfVxuXG4gICAgLmZhLXBsdXMge1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgfVxuXG4gICAgLmZhLW1pbnVzIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgIH1cblxuICAgIG5nYi1hY2NvcmRpb24ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICBkbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICB9XG5cbiAgICAuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG4gICAgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiICpuZ0lmPVwiZGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPG5nYi1hY2NvcmRpb24gI2FjYz1cIm5nYkFjY29yZGlvblwiIGFjdGl2ZUlkcz1cInN1cHBvcnRUaWNrZXRJbmZvLCBzdXBwb3J0VGlja2V0TWVzc2FnZXMsIGZpbGVzXCI+XG4gICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwic3VwcG9ydFRpY2tldEluZm9cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbC1hY2NvcmRpb25cIj5TdXBwb3J0IFRpY2tldCBJbmZvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRJbmZvJylcIiBjbGFzcz1cImZhIGZhLXBsdXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdzdXBwb3J0VGlja2V0SW5mbycpXCIgY2xhc3M9XCJmYSBmYS1taW51cyBmbG9hdC1lbmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPjxiPkdlbmVyYWwgSW5mbzwvYj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5TdXBwb3J0IFRpY2tldCAjPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3tkYXRhLnN1cHBvcnRfdGlja2V0X251bWJlciB8IG51bWJlcn19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RGF0ZSBDcmVhdGVkPC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3tkYXRhLmRhdGVfY3JlYXRlZCB8IGRhdGU6ICdzaG9ydCd9fTwvZGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlR5cGU8L2R0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD57e2RhdGEudHlwZX19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+VXNlcjwvZHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPnt7ZGF0YS51c2VyX2NyZWF0ZWR9fTwvZGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlN0YXR1czwvZHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPnt7IGRhdGEuc3RhdHVzIH19PC9kZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+PGI+UHJvYmxlbSBEZXNjcmlwdGlvbjwvYj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPnt7ZGF0YS5pc3N1ZX19PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmdiLXBhbmVsPlxuICAgICAgICAgICAgPG5nYi1wYW5lbCBpZD1cInN1cHBvcnRUaWNrZXRNZXNzYWdlc1wiICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYW5lbFRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsLWFjY29yZGlvblwiPk1lc3NhZ2VzPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWFjYy5hY3RpdmVJZHMuaW5jbHVkZXMoJ3N1cHBvcnRUaWNrZXRNZXNzYWdlcycpXCIgY2xhc3M9XCJmYSBmYS1wbHVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnc3VwcG9ydFRpY2tldE1lc3NhZ2VzJylcIiBjbGFzcz1cImZhIGZhLW1pbnVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBkYXRhLm1lc3NhZ2VzOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj48Yj5Vc2VyOiB7e21lc3NhZ2UudXNlcn19IC0gRGF0ZToge3ttZXNzYWdlLmRhdGUgfCBkYXRlIDogJ3Nob3J0J319PC9iPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgW25nQ2xhc3NdPVwiW21lc3NhZ2UudHlwZSA9PT0gJ1Jlc29sdmVJTycgPyAnc2VsZWN0ZWQnIDogJyddXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+e3ttZXNzYWdlLm1lc3NhZ2V9fTwvcHJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVzcG9uc2l2ZS1idXR0b24tZ3JvdXAgY29sbGFwc2VTaXplPVwiOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiIChjbGljayk9XCJlZGl0TWVzc2FnZShpKVwiICpuZ0lmPVwiaXNNeU1lc3NhZ2UobWVzc2FnZSlcIj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZU1lc3NhZ2UoaSlcIiAqbmdJZj1cImlzTXlNZXNzYWdlKG1lc3NhZ2UpXCI+RGVsZXRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVzcG9uc2l2ZS1idXR0b24tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwibmV3TWVzc2FnZSgpXCI+TmV3IE1lc3NhZ2U8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ2ItcGFuZWw+XG4gICAgICAgICAgICA8bmdiLXBhbmVsIGlkPVwiZmlsZXNcIj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nYlBhbmVsVGl0bGU+XG5cdFx0XHRcdFx0PGRpdj4gXG5cdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYWJlbC1hY2NvcmRpb25cIj5TdXBwb3J0IFRpY2tldCBGaWxlczwvbGFiZWw+XG5cdFx0XHRcdFx0XHQ8aSAqbmdJZj1cIiFhY2MuYWN0aXZlSWRzLmluY2x1ZGVzKCdmaWxlcycpXCIgY2xhc3M9XCJmYSBmYS1wbHVzIGZsb2F0LWVuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cblx0XHRcdFx0XHRcdDxpICpuZ0lmPVwiYWNjLmFjdGl2ZUlkcy5pbmNsdWRlcygnZmlsZXMnKVwiIGNsYXNzPVwiZmEgZmEtbWludXMgZmxvYXQtZW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdiUGFuZWxDb250ZW50PlxuXHRcdFx0XHRcdDxmaWxlLXVwbG9hZCAjZmlsZVVwbG9hZCAoZmlsZUFkZGVkKT1cIm9uRmlsZUFkZGVkKCRldmVudClcIiAoZmlsZVJlbW92ZWQpPVwib25GaWxlc1JlbW92ZWQoJGV2ZW50KVwiIFtmaWxlc109XCJmaWxlc1wiIFthbGxvd0RlbGV0ZV09XCJ0cnVlXCIgW2FsbG93UmVwbGFjZV09XCJ0cnVlXCI+PC9maWxlLXVwbG9hZD5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmdiLXBhbmVsPlxuICAgICAgICA8L25nYi1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDE1cHg7XCI+XG4gICAgICAgIDxyZXNwb25zaXZlLWJ1dHRvbi1ncm91cCBjb2xsYXBzZVNpemU9XCI5MDBcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImVkaXQoKVwiPkVkaXQgU3VwcG9ydCBUaWNrZXQ8L2J1dHRvbj5cbiAgICAgICAgPC9yZXNwb25zaXZlLWJ1dHRvbi1ncm91cD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuICAgICJdfQ==
|