@hmcts/rpx-xui-common-lib 2.0.7 → 2.0.8-remove-special-characters-allow-space

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
2
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
3
3
  import { iif, of } from 'rxjs';
4
4
  import { debounceTime, map, switchMap, tap } from 'rxjs/operators';
5
5
  import { BookingCheckType } from '../../models';
@@ -80,11 +80,12 @@ export class SearchLocationComponent {
80
80
  this.locationSelected = new EventEmitter();
81
81
  this.locationTermSearchInputChanged = new EventEmitter();
82
82
  this.searchLocationChanged = new EventEmitter();
83
- this.searchTermFormControl = new FormControl('');
83
+ this.searchTermFormControl = new FormControl('', Validators.pattern('/[^a-zA-Z -]/'));
84
84
  this.minSearchCharacters = 3;
85
85
  this.term = '';
86
86
  this.pReset = true;
87
87
  this.debounceTimeInput = 300;
88
+ this.binaryValue = '';
88
89
  }
89
90
  ngOnInit() {
90
91
  const searchInputChanges$ = this.searchTermFormControl.valueChanges
@@ -149,12 +150,22 @@ export class SearchLocationComponent {
149
150
  }
150
151
  return locations.filter(location => !selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location[this.propertyNameFilter]);
151
152
  }
153
+ RemoveInvalidString(formInputValue) {
154
+ const element = formInputValue.target;
155
+ const newInputValue = element.value;
156
+ if (/[^a-zA-Z -]/.test(newInputValue)) {
157
+ element.value = this.binaryValue;
158
+ }
159
+ else {
160
+ this.binaryValue = newInputValue;
161
+ }
162
+ }
152
163
  }
153
164
  SearchLocationComponent.allLocationAPI = `api/locations/getLocations`;
154
165
  SearchLocationComponent.ɵfac = function SearchLocationComponent_Factory(t) { return new (t || SearchLocationComponent)(i0.ɵɵdirectiveInject(i1.LocationService), i0.ɵɵdirectiveInject(i2.SessionStorageService), i0.ɵɵdirectiveInject(i3.RefDataService)); };
