valtech-components 4.0.1011 → 4.0.1013

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.
@@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router';
4
4
  import { IonButton, IonIcon } from '@ionic/angular/standalone';
5
5
  import { addIcons } from 'ionicons';
6
6
  import { businessOutline, chevronForwardOutline, mailOutline, peopleOutline, swapHorizontalOutline, warningOutline, } from 'ionicons/icons';
7
- import { take } from 'rxjs/operators';
7
+ import { switchMap, take, tap } from 'rxjs/operators';
8
8
  import { ButtonComponent } from '../../atoms/button/button.component';
9
9
  import { ContainerComponent } from '../../atoms/container/container.component';
10
10
  import { DisplayComponent } from '../../atoms/display/display.component';
@@ -257,7 +257,9 @@ export class AccountViewComponent {
257
257
  this.inviteAccepting.set(invite.orgId);
258
258
  this.orgService
259
259
  .acceptInvitation(invite.orgId)
260
- .pipe(take(1))
260
+ .pipe(take(1), switchMap(response => this.auth.switchOrg(response.activeOrg || response.orgId).pipe(take(1), tap(() => {
261
+ this.nav.navigateByUrl(response.redirectTo || '/app/home');
262
+ }))))
261
263
  .subscribe({
262
264
  next: () => {
263
265
  this.toast.show({
@@ -688,4 +690,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
688
690
  }], ctorParameters: () => [], propDecorators: { config: [{
689
691
  type: Input
690
692
  }] } });
691
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYWNjb3VudC12aWV3L2FjY291bnQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGNBQWMsR0FDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2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c0Isa0ZBQ3RCLHVCQUF1Qix1SEFDdkIsdUJBQXVCLHlJQUN2QiwyQkFBMkIsa0lBQzNCLE9BQU8sMkpBQ1AsU0FBUywrT0FDVCxhQUFhLGtEQUNiLGtCQUFrQjs7NEZBNFdULG9CQUFvQjtrQkE3WGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLGtCQUFrQjtxQkFDbkIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzTFQ7d0RBbU1RLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBidXNpbmVzc091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgbWFpbE91dGxpbmUsXG4gIHBlb3BsZU91dGxpbmUsXG4gIHN3YXBIb3Jpem9udGFsT3V0bGluZSxcbiAgd2FybmluZ091dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2NvbnRhaW5lci9jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEN0YUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY3RhLWNhcmQvY3RhLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERhbmdlclNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZGFuZ2VyLXNlY3Rpb24vZGFuZ2VyLXNlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEludml0YXRpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2ludml0YXRpb24tY2FyZC9pbnZpdGF0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkdyb3VwTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb24sIFBlbmRpbmdJbnZpdGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IGNvbm5lY3RQYWdlUmVmcmVzaCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQ3JlYXRlT3JnTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9jcmVhdGUtb3JnLW1vZGFsL2NyZWF0ZS1vcmctbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IERlbGV0ZUFjY291bnRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2RlbGV0ZS1hY2NvdW50LW1vZGFsL2RlbGV0ZS1hY2NvdW50LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmdJbmZvU2hlZXRDb21wb25lbnQgfSBmcm9tICcuLi9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY2NvdW50Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUNDT1VOVF9WSUVXX0kxOE4gfSBmcm9tICcuL2FjY291bnQtdmlldy5pMThuJztcblxuYWRkSWNvbnMoeyBwZW9wbGVPdXRsaW5lLCBidXNpbmVzc091dGxpbmUsIGNoZXZyb25Gb3J3YXJkT3V0bGluZSwgc3dhcEhvcml6b250YWxPdXRsaW5lLCBtYWlsT3V0bGluZSwgd2FybmluZ091dGxpbmUgfSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkFjY291bnQnO1xuY29uc3QgREVGQVVMVF9NQU5BR0VfT1JHX1JPVVRFID0gJy9hcHAvc2V0dGluZ3Mvb3JnYW5pemF0aW9uJztcblxuLyoqXG4gKiBgdmFsLWFjY291bnQtdmlld2Ag4oCUIHZpc3RhIEN1ZW50YSBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICogUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSW52aXRhY2lvbmVzIHBlbmRpZW50ZXMqKiDigJQgYWNlcHRhciAvIHJlY2hhemFyIChgdmFsLWludml0YXRpb24tY2FyZGApLlxuICogIC0gKipPcmdhbml6YWNpb25lcyoqIOKAlCBjYXJkIGRlIG9yZyBhY3RpdmEgKyBlbXB0eS1jYXJkICsgQ1RBIFwiTnVldmEgb3JnXCJcbiAqICAgIChtb2RhbCBgdmFsLWNyZWF0ZS1vcmctbW9kYWxgKSArIFwiVmVyIHRvZGFzXCIgKG1vZGFsIGB2YWwtc3dpdGNoLW9yZy1tb2RhbGApLlxuICogIC0gKipDZXJyYXIgZXN0YSBzZXNpw7NuKiog4oCUIGBhdXRoLmxvZ291dFdpdGhDb25maXJtYXRpb24oKWAuXG4gKiAgLSAqKkVsaW1pbmFyIGN1ZW50YSoqIOKAlCBtb2RhbCBgdmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsYC5cbiAqXG4gKiBOTyByZW5kZXJpemEgaW9uLWNvbnRlbnQg4oCUIHZpdmUgZGVudHJvIGRlIHZhbC1wYWdlLXdyYXBwZXIuIE5vIHVzYSBkZWVwLWxpbmtzO1xuICogYEFjdGl2YXRlZFJvdXRlYCBzZSBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGFcbiAqIGRlIGNvbmZpZy4gTGEgbmF2ZWdhY2nDs24gYSBsYSBvcmcgcm91dGUgdmEgcG9yIGBOYXZpZ2F0aW9uU2VydmljZWAuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIGVuIGVsIGNvbnN0cnVjdG9yIHNpIGVsIGNvbnN1bWVyIG5vXG4gKiBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgY29uZmlndXJhZG8gKGRlZmF1bHQgYFNldHRpbmdzLkFjY291bnRgKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWFjY291bnQtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICAgIEN0YUNhcmRDb21wb25lbnQsXG4gICAgRGFuZ2VyU2VjdGlvbkNvbXBvbmVudCxcbiAgICBJbnZpdGF0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBDcmVhdGVPcmdNb2RhbENvbXBvbmVudCxcbiAgICBEZWxldGVBY2NvdW50TW9kYWxDb21wb25lbnQsXG4gICAgSW9uSWNvbixcbiAgICBJb25CdXR0b24sXG4gICAgVGl0bGVDYXNlUGlwZSxcbiAgICBDb250YWluZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogJ21kJywgcGFkZGluZzogJ25vbmUnIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd1BlbmRpbmdJbnZpdGVzICYmIHBlbmRpbmdJbnZpdGVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0dCgncGVuZGluZ0ludml0ZXNUaXRsZScpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICBAZm9yIChpbnZpdGUgb2YgcGVuZGluZ0ludml0ZXMoKTsgdHJhY2sgaW52aXRlLm9yZ0lkKSB7XG4gICAgICAgICAgICA8dmFsLWludml0YXRpb24tY2FyZFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHRva2VuOiBpbnZpdGUub3JnSWQsXG4gICAgICAgICAgICAgICAgb3JnTmFtZTogaW52aXRlLm9yZ05hbWUsXG4gICAgICAgICAgICAgICAgaW52aXRlck5hbWU6IGludml0ZS5pbnZpdGVyTmFtZSxcbiAgICAgICAgICAgICAgICByb2xlOiBpbnZpdGUucm9sZUxhYmVsLFxuICAgICAgICAgICAgICAgIGFjY2VwdGluZzogaW52aXRlQWNjZXB0aW5nKCkgPT09IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFpbnZpdGVBY2NlcHRpbmcoKSxcbiAgICAgICAgICAgICAgICBhY2NlcHRMYWJlbDogdHQoJ2FjY2VwdCcpLFxuICAgICAgICAgICAgICAgIGRlY2xpbmVMYWJlbDogdHQoJ2RlY2xpbmUnKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChvbkFjY2VwdCk9XCJhY2NlcHRQZW5kaW5nSW52aXRlKGludml0ZSlcIlxuICAgICAgICAgICAgICAob25EZWNsaW5lKT1cImRlY2xpbmVQZW5kaW5nSW52aXRlKGludml0ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd09yZ2FuaXphdGlvbnMpIHtcbiAgICAgICAgICA8IS0tIE9yZ2FuaXphdGlvbnMgLS0+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG9yZ3NBY3RpdmVUaXRsZSgpLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICAgIEBpZiAoYWN0aXZlT3JnKCk7IGFzIG9yZykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmdzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZCBvcmctY2FyZC0tYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlT3JnKCk/LmxvZ29VcmwgJiYgIWFjdGl2ZU9yZ0xvZ29GYWlsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImFjdGl2ZU9yZygpIS5sb2dvVXJsIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYWN0aXZlT3JnKCk/Lm5hbWUgPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiYWN0aXZlT3JnTG9nb0ZhaWxlZC5zZXQodHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYnVzaW5lc3Mtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbmFtZVwiPnt7IG9yZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9fbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtbGFiZWxcIj57eyB0dCgnb3Jnc0xhYmVsVHlwZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmdUeXBlTGFiZWwob3JnLnR5cGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZU9yZ1JvbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWxhYmVsXCI+e3sgdHQoJ29yZ3NMYWJlbFJvbGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3RpdmVPcmdSb2xlKCkgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtbGFiZWxcIj57eyB0dCgnb3Jnc0xhYmVsU3RhdHVzJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHR0KCdvcmdzU3RhdHVzQWN0aXZlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9fZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cIm9uTWFuYWdlT3JnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHR0KCdvcmdzTWFuYWdlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGFjdGl2ZU9yZ0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZCBvcmctY2FyZC0tc2tlbGV0b25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ2F2YXRhcicsIHdpZHRoOiAnNDBweCcsIGhlaWdodDogJzQwcHgnIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ2N1c3RvbScsIHdpZHRoOiAnNTUlJywgaGVpZ2h0OiAnMTVweCcsIGJvcmRlclJhZGl1czogJzRweCcgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9fbWV0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ2N1c3RvbScsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnMTFweCcsIGJvcmRlclJhZGl1czogJzRweCcgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnY3VzdG9tJywgd2lkdGg6ICc0MCUnLCBoZWlnaHQ6ICcxMXB4JywgYm9yZGVyUmFkaXVzOiAnNHB4JyB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ2N1c3RvbScsIHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzI4cHgnLCBib3JkZXJSYWRpdXM6ICc5OTlweCcgfVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFhY3RpdmVPcmdJZCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZS1vdXRsaW5lXCIgY2xhc3M9XCJvcmdzLWVtcHR5LWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fdGV4dFwiPnt7IG9yZ3NFbXB0eSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkX19saW5rXCIgKGNsaWNrKT1cIm9uTW9yZUluZm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcmdzTW9yZUluZm8oKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dOZXdPcmdDdGEpIHtcbiAgICAgICAgICAgICAgICA8dmFsLWN0YS1jYXJkIGNsYXNzPVwib3JnLW5ldy1jdGEtY2FyZFwiIFtwcm9wc109XCJuZXdPcmdDdGFQcm9wcygpXCIgKG9uQWN0aW9uKT1cIm9uTmV3T3JnKClcIiAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0xvZ291dCkge1xuICAgICAgICAgIDwhLS0gTG9nb3V0IHRoaXMgc2Vzc2lvbiAtLT5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogbG9nb3V0VGl0bGUoKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgY29udGVudDogbG9nb3V0SGludCgpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJsb2dvdXRCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uTG9nb3V0KClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93RGVsZXRlQWNjb3VudCkge1xuICAgICAgICAgIDwhLS0gRGVsZXRlIGFjY291bnQgLS0+XG4gICAgICAgICAgPHZhbC1kYW5nZXItc2VjdGlvbiBbcHJvcHNdPVwieyB0aXRsZTogZGFuZ2VyRGVsZXRlVGl0bGUoKSB9XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBkYW5nZXJEZWxldGVIaW50KCksXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJkZWxldGVBY2NvdW50QnV0dG9uUHJvcHMoKVwiIChvbkNsaWNrKT1cIm9uRGVsZXRlQWNjb3VudCgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdmFsLWRhbmdlci1zZWN0aW9uPlxuICAgICAgICB9XG4gICAgICAgIDx2YWwtY3JlYXRlLW9yZy1tb2RhbFxuICAgICAgICAgIFtpc09wZW5dPVwiY3JlYXRlT3JnT3BlbigpXCJcbiAgICAgICAgICBbaTE4bk5hbWVzcGFjZV09XCInQ3JlYXRlT3JnTW9kYWwnXCJcbiAgICAgICAgICAoZGlzbWlzc2VkKT1cImNyZWF0ZU9yZ09wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgICAgKGNyZWF0ZWQpPVwib25PcmdDcmVhdGVkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8dmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsXG4gICAgICAgICAgW2lzT3Blbl09XCJkZWxldGVBY2NvdW50T3BlbigpXCJcbiAgICAgICAgICBbaTE4bk5hbWVzcGFjZV09XCInU2V0dGluZ3MuRGVsZXRlQWNjb3VudCdcIlxuICAgICAgICAgIChkaXNtaXNzZWQpPVwiZGVsZXRlQWNjb3VudE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC8qIEFuY2hvIHkgY3JlY2ltaWVudG8gY29uIGVsIHJhaWwgY29sYXBzYWRvIGxvcyBkYSB2YWwtY29udGFpbmVyIChzaXplXG4gICAgICAgICAnbWQnKSwgbm8gQ1NTIGxvY2FsOiB2ZXIgY29udGFpbmVyLmNvbXBvbmVudC5zY3NzLiAqL1xuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gdmFsLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tZ2FwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uLWhlYWRlci1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAub3JnLW5ldy1jdGEtY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktdGludCwgcmdiYSh2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5LXJnYiwgMTMwLCAxMDEsIDIwOCksIDAuMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBwYWRkaW5nOiAxOHB4IDE2cHggMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX19tYWluIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZF9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX190ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmRfX2xpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICB9XG4gICAgICAub3Jncy1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkOmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQtLWFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDglLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQtLXNrZWxldG9uIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5vcmctY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAub3JnLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5vcmctY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLm9yZy1jYXJkLS1hY3RpdmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm9yZy1jYXJkLS1hY3RpdmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5vcmctY2FyZC0tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxNSUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9faWNvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxNSUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19ib2R5IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX21ldGEge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19tZXRhLWl0ZW0ge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX21ldGEtbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fZW5kIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLyogTGEgem9uYSBkZSBwZWxpZ3JvIChlbGltaW5hciBjdWVudGEpIHZpdmUgZW4gdmFsLWRhbmdlci1zZWN0aW9uIOKAlCBzdXNcbiAgICAgICAgIGVzdGlsb3MgeWEgbm8gc2UgcmVwaXRlbiBhY8OhLiAqL1xuICAgICAgdmFsLWRhbmdlci1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwIC00cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogQ29uZmlnIHbDrWEgQElucHV0IChvYmplY3QtZmlyc3QpLiBTaSBubyBzZSBwYXNhLCBzZSBjYWUgYWwgcm91dGUgZGF0YVxuICAgKiBgYWNjb3VudENvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaEFjY291bnRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWNjb3VudFZpZXdDb25maWc7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxcbiAgICBSZXF1aXJlZDxPbWl0PEFjY291bnRWaWV3Q29uZmlnLCAnb25PcmdTd2l0Y2hlZCcgfCAnb25PcmdDcmVhdGVkJyB8ICdvbkxvZ2dlZE91dCcgfCAnb25BY2NvdW50RGVsZXRlZCc+PiAmXG4gICAgICBQaWNrPEFjY291bnRWaWV3Q29uZmlnLCAnb25PcmdTd2l0Y2hlZCcgfCAnb25PcmdDcmVhdGVkJyB8ICdvbkxvZ2dlZE91dCcgfCAnb25BY2NvdW50RGVsZXRlZCc+XG4gID4oKCkgPT4ge1xuICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhY2NvdW50Q29uZmlnJ10gPz8ge30pIGFzIEFjY291bnRWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogQWNjb3VudFZpZXdDb25maWcgPSB7IC4uLmZyb21Sb3V0ZSwgLi4uKHRoaXMuY29uZmlnID8/IHt9KSB9O1xuICAgIHJldHVybiB7XG4gICAgICBzaG93UGVuZGluZ0ludml0ZXM6IG1lcmdlZC5zaG93UGVuZGluZ0ludml0ZXMgPz8gdHJ1ZSxcbiAgICAgIHNob3dPcmdhbml6YXRpb25zOiBtZXJnZWQuc2hvd09yZ2FuaXphdGlvbnMgPz8gdHJ1ZSxcbiAgICAgIHNob3dOZXdPcmdDdGE6IG1lcmdlZC5zaG93TmV3T3JnQ3RhID8/IGZhbHNlLFxuICAgICAgc2hvd0xvZ291dDogbWVyZ2VkLnNob3dMb2dvdXQgPz8gdHJ1ZSxcbiAgICAgIHNob3dEZWxldGVBY2NvdW50OiBtZXJnZWQuc2hvd0RlbGV0ZUFjY291bnQgPz8gdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgbWFuYWdlT3JnUm91dGU6IG1lcmdlZC5tYW5hZ2VPcmdSb3V0ZSA/PyBERUZBVUxUX01BTkFHRV9PUkdfUk9VVEUsXG4gICAgICBvbk9yZ1N3aXRjaGVkOiBtZXJnZWQub25PcmdTd2l0Y2hlZCxcbiAgICAgIG9uT3JnQ3JlYXRlZDogbWVyZ2VkLm9uT3JnQ3JlYXRlZCxcbiAgICAgIG9uTG9nZ2VkT3V0OiBtZXJnZWQub25Mb2dnZWRPdXQsXG4gICAgICBvbkFjY291bnREZWxldGVkOiBtZXJnZWQub25BY2NvdW50RGVsZXRlZCxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKGNhcHR1cmFkbyBwYXJhIGxsYW1hZGFzIG5vLXJlYWN0aXZhcykuICovXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkgY3JlYXRlT3JnT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRlbGV0ZUFjY291bnRPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgYWN0aXZlT3JnTG9nb0ZhaWxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcGVuZGluZ0ludml0ZXMgPSBzaWduYWw8UGVuZGluZ0ludml0YXRpb25bXT4oW10pO1xuICByZWFkb25seSBwZW5kaW5nSW52aXRlc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpbnZpdGVBY2NlcHRpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlRGVzY3JpcHRpb24nKSk7XG4gIHJlYWRvbmx5IG9yZ3NUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NUaXRsZScpKTtcbiAgcmVhZG9ubHkgb3Jnc0FjdGl2ZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc0FjdGl2ZVRpdGxlJykpO1xuICByZWFkb25seSBvcmdzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzRW1wdHknKSk7XG4gIHJlYWRvbmx5IG9yZ3NNb3JlSW5mbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NNb3JlSW5mbycpKTtcbiAgcmVhZG9ubHkgb3Jnc05ld1F1ZXN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc05ld1F1ZXN0aW9uJykpO1xuICByZWFkb25seSBvcmdzTmV3SGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NOZXdIaW50JykpO1xuICByZWFkb25seSBuZXdPcmdDdGFQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgdGl0bGU6IHRoaXMudHQoJ29yZ3NOZXdRdWVzdGlvbicpLFxuICAgIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdvcmdzTmV3SGludCcpLFxuICAgIHBhZGRpbmc6ICcxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcxNHB4JyxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBwb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgIGNvbHVtbmVkOiBmYWxzZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IHRoaXMudHQoJ29yZ3NOZXdDdGEnKSxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgICAgdG9rZW46ICdhY2NvdW50LW5ldy1vcmcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9IGFzIEJ1dHRvbkdyb3VwTWV0YWRhdGEsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbG9nb3V0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdsb2dvdXRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbG9nb3V0SGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2xvZ291dEhpbnQnKSk7XG4gIHJlYWRvbmx5IGRhbmdlclRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnZGFuZ2VyVGl0bGUnKSk7XG4gIHJlYWRvbmx5IGRhbmdlckRlbGV0ZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnZGFuZ2VyRGVsZXRlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IGRhbmdlckRlbGV0ZUhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJEZWxldGVIaW50JykpO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ1JvbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgcm9sZXMgPSAodGhpcy5hdXRoIGFzIHVua25vd24gYXMgeyByb2xlcz86ICgpID0+IHN0cmluZ1tdIH0pLnJvbGVzPy4oKSA/PyBbXTtcbiAgICByZXR1cm4gcm9sZXNbMF0gPz8gbnVsbDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnID0gc2lnbmFsPE9yZ2FuaXphdGlvbiB8IG51bGw+KG51bGwpO1xuICAvKipcbiAgICogTG9hZGluZyBkZSBsYSBjYXJkIGRlIG9yZyBhY3RpdmEgKGBPcmdTZXJ2aWNlLmdldE9yZ2ApLiBTaW4gZXN0bywgbGEgY2FyZFxuICAgKiBzaW1wbGVtZW50ZSBhcGFyZWPDrWEgZGUgZ29scGUgY3VhbmRvIGVsIGZldGNoIHJlc29sdsOtYSDigJQgZWwgdXN1YXJpbyBub1xuICAgKiB2ZcOtYSBxdWUgYWxnbyBlc3RhYmEgY2FyZ2FuZG8gKHJlcG9ydGFkbyBwb3IgZWwgQ1RPKS4gQ3VicmUgbGEgdmVudGFuYVxuICAgKiBlbnRyZSBcImhheSBhY3RpdmVPcmdJZFwiIHkgXCJlbCBkb2MgZGUgbGEgb3JnIGxsZWfDs1wiLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlT3JnTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgbG9nb3V0QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdsb2dvdXQnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdhY2NvdW50LWxvZ291dCcsXG4gIH0pKTtcblxuICByZWFkb25seSBkZWxldGVBY2NvdW50QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdkYW5nZXJEZWxldGVDdGEnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdhY2NvdW50LWRlbGV0ZScsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMobnMsIEFDQ09VTlRfVklFV19JMThOKTtcbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvYWRQZW5kaW5nSW52aXRlcygpO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3JnSWQgPSB0aGlzLmFjdGl2ZU9yZ0lkKCk7XG4gICAgICAgIGlmICghb3JnSWQpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9yZy5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVPcmdMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlT3JnTG9nb0ZhaWxlZC5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmFjdGl2ZU9yZ0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgICAgICAuZ2V0T3JnKG9yZ0lkKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBvcmcgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9yZy5zZXQob3JnKTtcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVPcmdMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVPcmcuc2V0KG51bGwpO1xuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9yZ0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkUGVuZGluZ0ludml0ZXMoKSk7XG4gIH1cblxuICBvcmdUeXBlTGFiZWwodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBQRVJTT05BTDogdGhpcy50dCgnb3Jnc1R5cGVQZXJzb25hbCcpLFxuICAgICAgUFJJVkFURTogdGhpcy50dCgnb3Jnc1R5cGVQcml2YXRlJyksXG4gICAgICBQVUJMSUM6IHRoaXMudHQoJ29yZ3NUeXBlUHVibGljJyksXG4gICAgICBCVVNJTkVTUzogdGhpcy50dCgnb3Jnc1R5cGVCdXNpbmVzcycpLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFt0eXBlXSA/PyB0eXBlO1xuICB9XG5cbiAgb25EZWxldGVBY2NvdW50KCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlQWNjb3VudE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbkFjY291bnREZWxldGVkPy4oKTtcbiAgfVxuXG4gIG9uTWFuYWdlT3JnKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlQnlVcmwodGhpcy5yZXNvbHZlZENvbmZpZygpLm1hbmFnZU9yZ1JvdXRlKTtcbiAgfVxuXG4gIG9uTmV3T3JnKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlT3JnT3Blbi5zZXQodHJ1ZSk7XG4gIH1cblxuICBvbk9yZ0NyZWF0ZWQobmV3T3JnOiBPcmdhbml6YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25PcmdDcmVhdGVkPy4obmV3T3JnKTtcbiAgfVxuXG4gIG9uTW9yZUluZm8oKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogT3JnSW5mb1NoZWV0Q29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHRoaXMudHQoJ29yZ3NJbmZvVGl0bGUnKSxcbiAgICAgICAgc3VidGl0bGU6IHRoaXMudHQoJ29yZ3NJbmZvU3VidGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50dCgnb3Jnc0luZm9Db250ZW50JyksXG4gICAgICAgIGNsb3NlTGFiZWw6IHRoaXMudHQoJ29yZ3NJbmZvQ2xvc2UnKSxcbiAgICAgICAgY2xvc2VQcm9wczoge1xuICAgICAgICAgIHRleHQ6IHRoaXMudHQoJ29yZ3NJbmZvQ2xvc2UnKSxcbiAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgZXhwYW5kOiAnYmxvY2snLFxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC44NV0sXG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjg1LFxuICAgICAgICBzaG93SGFuZGxlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uTG9nb3V0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aC5sb2dvdXRXaXRoQ29uZmlybWF0aW9uKCk7XG4gICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uTG9nZ2VkT3V0Py4oKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBlbmRpbmdJbnZpdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucGVuZGluZ0ludml0ZXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgICAgLmdldFBlbmRpbmdJbnZpdGF0aW9ucygpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGl0ZW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXMuc2V0KGl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFjY2VwdFBlbmRpbmdJbnZpdGUoaW52aXRlOiBQZW5kaW5nSW52aXRhdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmludml0ZUFjY2VwdGluZygpKSByZXR1cm47XG4gICAgdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KGludml0ZS5vcmdJZCk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAuYWNjZXB0SW52aXRhdGlvbihpbnZpdGUub3JnSWQpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnaW52aXRlQWNjZXB0ZWQnKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGkgPT4gaS5vcmdJZCAhPT0gaW52aXRlLm9yZ0lkKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuYWNjZXB0UGVuZGluZ0ludml0ZScgfSk7XG4gICAgICAgICAgdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpLFxuICAgICAgfSk7XG4gIH1cblxuICBkZWNsaW5lUGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5kZWNsaW5lSW52aXRhdGlvbihpbnZpdGUub3JnSWQpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnaW52aXRlRGVjbGluZWQnKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGkgPT4gaS5vcmdJZCAhPT0gaW52aXRlLm9yZ0lkKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuZGVjbGluZVBlbmRpbmdJbnZpdGUnIH0pO1xuICAgICAgICAgIHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
693
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYWNjb3VudC12aWV3L2FjY291bnQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGNBQWMsR0FDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFB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LDBHQTFXckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0xULHM0RkFyTUMsZ0JBQWdCLDJFQUNoQixjQUFjLHlFQUNkLGFBQWEsd0VBQ2IsZUFBZSwwR0FDZixpQkFBaUIsNEVBQ2pCLGdCQUFnQixtR0FDaEIsc0JBQXNCLGtGQUN0Qix1QkFBdUIsdUhBQ3ZCLHVCQUF1Qix5SUFDdkIsMkJBQTJCLGtJQUMzQixPQUFPLDJKQUNQLFNBQVMsK09BQ1QsYUFBYSxrREFDYixrQkFBa0I7OzRGQTRXVCxvQkFBb0I7a0JBN1hoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixrQkFBa0I7cUJBQ25CLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0xUO3dEQW1NUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYnVzaW5lc3NPdXRsaW5lLFxuICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gIG1haWxPdXRsaW5lLFxuICBwZW9wbGVPdXRsaW5lLFxuICBzd2FwSG9yaXpvbnRhbE91dGxpbmUsXG4gIHdhcm5pbmdPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3RhQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jdGEtY2FyZC9jdGEtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFuZ2VyU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9kYW5nZXItc2VjdGlvbi9kYW5nZXItc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW52aXRhdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaW52aXRhdGlvbi1jYXJkL2ludml0YXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9idXR0b24tZ3JvdXAvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiwgUGVuZGluZ0ludml0YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDcmVhdGVPcmdNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1vcmctbW9kYWwvY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlQWNjb3VudE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZGVsZXRlLWFjY291bnQtbW9kYWwvZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE9yZ0luZm9TaGVldENvbXBvbmVudCB9IGZyb20gJy4uL29yZy1pbmZvLXNoZWV0L29yZy1pbmZvLXNoZWV0LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEFjY291bnRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX1ZJRVdfSTE4TiB9IGZyb20gJy4vYWNjb3VudC12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIGJ1c2luZXNzT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lLCBzd2FwSG9yaXpvbnRhbE91dGxpbmUsIG1haWxPdXRsaW5lLCB3YXJuaW5nT3V0bGluZSB9KTtcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuQWNjb3VudCc7XG5jb25zdCBERUZBVUxUX01BTkFHRV9PUkdfUk9VVEUgPSAnL2FwcC9zZXR0aW5ncy9vcmdhbml6YXRpb24nO1xuXG4vKipcbiAqIGB2YWwtYWNjb3VudC12aWV3YCDigJQgdmlzdGEgQ3VlbnRhIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmXDum5lOlxuICogIC0gKipJbnZpdGFjaW9uZXMgcGVuZGllbnRlcyoqIOKAlCBhY2VwdGFyIC8gcmVjaGF6YXIgKGB2YWwtaW52aXRhdGlvbi1jYXJkYCkuXG4gKiAgLSAqKk9yZ2FuaXphY2lvbmVzKiog4oCUIGNhcmQgZGUgb3JnIGFjdGl2YSArIGVtcHR5LWNhcmQgKyBDVEEgXCJOdWV2YSBvcmdcIlxuICogICAgKG1vZGFsIGB2YWwtY3JlYXRlLW9yZy1tb2RhbGApICsgXCJWZXIgdG9kYXNcIiAobW9kYWwgYHZhbC1zd2l0Y2gtb3JnLW1vZGFsYCkuXG4gKiAgLSAqKkNlcnJhciBlc3RhIHNlc2nDs24qKiDigJQgYGF1dGgubG9nb3V0V2l0aENvbmZpcm1hdGlvbigpYC5cbiAqICAtICoqRWxpbWluYXIgY3VlbnRhKiog4oCUIG1vZGFsIGB2YWwtZGVsZXRlLWFjY291bnQtbW9kYWxgLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci4gTm8gdXNhIGRlZXAtbGlua3M7XG4gKiBgQWN0aXZhdGVkUm91dGVgIHNlIGlueWVjdGEgYHsgb3B0aW9uYWw6IHRydWUgfWAgc29sbyBwYXJhIGxlZXIgZWwgcm91dGUgZGF0YVxuICogZGUgY29uZmlnLiBMYSBuYXZlZ2FjacOzbiBhIGxhIG9yZyByb3V0ZSB2YSBwb3IgYE5hdmlnYXRpb25TZXJ2aWNlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBjb25maWd1cmFkbyAoZGVmYXVsdCBgU2V0dGluZ3MuQWNjb3VudGApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYWNjb3VudC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2tlbGV0b25Db21wb25lbnQsXG4gICAgQ3RhQ2FyZENvbXBvbmVudCxcbiAgICBEYW5nZXJTZWN0aW9uQ29tcG9uZW50LFxuICAgIEludml0YXRpb25DYXJkQ29tcG9uZW50LFxuICAgIENyZWF0ZU9yZ01vZGFsQ29tcG9uZW50LFxuICAgIERlbGV0ZUFjY291bnRNb2RhbENvbXBvbmVudCxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBUaXRsZUNhc2VQaXBlLFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiAnbWQnLCBwYWRkaW5nOiAnbm9uZScgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UGVuZGluZ0ludml0ZXMgJiYgcGVuZGluZ0ludml0ZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdwZW5kaW5nSW52aXRlc1RpdGxlJyksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIEBmb3IgKGludml0ZSBvZiBwZW5kaW5nSW52aXRlcygpOyB0cmFjayBpbnZpdGUub3JnSWQpIHtcbiAgICAgICAgICAgIDx2YWwtaW52aXRhdGlvbi1jYXJkXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdG9rZW46IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgICBvcmdOYW1lOiBpbnZpdGUub3JnTmFtZSxcbiAgICAgICAgICAgICAgICBpbnZpdGVyTmFtZTogaW52aXRlLmludml0ZXJOYW1lLFxuICAgICAgICAgICAgICAgIHJvbGU6IGludml0ZS5yb2xlTGFiZWwsXG4gICAgICAgICAgICAgICAgYWNjZXB0aW5nOiBpbnZpdGVBY2NlcHRpbmcoKSA9PT0gaW52aXRlLm9yZ0lkLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIWludml0ZUFjY2VwdGluZygpLFxuICAgICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0dCgnYWNjZXB0JyksXG4gICAgICAgICAgICAgICAgZGVjbGluZUxhYmVsOiB0dCgnZGVjbGluZScpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQWNjZXB0KT1cImFjY2VwdFBlbmRpbmdJbnZpdGUoaW52aXRlKVwiXG4gICAgICAgICAgICAgIChvbkRlY2xpbmUpPVwiZGVjbGluZVBlbmRpbmdJbnZpdGUoaW52aXRlKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93T3JnYW5pemF0aW9ucykge1xuICAgICAgICAgIDwhLS0gT3JnYW5pemF0aW9ucyAtLT5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogb3Jnc0FjdGl2ZVRpdGxlKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmcoKTsgYXMgb3JnKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkIG9yZy1jYXJkLS1hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmcoKT8ubG9nb1VybCAmJiAhYWN0aXZlT3JnTG9nb0ZhaWxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiYWN0aXZlT3JnKCkhLmxvZ29VcmwhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJhY3RpdmVPcmcoKT8ubmFtZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJhY3RpdmVPcmdMb2dvRmFpbGVkLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJidXNpbmVzcy1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19uYW1lXCI+e3sgb3JnLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1sYWJlbFwiPnt7IHR0KCdvcmdzTGFiZWxUeXBlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZ1R5cGVMYWJlbChvcmcudHlwZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlT3JnUm9sZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtbGFiZWxcIj57eyB0dCgnb3Jnc0xhYmVsUm9sZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGl2ZU9yZ1JvbGUoKSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1sYWJlbFwiPnt7IHR0KCdvcmdzTGFiZWxTdGF0dXMnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHQoJ29yZ3NTdGF0dXNBY3RpdmUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib25NYW5hZ2VPcmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdHQoJ29yZ3NNYW5hZ2UnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoYWN0aXZlT3JnTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkIG9yZy1jYXJkLS1za2VsZXRvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnYXZhdGFyJywgd2lkdGg6ICc0MHB4JywgaGVpZ2h0OiAnNDBweCcgfVwiIC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnY3VzdG9tJywgd2lkdGg6ICc1NSUnLCBoZWlnaHQ6ICcxNXB4JywgYm9yZGVyUmFkaXVzOiAnNHB4JyB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnY3VzdG9tJywgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICcxMXB4JywgYm9yZGVyUmFkaXVzOiAnNHB4JyB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uIFtwcm9wc109XCJ7IHR5cGU6ICdjdXN0b20nLCB3aWR0aDogJzQwJScsIGhlaWdodDogJzExcHgnLCBib3JkZXJSYWRpdXM6ICc0cHgnIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnY3VzdG9tJywgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMjhweCcsIGJvcmRlclJhZGl1czogJzk5OXB4JyB9XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWFjdGl2ZU9yZ0lkKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkX19tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVvcGxlLW91dGxpbmVcIiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9faWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkX190ZXh0XCI+e3sgb3Jnc0VtcHR5KCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJvcmdzLWVtcHR5LWNhcmRfX2xpbmtcIiAoY2xpY2spPVwib25Nb3JlSW5mbygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG9yZ3NNb3JlSW5mbygpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd05ld09yZ0N0YSkge1xuICAgICAgICAgICAgICAgIDx2YWwtY3RhLWNhcmQgY2xhc3M9XCJvcmctbmV3LWN0YS1jYXJkXCIgW3Byb3BzXT1cIm5ld09yZ0N0YVByb3BzKClcIiAob25BY3Rpb24pPVwib25OZXdPcmcoKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TG9nb3V0KSB7XG4gICAgICAgICAgPCEtLSBMb2dvdXQgdGhpcyBzZXNzaW9uIC0tPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsb2dvdXRUaXRsZSgpLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBsb2dvdXRIaW50KCksXG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImxvZ291dEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Mb2dvdXQoKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dEZWxldGVBY2NvdW50KSB7XG4gICAgICAgICAgPCEtLSBEZWxldGUgYWNjb3VudCAtLT5cbiAgICAgICAgICA8dmFsLWRhbmdlci1zZWN0aW9uIFtwcm9wc109XCJ7IHRpdGxlOiBkYW5nZXJEZWxldGVUaXRsZSgpIH1cIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhbmdlckRlbGV0ZUhpbnQoKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImRlbGV0ZUFjY291bnRCdXR0b25Qcm9wcygpXCIgKG9uQ2xpY2spPVwib25EZWxldGVBY2NvdW50KClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC92YWwtZGFuZ2VyLXNlY3Rpb24+XG4gICAgICAgIH1cbiAgICAgICAgPHZhbC1jcmVhdGUtb3JnLW1vZGFsXG4gICAgICAgICAgW2lzT3Blbl09XCJjcmVhdGVPcmdPcGVuKClcIlxuICAgICAgICAgIFtpMThuTmFtZXNwYWNlXT1cIidDcmVhdGVPcmdNb2RhbCdcIlxuICAgICAgICAgIChkaXNtaXNzZWQpPVwiY3JlYXRlT3JnT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgICAoY3JlYXRlZCk9XCJvbk9yZ0NyZWF0ZWQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDx2YWwtZGVsZXRlLWFjY291bnQtbW9kYWxcbiAgICAgICAgICBbaXNPcGVuXT1cImRlbGV0ZUFjY291bnRPcGVuKClcIlxuICAgICAgICAgIFtpMThuTmFtZXNwYWNlXT1cIidTZXR0aW5ncy5EZWxldGVBY2NvdW50J1wiXG4gICAgICAgICAgKGRpc21pc3NlZCk9XCJkZWxldGVBY2NvdW50T3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvdmFsLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogQW5jaG8geSBjcmVjaW1pZW50byBjb24gZWwgcmFpbCBjb2xhcHNhZG8gbG9zIGRhIHZhbC1jb250YWluZXIgKHNpemVcbiAgICAgICAgICdtZCcpLCBubyBDU1MgbG9jYWw6IHZlciBjb250YWluZXIuY29tcG9uZW50LnNjc3MuICovXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uICsgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB2YWwtdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zLS1nYXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24taGVhZGVyLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIH1cbiAgICAgIC5vcmctbmV3LWN0YS1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeS10aW50LCByZ2JhKHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktcmdiLCAxMzAsIDEwMSwgMjA4KSwgMC4yKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIHBhZGRpbmc6IDE4cHggMTZweCAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmRfX21haW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmRfX3RleHQge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZF9fbGluayB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAwLjE1cyxcbiAgICAgICAgICBib3JkZXItY29sb3IgMC4xNXM7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQ6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZC0tYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgOCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZC0tc2tlbGV0b24ge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLm9yZy1jYXJkLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5vcmctY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm9yZy1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAub3JnLWNhcmQtLWFjdGl2ZSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAub3JnLWNhcmQtLWFjdGl2ZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm9yZy1jYXJkLS1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19pY29uIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX2JvZHkge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX21ldGEtaXRlbSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbWV0YS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19lbmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAvKiBMYSB6b25hIGRlIHBlbGlncm8gKGVsaW1pbmFyIGN1ZW50YSkgdml2ZSBlbiB2YWwtZGFuZ2VyLXNlY3Rpb24g4oCUIHN1c1xuICAgICAgICAgZXN0aWxvcyB5YSBubyBzZSByZXBpdGVuIGFjw6EuICovXG4gICAgICB2YWwtZGFuZ2VyLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW46IDAgLTRweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50Vmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBhY2NvdW50Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWNjb3VudFJvdXRlc2ApLiBgcmVzb2x2ZWRDb25maWdgXG4gICAqIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBBY2NvdW50Vmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8QWNjb3VudFZpZXdDb25maWcsICdvbk9yZ1N3aXRjaGVkJyB8ICdvbk9yZ0NyZWF0ZWQnIHwgJ29uTG9nZ2VkT3V0JyB8ICdvbkFjY291bnREZWxldGVkJz4+ICZcbiAgICAgIFBpY2s8QWNjb3VudFZpZXdDb25maWcsICdvbk9yZ1N3aXRjaGVkJyB8ICdvbk9yZ0NyZWF0ZWQnIHwgJ29uTG9nZ2VkT3V0JyB8ICdvbkFjY291bnREZWxldGVkJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ2FjY291bnRDb25maWcnXSA/PyB7fSkgYXMgQWNjb3VudFZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBBY2NvdW50Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dQZW5kaW5nSW52aXRlczogbWVyZ2VkLnNob3dQZW5kaW5nSW52aXRlcyA/PyB0cnVlLFxuICAgICAgc2hvd09yZ2FuaXphdGlvbnM6IG1lcmdlZC5zaG93T3JnYW5pemF0aW9ucyA/PyB0cnVlLFxuICAgICAgc2hvd05ld09yZ0N0YTogbWVyZ2VkLnNob3dOZXdPcmdDdGEgPz8gZmFsc2UsXG4gICAgICBzaG93TG9nb3V0OiBtZXJnZWQuc2hvd0xvZ291dCA/PyB0cnVlLFxuICAgICAgc2hvd0RlbGV0ZUFjY291bnQ6IG1lcmdlZC5zaG93RGVsZXRlQWNjb3VudCA/PyB0cnVlLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICBtYW5hZ2VPcmdSb3V0ZTogbWVyZ2VkLm1hbmFnZU9yZ1JvdXRlID8/IERFRkFVTFRfTUFOQUdFX09SR19ST1VURSxcbiAgICAgIG9uT3JnU3dpdGNoZWQ6IG1lcmdlZC5vbk9yZ1N3aXRjaGVkLFxuICAgICAgb25PcmdDcmVhdGVkOiBtZXJnZWQub25PcmdDcmVhdGVkLFxuICAgICAgb25Mb2dnZWRPdXQ6IG1lcmdlZC5vbkxvZ2dlZE91dCxcbiAgICAgIG9uQWNjb3VudERlbGV0ZWQ6IG1lcmdlZC5vbkFjY291bnREZWxldGVkLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBjcmVhdGVPcmdPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZGVsZXRlQWNjb3VudE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBhY3RpdmVPcmdMb2dvRmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBwZW5kaW5nSW52aXRlcyA9IHNpZ25hbDxQZW5kaW5nSW52aXRhdGlvbltdPihbXSk7XG4gIHJlYWRvbmx5IHBlbmRpbmdJbnZpdGVzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGludml0ZUFjY2VwdGluZyA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBwYWdlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHBhZ2VEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VEZXNjcmlwdGlvbicpKTtcbiAgcmVhZG9ubHkgb3Jnc1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc1RpdGxlJykpO1xuICByZWFkb25seSBvcmdzQWN0aXZlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzQWN0aXZlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IG9yZ3NFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NFbXB0eScpKTtcbiAgcmVhZG9ubHkgb3Jnc01vcmVJbmZvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc01vcmVJbmZvJykpO1xuICByZWFkb25seSBvcmdzTmV3UXVlc3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzTmV3UXVlc3Rpb24nKSk7XG4gIHJlYWRvbmx5IG9yZ3NOZXdIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc05ld0hpbnQnKSk7XG4gIHJlYWRvbmx5IG5ld09yZ0N0YVByb3BzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0aXRsZTogdGhpcy50dCgnb3Jnc05ld1F1ZXN0aW9uJyksXG4gICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ29yZ3NOZXdIaW50JyksXG4gICAgcGFkZGluZzogJzE2cHgnLFxuICAgIGJvcmRlclJhZGl1czogJzE0cHgnLFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgY29sdW1uZWQ6IGZhbHNlLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdGhpcy50dCgnb3Jnc05ld0N0YScpLFxuICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICB0b2tlbjogJ2FjY291bnQtbmV3LW9yZycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0gYXMgQnV0dG9uR3JvdXBNZXRhZGF0YSxcbiAgfSkpO1xuICByZWFkb25seSBsb2dvdXRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2xvZ291dFRpdGxlJykpO1xuICByZWFkb25seSBsb2dvdXRIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnbG9nb3V0SGludCcpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJUaXRsZScpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyRGVsZXRlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJEZWxldGVUaXRsZScpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyRGVsZXRlSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2RhbmdlckRlbGV0ZUhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdSA9IHRoaXMuYXV0aC51c2VyKCkgYXMge1xuICAgICAgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7XG4gICAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gICAgfSB8IG51bGw7XG4gICAgcmV0dXJuIHU/LmFjdGl2ZU9yZ0lkID8/IHU/LmFjdGl2ZU9yZyA/PyAnJztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnUm9sZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByb2xlcyA9ICh0aGlzLmF1dGggYXMgdW5rbm93biBhcyB7IHJvbGVzPzogKCkgPT4gc3RyaW5nW10gfSkucm9sZXM/LigpID8/IFtdO1xuICAgIHJldHVybiByb2xlc1swXSA/PyBudWxsO1xuICB9KTtcblxuICByZWFkb25seSBhY3RpdmVPcmcgPSBzaWduYWw8T3JnYW5pemF0aW9uIHwgbnVsbD4obnVsbCk7XG4gIC8qKlxuICAgKiBMb2FkaW5nIGRlIGxhIGNhcmQgZGUgb3JnIGFjdGl2YSAoYE9yZ1NlcnZpY2UuZ2V0T3JnYCkuIFNpbiBlc3RvLCBsYSBjYXJkXG4gICAqIHNpbXBsZW1lbnRlIGFwYXJlY8OtYSBkZSBnb2xwZSBjdWFuZG8gZWwgZmV0Y2ggcmVzb2x2w61hIOKAlCBlbCB1c3VhcmlvIG5vXG4gICAqIHZlw61hIHF1ZSBhbGdvIGVzdGFiYSBjYXJnYW5kbyAocmVwb3J0YWRvIHBvciBlbCBDVE8pLiBDdWJyZSBsYSB2ZW50YW5hXG4gICAqIGVudHJlIFwiaGF5IGFjdGl2ZU9yZ0lkXCIgeSBcImVsIGRvYyBkZSBsYSBvcmcgbGxlZ8OzXCIuXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVPcmdMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBsb2dvdXRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2xvZ291dCcpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2FjY291bnQtbG9nb3V0JyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGRlbGV0ZUFjY291bnRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2RhbmdlckRlbGV0ZUN0YScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2FjY291bnQtZGVsZXRlJyxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhucywgQUNDT1VOVF9WSUVXX0kxOE4pO1xuICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIG5zLCB7IHdpdGhNZW51OiB0cnVlIH0pO1xuICAgIHRoaXMubG9hZFBlbmRpbmdJbnZpdGVzKCk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBvcmdJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICAgICAgaWYgKCFvcmdJZCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlT3JnLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9yZ0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVPcmdMb2dvRmFpbGVkLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuYWN0aXZlT3JnTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3JnU2VydmljZVxuICAgICAgICAgIC5nZXRPcmcob3JnSWQpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IG9yZyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlT3JnLnNldChvcmcpO1xuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9yZ0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU9yZy5zZXQobnVsbCk7XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlT3JnTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGNvbm5lY3RQYWdlUmVmcmVzaCgoKSA9PiB0aGlzLmxvYWRQZW5kaW5nSW52aXRlcygpKTtcbiAgfVxuXG4gIG9yZ1R5cGVMYWJlbCh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFBFUlNPTkFMOiB0aGlzLnR0KCdvcmdzVHlwZVBlcnNvbmFsJyksXG4gICAgICBQUklWQVRFOiB0aGlzLnR0KCdvcmdzVHlwZVByaXZhdGUnKSxcbiAgICAgIFBVQkxJQzogdGhpcy50dCgnb3Jnc1R5cGVQdWJsaWMnKSxcbiAgICAgIEJVU0lORVNTOiB0aGlzLnR0KCdvcmdzVHlwZUJ1c2luZXNzJyksXG4gICAgfTtcbiAgICByZXR1cm4gbWFwW3R5cGVdID8/IHR5cGU7XG4gIH1cblxuICBvbkRlbGV0ZUFjY291bnQoKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVBY2NvdW50T3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uQWNjb3VudERlbGV0ZWQ/LigpO1xuICB9XG5cbiAgb25NYW5hZ2VPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybCh0aGlzLnJlc29sdmVkQ29uZmlnKCkubWFuYWdlT3JnUm91dGUpO1xuICB9XG5cbiAgb25OZXdPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVPcmdPcGVuLnNldCh0cnVlKTtcbiAgfVxuXG4gIG9uT3JnQ3JlYXRlZChuZXdPcmc6IE9yZ2FuaXphdGlvbik6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk9yZ0NyZWF0ZWQ/LihuZXdPcmcpO1xuICB9XG5cbiAgb25Nb3JlSW5mbygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBPcmdJbmZvU2hlZXRDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICB0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9UaXRsZScpLFxuICAgICAgICBzdWJ0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9TdWJ0aXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnR0KCdvcmdzSW5mb0NvbnRlbnQnKSxcbiAgICAgICAgY2xvc2VMYWJlbDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICBjbG9zZVByb3BzOiB7XG4gICAgICAgICAgdGV4dDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgb25Mb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoLmxvZ291dFdpdGhDb25maXJtYXRpb24oKTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Mb2dnZWRPdXQ/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGVuZGluZ0ludml0ZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMub3JnU2VydmljZVxuICAgICAgICAuZ2V0UGVuZGluZ0ludml0YXRpb25zKClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlcy5zZXQoaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYWNjZXB0UGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5hY2NlcHRJbnZpdGF0aW9uKGludml0ZS5vcmdJZClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAocmVzcG9uc2UgPT5cbiAgICAgICAgICB0aGlzLmF1dGguc3dpdGNoT3JnKHJlc3BvbnNlLmFjdGl2ZU9yZyB8fCByZXNwb25zZS5vcmdJZCkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHJlc3BvbnNlLnJlZGlyZWN0VG8gfHwgJy9hcHAvaG9tZScpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ2ludml0ZUFjY2VwdGVkJyksXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlcy51cGRhdGUobGlzdCA9PiBsaXN0LmZpbHRlcihpID0+IGkub3JnSWQgIT09IGludml0ZS5vcmdJZCkpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7IGNvbnRleHQ6ICdhY2NvdW50LmFjY2VwdFBlbmRpbmdJbnZpdGUnIH0pO1xuICAgICAgICAgIHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKSxcbiAgICAgIH0pO1xuICB9XG5cbiAgZGVjbGluZVBlbmRpbmdJbnZpdGUoaW52aXRlOiBQZW5kaW5nSW52aXRhdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmludml0ZUFjY2VwdGluZygpKSByZXR1cm47XG4gICAgdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KGludml0ZS5vcmdJZCk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAuZGVjbGluZUludml0YXRpb24oaW52aXRlLm9yZ0lkKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ2ludml0ZURlY2xpbmVkJyksXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgZHVyYXRpb246IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlcy51cGRhdGUobGlzdCA9PiBsaXN0LmZpbHRlcihpID0+IGkub3JnSWQgIT09IGludml0ZS5vcmdJZCkpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7IGNvbnRleHQ6ICdhY2NvdW50LmRlY2xpbmVQZW5kaW5nSW52aXRlJyB9KTtcbiAgICAgICAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQobnVsbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQobnVsbCksXG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -47,7 +47,9 @@ const NAMESPACE = 'RequestReviewPanel';
47
47
  export class RequestReviewPanelComponent {
48
48
  constructor() {
49
49
  this.i18n = inject(I18nService);
50
- this.props = input.required();
50
+ this.props = input({ items: [] });
51
+ this.requestId = '';
52
+ this.loaded = new EventEmitter();
51
53
  this.decision = new EventEmitter();
52
54
  /** ID del ítem cuyo formulario de rechazo está abierto. */
53
55
  this._rejectingId = signal('');
@@ -114,7 +116,7 @@ export class RequestReviewPanelComponent {
114
116
  this.decision.emit({ itemId: item.id, approved: true });
115
117
  }
116
118
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RequestReviewPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RequestReviewPanelComponent, isStandalone: true, selector: "val-request-review-panel", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null }, itemBody: { classPropertyName: "itemBody", publicName: "itemBody", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { decision: "decision" }, ngImport: i0, template: `
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RequestReviewPanelComponent, isStandalone: true, selector: "val-request-review-panel", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, requestId: { classPropertyName: "requestId", publicName: "requestId", isSignal: false, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null }, itemBody: { classPropertyName: "itemBody", publicName: "itemBody", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { loaded: "loaded", decision: "decision" }, ngImport: i0, template: `
118
120
  <div class="rrp">
119
121
  @if (cfg().loading) {
120
122
  <div class="rrp__skel" aria-hidden="true">
@@ -353,9 +355,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
353
355
  }
354
356
  </div>
355
357
  `, styles: [":host{display:block}.rrp{display:flex;flex-direction:column;gap:12px}.rrp__skel{display:flex;flex-direction:column;gap:10px}.rrp__count{margin:0;font-size:.8125rem;font-weight:700;color:var(--ion-color-medium, #92949c);font-variant-numeric:tabular-nums}.rrp__queue{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.rrp__item{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:14px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1))}.rrp__title{margin:0;font-size:1rem;font-weight:700;color:var(--ion-text-color, #000)}.rrp__meta{margin:0;font-size:.8125rem;color:var(--ion-color-medium, #92949c)}.rrp__body{display:flex;flex-direction:column;gap:8px}.rrp__reject{display:flex;flex-direction:column;gap:6px}.rrp__reject-label{font-size:.8125rem;font-weight:600;color:var(--ion-text-color, #000)}.rrp__reject-input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:10px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #fff);color:var(--ion-text-color, #000);font-family:inherit;font-size:.875rem;resize:vertical}.rrp__reject-input:focus{outline:none;border-color:var(--ion-color-primary)}.rrp__reject-hint{margin:0;font-size:.75rem;color:var(--ion-color-medium, #92949c)}.rrp__actions{display:flex;flex-direction:column;gap:8px;margin-top:4px}@media (min-width: 576px){.rrp__actions{flex-direction:row;justify-content:flex-end;align-items:center;flex-wrap:wrap}}\n"] }]
356
- }], ctorParameters: () => [], propDecorators: { itemBody: [{
358
+ }], ctorParameters: () => [], propDecorators: { requestId: [{
359
+ type: Input
360
+ }], config: [{
361
+ type: Input
362
+ }], loaded: [{
363
+ type: Output
364
+ }], itemBody: [{
357
365
  type: Input
358
366
  }], decision: [{
359
367
  type: Output
360
368
  }] } });
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1yZXZpZXctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9yZXF1ZXN0LXJldmlldy1wYW5lbC9yZXF1ZXN0LXJldmlldy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUd4RSxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztBQUV2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUE2SEgsTUFBTSxPQUFPLDJCQUEyQjtJQTJCdEM7UUExQlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBOEIsQ0FBQztRQVFwRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFL0QsMkRBQTJEO1FBQzFDLGlCQUFZLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsSUFBSSxDQUFD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ZSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLFlBQ3RFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxSFQ7d0RBWVEsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgUkVRVUVTVF9SRVZJRVdfUEFORUxfSTE4TiB9IGZyb20gJy4vcmVxdWVzdC1yZXZpZXctcGFuZWwuaTE4bic7XG5pbXBvcnQgeyBSZXF1ZXN0UmV2aWV3RGVjaXNpb24sIFJlcXVlc3RSZXZpZXdJdGVtLCBSZXF1ZXN0UmV2aWV3UGFuZWxNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBOQU1FU1BBQ0UgPSAnUmVxdWVzdFJldmlld1BhbmVsJztcblxuLyoqXG4gKiB2YWwtcmVxdWVzdC1yZXZpZXctcGFuZWwg4oCUIGNvbGEgZGUgcmV2aXNpw7NuIGRlbCBmYWN0b3J5IChBRFItMDYyKS5cbiAqXG4gKiBFcyAqKnByZXNlbnRhY2lvbmFsKio6IG5vIGNhcmdhIGRhdG9zLCBubyBjb25vY2UgZWwgYmFja2VuZCBuaSBlbCBkb21pbmlvLiBFbFxuICogY29uc3VtZXIgbGUgcGFzYSBsYSBjb2xhIHlhIG5vcm1hbGl6YWRhIHkgZXNjdWNoYSBgKGRlY2lzaW9uKWAuXG4gKlxuICogIyMgUG9yIHF1w6kgZWwgY3VlcnBvIHZhIHByb3llY3RhZG8geSBubyBjb25maWd1cmFkb1xuICpcbiAqIEVsIEFEUiBvcmlnaW5hbCBwcm9wb27DrWEgZGVzY3JpYmlyIGVsIGN1ZXJwbyBjb24gYXJyYXlzIGRlIG5vbWJyZXMgZGUgY2FtcG9cbiAqIChgZmllbGRzLmRpc3BsYXk6IFsndGF4SWQnLCAndGFnc1JlcXVlc3RlZCddYCkuIEFsIGltcGxlbWVudGFybG8gY29uIGxvcyBkb3NcbiAqIGNvbnN1bWlkb3JlcyByZWFsZXMgZGVsYW50ZSBxdWVkw7MgY2xhcm8gcXVlIGVzbyByZWludmVudGEgdW4gbW90b3IgZGVcbiAqIHRlbXBsYXRpbmcgcGVvciBxdWUgQW5ndWxhcjogQ2hlc2VkIG5lY2VzaXRhIHVuYSBsaXN0YSBkZSBkb2N1bWVudG9zIGNvblxuICogaWNvbm9zIHkgYHRhcmdldD1cIl9ibGFua1wiYCwgT2toZWxpYSB1biBlbmxhY2UgYSBsYSByZWNldGEgeSB1biBpbnB1dCBkZVxuICogY29tZW50YXJpby4gTmluZ3VuYSBsaXN0YSBkZSBzdHJpbmdzIGV4cHJlc2EgZXNvIHNpbiBhZ3JlZ2FybGUgdW4gZmxhZyBhbFxuICogY29tcG9uZW50ZSBwb3IgY2FkYSBjYXNvIG51ZXZvLlxuICpcbiAqIEVudG9uY2VzIGVsIHBhbmVsIGVzIGR1ZcOxbyBkZSBsbyBxdWUgKipkZSB2ZXJkYWQqKiBzZSByZXBpdGUg4oCUIGxhIGPDoXNjYXJhLCBlbFxuICogY2hyb21lIGRlIGxhIGNhcmQsIHkgbGEgbWVjw6FuaWNhIGRlIGRlY2lzacOzbiDigJQgeSBlbCBjdWVycG8gZGUgY2FkYSDDrXRlbSBsb1xuICogZXNjcmliZSBjYWRhIHZlcnRpY2FsIGVuIHVuIGBuZy10ZW1wbGF0ZWAgY29uIHN1IHByb3BpbyBIVE1MLlxuICpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcmVxdWVzdC1yZXZpZXctcGFuZWwgW3Byb3BzXT1cInBhbmVsUHJvcHMoKVwiIFtpdGVtQm9keV09XCJib2R5XCJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2lzaW9uKT1cIm9uRGVjaXNpb24oJGV2ZW50KVwiIC8+XG4gKlxuICogPG5nLXRlbXBsYXRlICNib2R5IGxldC1pdGVtPlxuICogICA8YSBbcm91dGVyTGlua109XCJbJy9hcHAvcmVjZXRhcycsIHJlY2lwZUlkT2YoaXRlbSldXCI+VmVyIHJlY2V0YTwvYT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKiBgYGBcbiAqXG4gKiAjIyBSZWNoYXpvIGNvbiBtb3Rpdm9cbiAqXG4gKiBFbCBmbHVqbyBkZSBkb3MgcGFzb3MgKFJlY2hhemFyIOKGkiBlc2NyaWJpciBtb3Rpdm8g4oaSIENvbmZpcm1hcikgZXMgZGVsIHBhbmVsLFxuICogbm8gZGVsIGNvbnN1bWVyLCB5IGVzdMOhIGFjdGl2byBwb3IgZGVmZWN0by4gUmVjaGF6YXIgZGUgdW4gY2xpY2sgZGVqYSBhbFxuICogc29saWNpdGFudGUgc2luIHNhYmVyIHF1w6kgY29ycmVnaXI7IGVyYSBlbCDDum5pY28gZGUgbG9zIGRvcyBwYW5lbGVzIHF1ZSBsb1xuICogdGVuw61hIGJpZW4gcmVzdWVsdG8geSBhaG9yYSBsbyBoZXJlZGFuIGxvcyBkb3MuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1yZXF1ZXN0LXJldmlldy1wYW5lbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbkNvbXBvbmVudCwgRW1wdHlTdGF0ZUNvbXBvbmVudCwgU2tlbGV0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJycnBcIj5cbiAgICAgIEBpZiAoY2ZnKCkubG9hZGluZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnJwX19za2VsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgQGZvciAocm93IG9mIHNrZWxldG9uUm93cygpOyB0cmFjayByb3cpIHtcbiAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTIwcHgnLCBib3JkZXJSYWRpdXM6ICcxNHB4JyB9XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoY2ZnKCkuZXJyb3JTdGF0ZSkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJjZmcoKS5lcnJvclN0YXRlIVwiIC8+XG4gICAgICB9IEBlbHNlIGlmIChjZmcoKS5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgQGlmIChjZmcoKS5lbXB0eVN0YXRlOyBhcyBlbXB0eSkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVtcHR5XCIgLz5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAoY2ZnKCkuY291bnRMYWJlbDsgYXMgY291bnQpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cInJycF9fY291bnRcIj57eyBjb3VudCB9fTwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDx1bCBjbGFzcz1cInJycF9fcXVldWVcIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGNmZygpLml0ZW1zOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJycnBfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicnJwX190aXRsZVwiPnt7IGl0ZW0udGl0bGUgfX08L2gzPlxuXG4gICAgICAgICAgICAgIEBmb3IgKGxpbmUgb2YgaXRlbS5tZXRhID8/IFtdOyB0cmFjayBsaW5lKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJycnBfX21ldGFcIj57eyBsaW5lIH19PC9wPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgQGlmIChpdGVtQm9keSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycnBfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJvZHlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0sIGl0ZW06IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgQGlmIChyZWplY3RpbmdJZCgpID09PSBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJycF9fcmVqZWN0XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJycnBfX3JlamVjdC1sYWJlbFwiIFthdHRyLmZvcl09XCIncnJwLW5vdGUtJyArIGl0ZW0uaWRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY2ZnKCkucmVqZWN0UmVhc29uTGFiZWwgPz8gdCgncmVqZWN0UmVhc29uJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycnBfX3JlamVjdC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncnJwLW5vdGUtJyArIGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjZmcoKS5yZWplY3RSZWFzb25QbGFjZWhvbGRlciA/PyB0KCdyZWplY3RSZWFzb25QbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJlYXNvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uUmVhc29uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnJwX19yZWplY3QtaGludFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBjZmcoKS5yZWplY3RSZWFzb25IaW50ID8/IHQoJ3JlamVjdFJlYXNvbkhpbnQnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnJwX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiAncnJwLWNhbmNlbC0nICsgaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZygpLmNhbmNlbExhYmVsID8/IHQoJ2NhbmNlbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICdjbGVhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogaXNCdXN5KCkgPyAnRElTQUJMRUQnIDogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNhbmNlbFJlamVjdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46ICdycnAtY29uZmlybS1yZWplY3QtJyArIGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjZmcoKS5jb25maXJtUmVqZWN0TGFiZWwgPz8gdCgnY29uZmlybVJlamVjdCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbmZpcm1SZWplY3RTdGF0ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjb25maXJtUmVqZWN0KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnJwX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiAncnJwLXJlamVjdC0nICsgaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjZmcoKS5yZWplY3RMYWJlbCA/PyB0KCdyZWplY3QnKSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBpc0J1c3koKSA/ICdESVNBQkxFRCcgOiAnRU5BQkxFRCcsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJzdGFydFJlamVjdChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogJ3JycC1hcHByb3ZlLScgKyBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGNmZygpLmFwcHJvdmVMYWJlbCA/PyB0KCdhcHByb3ZlJyksXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnc29saWQnLFxuICAgICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGFwcHJvdmVTdGF0ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFwcHJvdmUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3JlcXVlc3QtcmV2aWV3LXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXZpZXdQYW5lbENvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dC5yZXF1aXJlZDxSZXF1ZXN0UmV2aWV3UGFuZWxNZXRhZGF0YT4oKTtcblxuICAvKipcbiAgICogQ3VlcnBvIGRlIGNhZGEgY2FyZC4gRWwgY29udGV4dG8gdHJhZSBlbCDDrXRlbSBjb21vIGAkaW1wbGljaXRgIHkgdGFtYmnDqW5cbiAgICogY29tbyBgaXRlbWAsIHBhcmEgcXVlIGVsIGNvbnN1bWVyIHB1ZWRhIHVzYXIgYGxldC1pdGVtYCBvIGBsZXQteD1cIml0ZW1cImAuXG4gICAqL1xuICBASW5wdXQoKSBpdGVtQm9keT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBSZXF1ZXN0UmV2aWV3SXRlbTsgaXRlbTogUmVxdWVzdFJldmlld0l0ZW0gfT47XG5cbiAgQE91dHB1dCgpIGRlY2lzaW9uID0gbmV3IEV2ZW50RW1pdHRlcjxSZXF1ZXN0UmV2aWV3RGVjaXNpb24+KCk7XG5cbiAgLyoqIElEIGRlbCDDrXRlbSBjdXlvIGZvcm11bGFyaW8gZGUgcmVjaGF6byBlc3TDoSBhYmllcnRvLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWplY3RpbmdJZCA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlamVjdGluZ0lkID0gdGhpcy5fcmVqZWN0aW5nSWQuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYXNvbiA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlYXNvbiA9IHRoaXMuX3JlYXNvbi5hc1JlYWRvbmx5KCk7XG5cbiAgcmVhZG9ubHkgY2ZnID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpKTtcblxuICByZWFkb25seSBza2VsZXRvblJvd3MgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmNmZygpLnNrZWxldG9uUm93cyA/PyAzIH0sIChfLCBpKSA9PiBpKSk7XG5cbiAgLyoqIEhheSB1bmEgZGVjaXNpw7NuIGVuIHZ1ZWxvOiB0b2RhIGxhIGNvbGEgc2UgY29uZ2VsYS4gKi9cbiAgcmVhZG9ubHkgaXNCdXN5ID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLmNmZygpLmJ1c3lJdGVtSWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShOQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KE5BTUVTUEFDRSwgUkVRVUVTVF9SRVZJRVdfUEFORUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIE5BTUVTUEFDRSk7XG4gIH1cblxuICAvKiogRWwgw610ZW0gZW4gdnVlbG8gbXVlc3RyYSBXT1JLSU5HOyBsb3MgZGVtw6FzIHF1ZWRhbiBkZXNoYWJpbGl0YWRvcy4gKi9cbiAgcHJpdmF0ZSBzdGF0ZUZvcihpdGVtOiBSZXF1ZXN0UmV2aWV3SXRlbSk6IENvbXBvbmVudFN0YXRlIHtcbiAgICBjb25zdCBidXN5SWQgPSB0aGlzLmNmZygpLmJ1c3lJdGVtSWQ7XG4gICAgaWYgKGJ1c3lJZCA9PT0gaXRlbS5pZCkgcmV0dXJuICdXT1JLSU5HJztcbiAgICByZXR1cm4gYnVzeUlkID8gJ0RJU0FCTEVEJyA6ICdFTkFCTEVEJztcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHByb3ZlU3RhdGUoaXRlbTogUmVxdWVzdFJldmlld0l0ZW0pOiBDb21wb25lbnRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVGb3IoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlybWFyIGVsIHJlY2hhem8gZXhpZ2UgbW90aXZvIGN1YW5kbyBgcmVxdWlyZVJlamVjdFJlYXNvbmAgZXN0w6EgYWN0aXZvXG4gICAqIChlbCBkZWZhdWx0KS4gRXMgZWwgZnJlbm8gcXVlIGV2aXRhIGxhIG5vdGlmaWNhY2nDs24gZGUgcmVjaGF6byB2YWPDrWEuXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uZmlybVJlamVjdFN0YXRlKGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtKTogQ29tcG9uZW50U3RhdGUge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZUZvcihpdGVtKTtcbiAgICBpZiAoc3RhdGUgIT09ICdFTkFCTEVEJykgcmV0dXJuIHN0YXRlO1xuICAgIGNvbnN0IG5lZWRzUmVhc29uID0gdGhpcy5jZmcoKS5yZXF1aXJlUmVqZWN0UmVhc29uICE9PSBmYWxzZTtcbiAgICByZXR1cm4gbmVlZHNSZWFzb24gJiYgdGhpcy5fcmVhc29uKCkudHJpbSgpLmxlbmd0aCA9PT0gMCA/ICdESVNBQkxFRCcgOiAnRU5BQkxFRCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SZWFzb25JbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWFzb24uc2V0KChldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXJ0UmVqZWN0KGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtKTogdm9pZCB7XG4gICAgLy8gU2luIG1vdGl2byBvYmxpZ2F0b3JpbyBlbCByZWNoYXpvIGVzIGRpcmVjdG86IGFicmlyIHVuIGZvcm11bGFyaW8gcXVlIG5vXG4gICAgLy8gZXhpZ2UgbmFkYSBzb2xvIGFncmVnYSB1biBwYXNvLlxuICAgIGlmICh0aGlzLmNmZygpLnJlcXVpcmVSZWplY3RSZWFzb24gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmRlY2lzaW9uLmVtaXQoeyBpdGVtSWQ6IGl0ZW0uaWQsIGFwcHJvdmVkOiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fcmVhc29uLnNldCgnJyk7XG4gICAgdGhpcy5fcmVqZWN0aW5nSWQuc2V0KGl0ZW0uaWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbmNlbFJlamVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWplY3RpbmdJZC5zZXQoJycpO1xuICAgIHRoaXMuX3JlYXNvbi5zZXQoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpcm1SZWplY3QoaXRlbTogUmVxdWVzdFJldmlld0l0ZW0pOiB2b2lkIHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLl9yZWFzb24oKS50cmltKCk7XG4gICAgaWYgKHRoaXMuY2ZnKCkucmVxdWlyZVJlamVjdFJlYXNvbiAhPT0gZmFsc2UgJiYgcmVhc29uLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHRoaXMuZGVjaXNpb24uZW1pdCh7IGl0ZW1JZDogaXRlbS5pZCwgYXBwcm92ZWQ6IGZhbHNlLCByZWFzb246IHJlYXNvbiB8fCB1bmRlZmluZWQgfSk7XG4gICAgdGhpcy5jYW5jZWxSZWplY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHByb3ZlKGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5kZWNpc2lvbi5lbWl0KHsgaXRlbUlkOiBpdGVtLmlkLCBhcHByb3ZlZDogdHJ1ZSB9KTtcbiAgfVxufVxuIl19
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1yZXZpZXctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9yZXF1ZXN0LXJldmlldy1wYW5lbC9yZXF1ZXN0LXJldmlldy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVN4RSxNQUFNLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztBQUV2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUE2SEgsTUFBTSxPQUFPLDJCQUEyQjtJQStCdEM7UUE5QlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUxQixVQUFLLEdBQUcsS0FBSyxDQUE2QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQVF4QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7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QkFBaUI7OzRGQXlIcEUsMkJBQTJCO2tCQTVIdkMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxZQUN0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUhUO3dEQVFRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFNRSxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBSRVFVRVNUX1JFVklFV19QQU5FTF9JMThOIH0gZnJvbSAnLi9yZXF1ZXN0LXJldmlldy1wYW5lbC5pMThuJztcbmltcG9ydCB7IEFwcFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0cy90eXBlcyc7XG5pbXBvcnQge1xuICBSZXF1ZXN0UmV2aWV3RGVjaXNpb24sXG4gIFJlcXVlc3RSZXZpZXdJdGVtLFxuICBSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWcsXG4gIFJlcXVlc3RSZXZpZXdQYW5lbE1ldGFkYXRhLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgTkFNRVNQQUNFID0gJ1JlcXVlc3RSZXZpZXdQYW5lbCc7XG5cbi8qKlxuICogdmFsLXJlcXVlc3QtcmV2aWV3LXBhbmVsIOKAlCBjb2xhIGRlIHJldmlzacOzbiBkZWwgZmFjdG9yeSAoQURSLTA2MikuXG4gKlxuICogRXMgKipwcmVzZW50YWNpb25hbCoqOiBubyBjYXJnYSBkYXRvcywgbm8gY29ub2NlIGVsIGJhY2tlbmQgbmkgZWwgZG9taW5pby4gRWxcbiAqIGNvbnN1bWVyIGxlIHBhc2EgbGEgY29sYSB5YSBub3JtYWxpemFkYSB5IGVzY3VjaGEgYChkZWNpc2lvbilgLlxuICpcbiAqICMjIFBvciBxdcOpIGVsIGN1ZXJwbyB2YSBwcm95ZWN0YWRvIHkgbm8gY29uZmlndXJhZG9cbiAqXG4gKiBFbCBBRFIgb3JpZ2luYWwgcHJvcG9uw61hIGRlc2NyaWJpciBlbCBjdWVycG8gY29uIGFycmF5cyBkZSBub21icmVzIGRlIGNhbXBvXG4gKiAoYGZpZWxkcy5kaXNwbGF5OiBbJ3RheElkJywgJ3RhZ3NSZXF1ZXN0ZWQnXWApLiBBbCBpbXBsZW1lbnRhcmxvIGNvbiBsb3MgZG9zXG4gKiBjb25zdW1pZG9yZXMgcmVhbGVzIGRlbGFudGUgcXVlZMOzIGNsYXJvIHF1ZSBlc28gcmVpbnZlbnRhIHVuIG1vdG9yIGRlXG4gKiB0ZW1wbGF0aW5nIHBlb3IgcXVlIEFuZ3VsYXI6IENoZXNlZCBuZWNlc2l0YSB1bmEgbGlzdGEgZGUgZG9jdW1lbnRvcyBjb25cbiAqIGljb25vcyB5IGB0YXJnZXQ9XCJfYmxhbmtcImAsIE9raGVsaWEgdW4gZW5sYWNlIGEgbGEgcmVjZXRhIHkgdW4gaW5wdXQgZGVcbiAqIGNvbWVudGFyaW8uIE5pbmd1bmEgbGlzdGEgZGUgc3RyaW5ncyBleHByZXNhIGVzbyBzaW4gYWdyZWdhcmxlIHVuIGZsYWcgYWxcbiAqIGNvbXBvbmVudGUgcG9yIGNhZGEgY2FzbyBudWV2by5cbiAqXG4gKiBFbnRvbmNlcyBlbCBwYW5lbCBlcyBkdWXDsW8gZGUgbG8gcXVlICoqZGUgdmVyZGFkKiogc2UgcmVwaXRlIOKAlCBsYSBjw6FzY2FyYSwgZWxcbiAqIGNocm9tZSBkZSBsYSBjYXJkLCB5IGxhIG1lY8OhbmljYSBkZSBkZWNpc2nDs24g4oCUIHkgZWwgY3VlcnBvIGRlIGNhZGEgw610ZW0gbG9cbiAqIGVzY3JpYmUgY2FkYSB2ZXJ0aWNhbCBlbiB1biBgbmctdGVtcGxhdGVgIGNvbiBzdSBwcm9waW8gSFRNTC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8dmFsLXJlcXVlc3QtcmV2aWV3LXBhbmVsIFtwcm9wc109XCJwYW5lbFByb3BzKClcIiBbaXRlbUJvZHldPVwiYm9keVwiXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNpc2lvbik9XCJvbkRlY2lzaW9uKCRldmVudClcIiAvPlxuICpcbiAqIDxuZy10ZW1wbGF0ZSAjYm9keSBsZXQtaXRlbT5cbiAqICAgPGEgW3JvdXRlckxpbmtdPVwiWycvYXBwL3JlY2V0YXMnLCByZWNpcGVJZE9mKGl0ZW0pXVwiPlZlciByZWNldGE8L2E+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKlxuICogIyMgUmVjaGF6byBjb24gbW90aXZvXG4gKlxuICogRWwgZmx1am8gZGUgZG9zIHBhc29zIChSZWNoYXphciDihpIgZXNjcmliaXIgbW90aXZvIOKGkiBDb25maXJtYXIpIGVzIGRlbCBwYW5lbCxcbiAqIG5vIGRlbCBjb25zdW1lciwgeSBlc3TDoSBhY3Rpdm8gcG9yIGRlZmVjdG8uIFJlY2hhemFyIGRlIHVuIGNsaWNrIGRlamEgYWxcbiAqIHNvbGljaXRhbnRlIHNpbiBzYWJlciBxdcOpIGNvcnJlZ2lyOyBlcmEgZWwgw7puaWNvIGRlIGxvcyBkb3MgcGFuZWxlcyBxdWUgbG9cbiAqIHRlbsOtYSBiaWVuIHJlc3VlbHRvIHkgYWhvcmEgbG8gaGVyZWRhbiBsb3MgZG9zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcmVxdWVzdC1yZXZpZXctcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIEVtcHR5U3RhdGVDb21wb25lbnQsIFNrZWxldG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnJwXCI+XG4gICAgICBAaWYgKGNmZygpLmxvYWRpbmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJycF9fc2tlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIEBmb3IgKHJvdyBvZiBza2VsZXRvblJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICA8dmFsLXNrZWxldG9uIFtwcm9wc109XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEyMHB4JywgYm9yZGVyUmFkaXVzOiAnMTRweCcgfVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGNmZygpLmVycm9yU3RhdGUpIHtcbiAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiY2ZnKCkuZXJyb3JTdGF0ZSFcIiAvPlxuICAgICAgfSBAZWxzZSBpZiAoY2ZnKCkuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIEBpZiAoY2ZnKCkuZW1wdHlTdGF0ZTsgYXMgZW1wdHkpIHtcbiAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlbXB0eVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKGNmZygpLmNvdW50TGFiZWw7IGFzIGNvdW50KSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJycnBfX2NvdW50XCI+e3sgY291bnQgfX08L3A+XG4gICAgICAgIH1cblxuICAgICAgICA8dWwgY2xhc3M9XCJycnBfX3F1ZXVlXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBjZmcoKS5pdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwicnJwX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInJycF9fdGl0bGVcIj57eyBpdGVtLnRpdGxlIH19PC9oMz5cblxuICAgICAgICAgICAgICBAZm9yIChsaW5lIG9mIGl0ZW0ubWV0YSA/PyBbXTsgdHJhY2sgbGluZSkge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnJwX19tZXRhXCI+e3sgbGluZSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIEBpZiAoaXRlbUJvZHkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnJwX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1Cb2R5XCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLCBpdGVtOiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIEBpZiAocmVqZWN0aW5nSWQoKSA9PT0gaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycnBfX3JlamVjdFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnJwX19yZWplY3QtbGFiZWxcIiBbYXR0ci5mb3JdPVwiJ3JycC1ub3RlLScgKyBpdGVtLmlkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNmZygpLnJlamVjdFJlYXNvbkxhYmVsID8/IHQoJ3JlamVjdFJlYXNvbicpIH19XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicnJwX19yZWplY3QtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3JycC1ub3RlLScgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY2ZnKCkucmVqZWN0UmVhc29uUGxhY2Vob2xkZXIgPz8gdCgncmVqZWN0UmVhc29uUGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyZWFzb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblJlYXNvbklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJycF9fcmVqZWN0LWhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY2ZnKCkucmVqZWN0UmVhc29uSGludCA/PyB0KCdyZWplY3RSZWFzb25IaW50JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJycF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogJ3JycC1jYW5jZWwtJyArIGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjZmcoKS5jYW5jZWxMYWJlbCA/PyB0KCdjYW5jZWwnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGlzQnVzeSgpID8gJ0RJU0FCTEVEJyA6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjYW5jZWxSZWplY3QoKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiAncnJwLWNvbmZpcm0tcmVqZWN0LScgKyBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogY2ZnKCkuY29uZmlybVJlamVjdExhYmVsID8/IHQoJ2NvbmZpcm1SZWplY3QnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb25maXJtUmVqZWN0U3RhdGUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY29uZmlybVJlamVjdChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJycF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogJ3JycC1yZWplY3QtJyArIGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogY2ZnKCkucmVqZWN0TGFiZWwgPz8gdCgncmVqZWN0JyksXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogaXNCdXN5KCkgPyAnRElTQUJMRUQnIDogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnRSZWplY3QoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgdG9rZW46ICdycnAtYXBwcm92ZS0nICsgaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjZmcoKS5hcHByb3ZlTGFiZWwgPz8gdCgnYXBwcm92ZScpLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBhcHByb3ZlU3RhdGUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhcHByb3ZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9yZXF1ZXN0LXJldmlldy1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmV2aWV3UGFuZWxDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8UmVxdWVzdFJldmlld1BhbmVsTWV0YWRhdGE+KHsgaXRlbXM6IFtdIH0pO1xuXG4gIEBJbnB1dCgpIHJlcXVlc3RJZCA9ICcnO1xuICBASW5wdXQoKSBjb25maWc/OiBSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWc7XG4gIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFwcFJlcXVlc3Q+KCk7XG5cbiAgLyoqXG4gICAqIEN1ZXJwbyBkZSBjYWRhIGNhcmQuIEVsIGNvbnRleHRvIHRyYWUgZWwgw610ZW0gY29tbyBgJGltcGxpY2l0YCB5IHRhbWJpw6luXG4gICAqIGNvbW8gYGl0ZW1gLCBwYXJhIHF1ZSBlbCBjb25zdW1lciBwdWVkYSB1c2FyIGBsZXQtaXRlbWAgbyBgbGV0LXg9XCJpdGVtXCJgLlxuICAgKi9cbiAgQElucHV0KCkgaXRlbUJvZHk/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogUmVxdWVzdFJldmlld0l0ZW07IGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtIH0+O1xuXG4gIEBPdXRwdXQoKSBkZWNpc2lvbiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVxdWVzdFJldmlld0RlY2lzaW9uPigpO1xuXG4gIC8qKiBJRCBkZWwgw610ZW0gY3V5byBmb3JtdWxhcmlvIGRlIHJlY2hhem8gZXN0w6EgYWJpZXJ0by4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVqZWN0aW5nSWQgPSBzaWduYWwoJycpO1xuICByZWFkb25seSByZWplY3RpbmdJZCA9IHRoaXMuX3JlamVjdGluZ0lkLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFzb24gPSBzaWduYWwoJycpO1xuICByZWFkb25seSByZWFzb24gPSB0aGlzLl9yZWFzb24uYXNSZWFkb25seSgpO1xuXG4gIHJlYWRvbmx5IGNmZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKSk7XG5cbiAgcmVhZG9ubHkgc2tlbGV0b25Sb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5jZmcoKS5za2VsZXRvblJvd3MgPz8gMyB9LCAoXywgaSkgPT4gaSkpO1xuXG4gIC8qKiBIYXkgdW5hIGRlY2lzacOzbiBlbiB2dWVsbzogdG9kYSBsYSBjb2xhIHNlIGNvbmdlbGEuICovXG4gIHJlYWRvbmx5IGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5jZmcoKS5idXN5SXRlbUlkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChOQU1FU1BBQ0UsIFJFUVVFU1RfUkVWSUVXX1BBTkVMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCBOQU1FU1BBQ0UpO1xuICB9XG5cbiAgLyoqIEVsIMOtdGVtIGVuIHZ1ZWxvIG11ZXN0cmEgV09SS0lORzsgbG9zIGRlbcOhcyBxdWVkYW4gZGVzaGFiaWxpdGFkb3MuICovXG4gIHByaXZhdGUgc3RhdGVGb3IoaXRlbTogUmVxdWVzdFJldmlld0l0ZW0pOiBDb21wb25lbnRTdGF0ZSB7XG4gICAgY29uc3QgYnVzeUlkID0gdGhpcy5jZmcoKS5idXN5SXRlbUlkO1xuICAgIGlmIChidXN5SWQgPT09IGl0ZW0uaWQpIHJldHVybiAnV09SS0lORyc7XG4gICAgcmV0dXJuIGJ1c3lJZCA/ICdESVNBQkxFRCcgOiAnRU5BQkxFRCc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwcm92ZVN0YXRlKGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtKTogQ29tcG9uZW50U3RhdGUge1xuICAgIHJldHVybiB0aGlzLnN0YXRlRm9yKGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpcm1hciBlbCByZWNoYXpvIGV4aWdlIG1vdGl2byBjdWFuZG8gYHJlcXVpcmVSZWplY3RSZWFzb25gIGVzdMOhIGFjdGl2b1xuICAgKiAoZWwgZGVmYXVsdCkuIEVzIGVsIGZyZW5vIHF1ZSBldml0YSBsYSBub3RpZmljYWNpw7NuIGRlIHJlY2hhem8gdmFjw61hLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbmZpcm1SZWplY3RTdGF0ZShpdGVtOiBSZXF1ZXN0UmV2aWV3SXRlbSk6IENvbXBvbmVudFN0YXRlIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVGb3IoaXRlbSk7XG4gICAgaWYgKHN0YXRlICE9PSAnRU5BQkxFRCcpIHJldHVybiBzdGF0ZTtcbiAgICBjb25zdCBuZWVkc1JlYXNvbiA9IHRoaXMuY2ZnKCkucmVxdWlyZVJlamVjdFJlYXNvbiAhPT0gZmFsc2U7XG4gICAgcmV0dXJuIG5lZWRzUmVhc29uICYmIHRoaXMuX3JlYXNvbigpLnRyaW0oKS5sZW5ndGggPT09IDAgPyAnRElTQUJMRUQnIDogJ0VOQUJMRUQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUmVhc29uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fcmVhc29uLnNldCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdGFydFJlamVjdChpdGVtOiBSZXF1ZXN0UmV2aWV3SXRlbSk6IHZvaWQge1xuICAgIC8vIFNpbiBtb3Rpdm8gb2JsaWdhdG9yaW8gZWwgcmVjaGF6byBlcyBkaXJlY3RvOiBhYnJpciB1biBmb3JtdWxhcmlvIHF1ZSBub1xuICAgIC8vIGV4aWdlIG5hZGEgc29sbyBhZ3JlZ2EgdW4gcGFzby5cbiAgICBpZiAodGhpcy5jZmcoKS5yZXF1aXJlUmVqZWN0UmVhc29uID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kZWNpc2lvbi5lbWl0KHsgaXRlbUlkOiBpdGVtLmlkLCBhcHByb3ZlZDogZmFsc2UgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3JlYXNvbi5zZXQoJycpO1xuICAgIHRoaXMuX3JlamVjdGluZ0lkLnNldChpdGVtLmlkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYW5jZWxSZWplY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVqZWN0aW5nSWQuc2V0KCcnKTtcbiAgICB0aGlzLl9yZWFzb24uc2V0KCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25maXJtUmVqZWN0KGl0ZW06IFJlcXVlc3RSZXZpZXdJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5fcmVhc29uKCkudHJpbSgpO1xuICAgIGlmICh0aGlzLmNmZygpLnJlcXVpcmVSZWplY3RSZWFzb24gIT09IGZhbHNlICYmIHJlYXNvbi5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB0aGlzLmRlY2lzaW9uLmVtaXQoeyBpdGVtSWQ6IGl0ZW0uaWQsIGFwcHJvdmVkOiBmYWxzZSwgcmVhc29uOiByZWFzb24gfHwgdW5kZWZpbmVkIH0pO1xuICAgIHRoaXMuY2FuY2VsUmVqZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwcm92ZShpdGVtOiBSZXF1ZXN0UmV2aWV3SXRlbSk6IHZvaWQge1xuICAgIHRoaXMuZGVjaXNpb24uZW1pdCh7IGl0ZW1JZDogaXRlbS5pZCwgYXBwcm92ZWQ6IHRydWUgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3JlcXVlc3QtcmV2aWV3LXBhbmVsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuXG4vKipcbiAqIFVuIMOtdGVtIGRlIGxhIGNvbGEgZGUgcmV2aXNpw7NuLCB5YSBub3JtYWxpemFkbyBwb3IgZWwgY29uc3VtZXIuXG4gKlxuICogRGVsaWJlcmFkYW1lbnRlIHBvYnJlOiBpZCwgdMOtdHVsbyB5IHVuYXMgbMOtbmVhcyBkZSBtZXRhZGF0YS4gVG9kbyBsbyBxdWUgc2VhXG4gKiBkZWwgZG9taW5pbyAoZWwgUlVUIGRlbCBjcmlhZGVybywgbG9zIHRhZ3MgZGUgbGEgcmVjZXRhLCBsb3MgZG9jdW1lbnRvc1xuICogYWRqdW50b3MpIHZhIGVuIGVsIGN1ZXJwbyBwcm95ZWN0YWRvLCBubyBhY8OhIOKAlCBsYSBsaWIgbm8gYXByZW5kZSBxdcOpIGVzIHVuYVxuICogcmVjZXRhIG5pIHVuIGNyaWFkZXJvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RSZXZpZXdJdGVtIHtcbiAgLyoqIElkZW50aWRhZCBkZWwgw610ZW0uIEVzIGxvIHF1ZSB2aWFqYSBlbiBsYSBkZWNpc2nDs24uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBFbmNhYmV6YWRvIGRlIGxhIGNhcmQuICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMw61uZWFzIGJham8gZWwgdMOtdHVsbyAoZmVjaGEgZGUgZW52w61vLCBpZGVudGlmaWNhZG9yLCBlc3RhZG8pLiBUZXh0byB5YVxuICAgKiByZXN1ZWx0byB5IGZvcm1hdGVhZG8gcG9yIGVsIGNvbnN1bWVyOiBsYSBsaWIgbm8gdHJhZHVjZSBuaSBmb3JtYXRlYSBmZWNoYXMuXG4gICAqL1xuICBtZXRhPzogc3RyaW5nW107XG59XG5cbi8qKiBMbyBxdWUgZW1pdGUgZWwgcGFuZWwgY3VhbmRvIGVsIHJldmlzb3IgZGVjaWRlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3RGVjaXNpb24ge1xuICBpdGVtSWQ6IHN0cmluZztcbiAgYXBwcm92ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNb3Rpdm8gZGVsIHJlY2hhem8uIFByZXNlbnRlIHNvbG8gYWwgcmVjaGF6YXIgY29uIGByZXF1aXJlUmVqZWN0UmVhc29uYFxuICAgKiBhY3Rpdm8gKGVsIGRlZmF1bHQpLCBkb25kZSBlbCBwYW5lbCBnYXJhbnRpemEgcXVlIG5vIHZpZW5lIHZhY8Otby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3UGFuZWxNZXRhZGF0YSB7XG4gIC8qKiBMYSBjb2xhLiBWYWPDrWEgKyBgbG9hZGluZzogZmFsc2VgIG11ZXN0cmEgZWwgZXN0YWRvIHZhY8Otby4gKi9cbiAgaXRlbXM6IFJlcXVlc3RSZXZpZXdJdGVtW107XG5cbiAgLyoqIE11ZXN0cmEgZWwgc2tlbGV0b24gZW4gdmV6IGRlIGxhIGxpc3RhLiAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIEZpbGFzIGRlbCBza2VsZXRvbiAoZGVmYXVsdDogMykuICovXG4gIHNrZWxldG9uUm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGVycm9yIGRlIGxhIGNhcmdhLiBUaWVuZSBwcmlvcmlkYWQgc29icmUgdG9kbyBsbyBkZW3DoXMg4oCUIHVuIHBhbmVsXG4gICAqIHF1ZSBubyBwdWRvIGNhcmdhciBubyBkZWJlIG1vc3RyYXIgXCJubyBoYXkgbmFkYSBwZW5kaWVudGVcIiwgcXVlIGVzIHVuYVxuICAgKiBhZmlybWFjacOzbiBkaXN0aW50YSB5IGZhbHNhLlxuICAgKi9cbiAgZXJyb3JTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw7XG4gIC8qKiBFc3RhZG8gY3VhbmRvIGxhIGNvbGEgZXN0w6EgdmFjw61hIGRlIHZlcmRhZC4gKi9cbiAgZW1wdHlTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YTtcblxuICAvKipcbiAgICogTMOtbmVhIGRlIGNvbnRlbyBzb2JyZSBsYSBsaXN0YSwgeWEgY29tcHVlc3RhIHBvciBlbCBjb25zdW1lclxuICAgKiAoXCIzIHBlbmRpZW50ZXNcIikuIFNpbiBlbGxhIG5vIHNlIG11ZXN0cmEgbmFkYS5cbiAgICovXG4gIGNvdW50TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIGRlbCDDrXRlbSBjb24gdW5hIGRlY2lzacOzbiBlbiB2dWVsby4gRXNlIMOtdGVtIG11ZXN0cmEgc3UgYWNjacOzbiBlblxuICAgKiBgV09SS0lOR2AgeSBlbCByZXN0byBxdWVkYSBkZXNoYWJpbGl0YWRvOiBkb3MgZGVjaXNpb25lcyBzaW11bHTDoW5lYXMgc29icmVcbiAgICogbGEgbWlzbWEgY29sYSBlcyBqdXN0byBsbyBxdWUgbm8gc2UgcXVpZXJlLlxuICAgKi9cbiAgYnVzeUl0ZW1JZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXhpZ2lyIHVuIG1vdGl2byBlc2NyaXRvIHBhcmEgcmVjaGF6YXIgKGRlZmF1bHQ6ICoqdHJ1ZSoqKS5cbiAgICpcbiAgICogRXMgZWwgZGVmYXVsdCBhIHByb3DDs3NpdG8uIFJlY2hhemFyIHNpbiBleHBsaWNhY2nDs24gZGVqYSBhbCBzb2xpY2l0YW50ZSBzaW5cbiAgICogc2FiZXIgcXXDqSBjb3JyZWdpciwgeSBsYSBub3RpZmljYWNpw7NuIGRlIGRlY2lzacOzbiBzYWxlIHZhY8OtYS4gUG9uZXJsbyBlblxuICAgKiBgZmFsc2VgIGVzIHVuYSBkZWNpc2nDs24gZXhwbMOtY2l0YSBkZWwgY29uc3VtZXIsIG5vIHVuIG9sdmlkby5cbiAgICovXG4gIHJlcXVpcmVSZWplY3RSZWFzb24/OiBib29sZWFuO1xuXG4gIC8qKiBFdGlxdWV0YXMuIFRvZGFzIG9wY2lvbmFsZXMg4oCUIGxhIGxpYiB0cmFlIGRlZmF1bHRzIGVzL2VuLiAqL1xuICBhcHByb3ZlTGFiZWw/OiBzdHJpbmc7XG4gIHJlamVjdExhYmVsPzogc3RyaW5nO1xuICBjYW5jZWxMYWJlbD86IHN0cmluZztcbiAgY29uZmlybVJlamVjdExhYmVsPzogc3RyaW5nO1xuICByZWplY3RSZWFzb25MYWJlbD86IHN0cmluZztcbiAgcmVqZWN0UmVhc29uUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHJlamVjdFJlYXNvbkhpbnQ/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3JlcXVlc3QtcmV2aWV3LXBhbmVsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgQXBwUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3RW50aXR5SGVyb0NvbmZpZyB7XG4gIGxhYmVsS2V5Pzogc3RyaW5nO1xuICBuYW1lRmllbGQ/OiBzdHJpbmc7XG4gIGltYWdlRmllbGQ/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVySWNvbj86IHN0cmluZztcbiAgY2FuTmF2aWdhdGU/OiAobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IGJvb2xlYW47XG4gIG5hdmlnYXRlPzogKG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCByZXF1ZXN0PzogQXBwUmVxdWVzdCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3UGFuZWxDb25maWcge1xuICBpMThuTmFtZXNwYWNlPzogc3RyaW5nO1xuICBlbnRpdHlIZXJvPzogUmVxdWVzdFJldmlld0VudGl0eUhlcm9Db25maWc7XG4gIGNhblJldmlldz86IChyZXF1ZXN0PzogQXBwUmVxdWVzdCkgPT4gYm9vbGVhbjtcbiAgdmlld0VudGl0eUN0YUxhYmVsS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVuIMOtdGVtIGRlIGxhIGNvbGEgZGUgcmV2aXNpw7NuLCB5YSBub3JtYWxpemFkbyBwb3IgZWwgY29uc3VtZXIuXG4gKlxuICogRGVsaWJlcmFkYW1lbnRlIHBvYnJlOiBpZCwgdMOtdHVsbyB5IHVuYXMgbMOtbmVhcyBkZSBtZXRhZGF0YS4gVG9kbyBsbyBxdWUgc2VhXG4gKiBkZWwgZG9taW5pbyAoZWwgUlVUIGRlbCBjcmlhZGVybywgbG9zIHRhZ3MgZGUgbGEgcmVjZXRhLCBsb3MgZG9jdW1lbnRvc1xuICogYWRqdW50b3MpIHZhIGVuIGVsIGN1ZXJwbyBwcm95ZWN0YWRvLCBubyBhY8OhIOKAlCBsYSBsaWIgbm8gYXByZW5kZSBxdcOpIGVzIHVuYVxuICogcmVjZXRhIG5pIHVuIGNyaWFkZXJvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RSZXZpZXdJdGVtIHtcbiAgLyoqIElkZW50aWRhZCBkZWwgw610ZW0uIEVzIGxvIHF1ZSB2aWFqYSBlbiBsYSBkZWNpc2nDs24uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBFbmNhYmV6YWRvIGRlIGxhIGNhcmQuICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMw61uZWFzIGJham8gZWwgdMOtdHVsbyAoZmVjaGEgZGUgZW52w61vLCBpZGVudGlmaWNhZG9yLCBlc3RhZG8pLiBUZXh0byB5YVxuICAgKiByZXN1ZWx0byB5IGZvcm1hdGVhZG8gcG9yIGVsIGNvbnN1bWVyOiBsYSBsaWIgbm8gdHJhZHVjZSBuaSBmb3JtYXRlYSBmZWNoYXMuXG4gICAqL1xuICBtZXRhPzogc3RyaW5nW107XG59XG5cbi8qKiBMbyBxdWUgZW1pdGUgZWwgcGFuZWwgY3VhbmRvIGVsIHJldmlzb3IgZGVjaWRlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3RGVjaXNpb24ge1xuICBpdGVtSWQ6IHN0cmluZztcbiAgYXBwcm92ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNb3Rpdm8gZGVsIHJlY2hhem8uIFByZXNlbnRlIHNvbG8gYWwgcmVjaGF6YXIgY29uIGByZXF1aXJlUmVqZWN0UmVhc29uYFxuICAgKiBhY3Rpdm8gKGVsIGRlZmF1bHQpLCBkb25kZSBlbCBwYW5lbCBnYXJhbnRpemEgcXVlIG5vIHZpZW5lIHZhY8Otby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3UGFuZWxNZXRhZGF0YSB7XG4gIC8qKiBMYSBjb2xhLiBWYWPDrWEgKyBgbG9hZGluZzogZmFsc2VgIG11ZXN0cmEgZWwgZXN0YWRvIHZhY8Otby4gKi9cbiAgaXRlbXM6IFJlcXVlc3RSZXZpZXdJdGVtW107XG5cbiAgLyoqIE11ZXN0cmEgZWwgc2tlbGV0b24gZW4gdmV6IGRlIGxhIGxpc3RhLiAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIEZpbGFzIGRlbCBza2VsZXRvbiAoZGVmYXVsdDogMykuICovXG4gIHNrZWxldG9uUm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGVycm9yIGRlIGxhIGNhcmdhLiBUaWVuZSBwcmlvcmlkYWQgc29icmUgdG9kbyBsbyBkZW3DoXMg4oCUIHVuIHBhbmVsXG4gICAqIHF1ZSBubyBwdWRvIGNhcmdhciBubyBkZWJlIG1vc3RyYXIgXCJubyBoYXkgbmFkYSBwZW5kaWVudGVcIiwgcXVlIGVzIHVuYVxuICAgKiBhZmlybWFjacOzbiBkaXN0aW50YSB5IGZhbHNhLlxuICAgKi9cbiAgZXJyb3JTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw7XG4gIC8qKiBFc3RhZG8gY3VhbmRvIGxhIGNvbGEgZXN0w6EgdmFjw61hIGRlIHZlcmRhZC4gKi9cbiAgZW1wdHlTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YTtcblxuICAvKipcbiAgICogTMOtbmVhIGRlIGNvbnRlbyBzb2JyZSBsYSBsaXN0YSwgeWEgY29tcHVlc3RhIHBvciBlbCBjb25zdW1lclxuICAgKiAoXCIzIHBlbmRpZW50ZXNcIikuIFNpbiBlbGxhIG5vIHNlIG11ZXN0cmEgbmFkYS5cbiAgICovXG4gIGNvdW50TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIGRlbCDDrXRlbSBjb24gdW5hIGRlY2lzacOzbiBlbiB2dWVsby4gRXNlIMOtdGVtIG11ZXN0cmEgc3UgYWNjacOzbiBlblxuICAgKiBgV09SS0lOR2AgeSBlbCByZXN0byBxdWVkYSBkZXNoYWJpbGl0YWRvOiBkb3MgZGVjaXNpb25lcyBzaW11bHTDoW5lYXMgc29icmVcbiAgICogbGEgbWlzbWEgY29sYSBlcyBqdXN0byBsbyBxdWUgbm8gc2UgcXVpZXJlLlxuICAgKi9cbiAgYnVzeUl0ZW1JZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXhpZ2lyIHVuIG1vdGl2byBlc2NyaXRvIHBhcmEgcmVjaGF6YXIgKGRlZmF1bHQ6ICoqdHJ1ZSoqKS5cbiAgICpcbiAgICogRXMgZWwgZGVmYXVsdCBhIHByb3DDs3NpdG8uIFJlY2hhemFyIHNpbiBleHBsaWNhY2nDs24gZGVqYSBhbCBzb2xpY2l0YW50ZSBzaW5cbiAgICogc2FiZXIgcXXDqSBjb3JyZWdpciwgeSBsYSBub3RpZmljYWNpw7NuIGRlIGRlY2lzacOzbiBzYWxlIHZhY8OtYS4gUG9uZXJsbyBlblxuICAgKiBgZmFsc2VgIGVzIHVuYSBkZWNpc2nDs24gZXhwbMOtY2l0YSBkZWwgY29uc3VtZXIsIG5vIHVuIG9sdmlkby5cbiAgICovXG4gIHJlcXVpcmVSZWplY3RSZWFzb24/OiBib29sZWFuO1xuXG4gIC8qKiBFdGlxdWV0YXMuIFRvZGFzIG9wY2lvbmFsZXMg4oCUIGxhIGxpYiB0cmFlIGRlZmF1bHRzIGVzL2VuLiAqL1xuICBhcHByb3ZlTGFiZWw/OiBzdHJpbmc7XG4gIHJlamVjdExhYmVsPzogc3RyaW5nO1xuICBjYW5jZWxMYWJlbD86IHN0cmluZztcbiAgY29uZmlybVJlamVjdExhYmVsPzogc3RyaW5nO1xuICByZWplY3RSZWFzb25MYWJlbD86IHN0cmluZztcbiAgcmVqZWN0UmVhc29uUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHJlamVjdFJlYXNvbkhpbnQ/OiBzdHJpbmc7XG59XG4iXX0=