ngx-st-sap-bp 18.0.2 → 18.0.4

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.
@@ -77,7 +77,7 @@ export class SapBpCreateAddressComponent {
77
77
  countryName: this.data.address.countryName,
78
78
  streetNo: this.data.address.streetNo,
79
79
  building: this.data.address.building,
80
- industryCode: this.data.address.industryCode || this.data.baseIndustryCode,
80
+ industryCode: this.data.address.industryCode || this.data.baseIndustryCode || null,
81
81
  industryName: this.data.address.industryName,
82
82
  status: this.data.address.status,
83
83
  salesPerson1: this.data.address.salesPerson1 || '',
@@ -192,8 +192,19 @@ export class SapBpCreateAddressComponent {
192
192
  loadTerritoriesList(refresh) {
193
193
  this.sapBpService.getAddressTerritory(refresh).subscribe(res => {
194
194
  this.territoriesList.set(res);
195
+ this.validateAndFixTerritory();
195
196
  });
196
197
  }
198
+ validateAndFixTerritory() {
199
+ const initialTerritory = this.data?.address?.territory;
200
+ if (initialTerritory) {
201
+ const foundTerritory = this.territoriesList().find(territory => territory.territoryId === initialTerritory);
202
+ if (!foundTerritory) {
203
+ this.form.controls.territory.setValue('');
204
+ this.snackBar.warning(this.translateService.instant('sapAdminBp.territoryNotFound'));
205
+ }
206
+ }
207
+ }
197
208
  loadStates(resfresh = false, setInitData = false) {
198
209
  const country = this.form.controls.countryCode.value;
199
210
  this.sapBpService.getAddrState(resfresh, country).subscribe(res => {
@@ -223,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
223
234
  type: Component,
224
235
  args: [{ selector: 'app-sap-bp-create-address', template: "<h1 mat-dialog-title>{{ 'sapAdminBp.address' | translate }}</h1>\r\n<div mat-dialog-content>\r\n @if (form) {\r\n <form [formGroup]=\"form\" id=\"address-create-form\" (ngSubmit)=\"save()\">\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.address' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"address\"\r\n required\r\n [maxLength]=\"50\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.address2' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"address2\"\r\n [maxLength]=\"50\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.address3' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"address3\"\r\n [maxLength]=\"50\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.street' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"street\"\r\n required\r\n [maxLength]=\"100\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.block' | translate }}</mat-label>\r\n <input type=\"text\" matInput formControlName=\"block\" [maxLength]=\"100\" />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.city' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"city\"\r\n required\r\n [maxLength]=\"100\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.zipCode' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"zipCode\"\r\n required\r\n [maxLength]=\"20\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.county' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"county\"\r\n [maxLength]=\"100\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.streetNo' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"streetNo\"\r\n [maxLength]=\"100\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.building' | translate }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n formControlName=\"building\"\r\n [maxLength]=\"256000\"\r\n />\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.territory' | translate }}</mat-label>\r\n <mat-select formControlName=\"territory\" [required]=\"!data.address\">\r\n @for (territory of territoriesList(); track territory.territoryId) {\r\n <mat-option [value]=\"territory.territoryId\">{{ territory.territoryName }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.industryCode' | translate }}</mat-label>\r\n <mat-select formControlName=\"industryCode\" [required]=\"!data.address\">\r\n <mat-option [value]=\"''\">{{\r\n 'sapAdminBp.empty' | translate\r\n }}</mat-option>\r\n @for (industry of industryList(); track industry) {\r\n <mat-option [value]=\"industry.id\">{{ industry.name }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n @if (\r\n data.userSettings.bpEditSalesPersonOnAddress && data.addressType === 'S'\r\n ) {\r\n <div class=\"row\">\r\n <mat-form-field class=\"col\" style=\"padding-left: 0 !important\">\r\n <mat-label>{{ 'sapAdminBp.salesPerson1' | translate }}</mat-label>\r\n <mat-select formControlName=\"salesPerson1\">\r\n @for (salesEmployee of salesEmployeeList(); track salesEmployee) {\r\n <mat-option [value]=\"salesEmployee.name\">{{\r\n salesEmployee.name\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'sapAdminBp.refreshFromSap' | translate\"\r\n (click)=\"loadSalesEmployee(true)\"\r\n [disabled]=\"refreshingDataFromSap()\"\r\n >\r\n <mat-icon>refresh</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (\r\n data.userSettings.bpEditSalesPersonOnAddress && data.addressType === 'S'\r\n ) {\r\n <div class=\"row\">\r\n <mat-form-field class=\"col\" style=\"padding-left: 0 !important\">\r\n <mat-label>{{ 'sapAdminBp.salesPerson2' | translate }}</mat-label>\r\n <mat-select formControlName=\"salesPerson2\">\r\n @for (salesEmployee of salesEmployeeList(); track salesEmployee) {\r\n <mat-option [value]=\"salesEmployee.name\">{{\r\n salesEmployee.name\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'sapAdminBp.refreshFromSap' | translate\"\r\n (click)=\"loadSalesEmployee(true)\"\r\n [disabled]=\"refreshingDataFromSap()\"\r\n >\r\n <mat-icon>refresh</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n @if (data.useTaxCode) {\r\n <div class=\"row\">\r\n <mat-form-field class=\"col\" style=\"padding-left: 0 !important\">\r\n <mat-label>{{ 'sapAdminBp.taxCode' | translate }}</mat-label>\r\n <mat-select formControlName=\"taxCode\">\r\n @for (tax of taxesList(); track tax) {\r\n <mat-option [value]=\"tax.code\"\r\n >{{ tax.name }}: {{ tax.rate }}</mat-option\r\n >\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'sapAdminBp.refresh' | translate\"\r\n (click)=\"loadTaxes(true)\"\r\n [disabled]=\"refreshingTax()\"\r\n >\r\n <mat-icon>refresh</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-form-field>\r\n <mat-label>{{ 'sapAdminBp.status' | translate }}</mat-label>\r\n <mat-select formControlName=\"status\">\r\n <mat-option [value]=\"null\">{{\r\n 'sapAdminBp.empty' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'Active'\">{{\r\n 'sapAdminBp.active' | translate\r\n }}</mat-option>\r\n <mat-option [value]=\"'Inactive'\">{{\r\n 'sapAdminBp.inactive' | translate\r\n }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ngx-st-select-table\r\n [initSelected]=\"initSelectedCountry()\"\r\n [initSearchVal]=\"initSearchCountry()\"\r\n [tableData]=\"countryList()\"\r\n [setInitColumns]=\"{\r\n id: ('sapAdminBp.id' | translate),\r\n name: ('sapAdminBp.name' | translate)\r\n }\"\r\n [title]=\"'sapAdminBp.country' | translate\"\r\n [required]=\"true\"\r\n [validError]=\"form.get('countryCode')!.invalid\"\r\n [searchLabel]=\"'sapAdminBp.search' | translate\"\r\n [selectedLabel]=\"'sapAdminBp.selected' | translate\"\r\n (returnRowSelected)=\"countryCodeChanged($event)\"\r\n >\r\n </ngx-st-select-table>\r\n @if (notFoundStates()) {\r\n <div class=\"alert alert-warning\" role=\"alert\">\r\n {{ 'sapAdminBp.notFoundStates' | translate }}\r\n </div>\r\n }\r\n <ngx-st-select-table\r\n [initSelected]=\"initSelectedState()\"\r\n [initSearchVal]=\"initSearchState()\"\r\n [tableData]=\"stateList()\"\r\n [setInitColumns]=\"{\r\n id: ('sapAdminBp.id' | translate),\r\n name: ('sapAdminBp.name' | translate)\r\n }\"\r\n [title]=\"'sapAdminBp.state' | translate\"\r\n [required]=\"false\"\r\n [validError]=\"false\"\r\n [searchLabel]=\"'sapAdminBp.search' | translate\"\r\n [selectedLabel]=\"'sapAdminBp.selected' | translate\"\r\n (returnRowSelected)=\"stateChanged($event)\"\r\n >\r\n </ngx-st-select-table>\r\n </form>\r\n }\r\n</div>\r\n<div class=\"row justify-content-between action-row\" mat-dialog-actions>\r\n <button mat-button (click)=\"cancel()\">\r\n {{ 'sapAdminBp.cancel' | translate }}\r\n </button>\r\n <div class=\"row align-items-center\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"submit\"\r\n form=\"address-create-form\"\r\n >\r\n {{ 'sapAdminBp.save' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n" }]
225
236
  }], ctorParameters: () => [] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWJwLWNyZWF0ZS1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtYnAvc3JjL2xpYi9jb21wb25lbnRzL3NhcC1icC1jcmVhdGUtYWRkcmVzcy9zYXAtYnAtY3JlYXRlLWFkZHJlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXNhcC1icC9zcmMvbGliL2NvbXBvbmVudHMvc2FwLWJwLWNyZWF0ZS1hZGRyZXNzL3NhcC1icC1jcmVhdGUtYWRkcmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBUyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpFLE1BQU0sT0FBTywyQkFBMkI7SUEwRHRDO1FBekRBLFNBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQU01QixDQUFDO1FBQ0YsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQXlDLENBQUEsQ0FBQyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JB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QUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzVDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxZQUFZLENBQ3pDLENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOytHQWhQVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixpRUNyQnhDLHN3U0EyUEE7OzRGRHRPYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2FwLWJwLWFkZHJlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYXAtYnAuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhcEJwQWRkckNvdW50cnlNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkci1jb3VudHJ5Lm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyU3RhdGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkci1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwQWRkcmVzc0RpYWxvZ01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1hZGRyZXNzLWRpYWxvZy5tb2RlbCc7XHJcbmltcG9ydCB7IFN0U25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXN0LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU2FwQnBJbmR1c3RyeU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1pbmR1c3RyeS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwU2FsZXNFbXBsb3llZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1zYWxlcy1lbXBsb3llZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVGF4IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC10YXgubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFVzZXJTZXR0aW5ncyB9IGZyb20gJy4uL3NhcC1icC1iYXNlLWNyZWF0ZS1lZGl0JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTYXBCcEFkZHJlc3NUZXJyaXRvcnlNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkcmVzcy10ZXJyaXRvcnkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2FwLWJwLWNyZWF0ZS1hZGRyZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2FwLWJwLWNyZWF0ZS1hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zYXAtYnAtY3JlYXRlLWFkZHJlc3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhcEJwQ3JlYXRlQWRkcmVzc0NvbXBvbmVudCB7XHJcbiAgZGF0YSA9IGluamVjdChNQVRfRElBTE9HX0RBVEEpIGFzIHtcclxuICAgIGFkZHJlc3M6IFNhcEJwQWRkcmVzc01vZGVsO1xyXG4gICAgYmFzZUluZHVzdHJ5Q29kZTogbnVtYmVyO1xyXG4gICAgYWRkcmVzc1R5cGU6ICdCJyB8ICdTJztcclxuICAgIHVzZVRheENvZGU6IGJvb2xlYW47XHJcbiAgICB1c2VyU2V0dGluZ3M6IFNhcEJwVXNlclNldHRpbmdzO1xyXG4gIH07XHJcbiAgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTYXBCcENyZWF0ZUFkZHJlc3NDb21wb25lbnQ+KTtcclxuICBwcml2YXRlIHNhcEJwU2VydmljZSA9IGluamVjdChTYXBCcFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoU3RTbmFja0JhclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIGZiID0gaW5qZWN0KE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIpO1xyXG5cclxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBhZGRyZXNzOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgYWRkcmVzczI6ICcnLFxyXG4gICAgYWRkcmVzczM6ICcnLFxyXG4gICAgc3RyZWV0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgYmxvY2s6ICcnLFxyXG4gICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHppcENvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBjb3VudHk6ICcnLFxyXG4gICAgdGVycml0b3J5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc3RhdGVDb2RlOiAnJyxcclxuICAgIHN0YXRlTmFtZTogJycsXHJcbiAgICBjb3VudHJ5Q29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNvdW50cnlOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc3RyZWV0Tm86ICcnLFxyXG4gICAgYnVpbGRpbmc6ICcnLFxyXG4gICAgaW5kdXN0cnlDb2RlOiBbPG51bWJlciB8IG51bGw+bnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBpbmR1c3RyeU5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBzdGF0dXM6IDxzdHJpbmcgfCBudWxsPicnLFxyXG4gICAgc2FsZXNQZXJzb24xOiAnJyxcclxuICAgIHNhbGVzUGVyc29uMjogJycsXHJcbiAgICB0YXhDb2RlOiAnJyxcclxuICB9KTtcclxuXHJcbiAgY291bnRyeUxpc3QgPSBzaWduYWw8U2FwQnBBZGRyQ291bnRyeU1vZGVsW10+KFtdKTtcclxuICBzdGF0ZUxpc3QgPSBzaWduYWw8U2FwQnBBZGRyU3RhdGVNb2RlbFtdPihbXSk7XHJcbiAgaW5kdXN0cnlMaXN0ID0gc2lnbmFsPFNhcEJwSW5kdXN0cnlNb2RlbFtdPihbXSk7XHJcblxyXG4gIGluaXRTZWxlY3RlZENvdW50cnkgPSBzaWduYWw8U2FwQnBBZGRyQ291bnRyeU1vZGVsIHwgbnVsbD4obnVsbCk7XHJcbiAgaW5pdFNlYXJjaENvdW50cnkgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIGluaXRTZWxlY3RlZFN0YXRlID0gc2lnbmFsPFNhcEJwQWRkclN0YXRlTW9kZWwgfCBudWxsPihudWxsKTtcclxuICBpbml0U2VhcmNoU3RhdGUgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIG5vdEZvdW5kU3RhdGVzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgdGVycml0b3JpZXNMaXN0ID0gc2lnbmFsPFNhcEJwQWRkcmVzc1RlcnJpdG9yeU1vZGVsW10+KFtdKTtcclxuXHJcbiAgcmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBzYWxlc0VtcGxveWVlTGlzdCA9IHNpZ25hbDxTYXBCcFNhbGVzRW1wbG95ZWVNb2RlbFtdPihbXSk7XHJcblxyXG4gIHRheGVzTGlzdCA9IHNpZ25hbDxTYXBCcFRheFtdPihbXSk7XHJcbiAgcmVmcmVzaGluZ1RheCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuYWRkcmVzcykge1xyXG4gICAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xyXG4gICAgICAgIGFkZHJlc3M6IHRoaXMuZGF0YS5hZGRyZXNzLmFkZHJlc3MsXHJcbiAgICAgICAgYWRkcmVzczI6IHRoaXMuZGF0YS5hZGRyZXNzLmFkZHJlc3MyLFxyXG4gICAgICAgIGFkZHJlc3MzOiB0aGlzLmRhdGEuYWRkcmVzcy5hZGRyZXNzMyxcclxuICAgICAgICBzdHJlZXQ6IHRoaXMuZGF0YS5hZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBibG9jazogdGhpcy5kYXRhLmFkZHJlc3MuYmxvY2ssXHJcbiAgICAgICAgY2l0eTogdGhpcy5kYXRhLmFkZHJlc3MuY2l0eSxcclxuICAgICAgICB6aXBDb2RlOiB0aGlzLmRhdGEuYWRkcmVzcy56aXBDb2RlLFxyXG4gICAgICAgIGNvdW50eTogdGhpcy5kYXRhLmFkZHJlc3MuY291bnR5LFxyXG4gICAgICAgIHRlcnJpdG9yeTogdGhpcy5kYXRhLmFkZHJlc3MudGVycml0b3J5LFxyXG4gICAgICAgIHN0YXRlQ29kZTogdGhpcy5kYXRhLmFkZHJlc3Muc3RhdGVDb2RlLFxyXG4gICAgICAgIHN0YXRlTmFtZTogdGhpcy5kYXRhLmFkZHJlc3Muc3RhdGVOYW1lLFxyXG4gICAgICAgIGNvdW50cnlDb2RlOiB0aGlzLmRhdGEuYWRkcmVzcy5jb3VudHJ5Q29kZSxcclxuICAgICAgICBjb3VudHJ5TmFtZTogdGhpcy5kYXRhLmFkZHJlc3MuY291bnRyeU5hbWUsXHJcbiAgICAgICAgc3RyZWV0Tm86IHRoaXMuZGF0YS5hZGRyZXNzLnN0cmVldE5vLFxyXG4gICAgICAgIGJ1aWxkaW5nOiB0aGlzLmRhdGEuYWRkcmVzcy5idWlsZGluZyxcclxuICAgICAgICBpbmR1c3RyeUNvZGU6XHJcbiAgICAgICAgICB0aGlzLmRhdGEuYWRkcmVzcy5pbmR1c3RyeUNvZGUgfHwgdGhpcy5kYXRhLmJhc2VJbmR1c3RyeUNvZGUsXHJcbiAgICAgICAgaW5kdXN0cnlOYW1lOiB0aGlzLmRhdGEuYWRkcmVzcy5pbmR1c3RyeU5hbWUsXHJcbiAgICAgICAgc3RhdHVzOiB0aGlzLmRhdGEuYWRkcmVzcy5zdGF0dXMsXHJcbiAgICAgICAgc2FsZXNQZXJzb24xOiB0aGlzLmRhdGEuYWRkcmVzcy5zYWxlc1BlcnNvbjEgfHwgJycsXHJcbiAgICAgICAgc2FsZXNQZXJzb24yOiB0aGlzLmRhdGEuYWRkcmVzcy5zYWxlc1BlcnNvbjIgfHwgJycsXHJcbiAgICAgICAgdGF4Q29kZTogdGhpcy5kYXRhLmFkZHJlc3MudGF4Q29kZSB8fCAnJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5kdXN0cnlDb2RlLnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeU5hbWUuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlcnJpdG9yeS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuYmFzZUluZHVzdHJ5Q29kZSkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5kdXN0cnlDb2RlLnNldFZhbHVlKHRoaXMuZGF0YS5iYXNlSW5kdXN0cnlDb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLnVzZVRheENvZGUpIHtcclxuICAgICAgdGhpcy5sb2FkVGF4ZXMoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZENvdW50cmllcyhmYWxzZSwgISF0aGlzLmRhdGE/LmFkZHJlc3M/LmNvdW50cnlDb2RlKTtcclxuICAgIHRoaXMubG9hZEluZHVzdHJ5KGZhbHNlKTtcclxuICAgIHRoaXMubG9hZFRlcnJpdG9yaWVzTGlzdChmYWxzZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGF0YS51c2VyU2V0dGluZ3MuYnBFZGl0U2FsZXNQZXJzb25PbkFkZHJlc3MgJiZcclxuICAgICAgdGhpcy5kYXRhLmFkZHJlc3NUeXBlID09PSAnUydcclxuICAgICkge1xyXG4gICAgICB0aGlzLmxvYWRTYWxlc0VtcGxveWVlKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhPy5hZGRyZXNzPy5jb3VudHJ5Q29kZSkge1xyXG4gICAgICB0aGlzLmxvYWRTdGF0ZXMoZmFsc2UsICEhdGhpcy5kYXRhPy5hZGRyZXNzPy5zdGF0ZUNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybS5nZXQoJ2NvdW50cnlDb2RlJykhLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMubG9hZFN0YXRlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdpbmR1c3RyeUNvZGUnKSEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNldEluZHVzdHJ5TmFtZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgY291bnRyeUNvZGVDaGFuZ2VkKHZhbDogU2FwQnBBZGRyQ291bnRyeU1vZGVsW10pIHtcclxuICAgIGlmICh2YWw/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHZhbFswXS5pZCAhPT0gdGhpcy5mb3JtLmNvbnRyb2xzLmNvdW50cnlDb2RlLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNvdW50cnlDb2RlLnNldFZhbHVlKHZhbFswXS5pZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNvdW50cnlOYW1lLnNldFZhbHVlKHZhbFswXS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNvdW50cnlDb2RlLnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNvdW50cnlOYW1lLnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlQ29kZS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgIHRoaXMuc3RhdGVMaXN0LnNldChbXSk7XHJcbiAgICAgIHRoaXMubm90Rm91bmRTdGF0ZXMuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRlQ2hhbmdlZCh2YWw6IFNhcEJwQWRkclN0YXRlTW9kZWxbXSkge1xyXG4gICAgaWYgKHZhbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGVDb2RlLnNldFZhbHVlKHZhbFswXS5pZCk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zdGF0ZU5hbWUuc2V0VmFsdWUodmFsWzBdLm5hbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlQ29kZS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zdGF0ZU5hbWUuc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFNhbGVzRW1wbG95ZWUocmVmcmVzaCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRTYWxlc0VtcGxveWVlKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNhbGVzRW1wbG95ZWVMaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcC5zZXQoZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkVGF4ZXMocmVmcmVzaCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hpbmdUYXguc2V0KHRydWUpO1xyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0VGF4ZXMocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMudGF4ZXNMaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdUYXguc2V0KGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcclxuICAgICAgY29uc3QgdmFsdWVzOiBTYXBCcEFkZHJlc3NEaWFsb2dNb2RlbCA9XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkgYXMgU2FwQnBBZGRyZXNzRGlhbG9nTW9kZWw7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSg8U2FwQnBBZGRyZXNzRGlhbG9nTW9kZWw+e1xyXG4gICAgICAgIC4uLnZhbHVlcyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNuYWNrQmFyLndhcm5pbmcoXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3NhcEFkbWluQnAuZmlsbFJlcXVpcmVkRmllbGRzJylcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRDb3VudHJpZXMocmVmcmVzaCA9IGZhbHNlLCBzZXRJbml0RGF0YSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRBZGRyQ291bnRyeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jb3VudHJ5TGlzdC5zZXQocmVzKTtcclxuXHJcbiAgICAgIGlmIChzZXRJbml0RGF0YSAmJiB0aGlzLmRhdGE/LmFkZHJlc3M/LmNvdW50cnlDb2RlKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb3VudHJ5ID1cclxuICAgICAgICAgIHJlcy5maW5kKGNvdW50cnkgPT4gY291bnRyeS5pZCA9PT0gdGhpcy5kYXRhLmFkZHJlc3MuY291bnRyeUNvZGUpIHx8XHJcbiAgICAgICAgICBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5pdFNlbGVjdGVkQ291bnRyeS5zZXQoc2VsZWN0ZWRDb3VudHJ5KTtcclxuICAgICAgICB0aGlzLmluaXRTZWFyY2hDb3VudHJ5LnNldChzZWxlY3RlZENvdW50cnk/Lm5hbWUgfHwgJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ291bnRyeSA9XHJcbiAgICAgICAgICByZXMuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuaWQgPT09IHRoaXMuZGF0YS51c2VyU2V0dGluZ3MuY291bnRyeSkgfHxcclxuICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgdGhpcy5pbml0U2VsZWN0ZWRDb3VudHJ5LnNldChzZWxlY3RlZENvdW50cnkpO1xyXG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaENvdW50cnkuc2V0KHNlbGVjdGVkQ291bnRyeT8ubmFtZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEluZHVzdHJ5KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0SW5kdXN0cnkocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuaW5kdXN0cnlMaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLnNldEluZHVzdHJ5TmFtZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkVGVycml0b3JpZXNMaXN0KHJlZnJlc2g6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldEFkZHJlc3NUZXJyaXRvcnkocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMudGVycml0b3JpZXNMaXN0LnNldChyZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU3RhdGVzKHJlc2ZyZXNoID0gZmFsc2UsIHNldEluaXREYXRhID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeUNvZGUudmFsdWU7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRBZGRyU3RhdGUocmVzZnJlc2gsIGNvdW50cnkpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnN0YXRlTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5ub3RGb3VuZFN0YXRlcy5zZXQoIShyZXM/Lmxlbmd0aCA+IDApKTtcclxuXHJcbiAgICAgIGlmIChzZXRJbml0RGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU3RhdGUgPVxyXG4gICAgICAgICAgcmVzLmZpbmQoc3RhdGUgPT4gc3RhdGUuaWQgPT09IHRoaXMuZGF0YS5hZGRyZXNzLnN0YXRlQ29kZSkgfHwgbnVsbDtcclxuICAgICAgICB0aGlzLmluaXRTZWxlY3RlZFN0YXRlLnNldChzZWxlY3RlZFN0YXRlKTtcclxuICAgICAgICB0aGlzLmluaXRTZWFyY2hTdGF0ZS5zZXQoc2VsZWN0ZWRTdGF0ZT8ubmFtZSB8fCAnJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbmR1c3RyeU5hbWUoKSB7XHJcbiAgICBjb25zdCBpbmR1c3RyeUNvZGUgPSB0aGlzLmZvcm0uY29udHJvbHMuaW5kdXN0cnlDb2RlLnZhbHVlO1xyXG5cclxuICAgIGlmIChpbmR1c3RyeUNvZGUpIHtcclxuICAgICAgY29uc3QgZm91bmRJbmR1c3RyeSA9IHRoaXMuaW5kdXN0cnlMaXN0KCkuZmluZChcclxuICAgICAgICBpbmR1c3RyeSA9PiBpbmR1c3RyeS5pZCA9PT0gaW5kdXN0cnlDb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeU5hbWUuc2V0VmFsdWUoZm91bmRJbmR1c3RyeT8ubmFtZSB8fCAnJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5kdXN0cnlOYW1lLnNldFZhbHVlKCcnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ3NhcEFkbWluQnAuYWRkcmVzcycgfCB0cmFuc2xhdGUgfX08L2gxPlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICBAaWYgKGZvcm0pIHtcclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGlkPVwiYWRkcmVzcy1jcmVhdGUtZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuYWRkcmVzcycgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjUwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5hZGRyZXNzMicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzMlwiXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjUwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5hZGRyZXNzMycgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzM1wiXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjUwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5zdHJlZXQnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RyZWV0XCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjEwMFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuYmxvY2snIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYmxvY2tcIiBbbWF4TGVuZ3RoXT1cIjEwMFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLmNpdHknIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXHJcbiAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgW21heExlbmd0aF09XCIxMDBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnppcENvZGUnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiemlwQ29kZVwiXHJcbiAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgW21heExlbmd0aF09XCIyMFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuY291bnR5JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50eVwiXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjEwMFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuc3RyZWV0Tm8nIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RyZWV0Tm9cIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCIxMDBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLmJ1aWxkaW5nJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1aWxkaW5nXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiMjU2MDAwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC50ZXJyaXRvcnknIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGVycml0b3J5XCIgW3JlcXVpcmVkXT1cIiFkYXRhLmFkZHJlc3NcIj5cclxuICAgICAgICAgIEBmb3IgKHRlcnJpdG9yeSBvZiB0ZXJyaXRvcmllc0xpc3QoKTsgdHJhY2sgdGVycml0b3J5LnRlcnJpdG9yeUlkKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ0ZXJyaXRvcnkudGVycml0b3J5SWRcIj57eyB0ZXJyaXRvcnkudGVycml0b3J5TmFtZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLmluZHVzdHJ5Q29kZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpbmR1c3RyeUNvZGVcIiBbcmVxdWlyZWRdPVwiIWRhdGEuYWRkcmVzc1wiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicnXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluQnAuZW1wdHknIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIEBmb3IgKGluZHVzdHJ5IG9mIGluZHVzdHJ5TGlzdCgpOyB0cmFjayBpbmR1c3RyeSkge1xyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaW5kdXN0cnkuaWRcIj57eyBpbmR1c3RyeS5uYW1lIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgQGlmIChcclxuICAgICAgICBkYXRhLnVzZXJTZXR0aW5ncy5icEVkaXRTYWxlc1BlcnNvbk9uQWRkcmVzcyAmJiBkYXRhLmFkZHJlc3NUeXBlID09PSAnUydcclxuICAgICAgKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29sXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnNhbGVzUGVyc29uMScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic2FsZXNQZXJzb24xXCI+XHJcbiAgICAgICAgICAgICAgQGZvciAoc2FsZXNFbXBsb3llZSBvZiBzYWxlc0VtcGxveWVlTGlzdCgpOyB0cmFjayBzYWxlc0VtcGxveWVlKSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwic2FsZXNFbXBsb3llZS5uYW1lXCI+e3tcclxuICAgICAgICAgICAgICAgICAgc2FsZXNFbXBsb3llZS5uYW1lXHJcbiAgICAgICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInc2FwQWRtaW5CcC5yZWZyZXNoRnJvbVNhcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibG9hZFNhbGVzRW1wbG95ZWUodHJ1ZSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVmcmVzaGluZ0RhdGFGcm9tU2FwKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+cmVmcmVzaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKFxyXG4gICAgICAgIGRhdGEudXNlclNldHRpbmdzLmJwRWRpdFNhbGVzUGVyc29uT25BZGRyZXNzICYmIGRhdGEuYWRkcmVzc1R5cGUgPT09ICdTJ1xyXG4gICAgICApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2xcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50XCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuc2FsZXNQZXJzb24yJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzYWxlc1BlcnNvbjJcIj5cclxuICAgICAgICAgICAgICBAZm9yIChzYWxlc0VtcGxveWVlIG9mIHNhbGVzRW1wbG95ZWVMaXN0KCk7IHRyYWNrIHNhbGVzRW1wbG95ZWUpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJzYWxlc0VtcGxveWVlLm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICBzYWxlc0VtcGxveWVlLm5hbWVcclxuICAgICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidzYXBBZG1pbkJwLnJlZnJlc2hGcm9tU2FwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJsb2FkU2FsZXNFbXBsb3llZSh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWZyZXNoaW5nRGF0YUZyb21TYXAoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGF0YS51c2VUYXhDb2RlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29sXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnRheENvZGUnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInRheENvZGVcIj5cclxuICAgICAgICAgICAgICBAZm9yICh0YXggb2YgdGF4ZXNMaXN0KCk7IHRyYWNrIHRheCkge1xyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRheC5jb2RlXCJcclxuICAgICAgICAgICAgICAgICAgPnt7IHRheC5uYW1lIH19OiB7eyB0YXgucmF0ZSB9fTwvbWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidzYXBBZG1pbkJwLnJlZnJlc2gnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImxvYWRUYXhlcyh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWZyZXNoaW5nVGF4KClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+cmVmcmVzaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5zdGF0dXMnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPnt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkJwLmVtcHR5JyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ0FjdGl2ZSdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5CcC5hY3RpdmUnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInSW5hY3RpdmUnXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluQnAuaW5hY3RpdmUnIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxuZ3gtc3Qtc2VsZWN0LXRhYmxlXHJcbiAgICAgICAgW2luaXRTZWxlY3RlZF09XCJpbml0U2VsZWN0ZWRDb3VudHJ5KClcIlxyXG4gICAgICAgIFtpbml0U2VhcmNoVmFsXT1cImluaXRTZWFyY2hDb3VudHJ5KClcIlxyXG4gICAgICAgIFt0YWJsZURhdGFdPVwiY291bnRyeUxpc3QoKVwiXHJcbiAgICAgICAgW3NldEluaXRDb2x1bW5zXT1cIntcclxuICAgICAgICAgIGlkOiAoJ3NhcEFkbWluQnAuaWQnIHwgdHJhbnNsYXRlKSxcclxuICAgICAgICAgIG5hbWU6ICgnc2FwQWRtaW5CcC5uYW1lJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICB9XCJcclxuICAgICAgICBbdGl0bGVdPVwiJ3NhcEFkbWluQnAuY291bnRyeScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICBbdmFsaWRFcnJvcl09XCJmb3JtLmdldCgnY291bnRyeUNvZGUnKSEuaW52YWxpZFwiXHJcbiAgICAgICAgW3NlYXJjaExhYmVsXT1cIidzYXBBZG1pbkJwLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtzZWxlY3RlZExhYmVsXT1cIidzYXBBZG1pbkJwLnNlbGVjdGVkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKHJldHVyblJvd1NlbGVjdGVkKT1cImNvdW50cnlDb2RlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L25neC1zdC1zZWxlY3QtdGFibGU+XHJcbiAgICAgIEBpZiAobm90Rm91bmRTdGF0ZXMoKSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICB7eyAnc2FwQWRtaW5CcC5ub3RGb3VuZFN0YXRlcycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8bmd4LXN0LXNlbGVjdC10YWJsZVxyXG4gICAgICAgIFtpbml0U2VsZWN0ZWRdPVwiaW5pdFNlbGVjdGVkU3RhdGUoKVwiXHJcbiAgICAgICAgW2luaXRTZWFyY2hWYWxdPVwiaW5pdFNlYXJjaFN0YXRlKClcIlxyXG4gICAgICAgIFt0YWJsZURhdGFdPVwic3RhdGVMaXN0KClcIlxyXG4gICAgICAgIFtzZXRJbml0Q29sdW1uc109XCJ7XHJcbiAgICAgICAgICBpZDogKCdzYXBBZG1pbkJwLmlkJyB8IHRyYW5zbGF0ZSksXHJcbiAgICAgICAgICBuYW1lOiAoJ3NhcEFkbWluQnAubmFtZScgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidzYXBBZG1pbkJwLnN0YXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgICBbdmFsaWRFcnJvcl09XCJmYWxzZVwiXHJcbiAgICAgICAgW3NlYXJjaExhYmVsXT1cIidzYXBBZG1pbkJwLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgIFtzZWxlY3RlZExhYmVsXT1cIidzYXBBZG1pbkJwLnNlbGVjdGVkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKHJldHVyblJvd1NlbGVjdGVkKT1cInN0YXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L25neC1zdC1zZWxlY3QtdGFibGU+XHJcbiAgICA8L2Zvcm0+XHJcbiAgfVxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhY3Rpb24tcm93XCIgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj5cclxuICAgIHt7ICdzYXBBZG1pbkJwLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cclxuICA8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgZm9ybT1cImFkZHJlc3MtY3JlYXRlLWZvcm1cIlxyXG4gICAgPlxyXG4gICAgICB7eyAnc2FwQWRtaW5CcC5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWJwLWNyZWF0ZS1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdC1zYXAtYnAvc3JjL2xpYi9jb21wb25lbnRzL3NhcC1icC1jcmVhdGUtYWRkcmVzcy9zYXAtYnAtY3JlYXRlLWFkZHJlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0LXNhcC1icC9zcmMvbGliL2NvbXBvbmVudHMvc2FwLWJwLWNyZWF0ZS1hZGRyZXNzL3NhcC1icC1jcmVhdGUtYWRkcmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBUyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpFLE1BQU0sT0FBTywyQkFBMkI7SUEwRHRDO1FBekRBLFNBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQU01QixDQUFDO1FBQ0YsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQXlDLENBQUEsQ0FBQyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxPQUFFLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFNUMsU0FBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xDLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxLQUFLLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDcEMsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsRUFBRTtZQUNiLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RDLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsQ0FBZ0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEQsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDdkMsTUFBTSxFQUFpQixFQUFFO1lBQ3pCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO1FBRUgsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxNQUFNLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLGlCQUFZLEdBQUcsTUFBTSxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUVoRCx3QkFBbUIsR0FBRyxNQUFNLENBQStCLElBQUksQ0FBQyxDQUFDO1FBQ2pFLHNCQUFpQixHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUV2QyxzQkFBaUIsR0FBRyxNQUFNLENBQTZCLElBQUksQ0FBQyxDQUFDO1FBQzdELG9CQUFlLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLG1CQUFjLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXhDLG9CQUFlLEdBQUcsTUFBTSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUUzRCwwQkFBcUIsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0Msc0JBQWlCLEdBQUcsTUFBTSxDQUE0QixFQUFFLENBQUMsQ0FBQztRQUUxRCxjQUFTLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBR3JDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7Z0JBQzlCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDbEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07Z0JBQ2hDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUN0QyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztnQkFDdEMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUMxQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUNwQyxZQUFZLEVBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSTtnQkFDdEUsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7Z0JBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ2xELFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFO2FBQ3pDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQjtZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxHQUFHLEVBQzdCLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUE0QjtRQUM3QyxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQTBCO1FBQ3JDLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQU8sR0FBRyxLQUFLO1FBQy9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFPLEdBQUcsS0FBSztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBNkIsQ0FBQztZQUVyRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBMEI7Z0JBQzVDLEdBQUcsTUFBTTthQUNWLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FDL0QsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTFCLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNuRCxNQUFNLGVBQWUsR0FDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO29CQUNqRSxJQUFJLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLGVBQWUsR0FDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO29CQUNsRSxJQUFJLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBTyxHQUFHLEtBQUs7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFnQjtRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFFdkQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQ2hELFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsS0FBSyxnQkFBZ0IsQ0FDeEQsQ0FBQztZQUVGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FDOUQsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVDLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sYUFBYSxHQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUUzRCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzVDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxZQUFZLENBQ3pDLENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOytHQWxRVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixpRUNyQnhDLHN3U0EyUEE7OzRGRHRPYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2FwLWJwLWFkZHJlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYXAtYnAuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhcEJwQWRkckNvdW50cnlNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkci1jb3VudHJ5Lm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyU3RhdGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkci1zdGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwQWRkcmVzc0RpYWxvZ01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1hZGRyZXNzLWRpYWxvZy5tb2RlbCc7XHJcbmltcG9ydCB7IFN0U25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXN0LXNuYWNrLWJhcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU2FwQnBJbmR1c3RyeU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1pbmR1c3RyeS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwU2FsZXNFbXBsb3llZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC1zYWxlcy1lbXBsb3llZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVGF4IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NhcC1icC10YXgubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFVzZXJTZXR0aW5ncyB9IGZyb20gJy4uL3NhcC1icC1iYXNlLWNyZWF0ZS1lZGl0JztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTYXBCcEFkZHJlc3NUZXJyaXRvcnlNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zYXAtYnAtYWRkcmVzcy10ZXJyaXRvcnkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2FwLWJwLWNyZWF0ZS1hZGRyZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2FwLWJwLWNyZWF0ZS1hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zYXAtYnAtY3JlYXRlLWFkZHJlc3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNhcEJwQ3JlYXRlQWRkcmVzc0NvbXBvbmVudCB7XHJcbiAgZGF0YSA9IGluamVjdChNQVRfRElBTE9HX0RBVEEpIGFzIHtcclxuICAgIGFkZHJlc3M6IFNhcEJwQWRkcmVzc01vZGVsO1xyXG4gICAgYmFzZUluZHVzdHJ5Q29kZTogbnVtYmVyO1xyXG4gICAgYWRkcmVzc1R5cGU6ICdCJyB8ICdTJztcclxuICAgIHVzZVRheENvZGU6IGJvb2xlYW47XHJcbiAgICB1c2VyU2V0dGluZ3M6IFNhcEJwVXNlclNldHRpbmdzO1xyXG4gIH07XHJcbiAgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTYXBCcENyZWF0ZUFkZHJlc3NDb21wb25lbnQ+KTtcclxuICBwcml2YXRlIHNhcEJwU2VydmljZSA9IGluamVjdChTYXBCcFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoU3RTbmFja0JhclNlcnZpY2UpO1xyXG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIGZiID0gaW5qZWN0KE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIpO1xyXG5cclxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBhZGRyZXNzOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgYWRkcmVzczI6ICcnLFxyXG4gICAgYWRkcmVzczM6ICcnLFxyXG4gICAgc3RyZWV0OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgYmxvY2s6ICcnLFxyXG4gICAgY2l0eTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIHppcENvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBjb3VudHk6ICcnLFxyXG4gICAgdGVycml0b3J5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc3RhdGVDb2RlOiAnJyxcclxuICAgIHN0YXRlTmFtZTogJycsXHJcbiAgICBjb3VudHJ5Q29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNvdW50cnlOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc3RyZWV0Tm86ICcnLFxyXG4gICAgYnVpbGRpbmc6ICcnLFxyXG4gICAgaW5kdXN0cnlDb2RlOiBbPG51bWJlciB8IG51bGw+bnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBpbmR1c3RyeU5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICBzdGF0dXM6IDxzdHJpbmcgfCBudWxsPicnLFxyXG4gICAgc2FsZXNQZXJzb24xOiAnJyxcclxuICAgIHNhbGVzUGVyc29uMjogJycsXHJcbiAgICB0YXhDb2RlOiAnJyxcclxuICB9KTtcclxuXHJcbiAgY291bnRyeUxpc3QgPSBzaWduYWw8U2FwQnBBZGRyQ291bnRyeU1vZGVsW10+KFtdKTtcclxuICBzdGF0ZUxpc3QgPSBzaWduYWw8U2FwQnBBZGRyU3RhdGVNb2RlbFtdPihbXSk7XHJcbiAgaW5kdXN0cnlMaXN0ID0gc2lnbmFsPFNhcEJwSW5kdXN0cnlNb2RlbFtdPihbXSk7XHJcblxyXG4gIGluaXRTZWxlY3RlZENvdW50cnkgPSBzaWduYWw8U2FwQnBBZGRyQ291bnRyeU1vZGVsIHwgbnVsbD4obnVsbCk7XHJcbiAgaW5pdFNlYXJjaENvdW50cnkgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIGluaXRTZWxlY3RlZFN0YXRlID0gc2lnbmFsPFNhcEJwQWRkclN0YXRlTW9kZWwgfCBudWxsPihudWxsKTtcclxuICBpbml0U2VhcmNoU3RhdGUgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIG5vdEZvdW5kU3RhdGVzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgdGVycml0b3JpZXNMaXN0ID0gc2lnbmFsPFNhcEJwQWRkcmVzc1RlcnJpdG9yeU1vZGVsW10+KFtdKTtcclxuXHJcbiAgcmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBzYWxlc0VtcGxveWVlTGlzdCA9IHNpZ25hbDxTYXBCcFNhbGVzRW1wbG95ZWVNb2RlbFtdPihbXSk7XHJcblxyXG4gIHRheGVzTGlzdCA9IHNpZ25hbDxTYXBCcFRheFtdPihbXSk7XHJcbiAgcmVmcmVzaGluZ1RheCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuYWRkcmVzcykge1xyXG4gICAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xyXG4gICAgICAgIGFkZHJlc3M6IHRoaXMuZGF0YS5hZGRyZXNzLmFkZHJlc3MsXHJcbiAgICAgICAgYWRkcmVzczI6IHRoaXMuZGF0YS5hZGRyZXNzLmFkZHJlc3MyLFxyXG4gICAgICAgIGFkZHJlc3MzOiB0aGlzLmRhdGEuYWRkcmVzcy5hZGRyZXNzMyxcclxuICAgICAgICBzdHJlZXQ6IHRoaXMuZGF0YS5hZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBibG9jazogdGhpcy5kYXRhLmFkZHJlc3MuYmxvY2ssXHJcbiAgICAgICAgY2l0eTogdGhpcy5kYXRhLmFkZHJlc3MuY2l0eSxcclxuICAgICAgICB6aXBDb2RlOiB0aGlzLmRhdGEuYWRkcmVzcy56aXBDb2RlLFxyXG4gICAgICAgIGNvdW50eTogdGhpcy5kYXRhLmFkZHJlc3MuY291bnR5LFxyXG4gICAgICAgIHRlcnJpdG9yeTogdGhpcy5kYXRhLmFkZHJlc3MudGVycml0b3J5LFxyXG4gICAgICAgIHN0YXRlQ29kZTogdGhpcy5kYXRhLmFkZHJlc3Muc3RhdGVDb2RlLFxyXG4gICAgICAgIHN0YXRlTmFtZTogdGhpcy5kYXRhLmFkZHJlc3Muc3RhdGVOYW1lLFxyXG4gICAgICAgIGNvdW50cnlDb2RlOiB0aGlzLmRhdGEuYWRkcmVzcy5jb3VudHJ5Q29kZSxcclxuICAgICAgICBjb3VudHJ5TmFtZTogdGhpcy5kYXRhLmFkZHJlc3MuY291bnRyeU5hbWUsXHJcbiAgICAgICAgc3RyZWV0Tm86IHRoaXMuZGF0YS5hZGRyZXNzLnN0cmVldE5vLFxyXG4gICAgICAgIGJ1aWxkaW5nOiB0aGlzLmRhdGEuYWRkcmVzcy5idWlsZGluZyxcclxuICAgICAgICBpbmR1c3RyeUNvZGU6XHJcbiAgICAgICAgICB0aGlzLmRhdGEuYWRkcmVzcy5pbmR1c3RyeUNvZGUgfHwgdGhpcy5kYXRhLmJhc2VJbmR1c3RyeUNvZGUgfHwgbnVsbCxcclxuICAgICAgICBpbmR1c3RyeU5hbWU6IHRoaXMuZGF0YS5hZGRyZXNzLmluZHVzdHJ5TmFtZSxcclxuICAgICAgICBzdGF0dXM6IHRoaXMuZGF0YS5hZGRyZXNzLnN0YXR1cyxcclxuICAgICAgICBzYWxlc1BlcnNvbjE6IHRoaXMuZGF0YS5hZGRyZXNzLnNhbGVzUGVyc29uMSB8fCAnJyxcclxuICAgICAgICBzYWxlc1BlcnNvbjI6IHRoaXMuZGF0YS5hZGRyZXNzLnNhbGVzUGVyc29uMiB8fCAnJyxcclxuICAgICAgICB0YXhDb2RlOiB0aGlzLmRhdGEuYWRkcmVzcy50YXhDb2RlIHx8ICcnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeUNvZGUuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmluZHVzdHJ5TmFtZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMudGVycml0b3J5LnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS5iYXNlSW5kdXN0cnlDb2RlKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeUNvZGUuc2V0VmFsdWUodGhpcy5kYXRhLmJhc2VJbmR1c3RyeUNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEudXNlVGF4Q29kZSkge1xyXG4gICAgICB0aGlzLmxvYWRUYXhlcyhmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkQ291bnRyaWVzKGZhbHNlLCAhIXRoaXMuZGF0YT8uYWRkcmVzcz8uY291bnRyeUNvZGUpO1xyXG4gICAgdGhpcy5sb2FkSW5kdXN0cnkoZmFsc2UpO1xyXG4gICAgdGhpcy5sb2FkVGVycml0b3JpZXNMaXN0KGZhbHNlKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5kYXRhLnVzZXJTZXR0aW5ncy5icEVkaXRTYWxlc1BlcnNvbk9uQWRkcmVzcyAmJlxyXG4gICAgICB0aGlzLmRhdGEuYWRkcmVzc1R5cGUgPT09ICdTJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9hZFNhbGVzRW1wbG95ZWUoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGE/LmFkZHJlc3M/LmNvdW50cnlDb2RlKSB7XHJcbiAgICAgIHRoaXMubG9hZFN0YXRlcyhmYWxzZSwgISF0aGlzLmRhdGE/LmFkZHJlc3M/LnN0YXRlQ29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCgnY291bnRyeUNvZGUnKSEudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU3RhdGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybS5nZXQoJ2luZHVzdHJ5Q29kZScpIS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuc2V0SW5kdXN0cnlOYW1lKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBjb3VudHJ5Q29kZUNoYW5nZWQodmFsOiBTYXBCcEFkZHJDb3VudHJ5TW9kZWxbXSkge1xyXG4gICAgaWYgKHZhbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodmFsWzBdLmlkICE9PSB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeUNvZGUudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeUNvZGUuc2V0VmFsdWUodmFsWzBdLmlkKTtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeU5hbWUuc2V0VmFsdWUodmFsWzBdLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeUNvZGUuc2V0VmFsdWUoJycpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY291bnRyeU5hbWUuc2V0VmFsdWUoJycpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGVDb2RlLnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5zdGF0ZUxpc3Quc2V0KFtdKTtcclxuICAgICAgdGhpcy5ub3RGb3VuZFN0YXRlcy5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGVDaGFuZ2VkKHZhbDogU2FwQnBBZGRyU3RhdGVNb2RlbFtdKSB7XHJcbiAgICBpZiAodmFsPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zdGF0ZUNvZGUuc2V0VmFsdWUodmFsWzBdLmlkKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlTmFtZS5zZXRWYWx1ZSh2YWxbMF0ubmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGVDb2RlLnNldFZhbHVlKCcnKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlTmFtZS5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkU2FsZXNFbXBsb3llZShyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldFNhbGVzRW1wbG95ZWUocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuc2FsZXNFbXBsb3llZUxpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldChmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUYXhlcyhyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ1RheC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRUYXhlcyhyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy50YXhlc0xpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ1RheC5zZXQoZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICBjb25zdCB2YWx1ZXM6IFNhcEJwQWRkcmVzc0RpYWxvZ01vZGVsID1cclxuICAgICAgICB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBTYXBCcEFkZHJlc3NEaWFsb2dNb2RlbDtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKDxTYXBCcEFkZHJlc3NEaWFsb2dNb2RlbD57XHJcbiAgICAgICAgLi4udmFsdWVzLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIud2FybmluZyhcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2FwQWRtaW5CcC5maWxsUmVxdWlyZWRGaWVsZHMnKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZENvdW50cmllcyhyZWZyZXNoID0gZmFsc2UsIHNldEluaXREYXRhID0gZmFsc2UpIHtcclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldEFkZHJDb3VudHJ5KHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmNvdW50cnlMaXN0LnNldChyZXMpO1xyXG5cclxuICAgICAgaWYgKHNldEluaXREYXRhICYmIHRoaXMuZGF0YT8uYWRkcmVzcz8uY291bnRyeUNvZGUpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZENvdW50cnkgPVxyXG4gICAgICAgICAgcmVzLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmlkID09PSB0aGlzLmRhdGEuYWRkcmVzcy5jb3VudHJ5Q29kZSkgfHxcclxuICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgdGhpcy5pbml0U2VsZWN0ZWRDb3VudHJ5LnNldChzZWxlY3RlZENvdW50cnkpO1xyXG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaENvdW50cnkuc2V0KHNlbGVjdGVkQ291bnRyeT8ubmFtZSB8fCAnJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb3VudHJ5ID1cclxuICAgICAgICAgIHJlcy5maW5kKGNvdW50cnkgPT4gY291bnRyeS5pZCA9PT0gdGhpcy5kYXRhLnVzZXJTZXR0aW5ncy5jb3VudHJ5KSB8fFxyXG4gICAgICAgICAgbnVsbDtcclxuICAgICAgICB0aGlzLmluaXRTZWxlY3RlZENvdW50cnkuc2V0KHNlbGVjdGVkQ291bnRyeSk7XHJcbiAgICAgICAgdGhpcy5pbml0U2VhcmNoQ291bnRyeS5zZXQoc2VsZWN0ZWRDb3VudHJ5Py5uYW1lIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkSW5kdXN0cnkocmVmcmVzaCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRJbmR1c3RyeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pbmR1c3RyeUxpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMuc2V0SW5kdXN0cnlOYW1lKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUZXJyaXRvcmllc0xpc3QocmVmcmVzaDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0QWRkcmVzc1RlcnJpdG9yeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy50ZXJyaXRvcmllc0xpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVBbmRGaXhUZXJyaXRvcnkoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUFuZEZpeFRlcnJpdG9yeSgpIHtcclxuICAgIGNvbnN0IGluaXRpYWxUZXJyaXRvcnkgPSB0aGlzLmRhdGE/LmFkZHJlc3M/LnRlcnJpdG9yeTtcclxuXHJcbiAgICBpZiAoaW5pdGlhbFRlcnJpdG9yeSkge1xyXG4gICAgICBjb25zdCBmb3VuZFRlcnJpdG9yeSA9IHRoaXMudGVycml0b3JpZXNMaXN0KCkuZmluZChcclxuICAgICAgICB0ZXJyaXRvcnkgPT4gdGVycml0b3J5LnRlcnJpdG9yeUlkID09PSBpbml0aWFsVGVycml0b3J5XHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIWZvdW5kVGVycml0b3J5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlcnJpdG9yeS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci53YXJuaW5nKFxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3NhcEFkbWluQnAudGVycml0b3J5Tm90Rm91bmQnKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRTdGF0ZXMocmVzZnJlc2ggPSBmYWxzZSwgc2V0SW5pdERhdGEgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuZm9ybS5jb250cm9scy5jb3VudHJ5Q29kZS52YWx1ZTtcclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldEFkZHJTdGF0ZShyZXNmcmVzaCwgY291bnRyeSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuc3RhdGVMaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLm5vdEZvdW5kU3RhdGVzLnNldCghKHJlcz8ubGVuZ3RoID4gMCkpO1xyXG5cclxuICAgICAgaWYgKHNldEluaXREYXRhKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdGF0ZSA9XHJcbiAgICAgICAgICByZXMuZmluZChzdGF0ZSA9PiBzdGF0ZS5pZCA9PT0gdGhpcy5kYXRhLmFkZHJlc3Muc3RhdGVDb2RlKSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5pdFNlbGVjdGVkU3RhdGUuc2V0KHNlbGVjdGVkU3RhdGUpO1xyXG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaFN0YXRlLnNldChzZWxlY3RlZFN0YXRlPy5uYW1lIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluZHVzdHJ5TmFtZSgpIHtcclxuICAgIGNvbnN0IGluZHVzdHJ5Q29kZSA9IHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeUNvZGUudmFsdWU7XHJcblxyXG4gICAgaWYgKGluZHVzdHJ5Q29kZSkge1xyXG4gICAgICBjb25zdCBmb3VuZEluZHVzdHJ5ID0gdGhpcy5pbmR1c3RyeUxpc3QoKS5maW5kKFxyXG4gICAgICAgIGluZHVzdHJ5ID0+IGluZHVzdHJ5LmlkID09PSBpbmR1c3RyeUNvZGVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmluZHVzdHJ5TmFtZS5zZXRWYWx1ZShmb3VuZEluZHVzdHJ5Py5uYW1lIHx8ICcnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbmR1c3RyeU5hbWUuc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57eyAnc2FwQWRtaW5CcC5hZGRyZXNzJyB8IHRyYW5zbGF0ZSB9fTwvaDE+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIEBpZiAoZm9ybSkge1xyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgaWQ9XCJhZGRyZXNzLWNyZWF0ZS1mb3JtXCIgKG5nU3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5hZGRyZXNzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NcIlxyXG4gICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLmFkZHJlc3MyJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3MyXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLmFkZHJlc3MzJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3MzXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnN0cmVldCcgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdHJlZXRcIlxyXG4gICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiMTAwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5ibG9jaycgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJibG9ja1wiIFttYXhMZW5ndGhdPVwiMTAwXCIgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuY2l0eScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjEwMFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuemlwQ29kZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ6aXBDb2RlXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjIwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5jb3VudHknIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnR5XCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwiMTAwXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5zdHJlZXRObycgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdHJlZXROb1wiXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjEwMFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuYnVpbGRpbmcnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYnVpbGRpbmdcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCIyNTYwMDBcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnRlcnJpdG9yeScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJyaXRvcnlcIiBbcmVxdWlyZWRdPVwiIWRhdGEuYWRkcmVzc1wiPlxyXG4gICAgICAgICAgQGZvciAodGVycml0b3J5IG9mIHRlcnJpdG9yaWVzTGlzdCgpOyB0cmFjayB0ZXJyaXRvcnkudGVycml0b3J5SWQpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRlcnJpdG9yeS50ZXJyaXRvcnlJZFwiPnt7IHRlcnJpdG9yeS50ZXJyaXRvcnlOYW1lIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuaW5kdXN0cnlDb2RlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImluZHVzdHJ5Q29kZVwiIFtyZXF1aXJlZF09XCIhZGF0YS5hZGRyZXNzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJydcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5CcC5lbXB0eScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgQGZvciAoaW5kdXN0cnkgb2YgaW5kdXN0cnlMaXN0KCk7IHRyYWNrIGluZHVzdHJ5KSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpbmR1c3RyeS5pZFwiPnt7IGluZHVzdHJ5Lm5hbWUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICBAaWYgKFxyXG4gICAgICAgIGRhdGEudXNlclNldHRpbmdzLmJwRWRpdFNhbGVzUGVyc29uT25BZGRyZXNzICYmIGRhdGEuYWRkcmVzc1R5cGUgPT09ICdTJ1xyXG4gICAgICApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2xcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50XCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAuc2FsZXNQZXJzb24xJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzYWxlc1BlcnNvbjFcIj5cclxuICAgICAgICAgICAgICBAZm9yIChzYWxlc0VtcGxveWVlIG9mIHNhbGVzRW1wbG95ZWVMaXN0KCk7IHRyYWNrIHNhbGVzRW1wbG95ZWUpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJzYWxlc0VtcGxveWVlLm5hbWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICBzYWxlc0VtcGxveWVlLm5hbWVcclxuICAgICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidzYXBBZG1pbkJwLnJlZnJlc2hGcm9tU2FwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJsb2FkU2FsZXNFbXBsb3llZSh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWZyZXNoaW5nRGF0YUZyb21TYXAoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoXHJcbiAgICAgICAgZGF0YS51c2VyU2V0dGluZ3MuYnBFZGl0U2FsZXNQZXJzb25PbkFkZHJlc3MgJiYgZGF0YS5hZGRyZXNzVHlwZSA9PT0gJ1MnXHJcbiAgICAgICkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnRcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyAnc2FwQWRtaW5CcC5zYWxlc1BlcnNvbjInIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNhbGVzUGVyc29uMlwiPlxyXG4gICAgICAgICAgICAgIEBmb3IgKHNhbGVzRW1wbG95ZWUgb2Ygc2FsZXNFbXBsb3llZUxpc3QoKTsgdHJhY2sgc2FsZXNFbXBsb3llZSkge1xyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInNhbGVzRW1wbG95ZWUubmFtZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgIHNhbGVzRW1wbG95ZWUubmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ3NhcEFkbWluQnAucmVmcmVzaEZyb21TYXAnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImxvYWRTYWxlc0VtcGxveWVlKHRydWUpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZnJlc2hpbmdEYXRhRnJvbVNhcCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChkYXRhLnVzZVRheENvZGUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2xcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50XCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgJ3NhcEFkbWluQnAudGF4Q29kZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGF4Q29kZVwiPlxyXG4gICAgICAgICAgICAgIEBmb3IgKHRheCBvZiB0YXhlc0xpc3QoKTsgdHJhY2sgdGF4KSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwidGF4LmNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICA+e3sgdGF4Lm5hbWUgfX06IHt7IHRheC5yYXRlIH19PC9tYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ3NhcEFkbWluQnAucmVmcmVzaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibG9hZFRheGVzKHRydWUpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlZnJlc2hpbmdUYXgoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7ICdzYXBBZG1pbkJwLnN0YXR1cycgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJudWxsXCI+e3tcclxuICAgICAgICAgICAgJ3NhcEFkbWluQnAuZW1wdHknIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInQWN0aXZlJ1wiPnt7XHJcbiAgICAgICAgICAgICdzYXBBZG1pbkJwLmFjdGl2ZScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidJbmFjdGl2ZSdcIj57e1xyXG4gICAgICAgICAgICAnc2FwQWRtaW5CcC5pbmFjdGl2ZScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPG5neC1zdC1zZWxlY3QtdGFibGVcclxuICAgICAgICBbaW5pdFNlbGVjdGVkXT1cImluaXRTZWxlY3RlZENvdW50cnkoKVwiXHJcbiAgICAgICAgW2luaXRTZWFyY2hWYWxdPVwiaW5pdFNlYXJjaENvdW50cnkoKVwiXHJcbiAgICAgICAgW3RhYmxlRGF0YV09XCJjb3VudHJ5TGlzdCgpXCJcclxuICAgICAgICBbc2V0SW5pdENvbHVtbnNdPVwie1xyXG4gICAgICAgICAgaWQ6ICgnc2FwQWRtaW5CcC5pZCcgfCB0cmFuc2xhdGUpLFxyXG4gICAgICAgICAgbmFtZTogKCdzYXBBZG1pbkJwLm5hbWUnIHwgdHJhbnNsYXRlKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFt0aXRsZV09XCInc2FwQWRtaW5CcC5jb3VudHJ5JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgIFt2YWxpZEVycm9yXT1cImZvcm0uZ2V0KCdjb3VudHJ5Q29kZScpIS5pbnZhbGlkXCJcclxuICAgICAgICBbc2VhcmNoTGFiZWxdPVwiJ3NhcEFkbWluQnAuc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwiJ3NhcEFkbWluQnAuc2VsZWN0ZWQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAocmV0dXJuUm93U2VsZWN0ZWQpPVwiY291bnRyeUNvZGVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmd4LXN0LXNlbGVjdC10YWJsZT5cclxuICAgICAgQGlmIChub3RGb3VuZFN0YXRlcygpKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIiByb2xlPVwiYWxlcnRcIj5cclxuICAgICAgICAgIHt7ICdzYXBBZG1pbkJwLm5vdEZvdW5kU3RhdGVzJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxuZ3gtc3Qtc2VsZWN0LXRhYmxlXHJcbiAgICAgICAgW2luaXRTZWxlY3RlZF09XCJpbml0U2VsZWN0ZWRTdGF0ZSgpXCJcclxuICAgICAgICBbaW5pdFNlYXJjaFZhbF09XCJpbml0U2VhcmNoU3RhdGUoKVwiXHJcbiAgICAgICAgW3RhYmxlRGF0YV09XCJzdGF0ZUxpc3QoKVwiXHJcbiAgICAgICAgW3NldEluaXRDb2x1bW5zXT1cIntcclxuICAgICAgICAgIGlkOiAoJ3NhcEFkbWluQnAuaWQnIHwgdHJhbnNsYXRlKSxcclxuICAgICAgICAgIG5hbWU6ICgnc2FwQWRtaW5CcC5uYW1lJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICB9XCJcclxuICAgICAgICBbdGl0bGVdPVwiJ3NhcEFkbWluQnAuc3RhdGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgIFt2YWxpZEVycm9yXT1cImZhbHNlXCJcclxuICAgICAgICBbc2VhcmNoTGFiZWxdPVwiJ3NhcEFkbWluQnAuc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW3NlbGVjdGVkTGFiZWxdPVwiJ3NhcEFkbWluQnAuc2VsZWN0ZWQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAocmV0dXJuUm93U2VsZWN0ZWQpPVwic3RhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmd4LXN0LXNlbGVjdC10YWJsZT5cclxuICAgIDwvZm9ybT5cclxuICB9XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFjdGlvbi1yb3dcIiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPlxyXG4gICAge3sgJ3NhcEFkbWluQnAuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvYnV0dG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBmb3JtPVwiYWRkcmVzcy1jcmVhdGUtZm9ybVwiXHJcbiAgICA+XHJcbiAgICAgIHt7ICdzYXBBZG1pbkJwLnNhdmUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1107,7 +1107,7 @@ class SapBpCreateAddressComponent {
1107
1107
  countryName: this.data.address.countryName,
1108
1108
  streetNo: this.data.address.streetNo,
1109
1109
  building: this.data.address.building,
1110
- industryCode: this.data.address.industryCode || this.data.baseIndustryCode,
1110
+ industryCode: this.data.address.industryCode || this.data.baseIndustryCode || null,
1111
1111
  industryName: this.data.address.industryName,
1112
1112
  status: this.data.address.status,
1113
1113
  salesPerson1: this.data.address.salesPerson1 || '',
@@ -1222,8 +1222,19 @@ class SapBpCreateAddressComponent {
1222
1222
  loadTerritoriesList(refresh) {
1223
1223
  this.sapBpService.getAddressTerritory(refresh).subscribe(res => {
1224
1224
  this.territoriesList.set(res);
1225
+ this.validateAndFixTerritory();
1225
1226
  });
1226
1227
  }
1228
+ validateAndFixTerritory() {
1229
+ const initialTerritory = this.data?.address?.territory;
1230
+ if (initialTerritory) {
1231
+ const foundTerritory = this.territoriesList().find(territory => territory.territoryId === initialTerritory);
1232
+ if (!foundTerritory) {
1233
+ this.form.controls.territory.setValue('');
1234
+ this.snackBar.warning(this.translateService.instant('sapAdminBp.territoryNotFound'));
1235
+ }
1236
+ }
1237
+ }
1227
1238
  loadStates(resfresh = false, setInitData = false) {
1228
1239
  const country = this.form.controls.countryCode.value;
1229
1240
  this.sapBpService.getAddrState(resfresh, country).subscribe(res => {