155
- SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchLocationComponent, selectors: [["exui-search-location"]], inputs: { form: "form", field: "field", disabled: "disabled", singleMode: "singleMode", locationType: "locationType", serviceIds: "serviceIds", submitted: "submitted", bookingCheck: "bookingCheck", selectedLocations: "selectedLocations", propertyNameFilter: "propertyNameFilter", delay: "delay", reset: "reset" }, outputs: { locationSelected: "locationSelected", locationTermSearchInputChanged: "locationTermSearchInputChanged", searchLocationChanged: "searchLocationChanged" }, decls: 6, vars: 6, consts: [[1, "auto-complete-container"], ["id", "inputLocationSearch", 1, "govuk-input", 3, "formControl", "matAutocomplete", "input"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], ["autoSearchLocation", "matAutocomplete"], [4, "ngIf"], [3, "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "onSelectionChange"]], template: function SearchLocationComponent_Template(rf, ctx) { if (rf & 1) {
166
+ SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchLocationComponent, selectors: [["exui-search-location"]], inputs: { form: "form", field: "field", disabled: "disabled", singleMode: "singleMode", locationType: "locationType", serviceIds: "serviceIds", submitted: "submitted", bookingCheck: "bookingCheck", selectedLocations: "selectedLocations", propertyNameFilter: "propertyNameFilter", delay: "delay", reset: "reset" }, outputs: { locationSelected: "locationSelected", locationTermSearchInputChanged: "locationTermSearchInputChanged", searchLocationChanged: "searchLocationChanged" }, decls: 6, vars: 6, consts: [[1, "auto-complete-container"], ["id", "inputLocationSearch", 1, "govuk-input", 3, "formControl", "matAutocomplete", "keyup", "input"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], ["autoSearchLocation", "matAutocomplete"], [4, "ngIf"], [3, "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "onSelectionChange"]], template: function SearchLocationComponent_Template(rf, ctx) { if (rf & 1) {
156
167
  i0.ɵɵelementStart(0, "div", 0)(1, "input", 1);
157
- i0.ɵɵlistener("input", function SearchLocationComponent_Template_input_input_1_listener() { return ctx.onInput(); });
168
+ i0.ɵɵlistener("keyup", function SearchLocationComponent_Template_input_keyup_1_listener($event) { return ctx.RemoveInvalidString($event); })("input", function SearchLocationComponent_Template_input_input_1_listener() { return ctx.onInput(); });
158
169
  i0.ɵɵelementEnd();
159
170
  i0.ɵɵelementStart(2, "mat-autocomplete", 2, 3);
160
171
  i0.ɵɵtemplate(4, SearchLocationComponent_ng_container_4_Template, 2, 1, "ng-container", 4);
@@ -170,7 +181,7 @@ SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
170
181
  } }, dependencies: [i4.NgForOf, i4.NgIf, i5.DefaultValueAccessor, i5.NgControlStatus, i5.FormControlDirective, i6.MatLegacyAutocomplete, i6.MatLegacyAutocompleteTrigger, i7.MatLegacyOption, i4.AsyncPipe, i8.RpxTranslatePipe], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width: 641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}"] });
171
182
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchLocationComponent, [{
172
183
  type: Component,
173
- args: [{ selector: 'exui-search-location', template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">{{'No results found' | rpxTranslate}}</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
184
+ args: [{ selector: 'exui-search-location', template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n (keyup)=\"RemoveInvalidString($event)\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">{{'No results found' | rpxTranslate}}</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
174
185
  }], function () { return [{ type: i1.LocationService }, { type: i2.SessionStorageService }, { type: i3.RefDataService }]; }, { form: [{
175
186
  type: Input
176
187
  }], field: [{
@@ -202,4 +213,4 @@ SearchLocationComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
202
213
  }], reset: [{
203
214
  type: Input
204
215
  }] }); })();
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBSWpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7OztJQ0QvRixxQ0FBcUc7SUFBbkQscVNBQXFCLGVBQUEsc0NBQTRCLENBQUEsSUFBQztJQUNsRyxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFEWCxlQUNGO0lBREUsdUVBQ0Y7OztJQUNBLGtDQUE4QztJQUFBLFlBQXFDOztJQUFBLGlCQUFhOztJQUFsRCxlQUFxQztJ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QkFBcUMsZUFBQTtRQUdqQyxtR0FBUyxhQUFTLElBQUM7UUFGckIsaUJBTTZCO1FBQzdCLDhDQUFvSDtRQUNsSCwwRkFPZTs7UUFDakIsaUJBQW1CLEVBQUE7OztRQWJqQixlQUFxQztRQUFyQyx1REFBcUMsd0JBQUE7UUFHckMsd0NBQTBCO1FBRVgsZUFBNEI7UUFBNUIsOERBQTRCOzt1RkRVbEMsdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0Usc0JBQXNCO21JQU1oQixJQUFJO2tCQUFuQixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLEtBQUs7a0JBQXBCLEtBQUs7WUFDVyxnQkFBZ0I7a0JBQWhDLE1BQU07WUFDVSw4QkFBOEI7a0JBQTlDLE1BQU07WUFDVSxxQkFBcUI7a0JBQXJDLE1BQU07WUFhSSxLQUFLO2tCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaWlmLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQm9va2luZ0NoZWNrVHlwZSwgRmlsdGVyQ29uZmlnT3B0aW9uLFxuICBGaWx0ZXJGaWVsZENvbmZpZyxcbiAgTG9jYXRpb25CeUVQSU1NU01vZGVsLFxuICBMb2NhdGlvbnNCeVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IExvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2F0aW9ucy9sb2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmLWRhdGEnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS9zZXNzaW9uLXN0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHVpLXNlYXJjaC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGFsbExvY2F0aW9uQVBJID0gYGFwaS9sb2NhdGlvbnMvZ2V0TG9jYXRpb25zYDtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHNpbmdsZU1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvY2F0aW9uVHlwZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlSWRzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgYm9va2luZ0NoZWNrOiBCb29raW5nQ2hlY2tUeXBlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9wZXJ0eU5hbWVGaWx0ZXI6IGtleW9mIExvY2F0aW9uQnlFUElNTVNNb2RlbCA9ICdzaXRlX25hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGVsYXk/OiBudW1iZXIgPSA1MDA7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbG9jYXRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9jYXRpb25CeUVQSU1NU01vZGVsPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWFyY2hMb2NhdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgcHVibGljIHNlYXJjaFRlcm1Gb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBtaW5TZWFyY2hDaGFyYWN0ZXJzID0gMztcbiAgcHVibGljIHRlcm06IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHBSZXNldDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBmaWx0ZXJlZExpc3QkOiBPYnNlcnZhYmxlPExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHwgYm9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VUaW1lSW5wdXQgPSAzMDA7XG5cbiAgcHVibGljIGdldCByZXNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wUmVzZXQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJlc2V0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5wUmVzZXQgPSB2YWx1ZTtcbiAgICB0aGlzLnJlc2V0U2VhcmNoVGVybSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZWZEYXRhU2VydmljZTogUmVmRGF0YVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hJbnB1dENoYW5nZXMkID0gdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0ZXJtKSA9PiB0aGlzLmxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZC5lbWl0KHRlcm0pKVxuICAgICAgKTtcblxuICAgIC8vIGlmIHNlcnZpY2VzRmllbGQgZXhpc3RzLCB0aGVuIHdlIHNob3VsZCBmaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZXJ2aWNlIGNvZGVzXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiBpaWYoXG4gICAgICAgICAgLy8gU2VlbXMgbW9yZSByZXNwb25zaXZlIHRvIGRvIGxlbmd0aCAwIGlmIGxvY2F0aW9uc0J5U2VydmljZUNvZGVzIGFyZSBjYWNoZWRcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IDApLFxuICAgICAgICAgICAgdGhpcy5yZWZEYXRhU2VydmljZS5nZXRMb2NhdGlvbnNCeVNlcnZpY2VDb2RlcyhcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKT8udmFsdWUgYXMgRmlsdGVyQ29uZmlnT3B0aW9uW10pLm1hcCgoc2VydmljZSkgPT4gc2VydmljZS5rZXkpXG4gICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBsb2NhdGlvbnMgYnkgdGhlIHNlYXJjaCBpbnB1dCB0ZXJtIGFuZCB0aGUgY2hvc2VuIHByb3BlcnR5IG5hbWVcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKSksXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgbG9jYXRpb25zIHRoYXQgYXJlIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IHRoaXMuZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhsb2NhdGlvbnMsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMuc2luZ2xlTW9kZSkpLFxuICAgICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZSBsb2NhdGlvbnMgKGJ5IHByb3BlcnR5TmFtZUZpbHRlcilcbiAgICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9ucy5maWx0ZXIoKGxvY2F0aW9uLCBpbmRleCwgYXJyYXkpID0+XG4gICAgICAgICAgICAgICAgaW5kZXggPT09IGFycmF5LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbVt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0gPT09IGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSlcbiAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgc2VhcmNoIHRlcm0gaXMgZW1wdHkgdG8gbm90IHNob3cgdGhlIGF1dG9jb21wbGV0ZSBmaWVsZCBpLmUuIG5nSWYgc2hvdWxkIGJlIGZhbHNlXG4gICAgICAgICAgICBvZihmYWxzZSlcbiAgICAgICAgKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIC8vIERlYm91bmNlIG5lZWRlZCB0byBwcmV2ZW50IG11bHRpcGxlIEFQSSBjYWxscyBiZWluZyBtYWRlXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZUlucHV0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IGlpZihcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiB0aGlzLmZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMobG9jYXRpb25zLCB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLCB0aGlzLnNpbmdsZU1vZGUpKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG9mKGZhbHNlKVxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2luZ2xlTW9kZSAmJiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5zZWxlY3RlZExvY2F0aW9uc1swXTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7ZW1pdEV2ZW50OiBmYWxzZSwgb25seVNlbGY6IHRydWV9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZExvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSwge2VtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgdGhpcy5sb2NhdGlvblNlbGVjdGVkLmVtaXQobG9jYXRpb24pO1xuICB9XG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoTG9jYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMb2NhdGlvbnModGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXT4ge1xuICAgIGxldCB1c2VyTG9jYXRpb25zO1xuICAgIC8vIEJvb2tpbmcgdHlwZSBpbmZvIC0gY2FuIGNyZWF0ZSBtb3JlXG4gICAgLy8gTk9fQ0hFQ0sgLSBBbGwgd29yayAtIERvIG5vdCBmaWx0ZXIgb3V0IGxvY2F0aW9ucyAtIERlZmF1bHQgYXNzdW1wdGlvblxuICAgIC8vIEJPT0tJTkdTX0FORF9CQVNFIC0gTXkgd29yayAtIFRyeSB0byBvbmx5IHNob3cgYmFzZSBsb2NhdGlvbnMvcmVnaW9uc1xuICAgIC8vIFBPU1NJQkxFX0JPT0tJTkdTIC0gQ3JlYXRlIGJvb2tpbmcgc2NyZWVuIC0gU2hvdyBvbmx5IHBvdGVudGlhbCBib29raW5nc1xuICAgIGlmICh0aGlzLmJvb2tpbmdDaGVjayA9PT0gQm9va2luZ0NoZWNrVHlwZS5CT09LSU5HU19BTkRfQkFTRSkge1xuICAgICAgdXNlckxvY2F0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYm9va2luZ0NoZWNrID09PSBCb29raW5nQ2hlY2tUeXBlLlBPU1NJQkxFX0JPT0tJTkdTKSB7XG4gICAgICB0aGlzLnNlcnZpY2VJZHMgPSB0aGlzLnNlcnZpY2VJZHMgJiYgdGhpcy5zZXJ2aWNlSWRzLmxlbmd0aCA/IHRoaXMuc2VydmljZUlkcyA6IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYm9va2FibGVTZXJ2aWNlcycpKTtcbiAgICAgIHVzZXJMb2NhdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Jvb2thYmxlVXNlckxvY2F0aW9ucycpKSBhcyBMb2NhdGlvbnNCeVNlcnZpY2VbXTtcbiAgICB9XG4gICAgLy8gZ2V0IGFsbCBsb2NhdGlvbnMgd2lsbCByZXNvbHZlIGZpbHRlciBzZXR0aW5nIHVzaW5nIG9iamVjdHMgYWJvdmVcbiAgICAvLyBpZiBubyB1c2VyTG9jYXRpb25zLCBOT19DSEVDS1xuICAgIC8vIGlmIGp1c3QgZ2V0dGluZyBhbGwgc3Vic3RhbnRpdmUgdXNlciBsb2NhdGlvbnMsIEJPT0tJTkdTX0FORF9CQVNFXG4gICAgLy8gZmVlIHBhaWQgdXNlciBsb2NhdGlvbnMgYXJlIHVzZWQgZm9yIFBPU1NJQkxFX0JPT0tJTkdTXG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldEFsbExvY2F0aW9ucyhTZWFyY2hMb2NhdGlvbkNvbXBvbmVudC5hbGxMb2NhdGlvbkFQSSwgdGhpcy5zZXJ2aWNlSWRzLCB0aGlzLmxvY2F0aW9uVHlwZSwgdGVybSwgdXNlckxvY2F0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWFyY2hUZXJtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhcbiAgICBsb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdLFxuICAgIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSxcbiAgICBzaW5nbGVNb2RlOiBib29sZWFuXG4gICk6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdIHtcbiAgICBpZiAoc2luZ2xlTW9kZSkge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9ucy5maWx0ZXIoXG4gICAgICBsb2NhdGlvbiA9PiAhc2VsZWN0ZWRMb2NhdGlvbnMubWFwKHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQpLmluY2x1ZGVzKGxvY2F0aW9uLmVwaW1tc19pZCkgJiYgbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF1dG8tY29tcGxldGUtY29udGFpbmVyXCI+XG4gIDxpbnB1dFxuICAgIGlkPVwiaW5wdXRMb2NhdGlvblNlYXJjaFwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRlcm1Gb3JtQ29udHJvbFwiXG4gICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvU2VhcmNoTG9jYXRpb25cIlxuICAgIGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1leHRlbmRcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9TZWFyY2hMb2NhdGlvbj1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZExpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRMaXN0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0ICYmIGZpbHRlcmVkTGlzdC5sZW5ndGggPj0gMFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgZmlsdGVyZWRMaXN0XCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0ZWRMb2NhdGlvbihsb2NhdGlvbilcIj5cbiAgICAgICAgICB7eyBsb2NhdGlvbltwcm9wZXJ0eU5hbWVGaWx0ZXJdIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZExpc3QubGVuZ3RoID09PSAwXCI+e3snTm8gcmVzdWx0cyBmb3VuZCcgfCBycHhUcmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj5cbiJdfQ==
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGdCQUFnQixFQUlqQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7SUNBL0YscUNBQXFHO0lBQW5ELHFTQUFxQixlQUFBLHNDQUE0QixDQUFBLElBQUM7SUFDbEcsWUFDRjtJQUFBLGlCQUFhOzs7O0lBRFgsZUFDRjtJQURFLHVFQUNGOzs7SUFDQSxrQ0FBOEM7SUFBQSxZQUFxQzs7SUFBQSxpQkFBYTs7SUFB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c0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEJvb2tpbmdDaGVja1R5cGUsIEZpbHRlckNvbmZpZ09wdGlvbixcbiAgRmlsdGVyRmllbGRDb25maWcsXG4gIExvY2F0aW9uQnlFUElNTVNNb2RlbCxcbiAgTG9jYXRpb25zQnlTZXJ2aWNlXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhdGlvbnMvbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBSZWZEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlZi1kYXRhJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1zZWFyY2gtbG9jYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoTG9jYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhbGxMb2NhdGlvbkFQSSA9IGBhcGkvbG9jYXRpb25zL2dldExvY2F0aW9uc2A7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaW5nbGVNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhdGlvblR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGJvb2tpbmdDaGVjazogQm9va2luZ0NoZWNrVHlwZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvcGVydHlOYW1lRmlsdGVyOiBrZXlvZiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgPSAnc2l0ZV9uYW1lJztcbiAgQElucHV0KCkgcHVibGljIGRlbGF5PzogbnVtYmVyID0gNTAwO1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExvY2F0aW9uQnlFUElNTVNNb2RlbD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvblRlcm1TZWFyY2hJbnB1dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VhcmNoTG9jYXRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHB1YmxpYyBzZWFyY2hUZXJtRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucGF0dGVybignL1teYS16QS1aIC1dLycpKTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAzO1xuICBwdWJsaWMgdGVybTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcFJlc2V0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGZpbHRlcmVkTGlzdCQ6IE9ic2VydmFibGU8TG9jYXRpb25CeUVQSU1NU01vZGVsW10gfCBib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVRpbWVJbnB1dCA9IDMwMDtcbiAgcHJpdmF0ZSBiaW5hcnlWYWx1ZSA9ICcnO1xuXG4gIHB1YmxpYyBnZXQgcmVzZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucFJlc2V0O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXNldCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMucFJlc2V0ID0gdmFsdWU7XG4gICAgdGhpcy5yZXNldFNlYXJjaFRlcm0oKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25TZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZkRhdGFTZXJ2aWNlOiBSZWZEYXRhU2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hJbnB1dENoYW5nZXMkID0gdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0ZXJtKSA9PiB0aGlzLmxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZC5lbWl0KHRlcm0pKVxuICAgICAgKTtcblxuICAgIC8vIGlmIHNlcnZpY2VzRmllbGQgZXhpc3RzLCB0aGVuIHdlIHNob3VsZCBmaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZXJ2aWNlIGNvZGVzXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiBpaWYoXG4gICAgICAgICAgLy8gU2VlbXMgbW9yZSByZXNwb25zaXZlIHRvIGRvIGxlbmd0aCAwIGlmIGxvY2F0aW9uc0J5U2VydmljZUNvZGVzIGFyZSBjYWNoZWRcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IDApLFxuICAgICAgICAgIHRoaXMucmVmRGF0YVNlcnZpY2UuZ2V0TG9jYXRpb25zQnlTZXJ2aWNlQ29kZXMoXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnNlcnZpY2VzRmllbGQpPy52YWx1ZSBhcyBGaWx0ZXJDb25maWdPcHRpb25bXSkubWFwKChzZXJ2aWNlKSA9PiBzZXJ2aWNlLmtleSlcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZWFyY2ggaW5wdXQgdGVybSBhbmQgdGhlIGNob3NlbiBwcm9wZXJ0eSBuYW1lXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gbG9jYXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKSksXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGxvY2F0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gdGhpcy5maWx0ZXJVbnNlbGVjdGVkTG9jYXRpb25zKGxvY2F0aW9ucywgdGhpcy5zZWxlY3RlZExvY2F0aW9ucywgdGhpcy5zaW5nbGVNb2RlKSksXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZSBsb2NhdGlvbnMgKGJ5IHByb3BlcnR5TmFtZUZpbHRlcilcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiBsb2NhdGlvbnMuZmlsdGVyKChsb2NhdGlvbiwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICAgICAgICBpbmRleCA9PT0gYXJyYXkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSA9PT0gbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBzZWFyY2ggdGVybSBpcyBlbXB0eSB0byBub3Qgc2hvdyB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkIGkuZS4gbmdJZiBzaG91bGQgYmUgZmFsc2VcbiAgICAgICAgICBvZihmYWxzZSlcbiAgICAgICAgKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIC8vIERlYm91bmNlIG5lZWRlZCB0byBwcmV2ZW50IG11bHRpcGxlIEFQSSBjYWxscyBiZWluZyBtYWRlXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZUlucHV0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IGlpZihcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiB0aGlzLmZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMobG9jYXRpb25zLCB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLCB0aGlzLnNpbmdsZU1vZGUpKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG9mKGZhbHNlKVxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2luZ2xlTW9kZSAmJiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5zZWxlY3RlZExvY2F0aW9uc1swXTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkTG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIHRoaXMubG9jYXRpb25TZWxlY3RlZC5lbWl0KGxvY2F0aW9uKTtcbiAgfVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYXRpb25zKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8TG9jYXRpb25CeUVQSU1NU01vZGVsW10+IHtcbiAgICBsZXQgdXNlckxvY2F0aW9ucztcbiAgICAvLyBCb29raW5nIHR5cGUgaW5mbyAtIGNhbiBjcmVhdGUgbW9yZVxuICAgIC8vIE5PX0NIRUNLIC0gQWxsIHdvcmsgLSBEbyBub3QgZmlsdGVyIG91dCBsb2NhdGlvbnMgLSBEZWZhdWx0IGFzc3VtcHRpb25cbiAgICAvLyBCT09LSU5HU19BTkRfQkFTRSAtIE15IHdvcmsgLSBUcnkgdG8gb25seSBzaG93IGJhc2UgbG9jYXRpb25zL3JlZ2lvbnNcbiAgICAvLyBQT1NTSUJMRV9CT09LSU5HUyAtIENyZWF0ZSBib29raW5nIHNjcmVlbiAtIFNob3cgb25seSBwb3RlbnRpYWwgYm9va2luZ3NcbiAgICBpZiAodGhpcy5ib29raW5nQ2hlY2sgPT09IEJvb2tpbmdDaGVja1R5cGUuQk9PS0lOR1NfQU5EX0JBU0UpIHtcbiAgICAgIHVzZXJMb2NhdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJMb2NhdGlvbnMnKSkgYXMgTG9jYXRpb25zQnlTZXJ2aWNlW107XG4gICAgfSBlbHNlIGlmICh0aGlzLmJvb2tpbmdDaGVjayA9PT0gQm9va2luZ0NoZWNrVHlwZS5QT1NTSUJMRV9CT09LSU5HUykge1xuICAgICAgdGhpcy5zZXJ2aWNlSWRzID0gdGhpcy5zZXJ2aWNlSWRzICYmIHRoaXMuc2VydmljZUlkcy5sZW5ndGggPyB0aGlzLnNlcnZpY2VJZHMgOiBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Jvb2thYmxlU2VydmljZXMnKSk7XG4gICAgICB1c2VyTG9jYXRpb25zID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdib29rYWJsZVVzZXJMb2NhdGlvbnMnKSkgYXMgTG9jYXRpb25zQnlTZXJ2aWNlW107XG4gICAgfVxuICAgIC8vIGdldCBhbGwgbG9jYXRpb25zIHdpbGwgcmVzb2x2ZSBmaWx0ZXIgc2V0dGluZyB1c2luZyBvYmplY3RzIGFib3ZlXG4gICAgLy8gaWYgbm8gdXNlckxvY2F0aW9ucywgTk9fQ0hFQ0tcbiAgICAvLyBpZiBqdXN0IGdldHRpbmcgYWxsIHN1YnN0YW50aXZlIHVzZXIgbG9jYXRpb25zLCBCT09LSU5HU19BTkRfQkFTRVxuICAgIC8vIGZlZSBwYWlkIHVzZXIgbG9jYXRpb25zIGFyZSB1c2VkIGZvciBQT1NTSUJMRV9CT09LSU5HU1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRBbGxMb2NhdGlvbnMoU2VhcmNoTG9jYXRpb25Db21wb25lbnQuYWxsTG9jYXRpb25BUEksIHRoaXMuc2VydmljZUlkcywgdGhpcy5sb2NhdGlvblR5cGUsIHRlcm0sIHVzZXJMb2NhdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoVGVybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMoXG4gICAgbG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSxcbiAgICBzZWxlY3RlZExvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10sXG4gICAgc2luZ2xlTW9kZTogYm9vbGVhblxuICApOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSB7XG4gICAgaWYgKHNpbmdsZU1vZGUpIHtcbiAgICAgIHJldHVybiBsb2NhdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbnMuZmlsdGVyKFxuICAgICAgbG9jYXRpb24gPT4gIXNlbGVjdGVkTG9jYXRpb25zLm1hcChzZWxlY3RlZExvY2F0aW9uID0+IHNlbGVjdGVkTG9jYXRpb24uZXBpbW1zX2lkKS5pbmNsdWRlcyhsb2NhdGlvbi5lcGltbXNfaWQpICYmIGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgUmVtb3ZlSW52YWxpZFN0cmluZyhmb3JtSW5wdXRWYWx1ZTogYW55KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGZvcm1JbnB1dFZhbHVlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IG5ld0lucHV0VmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICAgIGlmICgvW15hLXpBLVogLV0vLnRlc3QobmV3SW5wdXRWYWx1ZSkpIHtcbiAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmJpbmFyeVZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJpbmFyeVZhbHVlID0gbmV3SW5wdXRWYWx1ZTtcbiAgICB9XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXV0by1jb21wbGV0ZS1jb250YWluZXJcIj5cbiAgPGlucHV0XG4gICAgaWQ9XCJpbnB1dExvY2F0aW9uU2VhcmNoXCJcbiAgICAoa2V5dXApPVwiUmVtb3ZlSW52YWxpZFN0cmluZygkZXZlbnQpXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgpXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVGVybUZvcm1Db250cm9sXCJcbiAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9TZWFyY2hMb2NhdGlvblwiXG4gICAgY2xhc3M9XCJnb3Z1ay1pbnB1dFwiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPG1hdC1hdXRvY29tcGxldGUgY2xhc3M9XCJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWV4dGVuZFwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0b1NlYXJjaExvY2F0aW9uPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkTGlzdCQgfCBhc3luYyBhcyBmaWx0ZXJlZExpc3RcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZExpc3QgJiYgZmlsdGVyZWRMaXN0Lmxlbmd0aCA+PSAwXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBmaWx0ZXJlZExpc3RcIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3RlZExvY2F0aW9uKGxvY2F0aW9uKVwiPlxuICAgICAgICAgIHt7IGxvY2F0aW9uW3Byb3BlcnR5TmFtZUZpbHRlcl0gfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImZpbHRlcmVkTGlzdC5sZW5ndGggPT09IDBcIj57eydObyByZXN1bHRzIGZvdW5kJyB8IHJweFRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
@@ -61,17 +61,27 @@ function UserDetailsComponent_table_1_tr_17_div_9_Template(rf, ctx) { if (rf & 1
61
61
  i0.ɵɵadvance(1);
62
62
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "Manage fee accounts"));
63
63
  } }
64
- function UserDetailsComponent_table_1_tr_17_a_11_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "a", 15);
64
+ function UserDetailsComponent_table_1_tr_17_div_10_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementStart(0, "div");
66
66
  i0.ɵɵtext(1);
67
67
  i0.ɵɵpipe(2, "rpxTranslate");
68
- i0.ɵɵelementStart(3, "span", 16);
68
+ i0.ɵɵelementEnd();
69
+ } if (rf & 2) {
70
+ const accesstype_r13 = ctx.$implicit;
71
+ i0.ɵɵadvance(1);
72
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, accesstype_r13));
73
+ } }
74
+ function UserDetailsComponent_table_1_tr_17_a_12_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelementStart(0, "a", 16);
76
+ i0.ɵɵtext(1);
77
+ i0.ɵɵpipe(2, "rpxTranslate");
78
+ i0.ɵɵelementStart(3, "span", 17);
69
79
  i0.ɵɵtext(4);
70
80
  i0.ɵɵpipe(5, "rpxTranslate");
71
81
  i0.ɵɵelementEnd()();
72
82
  } if (rf & 2) {
73
- const ctx_r11 = i0.ɵɵnextContext(3);
74
- i0.ɵɵproperty("routerLink", ctx_r11.editPermissionRouterLink);
83
+ const ctx_r12 = i0.ɵɵnextContext(3);
84
+ i0.ɵɵproperty("routerLink", ctx_r12.editPermissionRouterLink);
75
85
  i0.ɵɵadvance(1);
76
86
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 3, "Change"), " ");
77
87
  i0.ɵɵadvance(3);
@@ -88,14 +98,15 @@ function UserDetailsComponent_table_1_tr_17_Template(rf, ctx) { if (rf & 1) {
88
98
  i0.ɵɵtemplate(7, UserDetailsComponent_table_1_tr_17_div_7_Template, 3, 3, "div", 3);
89
99
  i0.ɵɵtemplate(8, UserDetailsComponent_table_1_tr_17_div_8_Template, 3, 3, "div", 3);
90
100
  i0.ɵɵtemplate(9, UserDetailsComponent_table_1_tr_17_div_9_Template, 3, 3, "div", 3);
101
+ i0.ɵɵtemplate(10, UserDetailsComponent_table_1_tr_17_div_10_Template, 3, 3, "div", 14);
91
102
  i0.ɵɵelementEnd();
92
- i0.ɵɵelementStart(10, "td", 12);
93
- i0.ɵɵtemplate(11, UserDetailsComponent_table_1_tr_17_a_11_Template, 6, 7, "a", 14);
103
+ i0.ɵɵelementStart(11, "td", 12);
104
+ i0.ɵɵtemplate(12, UserDetailsComponent_table_1_tr_17_a_12_Template, 6, 7, "a", 15);
94
105
  i0.ɵɵelementEnd()();
95
106
  } if (rf & 2) {
96
107
  const ctx_r5 = i0.ɵɵnextContext(2);
97
108
  i0.ɵɵadvance(2);
98
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 7, "Permissions"));
109
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 8, "Permissions"));
99
110
  i0.ɵɵadvance(3);
100
111
  i0.ɵɵproperty("ngIf", ctx_r5.user.manageOrganisations === "Yes");
101
112
  i0.ɵɵadvance(1);
@@ -106,6 +117,8 @@ function UserDetailsComponent_table_1_tr_17_Template(rf, ctx) { if (rf & 1) {
106
117
  i0.ɵɵproperty("ngIf", ctx_r5.userHasRole("pui-caa"));
107
118
  i0.ɵɵadvance(1);
108
119
  i0.ɵɵproperty("ngIf", ctx_r5.userHasRole("pui-finance-manager"));
120
+ i0.ɵɵadvance(1);
121
+ i0.ɵɵproperty("ngForOf", ctx_r5.enabledAccessTypes);
109
122
  i0.ɵɵadvance(2);
110
123
  i0.ɵɵproperty("ngIf", ctx_r5.editPermissionRouterLink && ctx_r5.showEditLink);
111
124
  } }
@@ -129,7 +142,7 @@ function UserDetailsComponent_table_1_Template(rf, ctx) { if (rf & 1) {
129
142
  i0.ɵɵelementEnd();
130
143
  i0.ɵɵelement(16, "td", 12);
131
144
  i0.ɵɵelementEnd();
132
- i0.ɵɵtemplate(17, UserDetailsComponent_table_1_tr_17_Template, 12, 9, "tr", 13);
145
+ i0.ɵɵtemplate(17, UserDetailsComponent_table_1_tr_17_Template, 13, 10, "tr", 13);
133
146
  i0.ɵɵelementEnd()();
134
147
  } if (rf & 2) {
135
148
  const ctx_r1 = i0.ɵɵnextContext();
@@ -145,9 +158,9 @@ function UserDetailsComponent_table_1_Template(rf, ctx) { if (rf & 1) {
145
158
  i0.ɵɵproperty("ngIf", !ctx_r1.user.resendInvite);
146
159
  } }
147
160
  function UserDetailsComponent_button_2_Template(rf, ctx) { if (rf & 1) {
148
- const _r13 = i0.ɵɵgetCurrentView();
149
- i0.ɵɵelementStart(0, "button", 17);
150
- i0.ɵɵlistener("click", function UserDetailsComponent_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.suspendUser(ctx_r12.user)); });
161
+ const _r15 = i0.ɵɵgetCurrentView();
162
+ i0.ɵɵelementStart(0, "button", 18);
163
+ i0.ɵɵlistener("click", function UserDetailsComponent_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.suspendUser(ctx_r14.user)); });
151
164
  i0.ɵɵtext(1);
152
165
  i0.ɵɵpipe(2, "rpxTranslate");
153
166
  i0.ɵɵelementEnd();
@@ -156,8 +169,8 @@ function UserDetailsComponent_button_2_Template(rf, ctx) { if (rf & 1) {
156
169
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Suspend account"), "\n");
157
170
  } }
158
171
  function UserDetailsComponent_div_3_Template(rf, ctx) { if (rf & 1) {
159
- const _r15 = i0.ɵɵgetCurrentView();
160
- i0.ɵɵelementStart(0, "div")(1, "div", 18)(2, "p");
172
+ const _r17 = i0.ɵɵgetCurrentView();
173
+ i0.ɵɵelementStart(0, "div")(1, "div", 19)(2, "p");
161
174
  i0.ɵɵtext(3);
162
175
  i0.ɵɵpipe(4, "rpxTranslate");
163
176
  i0.ɵɵelementEnd();
@@ -169,8 +182,8 @@ function UserDetailsComponent_div_3_Template(rf, ctx) { if (rf & 1) {
169
182
  i0.ɵɵtext(9);
170
183
  i0.ɵɵpipe(10, "rpxTranslate");
171
184
  i0.ɵɵelementEnd()();
172
- i0.ɵɵelementStart(11, "a", 19);
173
- i0.ɵɵlistener("click", function UserDetailsComponent_div_3_Template_a_click_11_listener() { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.reinviteClick(ctx_r14.user)); });
185
+ i0.ɵɵelementStart(11, "a", 20);
186
+ i0.ɵɵlistener("click", function UserDetailsComponent_div_3_Template_a_click_11_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.reinviteClick(ctx_r16.user)); });
174
187
  i0.ɵɵtext(12);
175
188
  i0.ɵɵpipe(13, "rpxTranslate");
176
189
  i0.ɵɵelementEnd()();
@@ -185,7 +198,7 @@ function UserDetailsComponent_div_3_Template(rf, ctx) { if (rf & 1) {
185
198
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "Resend invitation"), " ");
186
199
  } }
187
200
  function UserDetailsComponent_p_4_Template(rf, ctx) { if (rf & 1) {
188
- i0.ɵɵelementStart(0, "p", 20)(1, "a", 21);
201
+ i0.ɵɵelementStart(0, "p", 21)(1, "a", 22);
189
202
  i0.ɵɵtext(2);
190
203
  i0.ɵɵpipe(3, "rpxTranslate");
191
204
  i0.ɵɵelementEnd();
@@ -203,6 +216,7 @@ function UserDetailsComponent_p_4_Template(rf, ctx) { if (rf & 1) {
203
216
  } }
204
217
  export class UserDetailsComponent {
205
218
  constructor() {
219
+ this.enabledAccessTypes = [];
206
220
  this.showEditLink = false;
207
221
  this.showHelpLink = false;
208
222
  this.suspendUserEvent = new EventEmitter();
@@ -223,7 +237,7 @@ export class UserDetailsComponent {
223
237
  }
224
238
  }
225
239
  UserDetailsComponent.ɵfac = function UserDetailsComponent_Factory(t) { return new (t || UserDetailsComponent)(); };
226
- UserDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserDetailsComponent, selectors: [["xuilib-user-details"]], inputs: { user: "user", editPermissionRouterLink: "editPermissionRouterLink", warningTitle: "warningTitle", showEditLink: "showEditLink", showHelpLink: "showHelpLink", suspendHelpLink: "suspendHelpLink", showSuspendUserButton: "showSuspendUserButton" }, outputs: { suspendUserEvent: "suspendUserEvent", reinvite: "reinvite" }, decls: 5, vars: 5, consts: [["class", "govuk-warning-text", 4, "ngIf"], ["class", "govuk-table", "role", "presentation", 4, "ngIf"], ["class", "govuk-button govuk-button--warning", 3, "click", 4, "ngIf"], [4, "ngIf"], ["class", "govuk-body", 4, "ngIf"], [1, "govuk-warning-text"], [1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], ["role", "presentation", 1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header"], [1, "govuk-table__cell"], ["class", "govuk-table__row", 4, "ngIf"], ["role", "link", 3, "routerLink", 4, "ngIf"], ["role", "link", 3, "routerLink"], [1, "govuk-visually-hidden"], [1, "govuk-button", "govuk-button--warning", 3, "click"], [1, "govuk-inset-text"], ["role", "button", "draggable", "false", "id", "resend-invite-button", 1, "govuk-button", 3, "click"], [1, "govuk-body"], ["target", "_blank", 3, "routerLink"]], template: function UserDetailsComponent_Template(rf, ctx) { if (rf & 1) {
240
+ UserDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserDetailsComponent, selectors: [["xuilib-user-details"]], inputs: { user: "user", enabledAccessTypes: "enabledAccessTypes", editPermissionRouterLink: "editPermissionRouterLink", warningTitle: "warningTitle", showEditLink: "showEditLink", showHelpLink: "showHelpLink", suspendHelpLink: "suspendHelpLink", showSuspendUserButton: "showSuspendUserButton" }, outputs: { suspendUserEvent: "suspendUserEvent", reinvite: "reinvite" }, decls: 5, vars: 5, consts: [["class", "govuk-warning-text", 4, "ngIf"], ["class", "govuk-table", "role", "presentation", 4, "ngIf"], ["class", "govuk-button govuk-button--warning", 3, "click", 4, "ngIf"], [4, "ngIf"], ["class", "govuk-body", 4, "ngIf"], [1, "govuk-warning-text"], [1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], ["role", "presentation", 1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header"], [1, "govuk-table__cell"], ["class", "govuk-table__row", 4, "ngIf"], [4, "ngFor", "ngForOf"], ["role", "link", 3, "routerLink", 4, "ngIf"], ["role", "link", 3, "routerLink"], [1, "govuk-visually-hidden"], [1, "govuk-button", "govuk-button--warning", 3, "click"], [1, "govuk-inset-text"], ["role", "button", "draggable", "false", "id", "resend-invite-button", 1, "govuk-button", 3, "click"], [1, "govuk-body"], ["target", "_blank", 3, "routerLink"]], template: function UserDetailsComponent_Template(rf, ctx) { if (rf & 1) {
227
241
  i0.ɵɵtemplate(0, UserDetailsComponent_div_0_Template, 6, 3, "div", 0);
228
242
  i0.ɵɵtemplate(1, UserDetailsComponent_table_1_Template, 18, 11, "table", 1);
229
243
  i0.ɵɵtemplate(2, UserDetailsComponent_button_2_Template, 3, 3, "button", 2);
@@ -239,12 +253,14 @@ UserDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserDe
239
253
  i0.ɵɵproperty("ngIf", ctx.user && ctx.user.resendInvite);
240
254
  i0.ɵɵadvance(1);
241
255
  i0.ɵɵproperty("ngIf", ctx.showHelpLink && ctx.suspendHelpLink);
242
- } }, dependencies: [i1.NgIf, i2.RouterLink, i3.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block}"] });
256
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.RouterLink, i3.RpxTranslatePipe], styles: ["[_nghost-%COMP%]{display:block}"] });
243
257
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserDetailsComponent, [{
244
258
  type: Component,
245
- args: [{ selector: 'xuilib-user-details', template: "<div class=\"govuk-warning-text\" *ngIf=\"warningTitle && warningTitle !== ''\">\n<span class=\"govuk-warning-text__icon\">!</span>\n<strong class=\"govuk-warning-text__text\">\n {{ warningTitle | rpxTranslate}}\n</strong>\n</div>\n<table class=\"govuk-table\" *ngIf=\"user\" role=\"presentation\">\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Name' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">{{user.fullName | rpxTranslate}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Email address' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">{{user.email}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"!user.resendInvite\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Permissions' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"user.manageOrganisations === 'Yes'\">{{'Manage organisations' | rpxTranslate}}</div>\n <div *ngIf=\"user.manageUsers === 'Yes'\">{{'Manage users' | rpxTranslate}}</div>\n <div *ngIf=\"user.manageCases === 'Yes'\">{{'Manage cases' | rpxTranslate}}</div>\n <div *ngIf=\"userHasRole('pui-caa')\">{{'Case access administrator' | rpxTranslate}}</div>\n <div *ngIf=\"userHasRole('pui-finance-manager')\">{{'Manage fee accounts' | rpxTranslate}}</div>\n </td>\n <td class=\"govuk-table__cell\"><a *ngIf=\"editPermissionRouterLink && showEditLink\" role=\"link\" [routerLink]=\"editPermissionRouterLink\">{{'Change' | rpxTranslate}} <span class=\"govuk-visually-hidden\">{{'roles' | rpxTranslate}}</span></a></td>\n </tr>\n </tbody>\n</table>\n<button *ngIf=\"showSuspendUserButton\" class=\"govuk-button govuk-button--warning\" (click)=\"suspendUser(user)\">\n {{'Suspend account' | rpxTranslate}}\n</button>\n<div *ngIf=\"user && user.resendInvite\">\n <div class=\"govuk-inset-text\">\n <p>{{'This user has already been invited but has not activated their account.' | rpxTranslate}}</p>\n <p>{{'If you resend an invitation, they\\'ll receive an email from HM Courts and Tribunals to finish setting up their account.' | rpxTranslate}}</p>\n <p>{{'You can\\'t invite the same user more than once an hour.' | rpxTranslate}}</p>\n </div>\n <a role=\"button\" draggable=\"false\" class=\"govuk-button\" (click)=\"reinviteClick(user)\" id=\"resend-invite-button\">\n {{'Resend invitation' | rpxTranslate}}\n </a>\n</div>\n<p class=\"govuk-body\" *ngIf=\"showHelpLink && suspendHelpLink\"><a [routerLink]=\"suspendHelpLink\" target=\"_blank\">{{'Get help' | rpxTranslate}}</a> {{'to reactivate this account.' | rpxTranslate}}</p>\n", styles: [":host{display:block}\n"] }]
259
+ args: [{ selector: 'xuilib-user-details', template: "<div class=\"govuk-warning-text\" *ngIf=\"warningTitle && warningTitle !== ''\">\n<span class=\"govuk-warning-text__icon\">!</span>\n<strong class=\"govuk-warning-text__text\">\n {{ warningTitle | rpxTranslate}}\n</strong>\n</div>\n<table class=\"govuk-table\" *ngIf=\"user\" role=\"presentation\">\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Name' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">{{user.fullName | rpxTranslate}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Email address' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">{{user.email}}</td>\n <td class=\"govuk-table__cell\"></td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"!user.resendInvite\">\n <th class=\"govuk-table__header\" scope=\"row\">{{'Permissions' | rpxTranslate}}</th>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"user.manageOrganisations === 'Yes'\">{{'Manage organisations' | rpxTranslate}}</div>\n <div *ngIf=\"user.manageUsers === 'Yes'\">{{'Manage users' | rpxTranslate}}</div>\n <div *ngIf=\"user.manageCases === 'Yes'\">{{'Manage cases' | rpxTranslate}}</div>\n <div *ngIf=\"userHasRole('pui-caa')\">{{'Case access administrator' | rpxTranslate}}</div>\n <div *ngIf=\"userHasRole('pui-finance-manager')\">{{'Manage fee accounts' | rpxTranslate}}</div>\n <div *ngFor=\"let accesstype of enabledAccessTypes\">{{ accesstype | rpxTranslate}}</div> \n </td>\n <td class=\"govuk-table__cell\"><a *ngIf=\"editPermissionRouterLink && showEditLink\" role=\"link\" [routerLink]=\"editPermissionRouterLink\">{{'Change' | rpxTranslate}} <span class=\"govuk-visually-hidden\">{{'roles' | rpxTranslate}}</span></a></td>\n </tr>\n </tbody>\n</table>\n<button *ngIf=\"showSuspendUserButton\" class=\"govuk-button govuk-button--warning\" (click)=\"suspendUser(user)\">\n {{'Suspend account' | rpxTranslate}}\n</button>\n<div *ngIf=\"user && user.resendInvite\">\n <div class=\"govuk-inset-text\">\n <p>{{'This user has already been invited but has not activated their account.' | rpxTranslate}}</p>\n <p>{{'If you resend an invitation, they\\'ll receive an email from HM Courts and Tribunals to finish setting up their account.' | rpxTranslate}}</p>\n <p>{{'You can\\'t invite the same user more than once an hour.' | rpxTranslate}}</p>\n </div>\n <a role=\"button\" draggable=\"false\" class=\"govuk-button\" (click)=\"reinviteClick(user)\" id=\"resend-invite-button\">\n {{'Resend invitation' | rpxTranslate}}\n </a>\n</div>\n<p class=\"govuk-body\" *ngIf=\"showHelpLink && suspendHelpLink\"><a [routerLink]=\"suspendHelpLink\" target=\"_blank\">{{'Get help' | rpxTranslate}}</a> {{'to reactivate this account.' | rpxTranslate}}</p>\n", styles: [":host{display:block}\n"] }]
246
260
  }], null, { user: [{
247
261
  type: Input
262
+ }], enabledAccessTypes: [{
263
+ type: Input
248
264
  }], editPermissionRouterLink: [{
249
265
  type: Input
250
266
  }], warningTitle: [{
@@ -262,4 +278,4 @@ UserDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserDe
262
278
  }], reinvite: [{
263
279
  type: Output
264
280
  }] }); })();
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1kZXRhaWxzL3VzZXItZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZGV0YWlscy91c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0lDQXZFLDhCQUE0RSxjQUFBO0lBQ3JDLGlCQUFDO0lBQUEsaUJBQU87SUFDL0MsaUNBQXlDO0lBQ3JDLFlBQ0o7O0lBQUEsaUJBQVMsRUFBQTs7O0lBREwsZUFDSjtJQURJLDJFQUNKOzs7SUFpQlUsMkJBQWdEO0lBQUEsWUFBeUM7O0lBQUEsaUJBQU07O0lBQS9DLGVBQXlDO0lBQXpDLGtFQUF5Qzs7O0lBQ3pGLDJCQUF3QztJQUFBLFlBQWlDOztJQUFBLGlCQUFNOztJQUF2QyxlQUFpQztJQUFqQywwREFBaUM7OztJQUN6RSwyQkFBd0M7SUFBQSxZQUFpQzs7SUFBQSxpQkFBTTs7SUFBdkMsZUFBaUM7SUFBakMsMERBQWlDOzs7SUFDekUsMkJBQW9DO0lBQUEsWUFBOEM7O0lBQUEsaUJBQU07O0lBQXBELGVBQThDO0lBQTlDLHVFQUE4Qzs7O0lBQ2xGLDJCQUFnRDtJQUFBLFlBQXdDOztJQUFBLGlCQUFNOztJQUE5QyxlQUF3QztJQUF4QyxpRUFBd0M7OztJQUU1RCw2QkFBd0c7SUFBQSxZQUE0Qjs7SUFBQSxnQ0FBb0M7SUFBQSxZQUEwQjs7SUFBQSxpQkFBTyxFQUFBOzs7SUFBekksNkRBQXVDO0lBQUMsZUFBNEI7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O1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzt3RkF4QlEsb0JBQW9CO3VFQUFwQixvQkFBb0I7UUNSakMscUVBS007UUFDTiwyRUF3QlE7UUFDUiwyRUFFUztRQUNULHVFQVNNO1FBQ04saUVBQXNNOztRQTVDckssa0VBQXlDO1FBTTlDLGVBQVU7UUFBViwrQkFBVTtRQXlCN0IsZUFBMkI7UUFBM0IsZ0RBQTJCO1FBRzlCLGVBQStCO1FBQS9CLHdEQUErQjtRQVVkLGVBQXFDO1FBQXJDLDhEQUFxQzs7dUZEcEMvQyxvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDSSxxQkFBcUI7Z0JBS2YsSUFBSTtrQkFBbkIsS0FBSztZQUNVLHdCQUF3QjtrQkFBdkMsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGVBQWU7a0JBQTlCLEtBQUs7WUFDVyxnQkFBZ0I7a0JBQWhDLE1BQU07WUFDUyxxQkFBcUI7a0JBQXBDLEtBQUs7WUFDVyxRQUFRO2tCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3h1aWxpYi11c2VyLWRldGFpbHMnLFxuICAgIHN0eWxlVXJsczogWycuL3VzZXItZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJEZXRhaWxzQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgdXNlcjogVXNlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgZWRpdFBlcm1pc3Npb25Sb3V0ZXJMaW5rOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHdhcm5pbmdUaXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93RWRpdExpbms6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0hlbHBMaW5rOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHN1c3BlbmRIZWxwTGluazogc3RyaW5nO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgc3VzcGVuZFVzZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlcj4oKTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1N1c3BlbmRVc2VyQnV0dG9uID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWludml0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlcj4oKTtcblxuICAgIHB1YmxpYyByZWludml0ZUNsaWNrKHVzZXI6IFVzZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWludml0ZS5lbWl0KHVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXNwZW5kVXNlcihzdXNwZW5kVXNlcjogVXNlcik6IHZvaWQge1xuICAgICAgdGhpcy5zdXNwZW5kVXNlckV2ZW50LmVtaXQoc3VzcGVuZFVzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VySGFzUm9sZSh0aGVSb2xlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIGlmICh0aGlzLnVzZXIgJiYgdGhpcy51c2VyLnJvbGVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXIucm9sZXMuaW5jbHVkZXModGhlUm9sZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiICpuZ0lmPVwid2FybmluZ1RpdGxlICYmIHdhcm5pbmdUaXRsZSAhPT0gJydcIj5cbjxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19pY29uXCI+ITwvc3Bhbj5cbjxzdHJvbmcgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX3RleHRcIj5cbiAgICB7eyB3YXJuaW5nVGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuPC9zdHJvbmc+XG48L2Rpdj5cbjx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCIgKm5nSWY9XCJ1c2VyXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwicm93XCI+e3snTmFtZScgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t1c2VyLmZ1bGxOYW1lIHwgcnB4VHJhbnNsYXRlfX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPjwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cInJvd1wiPnt7J0VtYWlsIGFkZHJlc3MnIHwgcnB4VHJhbnNsYXRlfX08L3RoPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7dXNlci5lbWFpbH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj48L3RkPlxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiIXVzZXIucmVzZW5kSW52aXRlXCI+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cInJvd1wiPnt7J1Blcm1pc3Npb25zJyB8IHJweFRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlci5tYW5hZ2VPcmdhbmlzYXRpb25zID09PSAnWWVzJ1wiPnt7J01hbmFnZSBvcmdhbmlzYXRpb25zJyB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXIubWFuYWdlVXNlcnMgPT09ICdZZXMnXCI+e3snTWFuYWdlIHVzZXJzJyB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXIubWFuYWdlQ2FzZXMgPT09ICdZZXMnXCI+e3snTWFuYWdlIGNhc2VzJyB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJIYXNSb2xlKCdwdWktY2FhJylcIj57eydDYXNlIGFjY2VzcyBhZG1pbmlzdHJhdG9yJyB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJIYXNSb2xlKCdwdWktZmluYW5jZS1tYW5hZ2VyJylcIj57eydNYW5hZ2UgZmVlIGFjY291bnRzJyB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+PGEgKm5nSWY9XCJlZGl0UGVybWlzc2lvblJvdXRlckxpbmsgJiYgc2hvd0VkaXRMaW5rXCIgcm9sZT1cImxpbmtcIiBbcm91dGVyTGlua109XCJlZGl0UGVybWlzc2lvblJvdXRlckxpbmtcIj57eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX0gPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydyb2xlcycgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj48L2E+PC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cbjxidXR0b24gKm5nSWY9XCJzaG93U3VzcGVuZFVzZXJCdXR0b25cIiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXdhcm5pbmdcIiAoY2xpY2spPVwic3VzcGVuZFVzZXIodXNlcilcIj5cbiAge3snU3VzcGVuZCBhY2NvdW50JyB8IHJweFRyYW5zbGF0ZX19XG48L2J1dHRvbj5cbjxkaXYgKm5nSWY9XCJ1c2VyICYmIHVzZXIucmVzZW5kSW52aXRlXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1pbnNldC10ZXh0XCI+XG4gICAgPHA+e3snVGhpcyB1c2VyIGhhcyBhbHJlYWR5IGJlZW4gaW52aXRlZCBidXQgaGFzIG5vdCBhY3RpdmF0ZWQgdGhlaXIgYWNjb3VudC4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgPHA+e3snSWYgeW91IHJlc2VuZCBhbiBpbnZpdGF0aW9uLCB0aGV5XFwnbGwgcmVjZWl2ZSBhbiBlbWFpbCBmcm9tIEhNIENvdXJ0cyBhbmQgVHJpYnVuYWxzIHRvIGZpbmlzaCBzZXR0aW5nIHVwIHRoZWlyIGFjY291bnQuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgIDxwPnt7J1lvdSBjYW5cXCd0IGludml0ZSB0aGUgc2FtZSB1c2VyIG1vcmUgdGhhbiBvbmNlIGFuIGhvdXIuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8L2Rpdj5cbiAgPGEgcm9sZT1cImJ1dHRvblwiIGRyYWdnYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwicmVpbnZpdGVDbGljayh1c2VyKVwiIGlkPVwicmVzZW5kLWludml0ZS1idXR0b25cIj5cbiAgICAgIHt7J1Jlc2VuZCBpbnZpdGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvYT5cbjwvZGl2PlxuPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKm5nSWY9XCJzaG93SGVscExpbmsgJiYgc3VzcGVuZEhlbHBMaW5rXCI+PGEgW3JvdXRlckxpbmtdPVwic3VzcGVuZEhlbHBMaW5rXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3snR2V0IGhlbHAnIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7J3RvIHJlYWN0aXZhdGUgdGhpcyBhY2NvdW50LicgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiJdfQ==
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvdXNlci1kZXRhaWxzL3VzZXItZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZGV0YWlscy91c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0lDQXZFLDhCQUE0RSxjQUFBO0lBQ3JDLGlCQUFDO0lBQUEsaUJBQU87SUFDL0MsaUNBQXlDO0lBQ3JDLFlBQ0o7O0lBQUEsaUJBQVMsRUFBQTs7O0lBREwsZUFDSjtJQURJLDJFQUNKOzs7SUFpQlUsMkJBQWdEO0lBQUEsWUFBeUM7O0lBQUEsaUJBQU07O0lBQS9DLGVBQXlDO0lBQXpDLGtFQUF5Qzs7O0lBQ3pGLDJCQUF3QztJQUFBLFlBQWlDOztJQUFBLGlCQUFNOztJQUF2QyxlQUFpQztJQUFqQywwREFBaUM7OztJQUN6RSwyQkFBd0M7SUFBQSxZQUFpQzs7SUFBQSxpQkFBTTs7SUFBdkMsZUFBaUM7SUFBakMsMERBQWlDOzs7SUFDekUsMkJBQW9DO0lBQUEsWUFBOEM7O0lBQUEsaUJBQU07O0lBQXBELGVBQThDO0lBQTlDLHVFQUE4Qzs7O0lBQ2xGLDJCQUFnRDtJQUFBLFlBQXdDOztJQUFBLGlCQUFNOztJQUE5QyxlQUF3QztJQUF4QyxpRUFBd0M7OztJQUN4RiwyQkFBbUQ7SUFBQSxZQUE4Qjs7SUFBQSxpQkFBTTs7O0lBQXBDLGVBQThCO0lBQTlCLDBEQUE4Qjs7O0lBRXJELDZCQUF3RztJQUFBLFlBQTRCOztJ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UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzt3RkF6QlEsb0JBQW9CO3VFQUFwQixvQkFBb0I7UUNSakMscUVBS007UUFDTiwyRUF5QlE7UUFDUiwyRUFFUztRQUNULHVFQVNNO1FBQ04saUVBQXNNOztRQTdDckssa0VBQXlDO1FBTTlDLGVBQVU7UUFBViwrQkFBVTtRQTBCN0IsZUFBMkI7UUFBM0IsZ0RBQTJCO1FBRzlCLGVBQStCO1FBQS9CLHdEQUErQjtRQVVkLGVBQXFDO1FBQXJDLDhEQUFxQzs7dUZEckMvQyxvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDSSxxQkFBcUI7Z0JBS2YsSUFBSTtrQkFBbkIsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLHdCQUF3QjtrQkFBdkMsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGVBQWU7a0JBQTlCLEtBQUs7WUFDVyxnQkFBZ0I7a0JBQWhDLE1BQU07WUFDUyxxQkFBcUI7a0JBQXBDLEtBQUs7WUFDVyxRQUFRO2tCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3h1aWxpYi11c2VyLWRldGFpbHMnLFxuICAgIHN0eWxlVXJsczogWycuL3VzZXItZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJEZXRhaWxzQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgdXNlcjogVXNlcjtcbiAgICBASW5wdXQoKSBwdWJsaWMgZW5hYmxlZEFjY2Vzc1R5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBlZGl0UGVybWlzc2lvblJvdXRlckxpbms6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgd2FybmluZ1RpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dFZGl0TGluazogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93SGVscExpbms6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc3VzcGVuZEhlbHBMaW5rOiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBzdXNwZW5kVXNlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyPigpO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93U3VzcGVuZFVzZXJCdXR0b24gPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgcHVibGljIHJlaW52aXRlID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyPigpO1xuXG4gICAgcHVibGljIHJlaW52aXRlQ2xpY2sodXNlcjogVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJlaW52aXRlLmVtaXQodXNlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHN1c3BlbmRVc2VyKHN1c3BlbmRVc2VyOiBVc2VyKTogdm9pZCB7XG4gICAgICB0aGlzLnN1c3BlbmRVc2VyRXZlbnQuZW1pdChzdXNwZW5kVXNlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHVzZXJIYXNSb2xlKHRoZVJvbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHRoaXMudXNlciAmJiB0aGlzLnVzZXIucm9sZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlci5yb2xlcy5pbmNsdWRlcyh0aGVSb2xlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0XCIgKm5nSWY9XCJ3YXJuaW5nVGl0bGUgJiYgd2FybmluZ1RpdGxlICE9PSAnJ1wiPlxuPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2ljb25cIj4hPC9zcGFuPlxuPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgIHt7IHdhcm5pbmdUaXRsZSB8IHJweFRyYW5zbGF0ZX19XG48L3N0cm9uZz5cbjwvZGl2PlxuPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIiAqbmdJZj1cInVzZXJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJyb3dcIj57eydOYW1lJyB8IHJweFRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3VzZXIuZnVsbE5hbWUgfCBycHhUcmFuc2xhdGV9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+PC90ZD5cbiAgICA8L3RyPlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwicm93XCI+e3snRW1haWwgYWRkcmVzcycgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3t1c2VyLmVtYWlsfX08L3RkPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPjwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCIhdXNlci5yZXNlbmRJbnZpdGVcIj5cbiAgICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwicm93XCI+e3snUGVybWlzc2lvbnMnIHwgcnB4VHJhbnNsYXRlfX08L3RoPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyLm1hbmFnZU9yZ2FuaXNhdGlvbnMgPT09ICdZZXMnXCI+e3snTWFuYWdlIG9yZ2FuaXNhdGlvbnMnIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlci5tYW5hZ2VVc2VycyA9PT0gJ1llcydcIj57eydNYW5hZ2UgdXNlcnMnIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlci5tYW5hZ2VDYXNlcyA9PT0gJ1llcydcIj57eydNYW5hZ2UgY2FzZXMnIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckhhc1JvbGUoJ3B1aS1jYWEnKVwiPnt7J0Nhc2UgYWNjZXNzIGFkbWluaXN0cmF0b3InIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlckhhc1JvbGUoJ3B1aS1maW5hbmNlLW1hbmFnZXInKVwiPnt7J01hbmFnZSBmZWUgYWNjb3VudHMnIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY2Nlc3N0eXBlIG9mIGVuYWJsZWRBY2Nlc3NUeXBlc1wiPnt7IGFjY2Vzc3R5cGUgfCBycHhUcmFuc2xhdGV9fTwvZGl2PiBcbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj48YSAqbmdJZj1cImVkaXRQZXJtaXNzaW9uUm91dGVyTGluayAmJiBzaG93RWRpdExpbmtcIiByb2xlPVwibGlua1wiIFtyb3V0ZXJMaW5rXT1cImVkaXRQZXJtaXNzaW9uUm91dGVyTGlua1wiPnt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fSA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J3JvbGVzJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPjwvYT48L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuPGJ1dHRvbiAqbmdJZj1cInNob3dTdXNwZW5kVXNlckJ1dHRvblwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0td2FybmluZ1wiIChjbGljayk9XCJzdXNwZW5kVXNlcih1c2VyKVwiPlxuICB7eydTdXNwZW5kIGFjY291bnQnIHwgcnB4VHJhbnNsYXRlfX1cbjwvYnV0dG9uPlxuPGRpdiAqbmdJZj1cInVzZXIgJiYgdXNlci5yZXNlbmRJbnZpdGVcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWluc2V0LXRleHRcIj5cbiAgICA8cD57eydUaGlzIHVzZXIgaGFzIGFscmVhZHkgYmVlbiBpbnZpdGVkIGJ1dCBoYXMgbm90IGFjdGl2YXRlZCB0aGVpciBhY2NvdW50LicgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD57eydJZiB5b3UgcmVzZW5kIGFuIGludml0YXRpb24sIHRoZXlcXCdsbCByZWNlaXZlIGFuIGVtYWlsIGZyb20gSE0gQ291cnRzIGFuZCBUcmlidW5hbHMgdG8gZmluaXNoIHNldHRpbmcgdXAgdGhlaXIgYWNjb3VudC4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgPHA+e3snWW91IGNhblxcJ3QgaW52aXRlIHRoZSBzYW1lIHVzZXIgbW9yZSB0aGFuIG9uY2UgYW4gaG91ci4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gIDwvZGl2PlxuICA8YSByb2xlPVwiYnV0dG9uXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIChjbGljayk9XCJyZWludml0ZUNsaWNrKHVzZXIpXCIgaWQ9XCJyZXNlbmQtaW52aXRlLWJ1dHRvblwiPlxuICAgICAge3snUmVzZW5kIGludml0YXRpb24nIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9hPlxuPC9kaXY+XG48cCBjbGFzcz1cImdvdnVrLWJvZHlcIiAqbmdJZj1cInNob3dIZWxwTGluayAmJiBzdXNwZW5kSGVscExpbmtcIj48YSBbcm91dGVyTGlua109XCJzdXNwZW5kSGVscExpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIj57eydHZXQgaGVscCcgfCBycHhUcmFuc2xhdGV9fTwvYT4ge3sndG8gcmVhY3RpdmF0ZSB0aGlzIGFjY291bnQuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuIl19