@gipisistemas/ng-core 1.1.6 → 1.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. package/bundles/gipisistemas-ng-core.umd.js +4286 -4177
  2. package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
  3. package/bundles/gipisistemas-ng-core.umd.min.js +8 -8
  4. package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
  5. package/core/guards/auth.guard.d.ts +3 -1
  6. package/core/guards/permission.guard.d.ts +5 -4
  7. package/core/interceptors/auth.interceptor.d.ts +2 -2
  8. package/core/services/authentication.service.d.ts +8 -9
  9. package/core.d.ts +0 -1
  10. package/esm2015/core/guards/auth.guard.js +16 -19
  11. package/esm2015/core/guards/permission.guard.js +31 -22
  12. package/esm2015/core/interceptors/auth.interceptor.js +7 -5
  13. package/esm2015/core/services/authentication.service.js +40 -34
  14. package/esm2015/core.js +1 -2
  15. package/esm2015/gipi-components.js +4 -1
  16. package/esm2015/shared/components/checkbox/checkbox.component.js +15 -11
  17. package/esm2015/shared/components/input/input.component.js +7 -2
  18. package/esm2015/shared/components/select-entity/select-entity.component.js +1 -1
  19. package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +2 -2
  20. package/esm2015/shared/components/select-entity-paged/shared/default-options.js +1 -2
  21. package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -8
  22. package/esm2015/shared/components/select-enum/select-enum.component.js +8 -3
  23. package/esm2015/shared/components/table/table.component.js +28 -9
  24. package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
  25. package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
  26. package/esm2015/shared/gipi-components/form-field/form-field.component.js +3 -3
  27. package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +1 -1
  28. package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
  29. package/esm2015/shared/gipi-components/input-select/input-select.component.js +1 -1
  30. package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +1 -1
  31. package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +1 -1
  32. package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
  33. package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +1 -1
  34. package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +1 -1
  35. package/esm2015/shared/gipi-components/select/select.component.js +1 -1
  36. package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +3 -3
  37. package/esm2015/shared/gipi-components/skeleton/skeleton.component.js +44 -0
  38. package/esm2015/shared/gipi-components/skeleton/skeleton.directive.js +79 -0
  39. package/esm2015/shared/shared.module.js +7 -3
  40. package/esm5/core/guards/auth.guard.js +16 -20
  41. package/esm5/core/guards/permission.guard.js +31 -23
  42. package/esm5/core/interceptors/auth.interceptor.js +7 -5
  43. package/esm5/core/services/authentication.service.js +41 -46
  44. package/esm5/core.js +1 -2
  45. package/esm5/gipi-components.js +4 -1
  46. package/esm5/shared/components/checkbox/checkbox.component.js +15 -11
  47. package/esm5/shared/components/input/input.component.js +7 -2
  48. package/esm5/shared/components/select-entity/select-entity.component.js +1 -1
  49. package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +2 -2
  50. package/esm5/shared/components/select-entity-paged/shared/default-options.js +1 -2
  51. package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -8
  52. package/esm5/shared/components/select-enum/select-enum.component.js +8 -3
  53. package/esm5/shared/components/table/table.component.js +28 -9
  54. package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
  55. package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
  56. package/esm5/shared/gipi-components/form-field/form-field.component.js +3 -3
  57. package/esm5/shared/gipi-components/input-currency/input-currency.component.js +1 -1
  58. package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
  59. package/esm5/shared/gipi-components/input-select/input-select.component.js +1 -1
  60. package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +1 -1
  61. package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +1 -1
  62. package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
  63. package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +1 -1
  64. package/esm5/shared/gipi-components/radio-group/radio-group.component.js +1 -1
  65. package/esm5/shared/gipi-components/select/select.component.js +1 -1
  66. package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +3 -3
  67. package/esm5/shared/gipi-components/skeleton/skeleton.component.js +46 -0
  68. package/esm5/shared/gipi-components/skeleton/skeleton.directive.js +81 -0
  69. package/esm5/shared/shared.module.js +7 -3
  70. package/fesm2015/gipisistemas-ng-core.js +1233 -1114
  71. package/fesm2015/gipisistemas-ng-core.js.map +1 -1
  72. package/fesm5/gipisistemas-ng-core.js +4286 -4178
  73. package/fesm5/gipisistemas-ng-core.js.map +1 -1
  74. package/gipi-components.d.ts +2 -0
  75. package/gipisistemas-ng-core.metadata.json +1 -1
  76. package/package.json +1 -1
  77. package/shared/components/checkbox/checkbox.component.d.ts +6 -4
  78. package/shared/components/input/input.component.d.ts +1 -0
  79. package/shared/components/select-entity-paged/shared/default-options.d.ts +2 -2
  80. package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +0 -1
  81. package/shared/components/select-enum/select-enum.component.d.ts +1 -0
  82. package/shared/gipi-components/skeleton/skeleton.component.d.ts +9 -0
  83. package/shared/gipi-components/skeleton/skeleton.directive.d.ts +15 -0
  84. package/core/guards/public.guard.d.ts +0 -11
  85. package/esm2015/core/guards/public.guard.js +0 -44
  86. package/esm5/core/guards/public.guard.js +0 -46
@@ -435,7 +435,7 @@ var SelectEntityPagedComponent = /** @class */ (function () {
435
435
  SelectEntityPagedComponent = SelectEntityPagedComponent_1 = __decorate([
436
436
  Component({
437
437
  selector: 'itss-select-entity-paged',
438
- template: "<div fxLayout=\"column\"\n [attr.id]=\"id\"\n [attr.name]=\"name\">\n <mat-label *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"required && label\">*</span>\n </mat-label>\n <mat-form-field #formFieldSelect\n [appearance]=\"appearance\"\n class=\"mat-form-field-select\">\n <mat-icon *ngIf=\"iconPrefix || svgIconPrefix\"\n matPrefix\n [svgIcon]=\"svgIconPrefix ? svgIconPrefix : ''\">\n {{ !svgIconPrefix && iconPrefix ? iconPrefix : '' }}\n </mat-icon>\n\n <mat-select #matSelect\n [placeholder]=\"placeholder\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"model\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n disableOptionCentering=\"true\"\n [panelClass]=\"'select-position ' + classSelectPanel\"\n itssInfiniteScroll\n (infiniteScroll)=\"onLoadMoreOptions(true)\"\n [complete]=\"options?.length === page?.totalElements\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n (openedChange)=\"initLoaded && onLoadMoreOptions(false, $event); openedChange.emit($event)\">\n <mat-option *ngIf=\"!hideFieldSearch\">\n <itss-input-search placeholderLabel=\"Pesquisar...\"\n noEntriesFoundLabel=\"Nenhum registro encontrado\"\n [enableClearOnEscapePressed]=\"true\"\n [disableScrollToActiveOnOptionsChanged]=\"true\"\n [preventHomeEndKeyPropagation]=\"true\"\n [disableScrollToActiveOnOptionsChanged]=\"true\"\n [enableClearOnEscapePressed]=\"true\"\n [clearSearchInput]=\"true\"\n [formControl]=\"valueSearchCtrl\"\n [closeIcon]=\"closeIcon\"\n [closeSvgIcon]=\"closeSvgIcon\"\n [searching]=\"searching\"\n [showToggleAllCheckbox]=\"multiple\"\n [toggleAllCheckboxChecked]=\"toggleAllCheckboxChecked\"\n [toggleAllCheckboxIndeterminate]=\"toggleAllCheckboxIndeterminate\"\n (toggleAll)=\"onToggleAllSelection($event)\">\n </itss-input-search>\n </mat-option>\n\n <mat-select-trigger *ngIf=\"multiple\">\n {{ modelValue ? getPropertyValue(modelValue[0]) : '' }}\n <span *ngIf=\"modelValue?.length > 1\"\n class=\"mat-select-additional-selection\">\n (+{{ modelValue.length - 1 }} {{ modelValue?.length === 2 ? 'outro' : 'outros' }})\n </span>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"!multiple; else optionSelectedMultiple\"\n [value]=\"model\"\n [style.height.px]=\"0\">\n {{ getPropertyValue(model) }}\n </mat-option>\n\n <ng-template #optionSelectedMultiple>\n <mat-option *ngFor=\"let m of model; trackBy: trackByOption\"\n [value]=\"m\"\n [style.height.px]=\"0\">\n {{ getPropertyValue(m) }}\n </mat-option>\n </ng-template>\n\n <cdk-virtual-scroll-viewport itemSize=\"5\"\n [style.height.em]=\"scrollViewportHeight\"\n class=\"virtual-scroll-viewport\">\n <mat-option *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n [value]=\"option\"\n (click)=\"onToggleIndeterminateAllSelection()\">\n {{ getPropertyValue(option) }}\n </mat-option>\n </cdk-virtual-scroll-viewport>\n\n <div *ngIf=\"searching\"\n class=\"mat-select-search-loading\">\n <div class=\"dot-pulse\"> </div>\n </div>\n\n <mat-option *ngIf=\"showButtonAdd && !searching\"\n class=\"mat-option-button-add\"\n [disabled]=\"true\"\n aria-hidden=\"true\">\n <gipi-button label=\"Adicionar\"\n gipi-primary\n (click)=\"onClickAdd(); $event.stopPropagation()\"\n fxFlex>\n </gipi-button>\n </mat-option>\n </mat-select>\n\n <mat-icon *ngIf=\"showClearOptionButton()\"\n matSuffix\n (click)=\"removeOption(); $event.stopPropagation()\"\n matTooltip=\"Remover selecionado\">\n close\n </mat-icon>\n </mat-form-field>\n</div>",
438
+ template: "<div fxLayout=\"column\"\n [attr.id]=\"id\"\n [attr.name]=\"name\">\n <mat-label *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"required && label\">*</span>\n </mat-label>\n <mat-form-field #formFieldSelect\n [appearance]=\"appearance\"\n class=\"mat-form-field-select\">\n <mat-icon *ngIf=\"iconPrefix || svgIconPrefix\"\n matPrefix\n [svgIcon]=\"svgIconPrefix ? svgIconPrefix : ''\">\n {{ !svgIconPrefix && iconPrefix ? iconPrefix : '' }}\n </mat-icon>\n\n <mat-select #matSelect\n [placeholder]=\"placeholder\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"model\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n disableOptionCentering=\"true\"\n [panelClass]=\"'select-position ' + classSelectPanel\"\n itssInfiniteScroll\n (infiniteScroll)=\"onLoadMoreOptions(true)\"\n [complete]=\"options?.length === page?.totalElements\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n (openedChange)=\"initLoaded && onLoadMoreOptions(false, $event); openedChange.emit($event)\">\n <mat-option *ngIf=\"!hideFieldSearch\">\n <itss-input-search placeholderLabel=\"Pesquisar...\"\n noEntriesFoundLabel=\"Nenhum registro encontrado\"\n [enableClearOnEscapePressed]=\"true\"\n [disableScrollToActiveOnOptionsChanged]=\"true\"\n [preventHomeEndKeyPropagation]=\"true\"\n [disableScrollToActiveOnOptionsChanged]=\"true\"\n [enableClearOnEscapePressed]=\"true\"\n [clearSearchInput]=\"true\"\n [formControl]=\"valueSearchCtrl\"\n [closeIcon]=\"closeIcon\"\n [closeSvgIcon]=\"closeSvgIcon\"\n [searching]=\"searching\"\n [showToggleAllCheckbox]=\"multiple\"\n [toggleAllCheckboxChecked]=\"toggleAllCheckboxChecked\"\n [toggleAllCheckboxIndeterminate]=\"toggleAllCheckboxIndeterminate\"\n (toggleAll)=\"onToggleAllSelection($event)\">\n </itss-input-search>\n </mat-option>\n\n <mat-select-trigger *ngIf=\"multiple\">\n {{ modelValue ? getPropertyValue(modelValue[0]) : '' }}\n <span *ngIf=\"modelValue?.length > 1\"\n class=\"mat-select-additional-selection\">\n (+{{ modelValue.length - 1 }} {{ modelValue?.length === 2 ? 'outro' : 'outros' }})\n </span>\n </mat-select-trigger>\n\n <mat-option *ngIf=\"!multiple; else optionSelectedMultiple\"\n [value]=\"model\"\n [style.height.px]=\"0\">\n {{ getPropertyValue(model) }}\n </mat-option>\n\n <ng-template #optionSelectedMultiple>\n <mat-option *ngFor=\"let m of model; trackBy: trackByOption\"\n [value]=\"m\"\n [style.height.px]=\"0\">\n {{ getPropertyValue(m) }}\n </mat-option>\n </ng-template>\n\n <cdk-virtual-scroll-viewport itemSize=\"5\"\n [style.height.em]=\"scrollViewportHeight\"\n class=\"virtual-scroll-viewport\">\n <mat-option *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n [value]=\"option\"\n (click)=\"onToggleIndeterminateAllSelection()\">\n {{ getPropertyValue(option) }}\n </mat-option>\n </cdk-virtual-scroll-viewport>\n\n <div *ngIf=\"searching\"\n class=\"mat-select-search-loading\">\n <div class=\"dot-pulse\"> </div>\n </div>\n\n <mat-option *ngIf=\"showButtonAdd && !searching\"\n class=\"mat-option-button-add\"\n [disabled]=\"true\"\n aria-hidden=\"true\">\n <gipi-button label=\"Adicionar\"\n gipi-primary\n (click)=\"onClickAdd(); $event.stopPropagation()\"\n fxFlex>\n </gipi-button>\n </mat-option>\n </mat-select>\n\n <mat-icon *ngIf=\"showClearOptionButton()\"\n matSuffix\n (click)=\"removeOption(); $event.stopPropagation()\"\n matTooltip=\"Remover selecionado\">\n close\n </mat-icon>\n </mat-form-field>\n</div>",
439
439
  providers: [
440
440
  {
441
441
  provide: NG_VALUE_ACCESSOR,
@@ -450,4 +450,4 @@ var SelectEntityPagedComponent = /** @class */ (function () {
450
450
  return SelectEntityPagedComponent;
451
451
  }());
452
452
  export { SelectEntityPagedComponent };
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvY29tcG9uZW50cy9zZWxlY3QtZW50aXR5LXBhZ2VkL3NlbGVjdC1lbnRpdHktcGFnZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxFLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBVyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBY3pEO0lBdUhJLG9DQUFvQixrQkFBcUM7UUFBekQsaUJBQThEO1FBQTFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFySHpELG9CQUFlLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBSW5ELGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLDZCQUF3QixHQUFZLEtBQUssQ0FB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QWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQXlDLE9BQUEsNEJBQTBCLEVBQTFCLENBQTBCLENBQUM7b0JBQzVGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7O1NBQ0osQ0FBQzt5Q0F3SDBDLGlCQUFpQjtPQXZIaEQsMEJBQTBCLENBd1Z0QztJQUFELGlDQUFDO0NBQUEsQUF4VkQsSUF3VkM7U0F4VlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUcmFja0J5RnVuY3Rpb24sIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlL3R5cGluZ3Mvb3B0aW9uJztcbmltcG9ydCB7IEFic3RyYWN0TW9kZWwsIEFycmF5VXRpbCwgT2JqZWN0VXRpbCwgUGFnZURUTywgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgVVVJRFV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL3V1aWQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy1zZWxlY3QtZW50aXR5LXBhZ2VkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQgPT4gU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgICB2YWx1ZVNlYXJjaEN0cmw6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICAgIHBhZ2U6IFBhZ2VEVE88VD47XG5cbiAgICB0b3RhbE9wdGlvbnM6IG51bWJlciA9IDA7XG5cbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbW9kZWxWYWx1ZTogYW55O1xuXG4gICAgcHJpdmF0ZSBfcGFyYW1OZXh0QmF0Y2g6IGFueTtcblxuICAgIHByaXZhdGUgX29wdGlvbnM6IFRbXSA9IFtdO1xuXG4gICAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgbWF0U2VsZWN0OiBNYXRTZWxlY3Q7XG5cbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBASW5wdXQoKSBpbml0QWxsQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgPSAnY2xvc2UnO1xuXG4gICAgQElucHV0KCkgY2xvc2VTdmdJY29uPzogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dCdXR0b25BZGQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWNvblByZWZpeDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN2Z0ljb25QcmVmaXg6IHN0cmluZztcblxuICAgIC8vIE1vc3RyYXIvb2N1bHRhciBvIGlucHV0IHBhcmEgcGVzcXVpc2FyXG4gICAgQElucHV0KCkgaGlkZUZpZWxkU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBNb3N0cmFyL29jdWx0YXIgbyBib3TDo28gbGltcGFyIG9ww6fDtWVzIHNlbGVjaW9uYWRhc1xuICAgIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGVib3VuY2VUaW1lOiBudW1iZXIgPSAxMDAwOyAvLyBtaWxpc3NlZ3VuZG9zXG5cbiAgICAvLyBWYWxvcmVzIHF1ZSBuw6NvIHNlcsOjbyBleGliaWRvcyBuYXMgb3DDp8O1ZXNcbiAgICBASW5wdXQoKSB2YWx1ZXNFeGNsdWQ6IFRbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgYXBwZWFyYW5jZTogc3RyaW5nID0gJ291dGxpbmUnO1xuXG4gICAgQElucHV0KCkgY2xhc3NTZWxlY3RQYW5lbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHk6IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XG5cbiAgICBASW5wdXQoKSB0cmFja3lCeTogc3RyaW5nID0gJ2lkJztcblxuICAgIEBJbnB1dCgpIGluaXRMb2FkZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHlGbjogKG9iajogVCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmV4dEJhdGNoRm46IChyZXNlYXJjaEZpZWxkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgcGFyYW1OZXh0QmF0Y2g/OiBhbnkpID0+IFByb21pc2U8UGFnZURUTzxUPj47XG5cbiAgICBASW5wdXQoKSBzZXQgcGFyYW1OZXh0QmF0Y2godmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1OZXh0QmF0Y2ggPSB2YWw7XG4gICAgfVxuICAgIGdldCBwYXJhbU5leHRCYXRjaCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1OZXh0QmF0Y2g7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1vZGVsKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tb2RlbFZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgfVxuICAgIGdldCBtb2RlbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbDogVFtdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgfVxuICAgIGdldCBvcHRpb25zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gICAgQE91dHB1dCgpIHNlYXJjaENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgYWRkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIGdldCBzY3JvbGxWaWV3cG9ydEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5vcHRpb25zKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWRhIG1hdC1vcHRpb24gcG9zc3VpIDNlbSBvdSAzOXB4LiAzICogcXVhbnRpZGFkZSBkZSBtYXQtb3B0aW9uXG4gICAgICAgIHJldHVybiAoMyAqIHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlPcHRpb246IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleCwgb2JqKSA9PiB0aGlzLnRyYWNreUJ5ID8gb2JqW3RoaXMudHJhY2t5QnldIDogb2JqO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBPIGRlYm91bmNlVGltZSDDqSB1dGxpemFkbyBwYXJhIGVtaXRpciBvIHZhbG9yIGFww7NzIG8gdXN1w6FyaW8gcGFyYXJcbiAgICAgICAgLy8gZGUgZGlnaXRhciwgZXZpdGFuZG8gY29uc3VsdGEgYSB0b2RhIGxldHJhIHF1ZSBmb3IgZGlnaXRhZGEuXG4gICAgICAgIC8vIE8gZGlzdGluY3RVbnRpbENoYW5nZWQgw6kgdXRpbGl6YWRvIHBhcmEgZW1pdGlyIGFwZW5hcyB2YWxvcmVzXG4gICAgICAgIC8vIHF1ZSBzw6NvIGRpZmVyZW50ZXMgZG9zIHZhbG9yZXMgYW50ZXJpb3JlcyBlbWl0aWRvcy5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLnZhbHVlU2VhcmNoQ3RybC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWFyY2hDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKGNoYW5nZXMubW9kZWwpICYmICFjaGFuZ2VzLm1vZGVsLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KHRoaXMub3B0aW9ucykgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubW9kZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIG9uVG91Y2g6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICAgIH1cblxuICAgIGNvbXBhcmVGbihmMTogQWJzdHJhY3RNb2RlbCwgZjI6IEFic3RyYWN0TW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGYxICYmIGYyICYmIGYxLmlkID09PSBmMi5pZDtcbiAgICB9XG5cbiAgICBnZXRQcm9wZXJ0eVZhbHVlKGVudGl0eTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTmV3TW9kZWwoZW50aXR5KSkge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnByb3BlcnR5Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlGbihlbnRpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoZW50aXR5LCB0aGlzLnByb3BlcnR5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nVXRpbC5FTVBUWTtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZShlbnRpdHk6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHN0cmluZ1tdID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbnRpdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlID0gUmVmbGVjdC5nZXQodmFsdWUsIHByb3BlcnRpZXNbaV0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIGkgPT09IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGVudGl0eSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKHRoaXMubW9kZWwpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGxTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG5cbiAgICAgICAgICAgIHRoaXMub25Mb2FkTW9yZU9wdGlvbnMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25Mb2FkTW9yZU9wdGlvbnMoaXNJbmZpbml0ZVNjcm9sbDogYm9vbGVhbiwgaXNPcGVuZWQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5uZXh0QmF0Y2hGbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZnVuw6fDo28gbmV4dEJhdGNoRm4gw6kgb2JyaWdhdMOzcmlhIGUgbsOjbyBmb2kgaW5mb3JtYWRhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLm9wdGlvbnMpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpICYmIEFycmF5VXRpbC5pc0VtcHR5KHRoaXMudmFsdWVzRXhjbHVkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IHRoaXMucGFnZS50b3RhbEVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCgwLCAnc21vb3RoJyk7XG4gICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0LmNoZWNrVmlld3BvcnRTaXplKCk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgICAgIGxldCBwYWdlTnVtYmVyOiBudW1iZXIgPSAwO1xuICAgICAgICBpZiAoaXNJbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgcGFnZU51bWJlciA9ICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpID8gdGhpcy5wYWdlLm51bWJlciArIDEgOiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5uZXh0QmF0Y2hGbih0aGlzLnZhbHVlU2VhcmNoQ3RybC52YWx1ZSwgcGFnZU51bWJlciwgdGhpcy5wYXJhbU5leHRCYXRjaClcbiAgICAgICAgICAgIC50aGVuKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHBhZ2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMucGFnZSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMucGFnZS5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMudmFsdWVzRXhjbHVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMudmFsdWVzRXhjbHVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMucGFnZS5jb250ZW50LmZpbmRJbmRleChvID0+IHRoaXMudmFsdWVzRXhjbHVkW2ldW3RoaXMudHJhY2t5QnldID09PSBvW3RoaXMudHJhY2t5QnldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UuY29udGVudC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgLi4udGhpcy5wYWdlLmNvbnRlbnRdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5tb2RlbCkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWxJbkxpc3Q6IFQgPSB0aGlzLm9wdGlvbnMuZmluZChvID0+IE9iamVjdFV0aWwuZXF1YWxzKG8sIHRoaXMubW9kZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKG1vZGVsSW5MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2godGhpcy5tb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVBbGxTZWxlY3Rpb24oc2VsZWN0QWxsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm1hdFNlbGVjdCkgJiYgIXRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmZvckVhY2goKGl0ZW06IE1hdE9wdGlvbikgPT4gaXRlbS5kZXNlbGVjdCgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblRvZ2dsZUluZGV0ZXJtaW5hdGVBbGxTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZUluZGV0ZXJtaW5hdGVBbGxTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm1hdFNlbGVjdCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxPcHRpb25zOiBNYXRPcHRpb25bXSA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMuZmlsdGVyKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSBsT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAobE9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKGxPcHRpb25zLmxlbmd0aCA8IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKGxPcHRpb25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dDbGVhck9wdGlvbkJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzTmV3TW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkge1xuICAgICAgICAgICAgaXNOZXdNb2RlbCA9ICF0aGlzLm1vZGVsIHx8ICh0aGlzLm1vZGVsICYmICh0aGlzLm1vZGVsLmxlbmd0aCA8PSAwKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubXVsdGlwbGUgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubW9kZWwpKSB7XG4gICAgICAgICAgICBpc05ld01vZGVsID0gT2JqZWN0VXRpbC5pc05ld01vZGVsKHRoaXMubW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dDbGVhciAmJiAhaXNOZXdNb2RlbCAmJiAoIXRoaXMuZGlzYWJsZWQpICYmICghdGhpcy5zZWFyY2hpbmcpO1xuICAgIH1cblxuICAgIHJlbW92ZU9wdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGxTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIGhhdmVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZW50aXR5OiBhbnkgPSB0aGlzLm1vZGVsO1xuICAgICAgICBpZiAoZW50aXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gVVVJRFV0aWwuaXNWYWxpZChlbnRpdHkuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQWRkKCk6IHZvaWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5tb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvY29tcG9uZW50cy9zZWxlY3QtZW50aXR5LXBhZ2VkL3NlbGVjdC1lbnRpdHktcGFnZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxFLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBVyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBY3pEO0lBdUhJLG9DQUFvQixrQkFBcUM7UUFBekQsaUJBQThEO1FBQTFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFySHpELG9CQUFlLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBSW5ELGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLDZCQUF3QixHQUFZLEtBQUssQ0FB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QWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQXlDLE9BQUEsNEJBQTBCLEVBQTFCLENBQTBCLENBQUM7b0JBQzVGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7O1NBQ0osQ0FBQzt5Q0F3SDBDLGlCQUFpQjtPQXZIaEQsMEJBQTBCLENBd1Z0QztJQUFELGlDQUFDO0NBQUEsQUF4VkQsSUF3VkM7U0F4VlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUcmFja0J5RnVuY3Rpb24sIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlL3R5cGluZ3Mvb3B0aW9uJztcbmltcG9ydCB7IEFic3RyYWN0TW9kZWwsIEFycmF5VXRpbCwgT2JqZWN0VXRpbCwgUGFnZURUTywgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgVVVJRFV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL3V1aWQudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy1zZWxlY3QtZW50aXR5LXBhZ2VkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWVudGl0eS1wYWdlZC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQgPT4gU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0RW50aXR5UGFnZWRDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG5cbiAgICB2YWx1ZVNlYXJjaEN0cmw6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICAgIHBhZ2U6IFBhZ2VEVE88VD47XG5cbiAgICB0b3RhbE9wdGlvbnM6IG51bWJlciA9IDA7XG5cbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbW9kZWxWYWx1ZTogYW55O1xuXG4gICAgcHJpdmF0ZSBfcGFyYW1OZXh0QmF0Y2g6IGFueTtcblxuICAgIHByaXZhdGUgX29wdGlvbnM6IFRbXSA9IFtdO1xuXG4gICAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgbWF0U2VsZWN0OiBNYXRTZWxlY3Q7XG5cbiAgICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBASW5wdXQoKSBpbml0QWxsQ2hlY2tib3hDaGVja2VkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgPSAnY2xvc2UnO1xuXG4gICAgQElucHV0KCkgY2xvc2VTdmdJY29uPzogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHNob3dCdXR0b25BZGQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWNvblByZWZpeDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN2Z0ljb25QcmVmaXg6IHN0cmluZztcblxuICAgIC8vIE1vc3RyYXIvb2N1bHRhciBvIGlucHV0IHBhcmEgcGVzcXVpc2FyXG4gICAgQElucHV0KCkgaGlkZUZpZWxkU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBNb3N0cmFyL29jdWx0YXIgbyBib3TDo28gbGltcGFyIG9ww6fDtWVzIHNlbGVjaW9uYWRhc1xuICAgIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGVib3VuY2VUaW1lOiBudW1iZXIgPSAxMDAwOyAvLyBtaWxpc3NlZ3VuZG9zXG5cbiAgICAvLyBWYWxvcmVzIHF1ZSBuw6NvIHNlcsOjbyBleGliaWRvcyBuYXMgb3DDp8O1ZXNcbiAgICBASW5wdXQoKSB2YWx1ZXNFeGNsdWQ6IFRbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgYXBwZWFyYW5jZTogc3RyaW5nID0gJ291dGxpbmUnO1xuXG4gICAgQElucHV0KCkgY2xhc3NTZWxlY3RQYW5lbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHk6IHN0cmluZyA9ICdkZXNjcmlwdGlvbic7XG5cbiAgICBASW5wdXQoKSB0cmFja3lCeTogc3RyaW5nID0gJ2lkJztcblxuICAgIEBJbnB1dCgpIGluaXRMb2FkZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHlGbjogKG9iajogVCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbmV4dEJhdGNoRm46IChyZXNlYXJjaEZpZWxkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgcGFyYW1OZXh0QmF0Y2g/OiBhbnkpID0+IFByb21pc2U8UGFnZURUTzxUPj47XG5cbiAgICBASW5wdXQoKSBzZXQgcGFyYW1OZXh0QmF0Y2godmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcGFyYW1OZXh0QmF0Y2ggPSB2YWw7XG4gICAgfVxuICAgIGdldCBwYXJhbU5leHRCYXRjaCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1OZXh0QmF0Y2g7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1vZGVsKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5tb2RlbFZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgfVxuICAgIGdldCBtb2RlbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKHZhbDogVFtdKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWw7XG4gICAgfVxuICAgIGdldCBvcHRpb25zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gICAgQE91dHB1dCgpIHNlYXJjaENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgYWRkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBvcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIGdldCBzY3JvbGxWaWV3cG9ydEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5vcHRpb25zKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWRhIG1hdC1vcHRpb24gcG9zc3VpIDNlbSBvdSAzOXB4LiAzICogcXVhbnRpZGFkZSBkZSBtYXQtb3B0aW9uXG4gICAgICAgIHJldHVybiAoMyAqIHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlPcHRpb246IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleCwgb2JqKSA9PiB0aGlzLnRyYWNreUJ5ID8gb2JqW3RoaXMudHJhY2t5QnldIDogb2JqO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBPIGRlYm91bmNlVGltZSDDqSB1dGxpemFkbyBwYXJhIGVtaXRpciBvIHZhbG9yIGFww7NzIG8gdXN1w6FyaW8gcGFyYXJcbiAgICAgICAgLy8gZGUgZGlnaXRhciwgZXZpdGFuZG8gY29uc3VsdGEgYSB0b2RhIGxldHJhIHF1ZSBmb3IgZGlnaXRhZGEuXG4gICAgICAgIC8vIE8gZGlzdGluY3RVbnRpbENoYW5nZWQgw6kgdXRpbGl6YWRvIHBhcmEgZW1pdGlyIGFwZW5hcyB2YWxvcmVzXG4gICAgICAgIC8vIHF1ZSBzw6NvIGRpZmVyZW50ZXMgZG9zIHZhbG9yZXMgYW50ZXJpb3JlcyBlbWl0aWRvcy5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLnZhbHVlU2VhcmNoQ3RybC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWFyY2hDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKGNoYW5nZXMubW9kZWwpICYmICFjaGFuZ2VzLm1vZGVsLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KHRoaXMub3B0aW9ucykgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubW9kZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIG9uVG91Y2g6IGFueSA9ICgpOiB2b2lkID0+IHsgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICAgIH1cblxuICAgIGNvbXBhcmVGbihmMTogQWJzdHJhY3RNb2RlbCwgZjI6IEFic3RyYWN0TW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGYxICYmIGYyICYmIGYxLmlkID09PSBmMi5pZDtcbiAgICB9XG5cbiAgICBnZXRQcm9wZXJ0eVZhbHVlKGVudGl0eTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTmV3TW9kZWwoZW50aXR5KSkge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnByb3BlcnR5Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlGbihlbnRpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoZW50aXR5LCB0aGlzLnByb3BlcnR5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nVXRpbC5FTVBUWTtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZShlbnRpdHk6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHN0cmluZ1tdID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbnRpdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlID0gUmVmbGVjdC5nZXQodmFsdWUsIHByb3BlcnRpZXNbaV0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIGkgPT09IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGVudGl0eSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENoYW5nZS5lbWl0KHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKHRoaXMubW9kZWwpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGxTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG5cbiAgICAgICAgICAgIHRoaXMub25Mb2FkTW9yZU9wdGlvbnMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25Mb2FkTW9yZU9wdGlvbnMoaXNJbmZpbml0ZVNjcm9sbDogYm9vbGVhbiwgaXNPcGVuZWQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5uZXh0QmF0Y2hGbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZnVuw6fDo28gbmV4dEJhdGNoRm4gw6kgb2JyaWdhdMOzcmlhIGUgbsOjbyBmb2kgaW5mb3JtYWRhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLm9wdGlvbnMpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpICYmIEFycmF5VXRpbC5pc0VtcHR5KHRoaXMudmFsdWVzRXhjbHVkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPT09IHRoaXMucGFnZS50b3RhbEVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCgwLCAnc21vb3RoJyk7XG4gICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0LmNoZWNrVmlld3BvcnRTaXplKCk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hpbmcgPSB0cnVlO1xuXG4gICAgICAgIGxldCBwYWdlTnVtYmVyOiBudW1iZXIgPSAwO1xuICAgICAgICBpZiAoaXNJbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgcGFnZU51bWJlciA9ICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpID8gdGhpcy5wYWdlLm51bWJlciArIDEgOiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5uZXh0QmF0Y2hGbih0aGlzLnZhbHVlU2VhcmNoQ3RybC52YWx1ZSwgcGFnZU51bWJlciwgdGhpcy5wYXJhbU5leHRCYXRjaClcbiAgICAgICAgICAgIC50aGVuKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHBhZ2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMucGFnZSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMucGFnZS5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMudmFsdWVzRXhjbHVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMudmFsdWVzRXhjbHVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMucGFnZS5jb250ZW50LmZpbmRJbmRleChvID0+IHRoaXMudmFsdWVzRXhjbHVkW2ldW3RoaXMudHJhY2t5QnldID09PSBvW3RoaXMudHJhY2t5QnldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UuY29udGVudC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgLi4udGhpcy5wYWdlLmNvbnRlbnRdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5tb2RlbCkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWxJbkxpc3Q6IFQgPSB0aGlzLm9wdGlvbnMuZmluZChvID0+IE9iamVjdFV0aWwuZXF1YWxzKG8sIHRoaXMubW9kZWwpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKG1vZGVsSW5MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2godGhpcy5tb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVBbGxTZWxlY3Rpb24oc2VsZWN0QWxsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm1hdFNlbGVjdCkgJiYgIXRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3B0aW9ucy5mb3JFYWNoKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0KCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLmZvckVhY2goKGl0ZW06IE1hdE9wdGlvbikgPT4gaXRlbS5kZXNlbGVjdCgpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vblRvZ2dsZUluZGV0ZXJtaW5hdGVBbGxTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZUluZGV0ZXJtaW5hdGVBbGxTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm1hdFNlbGVjdCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxPcHRpb25zOiBNYXRPcHRpb25bXSA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMuZmlsdGVyKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSBsT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAobE9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKGxPcHRpb25zLmxlbmd0aCA8IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnMubGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKGxPcHRpb25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dDbGVhck9wdGlvbkJ1dHRvbigpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzTmV3TW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSkge1xuICAgICAgICAgICAgaXNOZXdNb2RlbCA9ICF0aGlzLm1vZGVsIHx8ICh0aGlzLm1vZGVsICYmICh0aGlzLm1vZGVsLmxlbmd0aCA8PSAwKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubXVsdGlwbGUgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubW9kZWwpKSB7XG4gICAgICAgICAgICBpc05ld01vZGVsID0gT2JqZWN0VXRpbC5pc05ld01vZGVsKHRoaXMubW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNob3dDbGVhciAmJiAhaXNOZXdNb2RlbCAmJiAoIXRoaXMuZGlzYWJsZWQpICYmICghdGhpcy5zZWFyY2hpbmcpO1xuICAgIH1cblxuICAgIHJlbW92ZU9wdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub2dnbGVBbGxTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb2RlbCA9IG51bGw7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UodGhpcy5tb2RlbCk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIGhhdmVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZW50aXR5OiBhbnkgPSB0aGlzLm1vZGVsO1xuICAgICAgICBpZiAoZW50aXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gVVVJRFV0aWwuaXNWYWxpZChlbnRpdHkuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQWRkKCk6IHZvaWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5tb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZENoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
@@ -1,7 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  /** Lista de entradas de ItssSelectSearchComponent que podem ser configuradas com um padrão global. */
3
3
  export var configurableDefaultOptions = [
4
- 'ariaLabel',
5
4
  'clearSearchInput',
6
5
  'closeIcon',
7
6
  'closeSvgIcon',
@@ -32,4 +31,4 @@ export var configurableDefaultOptions = [
32
31
  * Veja as entradas correspondentes de `ItssSelectSearchComponent` para documentação.
33
32
  */
34
33
  export var ITSS_SELECT_SEARCH_DEFAULT_OPTIONS = new InjectionToken('itss-select_search-default-options');
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWVudGl0eS1wYWdlZC9zaGFyZWQvZGVmYXVsdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0Msc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxJQUFNLDBCQUEwQixHQUFHO0lBQ3RDLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxxQkFBcUI7SUFDckIsdUNBQXVDO0lBQ3ZDLDRCQUE0QjtJQUM1Qix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQiw4QkFBOEI7SUFDOUIsV0FBVztDQUNMLENBQUM7QUFJWDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxJQUFNLGtDQUFrQyxHQUFHLElBQUksY0FBYyxDQUEwQixvQ0FBb0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LXNlYXJjaC9zZWxlY3Qtc2VhcmNoLmNvbXBvbmVudCc7XG5cbi8qKiBMaXN0YSBkZSBlbnRyYWRhcyBkZSBJdHNzU2VsZWN0U2VhcmNoQ29tcG9uZW50IHF1ZSBwb2RlbSBzZXIgY29uZmlndXJhZGFzIGNvbSB1bSBwYWRyw6NvIGdsb2JhbC4gKi9cbmV4cG9ydCBjb25zdCBjb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucyA9IFtcbiAgICAnYXJpYUxhYmVsJyxcbiAgICAnY2xlYXJTZWFyY2hJbnB1dCcsXG4gICAgJ2Nsb3NlSWNvbicsXG4gICAgJ2Nsb3NlU3ZnSWNvbicsXG4gICAgJ2Rpc2FibGVJbml0aWFsRm9jdXMnLFxuICAgICdkaXNhYmxlU2Nyb2xsVG9BY3RpdmVPbk9wdGlvbnNDaGFuZ2VkJyxcbiAgICAnZW5hYmxlQ2xlYXJPbkVzY2FwZVByZXNzZWQnLFxuICAgICdoaWRlQ2xlYXJTZWFyY2hCdXR0b24nLFxuICAgICdub0VudHJpZXNGb3VuZExhYmVsJyxcbiAgICAncGxhY2Vob2xkZXJMYWJlbCcsXG4gICAgJ3ByZXZlbnRIb21lRW5kS2V5UHJvcGFnYXRpb24nLFxuICAgICdzZWFyY2hpbmcnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnMgPSB0eXBlb2YgY29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnNbbnVtYmVyXTtcblxuLyoqXG4gKiBJbmplY3Rpb25Ub2tlbiBxdWUgcG9kZSBzZXIgdXNhZG8gcGFyYSBlc3BlY2lmaWNhciBvcMOnw7VlcyBnbG9iYWlzLiBwb3IgZXhlbXBsby5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcm92aWRlcnM6IFtcbiAqICAge1xuICogICAgIHByb3ZpZGU6IElUU1NfU0VMRUNUX1NFQVJDSF9ERUZBVUxUX09QVElPTlMsXG4gKiAgICAgdXNlVmFsdWU6IDxJdHNzU2VsZWN0U2VhcmNoT3B0aW9ucz57XG4gKiAgICAgICBjbG9zZUljb246ICdkZWxldGUnLFxuICogICAgICAgbm9FbnRyaWVzRm91bmRMYWJlbDogJ05lbmh1bWEgcmVnaXN0cm8gZm9pIGVuY29udHJhZG8nXG4gKiAgICAgfVxuICogICB9XG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBWZWphIGFzIGVudHJhZGFzIGNvcnJlc3BvbmRlbnRlcyBkZSBgSXRzc1NlbGVjdFNlYXJjaENvbXBvbmVudGAgcGFyYSBkb2N1bWVudGHDp8Ojby5cbiAqL1xuZXhwb3J0IGNvbnN0IElUU1NfU0VMRUNUX1NFQVJDSF9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48SXRzc1NlbGVjdFNlYXJjaE9wdGlvbnM+KCdpdHNzLXNlbGVjdF9zZWFyY2gtZGVmYXVsdC1vcHRpb25zJyk7XG5cbi8qKiBPcMOnw7VlcyBnbG9iYWlzIGNvbmZpZ3Vyw6F2ZWlzIOKAi+KAi3BhcmEgSXRzc1NlbGVjdFNlYXJjaC4gKi9cbmV4cG9ydCB0eXBlIEl0c3NTZWxlY3RTZWFyY2hPcHRpb25zID0gUmVhZG9ubHk8UGFydGlhbDxQaWNrPFNlbGVjdFNlYXJjaENvbXBvbmVudCwgQ29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnM+Pj47XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWVudGl0eS1wYWdlZC9zaGFyZWQvZGVmYXVsdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0Msc0dBQXNHO0FBQ3RHLE1BQU0sQ0FBQyxJQUFNLDBCQUEwQixHQUFHO0lBQ3RDLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsY0FBYztJQUNkLHFCQUFxQjtJQUNyQix1Q0FBdUM7SUFDdkMsNEJBQTRCO0lBQzVCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLDhCQUE4QjtJQUM5QixXQUFXO0NBQ0wsQ0FBQztBQUlYOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxDQUFDLElBQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQTBCLG9DQUFvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcblxuLyoqIExpc3RhIGRlIGVudHJhZGFzIGRlIEl0c3NTZWxlY3RTZWFyY2hDb21wb25lbnQgcXVlIHBvZGVtIHNlciBjb25maWd1cmFkYXMgY29tIHVtIHBhZHLDo28gZ2xvYmFsLiAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpZ3VyYWJsZURlZmF1bHRPcHRpb25zID0gW1xuICAgICdjbGVhclNlYXJjaElucHV0JyxcbiAgICAnY2xvc2VJY29uJyxcbiAgICAnY2xvc2VTdmdJY29uJyxcbiAgICAnZGlzYWJsZUluaXRpYWxGb2N1cycsXG4gICAgJ2Rpc2FibGVTY3JvbGxUb0FjdGl2ZU9uT3B0aW9uc0NoYW5nZWQnLFxuICAgICdlbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZCcsXG4gICAgJ2hpZGVDbGVhclNlYXJjaEJ1dHRvbicsXG4gICAgJ25vRW50cmllc0ZvdW5kTGFiZWwnLFxuICAgICdwbGFjZWhvbGRlckxhYmVsJyxcbiAgICAncHJldmVudEhvbWVFbmRLZXlQcm9wYWdhdGlvbicsXG4gICAgJ3NlYXJjaGluZycsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucyA9IHR5cGVvZiBjb25maWd1cmFibGVEZWZhdWx0T3B0aW9uc1tudW1iZXJdO1xuXG4vKipcbiAqIEluamVjdGlvblRva2VuIHF1ZSBwb2RlIHNlciB1c2FkbyBwYXJhIGVzcGVjaWZpY2FyIG9ww6fDtWVzIGdsb2JhaXMuIHBvciBleGVtcGxvLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVyczogW1xuICogICB7XG4gKiAgICAgcHJvdmlkZTogSVRTU19TRUxFQ1RfU0VBUkNIX0RFRkFVTFRfT1BUSU9OUyxcbiAqICAgICB1c2VWYWx1ZTogPEl0c3NTZWxlY3RTZWFyY2hPcHRpb25zPntcbiAqICAgICAgIGNsb3NlSWNvbjogJ2RlbGV0ZScsXG4gKiAgICAgICBub0VudHJpZXNGb3VuZExhYmVsOiAnTmVuaHVtYSByZWdpc3RybyBmb2kgZW5jb250cmFkbydcbiAqICAgICB9XG4gKiAgIH1cbiAqIF1cbiAqIGBgYFxuICpcbiAqIFZlamEgYXMgZW50cmFkYXMgY29ycmVzcG9uZGVudGVzIGRlIGBJdHNzU2VsZWN0U2VhcmNoQ29tcG9uZW50YCBwYXJhIGRvY3VtZW50YcOnw6NvLlxuICovXG5leHBvcnQgY29uc3QgSVRTU19TRUxFQ1RfU0VBUkNIX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJdHNzU2VsZWN0U2VhcmNoT3B0aW9ucz4oJ2l0c3Mtc2VsZWN0X3NlYXJjaC1kZWZhdWx0LW9wdGlvbnMnKTtcblxuLyoqIE9ww6fDtWVzIGdsb2JhaXMgY29uZmlndXLDoXZlaXMg4oCL4oCLcGFyYSBJdHNzU2VsZWN0U2VhcmNoLiAqL1xuZXhwb3J0IHR5cGUgSXRzc1NlbGVjdFNlYXJjaE9wdGlvbnMgPSBSZWFkb25seTxQYXJ0aWFsPFBpY2s8U2VsZWN0U2VhcmNoQ29tcG9uZW50LCBDb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucz4+PjtcbiJdfQ==
@@ -49,8 +49,6 @@ var SelectSearchComponent = /** @class */ (function () {
49
49
  this.preventHomeEndKeyPropagation = false;
50
50
  // Desativa a rolagem para as opções ativas quando a lista de opções é alterada. Útil para pesquisa do lado do servidor
51
51
  this.disableScrollToActiveOnOptionsChanged = false;
52
- // Adiciona suporte a leitor de tela 508 para caixa de pesquisa
53
- this.ariaLabel = 'Pesquisa suspensa';
54
52
  // Se deve mostrar a caixa de seleção Selecionar tudo (para mat-select[multi=true])
55
53
  this.showToggleAllCheckbox = false;
56
54
  // Selecione tudo caixa de seleção marcada estado
@@ -502,10 +500,6 @@ var SelectSearchComponent = /** @class */ (function () {
502
500
  Input(),
503
501
  __metadata("design:type", Boolean)
504
502
  ], SelectSearchComponent.prototype, "disableScrollToActiveOnOptionsChanged", void 0);
505
- __decorate([
506
- Input(),
507
- __metadata("design:type", String)
508
- ], SelectSearchComponent.prototype, "ariaLabel", void 0);
509
503
  __decorate([
510
504
  Input(),
511
505
  __metadata("design:type", Boolean)
@@ -563,7 +557,7 @@ var SelectSearchComponent = /** @class */ (function () {
563
557
  SelectSearchComponent = SelectSearchComponent_1 = __decorate([
564
558
  Component({
565
559
  selector: 'itss-input-search',
566
- template: "<!-- Espa\u00E7o reservado para ajustar o deslocamento vertical dos elementos mat-option -->\n<input matInput\n class=\"mat-select-search-input mat-select-search-hidden\" />\n\n<!-- Note: o mat-datepicker-content mat-tab-header \u00E9 necess\u00E1rio para herdar as cores do tema do material, consulte PR n\u00BA 22 -->\n<div #innerSelectSearch\n class=\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\"\n [ngClass]=\"{'mat-select-search-inner-multiple': matSelect.multiple, 'mat-select-search-inner-toggle-all': _isToggleAllCheckboxVisible() }\">\n\n <mat-checkbox *ngIf=\"_isToggleAllCheckboxVisible()\"\n class=\"mat-select-search-toggle-all-checkbox\"\n color=\"primary\"\n [color]=\"matFormField?.color\"\n [disabled]=\"searching\"\n [matTooltip]=\"toggleAllCheckboxTooltipMessage\"\n matTooltipClass=\"ngx-mat-select-search-toggle-all-tooltip\"\n [matTooltipPosition]=\"toggleAllCheckboxTooltipPosition\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [(indeterminate)]=\"toggleAllCheckboxIndeterminate\">\n </mat-checkbox>\n\n <input class=\"mat-select-search-input mat-input-element\"\n autocomplete=\"off\"\n [type]=\"type\"\n [formControl]=\"_formControl\"\n #searchSelectInput\n (keydown)=\"_handleKeydown($event)\"\n (keyup)=\"_handleKeyup($event)\"\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholderLabel\"\n [attr.aria-label]=\"ariaLabel\"\n aria-hidden=\"false\">\n\n <mat-spinner *ngIf=\"searching\"\n class=\"mat-select-search-spinner\"\n diameter=\"16\">\n </mat-spinner>\n\n <button *ngIf=\"!hideClearSearchButton && value && !searching\"\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"_reset(true)\"\n class=\"mat-select-search-clear\">\n <ng-content *ngIf=\"clearIcon; else defaultIcon\"\n select=\"[itssSelectSearchClear]\">\n </ng-content>\n\n <ng-template #defaultIcon>\n <mat-icon [svgIcon]=\"closeSvgIcon\">\n {{ !closeSvgIcon ? closeIcon : null }}\n </mat-icon>\n </ng-template>\n </button>\n\n <ng-content select=\".mat-select-search-custom-header-content\"> </ng-content>\n\n <mat-divider> </mat-divider>\n</div>\n\n<div *ngIf=\"(_showNoEntriesFound$ | async) && !searching\"\n class=\"mat-select-search-no-entries-found\">\n <ng-content *ngIf=\"noEntriesFound; else defaultNoEntriesFound\"\n select=\"[itssSelectNoEntriesFound]\">\n </ng-content>\n\n <ng-template #defaultNoEntriesFound>\n {{ noEntriesFoundLabel }}\n </ng-template>\n</div>",
560
+ template: "<!-- Espa\u00E7o reservado para ajustar o deslocamento vertical dos elementos mat-option -->\n<input matInput\n class=\"mat-select-search-input mat-select-search-hidden\" />\n\n<!-- Note: o mat-datepicker-content mat-tab-header \u00E9 necess\u00E1rio para herdar as cores do tema do material, consulte PR n\u00BA 22 -->\n<div #innerSelectSearch\n class=\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\"\n [ngClass]=\"{'mat-select-search-inner-multiple': matSelect.multiple, 'mat-select-search-inner-toggle-all': _isToggleAllCheckboxVisible() }\">\n\n <mat-checkbox *ngIf=\"_isToggleAllCheckboxVisible()\"\n class=\"mat-select-search-toggle-all-checkbox\"\n color=\"primary\"\n [color]=\"matFormField?.color\"\n [disabled]=\"searching\"\n [matTooltip]=\"toggleAllCheckboxTooltipMessage\"\n matTooltipClass=\"ngx-mat-select-search-toggle-all-tooltip\"\n [matTooltipPosition]=\"toggleAllCheckboxTooltipPosition\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [(indeterminate)]=\"toggleAllCheckboxIndeterminate\">\n </mat-checkbox>\n\n <input class=\"mat-select-search-input mat-input-element\"\n autocomplete=\"off\"\n [type]=\"type\"\n [formControl]=\"_formControl\"\n #searchSelectInput\n (keydown)=\"_handleKeydown($event)\"\n (keyup)=\"_handleKeyup($event)\"\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholderLabel\">\n\n <mat-spinner *ngIf=\"searching\"\n class=\"mat-select-search-spinner\"\n diameter=\"16\">\n </mat-spinner>\n\n <button *ngIf=\"!hideClearSearchButton && value && !searching\"\n mat-icon-button\n aria-label=\"Clear\"\n (click)=\"_reset(true)\"\n class=\"mat-select-search-clear\">\n <ng-content *ngIf=\"clearIcon; else defaultIcon\"\n select=\"[itssSelectSearchClear]\">\n </ng-content>\n\n <ng-template #defaultIcon>\n <mat-icon [svgIcon]=\"closeSvgIcon\">\n {{ !closeSvgIcon ? closeIcon : null }}\n </mat-icon>\n </ng-template>\n </button>\n\n <ng-content select=\".mat-select-search-custom-header-content\"> </ng-content>\n\n <mat-divider> </mat-divider>\n</div>\n\n<div *ngIf=\"(_showNoEntriesFound$ | async) && !searching\"\n class=\"mat-select-search-no-entries-found\">\n <ng-content *ngIf=\"noEntriesFound; else defaultNoEntriesFound\"\n select=\"[itssSelectNoEntriesFound]\">\n </ng-content>\n\n <ng-template #defaultNoEntriesFound>\n {{ noEntriesFoundLabel }}\n </ng-template>\n</div>",
567
561
  providers: [
568
562
  {
569
563
  provide: NG_VALUE_ACCESSOR,
@@ -587,4 +581,4 @@ var SelectSearchComponent = /** @class */ (function () {
587
581
  return SelectSearchComponent;
588
582
  }());
589
583
  export { SelectSearchComponent };
590
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvY29tcG9uZW50cy9zZWxlY3QtZW50aXR5LXBhZ2VkL3NoYXJlZC9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNQLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFB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SUFHckM7UUFBNUQsWUFBWSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2tDQUFZLDBCQUEwQjs0REFBQztJQUduQztRQUEvRCxZQUFZLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7a0NBQWlCLDZCQUE2QjtpRUFBQztJQS9IckcscUJBQXFCO1FBYmpDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsNjFGQUE2QztZQUU3QyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFvQyxPQUFBLHVCQUFxQixFQUFyQixDQUFxQixDQUFDO29CQUNsRixLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1lBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O1NBQ2xELENBQUM7UUF3Qk8sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFHakIsV0FBQSxRQUFRLEVBQUUsQ0FBQSxFQUFFLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdCLFdBQUEsUUFBUSxFQUFFLENBQUEsRUFBRSxXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNoQyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQTt5Q0FMbEIsU0FBUztZQUNwQixpQkFBaUI7WUFDbkIsYUFBYTtZQUNZLFNBQVM7WUFDSCxZQUFZO09BM0I5RCxxQkFBcUIsQ0E4ZmpDO0lBQUQsNEJBQUM7Q0FBQSxBQTlmRCxJQThmQztTQTlmWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEEsIERPV05fQVJST1csIEVORCwgRU5URVIsIEVTQ0FQRSwgSE9NRSwgTklORSwgU1BBQ0UsIFVQX0FSUk9XLCBaLCBaRVJPIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRPcHRpb24sIE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJVFNTX1NFTEVDVF9TRUFSQ0hfREVGQVVMVF9PUFRJT05TLCBJdHNzU2VsZWN0U2VhcmNoT3B0aW9ucywgY29uZmlndXJhYmxlRGVmYXVsdE9wdGlvbnMgfSBmcm9tICcuLi9kZWZhdWx0LW9wdGlvbnMnO1xuaW1wb3J0IHsgU2VsZWN0Tm9FbnRyaWVzRm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi9zZWxlY3Qtbm8tZW50cmllcy1mb3VuZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2VsZWN0U2VhcmNoQ2xlYXJEaXJlY3RpdmUgfSBmcm9tICcuLi9zZWxlY3Qtc2VhcmNoLWNsZWFyLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogRXN0ZSBjb21wb25lbnRlIGZvaSByZWVzY3JpdG8gdXRpbGl6YW5kbyBzZSBkbyBwcm9qZXRvIGEgc2VndWlyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0aG9zdC1nbWJoL25neC1tYXQtc2VsZWN0LXNlYXJjaFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2l0c3MtaW5wdXQtc2VhcmNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgU2VsZWN0U2VhcmNoQ29tcG9uZW50ID0+IFNlbGVjdFNlYXJjaENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICAvLyBWYWxvciBkZSBwZXNxdWlzYSBhdHVhbFxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgfVxuXG4gICAgLy8gUmVmZXLDqm5jaWEgw6BzIG9ww6fDtWVzIE1hdFNlbGVjdFxuICAgIHB1YmxpYyBzZXQgX29wdGlvbnMoX29wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoX29wdGlvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IF9vcHRpb25zKCk6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLy8gQWRpY2lvbmEgYSBjbGFzc2UgbWF0LXNlbGVjdC1zZWFyY2gtaW5zaWRlLW1hdC1vcHRpb24gc2UgbyBpdHNzLXNlbGVjdC1zZWFyY2ggZXN0aXZlclxuICAgIC8vIGRlbnRybyBkbyBtYXQtb3B0aW9uXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtc2VsZWN0LXNlYXJjaC1pbnNpZGUtbWF0LW9wdGlvbicpXG4gICAgZ2V0IGlzSW5zaWRlTWF0T3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm1hdE9wdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNYXRTZWxlY3QpIHB1YmxpYyBtYXRTZWxlY3Q6IE1hdFNlbGVjdCxcbiAgICAgICAgcHVibGljIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNYXRPcHRpb24pIHB1YmxpYyBtYXRPcHRpb246IE1hdE9wdGlvbiA9IG51bGwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTWF0Rm9ybUZpZWxkKSBwdWJsaWMgbWF0Rm9ybUZpZWxkOiBNYXRGb3JtRmllbGQgPSBudWxsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElUU1NfU0VMRUNUX1NFQVJDSF9ERUZBVUxUX09QVElPTlMpIGRlZmF1bHRPcHRpb25zPzogSXRzc1NlbGVjdFNlYXJjaE9wdGlvbnNcbiAgICApIHtcbiAgICAgICAgdGhpcy5hcHBseURlZmF1bHRPcHRpb25zKGRlZmF1bHRPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBSw7N0dWxvIGRvIG1hcmNhZG9yIGRlIHBvc2nDp8OjbyBkZSBwZXNxdWlzYVxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyTGFiZWw6IHN0cmluZyA9ICdQZXNxdWlzYXIuLi4nO1xuXG4gICAgLy8gVGlwbyBkbyBjYW1wbyBkZSBlbnRyYWRhIGRlIHBlc3F1aXNhXG4gICAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gJ3RleHQnO1xuXG4gICAgLy8gw41jb25lIGJhc2VhZG8gZW0gZm9udGUgdXNhZG8gcGFyYSBleGliaXIgQ2xvc2UtSWNvblxuICAgIEBJbnB1dCgpIGNsb3NlSWNvbjogc3RyaW5nID0gJ2Nsb3NlJztcblxuICAgIC8vIMONY29uZSBiYXNlYWRvIGVtIFN2ZyB1c2FkbyBwYXJhIGV4aWJpciBDbG9zZS1JY29uLiBTZSBkZWZpbmlkbywgQ2xvc2UtSWNvbiDDqSBzdWJzdGl0dcOtZG9cbiAgICBASW5wdXQoKSBjbG9zZVN2Z0ljb24/OiBzdHJpbmc7XG5cbiAgICAvLyBSw7N0dWxvIGEgc2VyIG1vc3RyYWRvIHF1YW5kbyBuZW5odW1hIGVudHJhZGEgZm9yIGVuY29udHJhZGEuIERlZmluYSBjb21vIG51bG8gc2UgbmVuaHVtYSBtZW5zYWdlbSBkZXZlIHNlciBtb3N0cmFkYVxuICAgIEBJbnB1dCgpIG5vRW50cmllc0ZvdW5kTGFiZWw6IHN0cmluZyA9ICdOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG8nO1xuXG4gICAgLyoqXG4gICAgICogU2UgbyBjYW1wbyBkZSBwZXNxdWlzYSBkZXZlIG91IG7Do28gc2VyIGxpbXBvIGFww7NzIG8gbWVudSBzdXNwZW5zbyBzZXIgZmVjaGFkby5cbiAgICAgKiDDmnRpbCBwYXJhIGZpbHRyYWdlbSBkbyBsYWRvIGRvIHNlcnZpZG9yLiBWZWphIFsjM10oaHR0cHM6Ly9naXRodWIuY29tL2JpdGhvc3QtZ21iaC9uZ3gtbWF0LXNlbGVjdC1zZWFyY2gvaXNzdWVzLzMpXG4gICAgICovXG4gICAgQElucHV0KCkgY2xlYXJTZWFyY2hJbnB1dDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvLyBTZSBkZXZlIG1vc3RyYXIgbyBpbmRpY2Fkb3IgZGUgcGVzcXVpc2EgZW0gYW5kYW1lbnRvXG4gICAgQElucHV0KCkgc2VhcmNoaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEZXNhdGl2YSBvIGZvY28gaW5pY2lhbCBkbyBjYW1wbyBkZSBlbnRyYWRhXG4gICAgQElucHV0KCkgZGlzYWJsZUluaXRpYWxGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gQXRpdmFyIGxpbXBhciBpbnB1dCBhbyBwcmVzc2lvbmFyIGVzY2FwZVxuICAgIEBJbnB1dCgpIGVuYWJsZUNsZWFyT25Fc2NhcGVQcmVzc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbXBlZGUgcXVlIGEgY2hhdmUgaG9tZS9lbmQgc2VqYSBwcm9wYWdhZGEgcGFyYSBtYXQtc2VsZWN0LFxuICAgICAqIHBlcm1pdGluZG8gbW92ZXIgbyBjdXJzb3IgZGVudHJvIGRhIGVudHJhZGEgZGUgcGVzcXVpc2EgZW0gdmV6IGRlIG5hdmVnYXIgcGVsYXMgb3DDp8O1ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwcmV2ZW50SG9tZUVuZEtleVByb3BhZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBEZXNhdGl2YSBhIHJvbGFnZW0gcGFyYSBhcyBvcMOnw7VlcyBhdGl2YXMgcXVhbmRvIGEgbGlzdGEgZGUgb3DDp8O1ZXMgw6kgYWx0ZXJhZGEuIMOadGlsIHBhcmEgcGVzcXVpc2EgZG8gbGFkbyBkbyBzZXJ2aWRvclxuICAgIEBJbnB1dCgpIGRpc2FibGVTY3JvbGxUb0FjdGl2ZU9uT3B0aW9uc0NoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIEFkaWNpb25hIHN1cG9ydGUgYSBsZWl0b3IgZGUgdGVsYSA1MDggcGFyYSBjYWl4YSBkZSBwZXNxdWlzYVxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nID0gJ1Blc3F1aXNhIHN1c3BlbnNhJztcblxuICAgIC8vIFNlIGRldmUgbW9zdHJhciBhIGNhaXhhIGRlIHNlbGXDp8OjbyBTZWxlY2lvbmFyIHR1ZG8gKHBhcmEgbWF0LXNlbGVjdFttdWx0aT10cnVlXSlcbiAgICBASW5wdXQoKSBzaG93VG9nZ2xlQWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFNlbGVjaW9uZSB0dWRvIGNhaXhhIGRlIHNlbGXDp8OjbyBtYXJjYWRhIGVzdGFkb1xuICAgIHByaXZhdGUgX3RvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdmFsdWU7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkO1xuICAgIH1cblxuICAgIC8vIE1hcnF1ZSB0b2RhcyBhcyBjYWl4YXMgZGUgc2VsZcOnw6NvIGVzdGFkbyBpbmRldGVybWluYWRvXG4gICAgcHJpdmF0ZSBfdG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2V0IHRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl90b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVBbGxJbmRldGVybWluYXRlLmVtaXQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlO1xuICAgIH1cblxuICAgIC8vIEV4aWJpciB1bWEgbWVuc2FnZW0gZW0gdW1hIGRpY2EgZGUgZmVycmFtZW50YSBuYSBjYWl4YSBkZSBzZWxlw6fDo28gZGUgYWx0ZXJuYXIgdHVkb1xuICAgIEBJbnB1dCgpIHRvZ2dsZUFsbENoZWNrYm94VG9vbHRpcE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gICAgLy8gRGVmaW5hIGEgcG9zacOnw6NvIGRhIGRpY2EgZGUgZmVycmFtZW50YSBuYSBjYWl4YSBkZSBzZWxlw6fDo28gZGUgYWx0ZXJuYXIgdHVkby5cbiAgICBASW5wdXQoKSB0b2dnbGVBbGxDaGVja2JveFRvb2x0aXBQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2JlbG93JztcblxuICAgIC8vIE1vc3RyYXIvb2N1bHRhciBvIGJvdMOjbyBsaW1wYXIgcGVzcXVpc2EgZGEgZW50cmFkYSBkZSBwZXNxdWlzYVxuICAgIEBJbnB1dCgpIGhpZGVDbGVhclNlYXJjaEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2VtcHJlIHJlc3RhdXJlIGFzIG9ww6fDtWVzIHNlbGVjaW9uYWRhcyBuYSBzZWxlw6fDo28gQWx0ZXJlIHBhcmEgbyBtb2RvIG11bHRpIChwb3IgZXhlbXBsbywgcGFyYSBjYXJyZWdhbWVudG8gbGVudG8vcm9sYWdlbSBpbmZpbml0YSkuXG4gICAgICogTyBwYWRyw6NvIMOpIGZhbHNvLCBwb3J0YW50bywgYXMgb3DDp8O1ZXMgc2VsZWNpb25hZGFzIHPDo28gcmVzdGF1cmFkYXMgYXBlbmFzIGVucXVhbnRvIGEgZmlsdHJhZ2VtIGVzdMOhIGF0aXZhLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsd2F5c1Jlc3RvcmVTZWxlY3RlZE9wdGlvbnNNdWx0aTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRW1pc3NvciBkZSBzYcOtZGEgcGFyYSBlbnZpYXIgYW8gY29tcG9uZW50ZSBwYWkgY29tIGEgYWx0ZXJuw6JuY2lhIGRlIHRvZG9zIG9zIGJvb2xlYW5vc1xuICAgIEBPdXRwdXQoKSB0b2dnbGVBbGw6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgdG9nZ2xlQWxsSW5kZXRlcm1pbmF0ZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLy8gUmVmZXLDqm5jaWEgYW8gY2FtcG8gZGUgZW50cmFkYSBkZSBwZXNxdWlzYVxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaFNlbGVjdElucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgc2VhcmNoU2VsZWN0SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBSZWZlcsOqbmNpYSBhbyBjYW1wbyBkZSBlbnRyYWRhIGRlIHBlc3F1aXNhXG4gICAgQFZpZXdDaGlsZCgnaW5uZXJTZWxlY3RTZWFyY2gnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpbm5lclNlbGVjdFNlYXJjaDogRWxlbWVudFJlZjtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIMOtY29uZSBjbGFybyBkZSBlbnRyYWRhIGRlIHBlc3F1aXNhIHBlcnNvbmFsaXphZGFcbiAgICBAQ29udGVudENoaWxkKFNlbGVjdFNlYXJjaENsZWFyRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgY2xlYXJJY29uOiBTZWxlY3RTZWFyY2hDbGVhckRpcmVjdGl2ZTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGVsZW1lbnRvIHBlcnNvbmFsaXphZG8gc2VtIGVudHJhZGFzIGVuY29udHJhZGFzXG4gICAgQENvbnRlbnRDaGlsZChTZWxlY3ROb0VudHJpZXNGb3VuZERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIG5vRW50cmllc0ZvdW5kOiBTZWxlY3ROb0VudHJpZXNGb3VuZERpcmVjdGl2ZTtcbiAgICBwcml2YXRlIF9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgcHVibGljIF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxNYXRPcHRpb24+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PE1hdE9wdGlvbj4+KG51bGwpO1xuXG4gICAgcHJpdmF0ZSBvcHRpb25zTGlzdCQ6IE9ic2VydmFibGU8TWF0T3B0aW9uW10+ID0gdGhpcy5fb3B0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj4pOiBPYnNlcnZhYmxlPGFueT4gPT4gX29wdGlvbnNcbiAgICAgICAgICAgID8gX29wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3B0aW9uczogYW55KTogYW55ID0+IG9wdGlvbnMudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGg8TWF0T3B0aW9uW10+KF9vcHRpb25zLnRvQXJyYXkoKSksKVxuICAgICAgICAgICAgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHByaXZhdGUgb3B0aW9uc0xlbmd0aCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgIG1hcCgob3B0aW9uczogTWF0T3B0aW9uW10pOiBudW1iZXIgPT4gb3B0aW9ucyA/IG9wdGlvbnMubGVuZ3RoIDogMClcbiAgICApO1xuXG4gICAgLy8gVmFsb3JlcyBwcmV2aWFtZW50ZSBzZWxlY2lvbmFkb3MgYW8gdXNhciA8bWF0LXNlbGVjdCBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3RlZFZhbHVlczogYW55W107XG5cbiAgICBwdWJsaWMgX2Zvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgICAvLyBTZSBkZXZlIG1vc3RyYXIgYSBtZW5zYWdlbSBzZW0gZW50cmFkYXMgZW5jb250cmFkYXNcbiAgICBwdWJsaWMgX3Nob3dOb0VudHJpZXNGb3VuZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLFxuICAgICAgICB0aGlzLm9wdGlvbnNMZW5ndGgkXG4gICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbdmFsdWUsIG9wdGlvbnNMZW5ndGhdOiBbYW55LCBudW1iZXJdKTogYm9vbGVhbiA9PiB0aGlzLm5vRW50cmllc0ZvdW5kTGFiZWwgJiYgdmFsdWVcbiAgICAgICAgICAgICYmIG9wdGlvbnNMZW5ndGggPT09IHRoaXMuZ2V0T3B0aW9uc0xlbmd0aE9mZnNldCgpKVxuICAgICk7XG5cbiAgICAvLyBTdWJqZWN0IGVtaXRpZG8gcXVhbmRvIG8gY29tcG9uZW50ZSBmb2kgZGVzdHJ1w61kb1xuICAgIHByaXZhdGUgX29uRGVzdHJveTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvLyBSZWZlcsOqbmNpYSBhbyBkZXNjZW5kZW50ZSBhdGl2byBwYXJhIHN1cG9ydGUgQVJJQS5cbiAgICBwcml2YXRlIGFjdGl2ZURlc2NlbmRhbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBhcHBseURlZmF1bHRPcHRpb25zKGRlZmF1bHRPcHRpb25zOiBJdHNzU2VsZWN0U2VhcmNoT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBpZiAoIWRlZmF1bHRPcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBjb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICAodGhpc1trZXldIGFzIGFueSkgPSBkZWZhdWx0T3B0aW9uc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmluaXIgY2xhc3NlIGRlIG9ww6fDo28gbWF0IHBlcnNvbmFsaXphZGEgc2UgbyBjb21wb25lbnRlIGZvaSBjb2xvY2FkbyBkZW50cm8gZGUgdW1hIG9ww6fDo28gbWF0XG4gICAgICAgIGlmICh0aGlzLm1hdE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnY29udGFpbnMtbWF0LXNlbGVjdC1zZWFyY2gnKTtcbiAgICAgICAgICAgIHRoaXMubWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignPGl0c3MtaW5wdXQtc2VhcmNoPiBkZXZlIHNlciBjb2xvY2FkbyBkZW50cm8gZGUgdW0gZWxlbWVudG8gPG1hdC1vcHRpb24+Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWFuZG8gbyBwYWluZWwgc3VzcGVuc28gZGUgc2VsZcOnw6NvIMOpIGFiZXJ0byBvdSBmZWNoYWRvXG4gICAgICAgIHRoaXMubWF0U2VsZWN0Lm9wZW5lZENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVsYXkoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9wZW5lZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9jYXIgbyBjYW1wbyBkZSBwZXNxdWlzYSBhbyBhYnJpclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZUluaXRpYWxGb2N1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExpbXDDoS1sbyBhbyBmZWNoYXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xlYXJTZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERlZmluaXIgbyBwcmltZWlybyBpdGVtIGF0aXZvIGFww7NzIGFzIG9ww6fDtWVzIGFsdGVyYWRhc1xuICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5tYXRTZWxlY3Qub3B0aW9ucztcblxuICAgICAgICAgICAgICAgICAgICAvLyBWYXJpw6F2ZWwgZGUgZmVjaGFtZW50byBwYXJhIHJhc3RyZWFyIGEgcHJpbWVpcmEgb3DDp8OjbyBtYWlzIHJlY2VudGUuXG4gICAgICAgICAgICAgICAgICAgIC8vIFBhcmEgZXZpdGFyIHF1ZSBhIGxpc3RhIHJvbGUgcGFyYSBvIHRvcG8gcXVhbmRvIGFzIG9ww6fDtWVzIHPDo28gYWRpY2lvbmFkYXMgYW8gZmluYWwgZGEgbGlzdGFcbiAgICAgICAgICAgICAgICAgICAgLy8gKHBvciBleGVtcGxvOiByb2xhZ2VtIGluZmluaXRhKSwgY29tcGFyYW1vcyBhcGVuYXMgYXMgYWx0ZXJhw6fDtWVzIG5hcyBwcmltZWlyYXMgb3DDp8O1ZXMgcGFyYVxuICAgICAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmFyIHNlIGRldmVtb3MgZGVmaW5pciBvIHByaW1laXJvIGl0ZW0gY29tbyBhdGl2by4gSXNzbyBldml0YSBhIHJvbGFnZW0gZGVzbmVjZXNzw6FyaWFcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFyYSBvIHRvcG8gZGEgbGlzdGEgcXVhbmRvIGFzIG9ww6fDtWVzIHPDo28gYW5leGFkYXMsIG1hcyBwZXJtaXRlIHF1ZSBvIHByaW1laXJvIGl0ZW0gZGEgbGlzdGFcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VqYSBkZWZpbmlkbyBjb21vIGF0aXZvIHBvciBwYWRyw6NvIHF1YW5kbyBuw6NvIGjDoSBzZWxlw6fDo28gYXRpdmEuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0ZpcnN0T3B0aW9uOiBNYXRPcHRpb24gPSB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKVt0aGlzLmdldE9wdGlvbnNMZW5ndGhPZmZzZXQoKV07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuY2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXZpdGFyIG8gZXJybyBcImV4cHJlc3Npb24gaGFzIGJlZW4gY2hhbmdlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydGVyIGEgUXVlcnlMaXN0IGVtIHVtYSBtYXRyaXpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IE1hdE9wdGlvbltdID0gdGhpcy5fb3B0aW9ucy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE8gdmVyZGFkZWlybyBwcmltZWlybyBpdGVtIMOpIGNvbXBlbnNhZG8gcG9yIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGaXJzdE9wdGlvbjogTWF0T3B0aW9uID0gb3B0aW9uc1t0aGlzLmdldE9wdGlvbnNMZW5ndGhPZmZzZXQoKV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPE1hdE9wdGlvbj4gPSB0aGlzLm1hdFNlbGVjdC5fa2V5TWFuYWdlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXlNYW5hZ2VyICYmIHRoaXMubWF0U2VsZWN0LnBhbmVsT3Blbikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmaW5pciBwcmltZWlybyBpdGVtIGF0aXZvIGUgbGFyZ3VyYSBkZSBlbnRyYWRhXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJpZmlxdWUgc2UgYSBwcmltZWlyYSBvcMOnw6NvIG5lc3NhcyBhbHRlcmHDp8O1ZXMgw6kgZGlmZXJlbnRlIGRhIGFudGVyaW9yLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0T3B0aW9uSXNDaGFuZ2VkOiBib29sZWFuID0gIXRoaXMubWF0U2VsZWN0LmNvbXBhcmVXaXRoKHByZXZpb3VzRmlyc3RPcHRpb24sIGN1cnJlbnRGaXJzdE9wdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDQVNPOiBBIHByaW1laXJhIG9ww6fDo28gw6kgZGlmZXJlbnRlIGFnb3JhLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluZGljYSBxdWUgZGV2ZW1vcyBkZWZpbmktbG8gY29tbyBhdGl2byBlIHJvbGFyIHBhcmEgbyB0b3BvLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdE9wdGlvbklzQ2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAha2V5TWFuYWdlci5hY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFvcHRpb25zLmZpbmQoKG9wdGlvbjogTWF0T3B0aW9uKTogYm9vbGVhbiA9PiB0aGlzLm1hdFNlbGVjdC5jb21wYXJlV2l0aChvcHRpb24sIGtleU1hbmFnZXIuYWN0aXZlSXRlbSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWd1YXJkZSBhcyBhbHRlcmHDp8O1ZXMgbmEgbGFyZ3VyYSBkbyBwYWluZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0dWFsaXplIG5vc3NhIHJlZmVyw6puY2lhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZpcnN0T3B0aW9uID0gY3VycmVudEZpcnN0T3B0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgLy8gQWRpY2lvbmUgb3UgcmVtb3ZhIGEgY2xhc3NlIGNzcyBkZXBlbmRlbmRvIHNlIGRlc2VqYSBtb3N0cmFyIGEgbWVuc2FnZW0gc2VtIGVudHJhZGFzIGVuY29udHJhZGFzXG4gICAgICAgIC8vIG9iczogaXNzbyDDqSBoYWNreVxuICAgICAgICB0aGlzLl9zaG93Tm9FbnRyaWVzRm91bmQkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZSgoc2hvd05vRW50cmllc0ZvdW5kOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBEZWZpbmlyIG5lbmh1bWEgY2xhc3NlIGRlIGVudHJhZGEgZW5jb250cmFkYSBuYSBtYXQtb3B0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5tYXRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoc2hvd05vRW50cmllc0ZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQoJ21hdC1zZWxlY3Qtc2VhcmNoLW5vLWVudHJpZXMtZm91bmQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdE9wdGlvbi5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKCdtYXQtc2VsZWN0LXNlYXJjaC1uby1lbnRyaWVzLWZvdW5kJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWRpbWVuc2lvbmUgYSBsYXJndXJhIGRlIGVudHJhZGEgcXVhbmRvIGEgdmlld3BvcnQgZm9yIHJlZGltZW5zaW9uYWRhLFxuICAgICAgICAvLyBvdSBzZWphLCBhIGxhcmd1cmEgZG8gYWNpb25hZG9yIHBvZGUgc2VyIHJlZGltZW5zaW9uYWRhLlxuICAgICAgICB0aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdFNlbGVjdC5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dFdpZHRoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbml0TXVsdGlwbGVIYW5kbGluZygpO1xuXG4gICAgICAgIHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBBdHVhbGl6YXIgdmlzdWFsaXphw6fDo28gcXVhbmRvIGFzIG9ww6fDtWVzIGRpc3BvbsOtdmVpcyBtdWRhcmVtXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoXzogYW55KTogdm9pZCA9PiB7IH07XG5cbiAgICBfaXNUb2dnbGVBbGxDaGVja2JveFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdFNlbGVjdC5tdWx0aXBsZSAmJiB0aGlzLnNob3dUb2dnbGVBbGxDaGVja2JveDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSB0ZWNsYSBwcmVzc2lvbmFkYSBjb20gTWF0U2VsZWN0LlxuICAgICAqIFBlcm1pdGUsIHBvciBleC4gc2VsZWNpb25hbmRvIGNvbSBhIHRlY2xhIGVudGVyLCBuYXZlZ2FuZG8gY29tIGFzIHRlY2xhcyBkZSBzZXRhLCBldGMuXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gRXZpdGUgYSBwcm9wYWdhw6fDo28gZGUgdG9kb3Mgb3MgY2FyYWN0ZXJlcyBhbGZhbnVtw6lyaWNvcyBwYXJhIGV2aXRhciBwcm9ibGVtYXMgZGUgc2VsZcOnw6NvXG4gICAgICAgIGlmICgoZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBBICYmIGV2ZW50LmtleUNvZGUgPD0gWikgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IFpFUk8gJiYgZXZlbnQua2V5Q29kZSA8PSBOSU5FKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IFNQQUNFKVxuICAgICAgICAgICAgfHwgKHRoaXMucHJldmVudEhvbWVFbmRLZXlQcm9wYWdhdGlvbiAmJiAoZXZlbnQua2V5Q29kZSA9PT0gSE9NRSB8fCBldmVudC5rZXlDb2RlID09PSBFTkQpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF0U2VsZWN0Lm11bHRpcGxlICYmIGV2ZW50LmtleSAmJiBldmVudC5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgLy8gUmVjdXBlcmUgbyBmb2NvIGFww7NzIGEgc2VsZcOnw6NvIG3Dumx0aXBsYSwgcGFyYSBxdWUgcG9zc2Ftb3MgZGlnaXRhciBhaW5kYSBtYWlzXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHRoaXMuX2ZvY3VzKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FzbyBlc3BlY2lhbCwgc2UgY2xpY2FyIGVtIEVzY2FwZSwgc2UgYSBlbnRyYWRhIGVzdGl2ZXIgdmF6aWEsIGZlY2hlIG8gbWVudSBzdXNwZW5zbywgY2FzbyBjb250csOhcmlvLCBlc3ZhemllIG8gY2FtcG8gZGUgcGVzcXVpc2FcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlQ2xlYXJPbkVzY2FwZVByZXNzZWQgPT09IHRydWUgJiYgZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0KHRydWUpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSBhdGl2YcOnw6NvIGRlIGNoYXZlIGNvbSBNYXRTZWxlY3QuXG4gICAgICogUGVybWl0ZSwgcG9yIGV4LiBvIGFuw7puY2lvIGRvIERlc2NlbmRlbnRlIGF0dWFsbWVudGUgYXRpdm8gcG9yIGxlaXRvcmVzIGRlIHRlbGEuXG4gICAgICovXG4gICAgX2hhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBVUF9BUlJPVyB8fCBldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICAgICAgICBjb25zdCBhcmlhQWN0aXZlRGVzY2VuZGFudElkOiBzdHJpbmcgPSB0aGlzLm1hdFNlbGVjdC5fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKS5maW5kSW5kZXgoKGl0ZW06IE1hdE9wdGlvbik6IGJvb2xlYW4gPT4gaXRlbS5pZCA9PT0gYXJpYUFjdGl2ZURlc2NlbmRhbnRJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQgPSB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKVtpbmRleF0uX2dldEhvc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50LnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZWxlY3RJbnB1dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgYXJpYUFjdGl2ZURlc2NlbmRhbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGFzdEV4dGVybmFsSW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc2VsZWN0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiB2YWx1ZSAhPT0gdGhpcy5fbGFzdEV4dGVybmFsSW5wdXRWYWx1ZSksXG4gICAgICAgICAgICB0YXAoKCk6IGFueSA9PiB0aGlzLl9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlID0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICkuc3Vic2NyaWJlKGZuKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2NhbGl6YSBvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU2VsZWN0SW5wdXQgfHwgIXRoaXMubWF0U2VsZWN0LnBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FsdmUgZSByZXN0YXVyZSBvIHNjcm9sbFRvcCBkbyBwYWluZWwsIHBvaXMgc2Vyw6EgcmVkZWZpbmlkbyBwb3IgZm9jdXMgKClcbiAgICAgICAgLy8gb2JzOiBpc3NvIMOpIGhhY2t5XG4gICAgICAgIGNvbnN0IHBhbmVsOiBhbnkgPSB0aGlzLm1hdFNlbGVjdC5wYW5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxUb3A6IGFueSA9IHBhbmVsLnNjcm9sbFRvcDtcblxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBwYW5lbC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfcmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pY2lhbGl6YSBhIG1hbmlwdWxhw6fDo28gPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInRydWVcIj5cbiAgICAgKiBOb3RhOiBwYXJhIG1lbGhvcmFyIGVzdGUgY8OzZGlnbywgbWF0LXNlbGVjdCBkZXZlIHNlciBlc3RlbmRpZG8gcGFyYSBwZXJtaXRpciBkZXNhYmlsaXRhciBhIHJlZGVmaW5pw6fDo28gZGEgc2VsZcOnw6NvIGR1cmFudGUgYSBmaWx0cmFnZW0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0TXVsdGlwbGVIYW5kbGluZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hdFNlbGVjdC5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdFNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIC8vIG5vdGE6IG8gYWNlc3NvIGEgbWF0U2VsZWN0Lm5nQ29udHJvbCAoZW0gdmV6IGRlIG1hdFNlbGVjdC52YWx1ZSAvIG1hdFNlbGVjdC52YWx1ZUNoYW5nZXMpXG4gICAgICAgICAgICAgICAgLy8gw6kgbmVjZXNzw6FyaW8gcGFyYSBmdW5jaW9uYXIgY29ycmV0YW1lbnRlIG5vIG1vZG8gZGUgc2VsZcOnw6NvIG3Dumx0aXBsYS5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdvIG1hdC1zZWxlY3QgY29udGVuZG8gaXRzcy1pbnB1dC1zZWFyY2ggZGV2ZSB0ZXIgdW1hIGRpcmV0aXZhIG5nTW9kZWwgb3UgZm9ybUNvbnRyb2wgcXVhbmRvIG11bHRpcGxlPXRydWUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZSA8bWF0LXNlbGVjdCBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAvLyBhcm1hemVuYXIgdmFsb3JlcyBwcmV2aWFtZW50ZSBzZWxlY2lvbmFkb3MgZSByZXN0YXVyw6EtbG9zIHF1YW5kbyBmb3JlbSBkZXNtYXJjYWRvc1xuICAgICAgICAvLyBwb3JxdWUgYSBvcMOnw6NvIG7Do28gZXN0w6EgZGlzcG9uw612ZWwgZW5xdWFudG8gZXN0YW1vcyBmaWx0cmFuZG9cbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzID0gdGhpcy5tYXRTZWxlY3QubmdDb250cm9sLnZhbHVlO1xuXG4gICAgICAgIHRoaXMubWF0U2VsZWN0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWVzOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdG9yZVNlbGVjdGVkVmFsdWVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmFsd2F5c1Jlc3RvcmVTZWxlY3RlZE9wdGlvbnNNdWx0aSB8fCAodGhpcy5fZm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy5fZm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcyAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXMgfHwgIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZXM6IGFueVtdID0gdGhpcy5tYXRTZWxlY3Qub3B0aW9ucy5tYXAoKG9wdGlvbjogTWF0T3B0aW9uKTogYW55ID0+IG9wdGlvbi52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChwcmV2aW91c1ZhbHVlOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlcy5zb21lKCh2OiBhbnkpOiBib29sZWFuID0+IHRoaXMubWF0U2VsZWN0LmNvbXBhcmVXaXRoKHYsIHByZXZpb3VzVmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhb3B0aW9uVmFsdWVzLnNvbWUoKHY6IGFueSk6IGJvb2xlYW4gPT4gdGhpcy5tYXRTZWxlY3QuY29tcGFyZVdpdGgodiwgcHJldmlvdXNWYWx1ZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlIHVtIHZhbG9yIHF1ZSBmb2kgc2VsZWNpb25hZG8gYW50ZXMgZm9yIGRlc21hcmNhZG8gZSBuw6NvIGVuY29udHJhZG8gbmFzIG9ww6fDtWVzLCBlbGUgZm9pIGRlc21hcmNhZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV2aWRvIMOgIGZpbHRyYWdlbSwgZW50w6NvIHJlc3RhdXJhbW9zLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChwcmV2aW91c1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZVNlbGVjdGVkVmFsdWVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZXM7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzdG9yZVNlbGVjdGVkVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0Ll9vbkNoYW5nZSh2YWx1ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBEZWZpbmEgYSBsYXJndXJhIGRvIGlubmVyU2VsZWN0U2VhcmNoIHBhcmEgYWp1c3RhciBhdMOpIG1lc21vIGFzIGJhcnJhcyBkZSByb2xhZ2VtIHBlcnNvbmFsaXphZGFzXG4gICAgICogIEUgYXBvaWFyIHRvZG9zIG9zIHNpc3RlbWFzIGRlIG9wZXJhw6fDo29cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlSW5wdXRXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlubmVyU2VsZWN0U2VhcmNoIHx8ICF0aGlzLmlubmVyU2VsZWN0U2VhcmNoLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmlubmVyU2VsZWN0U2VhcmNoLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCBwYW5lbEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgICAgICB3aGlsZSAoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdtYXQtc2VsZWN0LXBhbmVsJykpIHtcbiAgICAgICAgICAgICAgICBwYW5lbEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYW5lbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IHBhbmVsRWxlbWVudC5jbGllbnRXaWR0aCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgbyBkZXNsb2NhbWVudG8gcGFyYSBvIGNvbXByaW1lbnRvIHF1ZSBwb2RlIHNlciBjYXVzYWRvIHBlbG8gbWF0T3B0aW9uIG9wY2lvbmFsIHVzYWRvIGNvbW8gdW1hIGVudHJhZGEgZGUgcGVzcXVpc2EuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLm1hdE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdW5zZWxlY3RBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVEZXNjZW5kYW50KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hTZWxlY3RJbnB1dC5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgfVxuXG5cbn1cbiJdfQ==
584
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvY29tcG9uZW50cy9zZWxlY3QtZW50aXR5LXBhZ2VkL3NoYXJlZC9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNQLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFB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MEJBQTBCOzREQUFDO0lBR25DO1FBQS9ELFlBQVksQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztrQ0FBaUIsNkJBQTZCO2lFQUFDO0lBNUhyRyxxQkFBcUI7UUFiakMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLG1CQUFtQjtZQUM3Qiwrd0ZBQTZDO1lBRTdDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQW9DLE9BQUEsdUJBQXFCLEVBQXJCLENBQXFCLENBQUM7b0JBQ2xGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDbEQsQ0FBQztRQXdCTyxXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUdqQixXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDN0IsV0FBQSxRQUFRLEVBQUUsQ0FBQSxFQUFFLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hDLFdBQUEsUUFBUSxFQUFFLENBQUEsRUFBRSxXQUFBLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO3lDQUxsQixTQUFTO1lBQ3BCLGlCQUFpQjtZQUNuQixhQUFhO1lBQ1ksU0FBUztZQUNILFlBQVk7T0EzQjlELHFCQUFxQixDQTJmakM7SUFBRCw0QkFBQztDQUFBLEFBM2ZELElBMmZDO1NBM2ZZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQSwgRE9XTl9BUlJPVywgRU5ELCBFTlRFUiwgRVNDQVBFLCBIT01FLCBOSU5FLCBTUEFDRSwgVVBfQVJST1csIFosIFpFUk8gfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdE9wdGlvbiwgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElUU1NfU0VMRUNUX1NFQVJDSF9ERUZBVUxUX09QVElPTlMsIEl0c3NTZWxlY3RTZWFyY2hPcHRpb25zLCBjb25maWd1cmFibGVEZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4uL2RlZmF1bHQtb3B0aW9ucyc7XG5pbXBvcnQgeyBTZWxlY3ROb0VudHJpZXNGb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1uby1lbnRyaWVzLWZvdW5kLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hDbGVhckRpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1zZWFyY2gtY2xlYXIuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBFc3RlIGNvbXBvbmVudGUgZm9pIHJlZXNjcml0byB1dGlsaXphbmRvIHNlIGRvIHByb2pldG8gYSBzZWd1aXJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRob3N0LWdtYmgvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy1pbnB1dC1zZWFyY2gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3Qtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBTZWxlY3RTZWFyY2hDb21wb25lbnQgPT4gU2VsZWN0U2VhcmNoQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIC8vIFZhbG9yIGRlIHBlc3F1aXNhIGF0dWFsXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBSZWZlcsOqbmNpYSDDoHMgb3DDp8O1ZXMgTWF0U2VsZWN0XG4gICAgcHVibGljIHNldCBfb3B0aW9ucyhfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj4pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyQubmV4dChfb3B0aW9ucyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgX29wdGlvbnMoKTogUXVlcnlMaXN0PE1hdE9wdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvLyBBZGljaW9uYSBhIGNsYXNzZSBtYXQtc2VsZWN0LXNlYXJjaC1pbnNpZGUtbWF0LW9wdGlvbiBzZSBvIGl0c3Mtc2VsZWN0LXNlYXJjaCBlc3RpdmVyXG4gICAgLy8gZGVudHJvIGRvIG1hdC1vcHRpb25cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1zZWxlY3Qtc2VhcmNoLWluc2lkZS1tYXQtb3B0aW9uJylcbiAgICBnZXQgaXNJbnNpZGVNYXRPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubWF0T3B0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE1hdFNlbGVjdCkgcHVibGljIG1hdFNlbGVjdDogTWF0U2VsZWN0LFxuICAgICAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF92aWV3cG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1hdE9wdGlvbikgcHVibGljIG1hdE9wdGlvbjogTWF0T3B0aW9uID0gbnVsbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNYXRGb3JtRmllbGQpIHB1YmxpYyBtYXRGb3JtRmllbGQ6IE1hdEZvcm1GaWVsZCA9IG51bGwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSVRTU19TRUxFQ1RfU0VBUkNIX0RFRkFVTFRfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnM/OiBJdHNzU2VsZWN0U2VhcmNoT3B0aW9uc1xuICAgICkge1xuICAgICAgICB0aGlzLmFwcGx5RGVmYXVsdE9wdGlvbnMoZGVmYXVsdE9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIFLDs3R1bG8gZG8gbWFyY2Fkb3IgZGUgcG9zacOnw6NvIGRlIHBlc3F1aXNhXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXJMYWJlbDogc3RyaW5nID0gJ1Blc3F1aXNhci4uLic7XG5cbiAgICAvLyBUaXBvIGRvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XG5cbiAgICAvLyDDjWNvbmUgYmFzZWFkbyBlbSBmb250ZSB1c2FkbyBwYXJhIGV4aWJpciBDbG9zZS1JY29uXG4gICAgQElucHV0KCkgY2xvc2VJY29uOiBzdHJpbmcgPSAnY2xvc2UnO1xuXG4gICAgLy8gw41jb25lIGJhc2VhZG8gZW0gU3ZnIHVzYWRvIHBhcmEgZXhpYmlyIENsb3NlLUljb24uIFNlIGRlZmluaWRvLCBDbG9zZS1JY29uIMOpIHN1YnN0aXR1w61kb1xuICAgIEBJbnB1dCgpIGNsb3NlU3ZnSWNvbj86IHN0cmluZztcblxuICAgIC8vIFLDs3R1bG8gYSBzZXIgbW9zdHJhZG8gcXVhbmRvIG5lbmh1bWEgZW50cmFkYSBmb3IgZW5jb250cmFkYS4gRGVmaW5hIGNvbW8gbnVsbyBzZSBuZW5odW1hIG1lbnNhZ2VtIGRldmUgc2VyIG1vc3RyYWRhXG4gICAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbDogc3RyaW5nID0gJ05lbmh1bSByZXN1bHRhZG8gZW5jb250cmFkbyc7XG5cbiAgICAvKipcbiAgICAgKiBTZSBvIGNhbXBvIGRlIHBlc3F1aXNhIGRldmUgb3UgbsOjbyBzZXIgbGltcG8gYXDDs3MgbyBtZW51IHN1c3BlbnNvIHNlciBmZWNoYWRvLlxuICAgICAqIMOadGlsIHBhcmEgZmlsdHJhZ2VtIGRvIGxhZG8gZG8gc2Vydmlkb3IuIFZlamEgWyMzXShodHRwczovL2dpdGh1Yi5jb20vYml0aG9zdC1nbWJoL25neC1tYXQtc2VsZWN0LXNlYXJjaC9pc3N1ZXMvMylcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjbGVhclNlYXJjaElucHV0OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8vIFNlIGRldmUgbW9zdHJhciBvIGluZGljYWRvciBkZSBwZXNxdWlzYSBlbSBhbmRhbWVudG9cbiAgICBASW5wdXQoKSBzZWFyY2hpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIERlc2F0aXZhIG8gZm9jbyBpbmljaWFsIGRvIGNhbXBvIGRlIGVudHJhZGFcbiAgICBASW5wdXQoKSBkaXNhYmxlSW5pdGlhbEZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBBdGl2YXIgbGltcGFyIGlucHV0IGFvIHByZXNzaW9uYXIgZXNjYXBlXG4gICAgQElucHV0KCkgZW5hYmxlQ2xlYXJPbkVzY2FwZVByZXNzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEltcGVkZSBxdWUgYSBjaGF2ZSBob21lL2VuZCBzZWphIHByb3BhZ2FkYSBwYXJhIG1hdC1zZWxlY3QsXG4gICAgICogcGVybWl0aW5kbyBtb3ZlciBvIGN1cnNvciBkZW50cm8gZGEgZW50cmFkYSBkZSBwZXNxdWlzYSBlbSB2ZXogZGUgbmF2ZWdhciBwZWxhcyBvcMOnw7Vlc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHByZXZlbnRIb21lRW5kS2V5UHJvcGFnYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIERlc2F0aXZhIGEgcm9sYWdlbSBwYXJhIGFzIG9ww6fDtWVzIGF0aXZhcyBxdWFuZG8gYSBsaXN0YSBkZSBvcMOnw7VlcyDDqSBhbHRlcmFkYS4gw5p0aWwgcGFyYSBwZXNxdWlzYSBkbyBsYWRvIGRvIHNlcnZpZG9yXG4gICAgQElucHV0KCkgZGlzYWJsZVNjcm9sbFRvQWN0aXZlT25PcHRpb25zQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gU2UgZGV2ZSBtb3N0cmFyIGEgY2FpeGEgZGUgc2VsZcOnw6NvIFNlbGVjaW9uYXIgdHVkbyAocGFyYSBtYXQtc2VsZWN0W211bHRpPXRydWVdKVxuICAgIEBJbnB1dCgpIHNob3dUb2dnbGVBbGxDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gU2VsZWNpb25lIHR1ZG8gY2FpeGEgZGUgc2VsZcOnw6NvIG1hcmNhZGEgZXN0YWRvXG4gICAgcHJpdmF0ZSBfdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2V0IHRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl90b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVBbGwuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB0b2dnbGVBbGxDaGVja2JveENoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2dnbGVBbGxDaGVja2JveENoZWNrZWQ7XG4gICAgfVxuXG4gICAgLy8gTWFycXVlIHRvZGFzIGFzIGNhaXhhcyBkZSBzZWxlw6fDo28gZXN0YWRvIGluZGV0ZXJtaW5hZG9cbiAgICBwcml2YXRlIF90b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgdG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUFsbEluZGV0ZXJtaW5hdGUuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB0b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGU7XG4gICAgfVxuXG4gICAgLy8gRXhpYmlyIHVtYSBtZW5zYWdlbSBlbSB1bWEgZGljYSBkZSBmZXJyYW1lbnRhIG5hIGNhaXhhIGRlIHNlbGXDp8OjbyBkZSBhbHRlcm5hciB0dWRvXG4gICAgQElucHV0KCkgdG9nZ2xlQWxsQ2hlY2tib3hUb29sdGlwTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgICAvLyBEZWZpbmEgYSBwb3Npw6fDo28gZGEgZGljYSBkZSBmZXJyYW1lbnRhIG5hIGNhaXhhIGRlIHNlbGXDp8OjbyBkZSBhbHRlcm5hciB0dWRvLlxuICAgIEBJbnB1dCgpIHRvZ2dsZUFsbENoZWNrYm94VG9vbHRpcFBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ2Fib3ZlJyB8ICdiZWxvdycgfCAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYmVsb3cnO1xuXG4gICAgLy8gTW9zdHJhci9vY3VsdGFyIG8gYm90w6NvIGxpbXBhciBwZXNxdWlzYSBkYSBlbnRyYWRhIGRlIHBlc3F1aXNhXG4gICAgQElucHV0KCkgaGlkZUNsZWFyU2VhcmNoQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZW1wcmUgcmVzdGF1cmUgYXMgb3DDp8O1ZXMgc2VsZWNpb25hZGFzIG5hIHNlbGXDp8OjbyBBbHRlcmUgcGFyYSBvIG1vZG8gbXVsdGkgKHBvciBleGVtcGxvLCBwYXJhIGNhcnJlZ2FtZW50byBsZW50by9yb2xhZ2VtIGluZmluaXRhKS5cbiAgICAgKiBPIHBhZHLDo28gw6kgZmFsc28sIHBvcnRhbnRvLCBhcyBvcMOnw7VlcyBzZWxlY2lvbmFkYXMgc8OjbyByZXN0YXVyYWRhcyBhcGVuYXMgZW5xdWFudG8gYSBmaWx0cmFnZW0gZXN0w6EgYXRpdmEuXG4gICAgICovXG4gICAgQElucHV0KCkgYWx3YXlzUmVzdG9yZVNlbGVjdGVkT3B0aW9uc011bHRpOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBFbWlzc29yIGRlIHNhw61kYSBwYXJhIGVudmlhciBhbyBjb21wb25lbnRlIHBhaSBjb20gYSBhbHRlcm7Dom5jaWEgZGUgdG9kb3Mgb3MgYm9vbGVhbm9zXG4gICAgQE91dHB1dCgpIHRvZ2dsZUFsbDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSB0b2dnbGVBbGxJbmRldGVybWluYXRlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvLyBSZWZlcsOqbmNpYSBhbyBjYW1wbyBkZSBlbnRyYWRhIGRlIHBlc3F1aXNhXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoU2VsZWN0SW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hTZWxlY3RJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBAVmlld0NoaWxkKCdpbm5lclNlbGVjdFNlYXJjaCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIGlubmVyU2VsZWN0U2VhcmNoOiBFbGVtZW50UmVmO1xuXG4gICAgLy8gUmVmZXLDqm5jaWEgYW8gw61jb25lIGNsYXJvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2EgcGVyc29uYWxpemFkYVxuICAgIEBDb250ZW50Q2hpbGQoU2VsZWN0U2VhcmNoQ2xlYXJEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KSBjbGVhckljb246IFNlbGVjdFNlYXJjaENsZWFyRGlyZWN0aXZlO1xuXG4gICAgLy8gUmVmZXLDqm5jaWEgYW8gZWxlbWVudG8gcGVyc29uYWxpemFkbyBzZW0gZW50cmFkYXMgZW5jb250cmFkYXNcbiAgICBAQ29udGVudENoaWxkKFNlbGVjdE5vRW50cmllc0ZvdW5kRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgbm9FbnRyaWVzRm91bmQ6IFNlbGVjdE5vRW50cmllc0ZvdW5kRGlyZWN0aXZlO1xuICAgIHByaXZhdGUgX2xhc3RFeHRlcm5hbElucHV0VmFsdWU6IHN0cmluZztcbiAgICBwdWJsaWMgX29wdGlvbnMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PE1hdE9wdGlvbj4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8TWF0T3B0aW9uPj4obnVsbCk7XG5cbiAgICBwcml2YXRlIG9wdGlvbnNMaXN0JDogT2JzZXJ2YWJsZTxNYXRPcHRpb25bXT4gPSB0aGlzLl9vcHRpb25zJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKF9vcHRpb25zOiBRdWVyeUxpc3Q8TWF0T3B0aW9uPik6IE9ic2VydmFibGU8YW55PiA9PiBfb3B0aW9uc1xuICAgICAgICAgICAgPyBfb3B0aW9ucy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChvcHRpb25zOiBhbnkpOiBhbnkgPT4gb3B0aW9ucy50b0FycmF5KCkpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aDxNYXRPcHRpb25bXT4oX29wdGlvbnMudG9BcnJheSgpKSwpXG4gICAgICAgICAgICA6IG9mKG51bGwpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcHJpdmF0ZSBvcHRpb25zTGVuZ3RoJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5vcHRpb25zTGlzdCQucGlwZShcbiAgICAgICAgbWFwKChvcHRpb25zOiBNYXRPcHRpb25bXSk6IG51bWJlciA9PiBvcHRpb25zID8gb3B0aW9ucy5sZW5ndGggOiAwKVxuICAgICk7XG5cbiAgICAvLyBWYWxvcmVzIHByZXZpYW1lbnRlIHNlbGVjaW9uYWRvcyBhbyB1c2FyIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgcHJpdmF0ZSBwcmV2aW91c1NlbGVjdGVkVmFsdWVzOiBhbnlbXTtcblxuICAgIHB1YmxpYyBfZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICAgIC8vIFNlIGRldmUgbW9zdHJhciBhIG1lbnNhZ2VtIHNlbSBlbnRyYWRhcyBlbmNvbnRyYWRhc1xuICAgIHB1YmxpYyBfc2hvd05vRW50cmllc0ZvdW5kJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMsXG4gICAgICAgIHRoaXMub3B0aW9uc0xlbmd0aCRcbiAgICBdKS5waXBlKFxuICAgICAgICBtYXAoKFt2YWx1ZSwgb3B0aW9uc0xlbmd0aF06IFthbnksIG51bWJlcl0pOiBib29sZWFuID0+IHRoaXMubm9FbnRyaWVzRm91bmRMYWJlbCAmJiB2YWx1ZVxuICAgICAgICAgICAgJiYgb3B0aW9uc0xlbmd0aCA9PT0gdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCkpXG4gICAgKTtcblxuICAgIC8vIFN1YmplY3QgZW1pdGlkbyBxdWFuZG8gbyBjb21wb25lbnRlIGZvaSBkZXN0cnXDrWRvXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGRlc2NlbmRlbnRlIGF0aXZvIHBhcmEgc3Vwb3J0ZSBBUklBLlxuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGFwcGx5RGVmYXVsdE9wdGlvbnMoZGVmYXVsdE9wdGlvbnM6IEl0c3NTZWxlY3RTZWFyY2hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIGlmICghZGVmYXVsdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbmZpZ3VyYWJsZURlZmF1bHRPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICh0aGlzW2tleV0gYXMgYW55KSA9IGRlZmF1bHRPcHRpb25zW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRGVmaW5pciBjbGFzc2UgZGUgb3DDp8OjbyBtYXQgcGVyc29uYWxpemFkYSBzZSBvIGNvbXBvbmVudGUgZm9pIGNvbG9jYWRvIGRlbnRybyBkZSB1bWEgb3DDp8OjbyBtYXRcbiAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1hdE9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm1hdE9wdGlvbi5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKCdjb250YWlucy1tYXQtc2VsZWN0LXNlYXJjaCcpO1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCc8aXRzcy1pbnB1dC1zZWFyY2g+IGRldmUgc2VyIGNvbG9jYWRvIGRlbnRybyBkZSB1bSBlbGVtZW50byA8bWF0LW9wdGlvbj4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1YW5kbyBvIHBhaW5lbCBzdXNwZW5zbyBkZSBzZWxlw6fDo28gw6kgYWJlcnRvIG91IGZlY2hhZG9cbiAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbmVkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBGb2NhciBvIGNhbXBvIGRlIHBlc3F1aXNhIGFvIGFicmlyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlSW5pdGlhbEZvY3VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTGltcMOhLWxvIGFvIGZlY2hhclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGVhclNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGVmaW5pciBvIHByaW1laXJvIGl0ZW0gYXRpdm8gYXDDs3MgYXMgb3DDp8O1ZXMgYWx0ZXJhZGFzXG4gICAgICAgIHRoaXMubWF0U2VsZWN0Lm9wZW5lZENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCk6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFZhcmnDoXZlbCBkZSBmZWNoYW1lbnRvIHBhcmEgcmFzdHJlYXIgYSBwcmltZWlyYSBvcMOnw6NvIG1haXMgcmVjZW50ZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gUGFyYSBldml0YXIgcXVlIGEgbGlzdGEgcm9sZSBwYXJhIG8gdG9wbyBxdWFuZG8gYXMgb3DDp8O1ZXMgc8OjbyBhZGljaW9uYWRhcyBhbyBmaW5hbCBkYSBsaXN0YVxuICAgICAgICAgICAgICAgICAgICAvLyAocG9yIGV4ZW1wbG86IHJvbGFnZW0gaW5maW5pdGEpLCBjb21wYXJhbW9zIGFwZW5hcyBhcyBhbHRlcmHDp8O1ZXMgbmFzIHByaW1laXJhcyBvcMOnw7VlcyBwYXJhXG4gICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluYXIgc2UgZGV2ZW1vcyBkZWZpbmlyIG8gcHJpbWVpcm8gaXRlbSBjb21vIGF0aXZvLiBJc3NvIGV2aXRhIGEgcm9sYWdlbSBkZXNuZWNlc3PDoXJpYVxuICAgICAgICAgICAgICAgICAgICAvLyBwYXJhIG8gdG9wbyBkYSBsaXN0YSBxdWFuZG8gYXMgb3DDp8O1ZXMgc8OjbyBhbmV4YWRhcywgbWFzIHBlcm1pdGUgcXVlIG8gcHJpbWVpcm8gaXRlbSBkYSBsaXN0YVxuICAgICAgICAgICAgICAgICAgICAvLyBzZWphIGRlZmluaWRvIGNvbW8gYXRpdm8gcG9yIHBhZHLDo28gcXVhbmRvIG7Do28gaMOhIHNlbGXDp8OjbyBhdGl2YS5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzRmlyc3RPcHRpb246IE1hdE9wdGlvbiA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpW3RoaXMuZ2V0T3B0aW9uc0xlbmd0aE9mZnNldCgpXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFdml0YXIgbyBlcnJvIFwiZXhwcmVzc2lvbiBoYXMgYmVlbiBjaGFuZ2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0ZXIgYSBRdWVyeUxpc3QgZW0gdW1hIG1hdHJpelxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uczogTWF0T3B0aW9uW10gPSB0aGlzLl9vcHRpb25zLnRvQXJyYXkoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTyB2ZXJkYWRlaXJvIHByaW1laXJvIGl0ZW0gw6kgY29tcGVuc2FkbyBwb3IgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZpcnN0T3B0aW9uOiBNYXRPcHRpb24gPSBvcHRpb25zW3RoaXMuZ2V0T3B0aW9uc0xlbmd0aE9mZnNldCgpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5TWFuYWdlcjogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8TWF0T3B0aW9uPiA9IHRoaXMubWF0U2VsZWN0Ll9rZXlNYW5hZ2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleU1hbmFnZXIgJiYgdGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmlyIHByaW1laXJvIGl0ZW0gYXRpdm8gZSBsYXJndXJhIGRlIGVudHJhZGFcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFZlcmlmaXF1ZSBzZSBhIHByaW1laXJhIG9ww6fDo28gbmVzc2FzIGFsdGVyYcOnw7VlcyDDqSBkaWZlcmVudGUgZGEgYW50ZXJpb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3RPcHRpb25Jc0NoYW5nZWQ6IGJvb2xlYW4gPSAhdGhpcy5tYXRTZWxlY3QuY29tcGFyZVdpdGgocHJldmlvdXNGaXJzdE9wdGlvbiwgY3VycmVudEZpcnN0T3B0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENBU086IEEgcHJpbWVpcmEgb3DDp8OjbyDDqSBkaWZlcmVudGUgYWdvcmEuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5kaWNhIHF1ZSBkZXZlbW9zIGRlZmluaS1sbyBjb21vIGF0aXZvIGUgcm9sYXIgcGFyYSBvIHRvcG8uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0T3B0aW9uSXNDaGFuZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW9wdGlvbnMuZmluZCgob3B0aW9uOiBNYXRPcHRpb24pOiBib29sZWFuID0+IHRoaXMubWF0U2VsZWN0LmNvbXBhcmVXaXRoKG9wdGlvbiwga2V5TWFuYWdlci5hY3RpdmVJdGVtKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZ3VhcmRlIGFzIGFsdGVyYcOnw7VlcyBuYSBsYXJndXJhIGRvIHBhaW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXR1YWxpemUgbm9zc2EgcmVmZXLDqm5jaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmlyc3RPcHRpb24gPSBjdXJyZW50Rmlyc3RPcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyBBZGljaW9uZSBvdSByZW1vdmEgYSBjbGFzc2UgY3NzIGRlcGVuZGVuZG8gc2UgZGVzZWphIG1vc3RyYXIgYSBtZW5zYWdlbSBzZW0gZW50cmFkYXMgZW5jb250cmFkYXNcbiAgICAgICAgLy8gb2JzOiBpc3NvIMOpIGhhY2t5XG4gICAgICAgIHRoaXMuX3Nob3dOb0VudHJpZXNGb3VuZCQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICkuc3Vic2NyaWJlKChzaG93Tm9FbnRyaWVzRm91bmQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIC8vIERlZmluaXIgbmVuaHVtYSBjbGFzc2UgZGUgZW50cmFkYSBlbmNvbnRyYWRhIG5hIG1hdC1vcHRpb25cbiAgICAgICAgICAgIGlmICh0aGlzLm1hdE9wdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChzaG93Tm9FbnRyaWVzRm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnbWF0LXNlbGVjdC1zZWFyY2gtbm8tZW50cmllcy1mb3VuZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5yZW1vdmUoJ21hdC1zZWxlY3Qtc2VhcmNoLW5vLWVudHJpZXMtZm91bmQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlZGltZW5zaW9uZSBhIGxhcmd1cmEgZGUgZW50cmFkYSBxdWFuZG8gYSB2aWV3cG9ydCBmb3IgcmVkaW1lbnNpb25hZGEsXG4gICAgICAgIC8vIG91IHNlamEsIGEgbGFyZ3VyYSBkbyBhY2lvbmFkb3IgcG9kZSBzZXIgcmVkaW1lbnNpb25hZGEuXG4gICAgICAgIHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0U2VsZWN0LnBhbmVsT3Blbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmluaXRNdWx0aXBsZUhhbmRsaW5nKCk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zTGlzdCQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICkuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIC8vIEF0dWFsaXphciB2aXN1YWxpemHDp8OjbyBxdWFuZG8gYXMgb3DDp8O1ZXMgZGlzcG9uw612ZWlzIG11ZGFyZW1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9IChfOiBhbnkpOiB2b2lkID0+IHsgfTtcblxuICAgIF9pc1RvZ2dsZUFsbENoZWNrYm94VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF0U2VsZWN0Lm11bHRpcGxlICYmIHRoaXMuc2hvd1RvZ2dsZUFsbENoZWNrYm94O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhIGNvbSBNYXRTZWxlY3QuXG4gICAgICogUGVybWl0ZSwgcG9yIGV4LiBzZWxlY2lvbmFuZG8gY29tIGEgdGVjbGEgZW50ZXIsIG5hdmVnYW5kbyBjb20gYXMgdGVjbGFzIGRlIHNldGEsIGV0Yy5cbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBFdml0ZSBhIHByb3BhZ2HDp8OjbyBkZSB0b2RvcyBvcyBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zIHBhcmEgZXZpdGFyIHByb2JsZW1hcyBkZSBzZWxlw6fDo29cbiAgICAgICAgaWYgKChldmVudC5rZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IEEgJiYgZXZlbnQua2V5Q29kZSA8PSBaKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPj0gWkVSTyAmJiBldmVudC5rZXlDb2RlIDw9IE5JTkUpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UpXG4gICAgICAgICAgICB8fCAodGhpcy5wcmV2ZW50SG9tZUVuZEtleVByb3BhZ2F0aW9uICYmIChldmVudC5rZXlDb2RlID09PSBIT01FIHx8IGV2ZW50LmtleUNvZGUgPT09IEVORCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fZm9jdXMoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsLCBzZSBjbGljYXIgZW0gRXNjYXBlLCBzZSBhIGVudHJhZGEgZXN0aXZlciB2YXppYSwgZmVjaGUgbyBtZW51IHN1c3BlbnNvLCBjYXNvIGNvbnRyw6FyaW8sIGVzdmF6aWUgbyBjYW1wbyBkZSBwZXNxdWlzYVxuICAgICAgICBpZiAodGhpcy5lbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZCA9PT0gdHJ1ZSAmJiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXQodHJ1ZSk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIGF0aXZhw6fDo28gZGUgY2hhdmUgY29tIE1hdFNlbGVjdC5cbiAgICAgKiBQZXJtaXRlLCBwb3IgZXguIG8gYW7Dum5jaW8gZG8gRGVzY2VuZGVudGUgYXR1YWxtZW50ZSBhdGl2byBwb3IgbGVpdG9yZXMgZGUgdGVsYS5cbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGV2ZW50LmtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50SWQ6IHN0cmluZyA9IHRoaXMubWF0U2VsZWN0Ll9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCgoaXRlbTogTWF0T3B0aW9uKTogYm9vbGVhbiA9PiBpdGVtLmlkID09PSBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2VsZWN0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpW2luZGV4XS5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5zZWxlY3RBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHZhbHVlICE9PSB0aGlzLl9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlKSxcbiAgICAgICAgICAgIHRhcCgoKTogYW55ID0+IHRoaXMuX2xhc3RFeHRlcm5hbElucHV0VmFsdWUgPSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgKS5zdWJzY3JpYmUoZm4pO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY2FsaXphIG8gY2FtcG8gZGUgZW50cmFkYSBkZSBwZXNxdWlzYVxuICAgICAqL1xuICAgIHB1YmxpYyBfZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTZWxlY3RJbnB1dCB8fCAhdGhpcy5tYXRTZWxlY3QucGFuZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBzYWx2ZSBlIHJlc3RhdXJlIG8gc2Nyb2xsVG9wIGRvIHBhaW5lbCwgcG9pcyBzZXLDoSByZWRlZmluaWRvIHBvciBmb2N1cyAoKVxuICAgICAgICAvLyBvYnM6IGlzc28gw6kgaGFja3lcbiAgICAgICAgY29uc3QgcGFuZWw6IGFueSA9IHRoaXMubWF0U2VsZWN0LnBhbmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcDogYW55ID0gcGFuZWwuc2Nyb2xsVG9wO1xuXG4gICAgICAgIC8vIFNldGEgbyBmb2NvXG4gICAgICAgIHRoaXMuc2VhcmNoU2VsZWN0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIHBhbmVsLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWRlZmluZSBvIHZhbG9yIGRlIHBlc3F1aXNhIGF0dWFsXG4gICAgICogQHBhcmFtIGZvY3VzIHNlIGRldmUgZm9jYXIgYXDDs3MgYSByZWRlZmluacOnw6NvXG4gICAgICovXG4gICAgcHVibGljIF9yZXNldChmb2N1cz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGEgbWFuaXB1bGHDp8OjbyA8bWF0LXNlbGVjdCBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAqIE5vdGE6IHBhcmEgbWVsaG9yYXIgZXN0ZSBjw7NkaWdvLCBtYXQtc2VsZWN0IGRldmUgc2VyIGVzdGVuZGlkbyBwYXJhIHBlcm1pdGlyIGRlc2FiaWxpdGFyIGEgcmVkZWZpbmnDp8OjbyBkYSBzZWxlw6fDo28gZHVyYW50ZSBhIGZpbHRyYWdlbS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRNdWx0aXBsZUhhbmRsaW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubWF0U2VsZWN0Lm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF0U2VsZWN0Lm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgLy8gbm90YTogbyBhY2Vzc28gYSBtYXRTZWxlY3QubmdDb250cm9sIChlbSB2ZXogZGUgbWF0U2VsZWN0LnZhbHVlIC8gbWF0U2VsZWN0LnZhbHVlQ2hhbmdlcylcbiAgICAgICAgICAgICAgICAvLyDDqSBuZWNlc3PDoXJpbyBwYXJhIGZ1bmNpb25hciBjb3JyZXRhbWVudGUgbm8gbW9kbyBkZSBzZWxlw6fDo28gbcO6bHRpcGxhLlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ28gbWF0LXNlbGVjdCBjb250ZW5kbyBpdHNzLWlucHV0LXNlYXJjaCBkZXZlIHRlciB1bWEgZGlyZXRpdmEgbmdNb2RlbCBvdSBmb3JtQ29udHJvbCBxdWFuZG8gbXVsdGlwbGU9dHJ1ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNlIDxtYXQtc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgIC8vIGFybWF6ZW5hciB2YWxvcmVzIHByZXZpYW1lbnRlIHNlbGVjaW9uYWRvcyBlIHJlc3RhdXLDoS1sb3MgcXVhbmRvIGZvcmVtIGRlc21hcmNhZG9zXG4gICAgICAgIC8vIHBvcnF1ZSBhIG9ww6fDo28gbsOjbyBlc3TDoSBkaXNwb27DrXZlbCBlbnF1YW50byBlc3RhbW9zIGZpbHRyYW5kb1xuICAgICAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLm1hdFNlbGVjdC5uZ0NvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgdGhpcy5tYXRTZWxlY3QubmdDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZXM6IGFueSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXN0b3JlU2VsZWN0ZWRWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdFNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuYWx3YXlzUmVzdG9yZVNlbGVjdGVkT3B0aW9uc011bHRpIHx8ICh0aGlzLl9mb3JtQ29udHJvbC52YWx1ZSAmJiB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZS5sZW5ndGgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzICYmIEFycmF5LmlzQXJyYXkodGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlcyB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlczogYW55W10gPSB0aGlzLm1hdFNlbGVjdC5vcHRpb25zLm1hcCgob3B0aW9uOiBNYXRPcHRpb24pOiBhbnkgPT4gb3B0aW9uLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzLmZvckVhY2goKHByZXZpb3VzVmFsdWU6IGFueSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLnNvbWUoKHY6IGFueSk6IGJvb2xlYW4gPT4gdGhpcy5tYXRTZWxlY3QuY29tcGFyZVdpdGgodiwgcHJldmlvdXNWYWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFvcHRpb25WYWx1ZXMuc29tZSgodjogYW55KTogYm9vbGVhbiA9PiB0aGlzLm1hdFNlbGVjdC5jb21wYXJlV2l0aCh2LCBwcmV2aW91c1ZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2UgdW0gdmFsb3IgcXVlIGZvaSBzZWxlY2lvbmFkbyBhbnRlcyBmb3IgZGVzbWFyY2FkbyBlIG7Do28gZW5jb250cmFkbyBuYXMgb3DDp8O1ZXMsIGVsZSBmb2kgZGVzbWFyY2Fkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXZpZG8gw6AgZmlsdHJhZ2VtLCBlbnTDo28gcmVzdGF1cmFtb3MuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHByZXZpb3VzVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlU2VsZWN0ZWRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcyA9IHZhbHVlcztcblxuICAgICAgICAgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0ZWRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRTZWxlY3QuX29uQ2hhbmdlKHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIERlZmluYSBhIGxhcmd1cmEgZG8gaW5uZXJTZWxlY3RTZWFyY2ggcGFyYSBhanVzdGFyIGF0w6kgbWVzbW8gYXMgYmFycmFzIGRlIHJvbGFnZW0gcGVyc29uYWxpemFkYXNcbiAgICAgKiAgRSBhcG9pYXIgdG9kb3Mgb3Mgc2lzdGVtYXMgZGUgb3BlcmHDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVJbnB1dFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2ggfHwgIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHBhbmVsRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1zZWxlY3QtcGFuZWwnKSkge1xuICAgICAgICAgICAgICAgIHBhbmVsRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhbmVsRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclNlbGVjdFNlYXJjaC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gcGFuZWxFbGVtZW50LmNsaWVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBvIGRlc2xvY2FtZW50byBwYXJhIG8gY29tcHJpbWVudG8gcXVlIHBvZGUgc2VyIGNhdXNhZG8gcGVsbyBtYXRPcHRpb24gb3BjaW9uYWwgdXNhZG8gY29tbyB1bWEgZW50cmFkYSBkZSBwZXNxdWlzYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE9wdGlvbnNMZW5ndGhPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9XG5cblxufVxuIl19
@@ -4,6 +4,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { ObjectUtil } from '../../../core/utils/object.util';
5
5
  var SelectEnumComponent = /** @class */ (function () {
6
6
  function SelectEnumComponent() {
7
+ this.tooltip = '';
7
8
  this.multiple = false;
8
9
  this.selectionChange = new EventEmitter();
9
10
  this.loading = false;
@@ -64,6 +65,10 @@ var SelectEnumComponent = /** @class */ (function () {
64
65
  Input(),
65
66
  __metadata("design:type", String)
66
67
  ], SelectEnumComponent.prototype, "placeholder", void 0);
68
+ __decorate([
69
+ Input(),
70
+ __metadata("design:type", String)
71
+ ], SelectEnumComponent.prototype, "tooltip", void 0);
67
72
  __decorate([
68
73
  Input(),
69
74
  __metadata("design:type", Boolean)
@@ -107,7 +112,7 @@ var SelectEnumComponent = /** @class */ (function () {
107
112
  SelectEnumComponent = SelectEnumComponent_1 = __decorate([
108
113
  Component({
109
114
  selector: 'itss-select-enum',
110
- template: "<div fxLayout=\"column\">\n <mat-label>\n {{ label }}\n <span *ngIf=\"required && label\">*</span>\n </mat-label>\n <mat-form-field appearance=\"outline\">\n <mat-select #select\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [multiple]=\"multiple\"\n [(ngModel)]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [class.select-disabled]=\"disabled\"\n [disableOptionCentering]=\"true\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n panelClass=\"select-position\">\n <mat-option *ngIf=\"!required && !multiple\"\n [value]=\"null\">\n {{ nullValue ? nullValue : 'Selecione' }}\n </mat-option>\n <div *ngFor=\"let e of enumList\">\n <mat-option *ngIf=\"validKey(e.key)\"\n (click)=\"(e.key === val) ? onSelectionChange(null) : null\"\n [value]=\"e.key\">\n {{ e.value }}\n </mat-option>\n </div>\n </mat-select>\n <mat-spinner matPrefix\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n diameter=\"17\"></mat-spinner>\n </mat-form-field>\n</div>",
115
+ template: "<div fxLayout=\"column\">\n <mat-label *ngIf=\"label\">\n {{ label }}\n <span *ngIf=\"required && label\"> * </span>\n <gipi-helpful-tip *ngIf=\"tooltip && label\"\n [tooltip]=\"tooltip\">\n </gipi-helpful-tip>\n </mat-label>\n\n <mat-form-field appearance=\"outline\">\n <mat-select #select\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [multiple]=\"multiple\"\n [(ngModel)]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [class.select-disabled]=\"disabled\"\n [disableOptionCentering]=\"true\"\n (selectionChange)=\"onSelectionChange($event.value)\"\n panelClass=\"select-position\">\n <mat-option *ngIf=\"!required && !multiple\"\n [value]=\"null\">\n {{ nullValue ? nullValue : 'Selecione' }}\n </mat-option>\n <div *ngFor=\"let e of enumList\">\n <mat-option *ngIf=\"validKey(e.key)\"\n (click)=\"(e.key === val) ? onSelectionChange(null) : null\"\n [value]=\"e.key\">\n {{ e.value }}\n </mat-option>\n </div>\n </mat-select>\n <mat-spinner matPrefix\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n diameter=\"17\"></mat-spinner>\n </mat-form-field>\n</div>",
111
116
  providers: [
112
117
  {
113
118
  provide: NG_VALUE_ACCESSOR,
@@ -115,10 +120,10 @@ var SelectEnumComponent = /** @class */ (function () {
115
120
  multi: true
116
121
  }
117
122
  ],
118
- styles: [":host{display:block;min-width:0;max-width:100%;flex:1}mat-label span{color:#f44336!important}.select-disabled{cursor:not-allowed}"]
123
+ styles: [":host{display:block;min-width:0;max-width:100%;flex:1}mat-label span{color:#f44336!important}.select-disabled{cursor:not-allowed!important}:host ::ng-deep .mat-select-disabled .mat-select-trigger,:host ::ng-deep .mat-select-disabled .mat-select-value{cursor:not-allowed!important}"]
119
124
  })
120
125
  ], SelectEnumComponent);
121
126
  return SelectEnumComponent;
122
127
  }());
123
128
  export { SelectEnumComponent };
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWVudW0vc2VsZWN0LWVudW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFjN0Q7SUFBQTtRQWNhLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJaEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSTNDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFRekIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQVlyQixhQUFRLEdBQVE7UUFDaEIsQ0FBQyxDQUFBO1FBRUQsWUFBTyxHQUFRO1FBQ2YsQ0FBQyxDQUFBO0lBNEJMLENBQUM7NEJBMUVZLG1CQUFtQjtJQWdDNUIsc0NBQVEsR0FBUjtRQUFBLGlCQUlDO1FBSEcsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDakMsR0FBRyxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFyQyxDQUFxQyxDQUFDO2FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELCtDQUFpQixHQUFqQixVQUFrQixNQUFXO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxzQkFBSSxzQ0FBSzthQUFUO1lBQ0ksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUM7YUFFRCxVQUFVLEdBQUc7WUFDVCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7OztPQU5BO0lBUUQsOENBQWdCLEdBQWhCLFVBQWlCLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELCtDQUFpQixHQUFqQixVQUFrQixFQUFPO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3Q0FBVSxHQUFWLFVBQVcsS0FBVTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsc0NBQVEsR0FBUixVQUFTLEdBQVc7UUFDaEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxLQUFLLEdBQUcsRUFBVixDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BHLENBQUM7O0lBdEV5RDtRQUF6RCxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUM7a0NBQWMsVUFBVTs0REFBQztJQUV6RTtRQUFSLEtBQUssRUFBRTs7cURBQWM7SUFFYjtRQUFSLEtBQUssRUFBRTs7c0RBQWU7SUFFZDtRQUFSLEtBQUssRUFBRTs7NERBQXFCO0lBRXBCO1FBQVIsS0FBSyxFQUFFOzt5REFBbUI7SUFFbEI7UUFBUixLQUFLLEVBQUU7O3lEQUFtQjtJQUVsQjtRQUFSLEtBQUssRUFBRTs7eURBQWtCO0lBRWpCO1FBQVIsS0FBSyxFQUFFOztxREFBTTtJQUVKO1FBQVQsTUFBTSxFQUFFOztnRUFBMkM7SUFFcEM7UUFBZixLQUFLLENBQUMsT0FBTyxDQUFDOztvREFBVTtJQUVoQjtRQUFSLEtBQUssRUFBRTs7d0RBQWlCO0lBRWhCO1FBQVIsS0FBSyxFQUFFOztxREFBa0M7SUFFakM7UUFBUixLQUFLLEVBQUU7OzZEQUF3QjtJQUV2QjtRQUFSLEtBQUssRUFBRTs7MERBQW1CO0lBNUJsQixtQkFBbUI7UUFaL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGtCQUFrQjtZQUM1Qix3N0NBQTJDO1lBRTNDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQU0sT0FBQSxxQkFBbUIsRUFBbkIsQ0FBbUIsQ0FBQztvQkFDbEQsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjs7U0FDSixDQUFDO09BQ1csbUJBQW1CLENBMEUvQjtJQUFELDBCQUFDO0NBQUEsQUExRUQsSUEwRUM7U0ExRVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9iamVjdFV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL29iamVjdC51dGlsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpdHNzLXNlbGVjdC1lbnVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWVudW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC1lbnVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0RW51bUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RFbnVtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG5cbiAgICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZW51bTtcblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgndmFsdWUnKSB2YWw6IGFueTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNvcnQ6IChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdmFsdWVzRXhjbHVkOiBzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpIG51bGxWYWx1ZTogc3RyaW5nO1xuXG4gICAgZW51bUxpc3Q6IGFueVtdID0gW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnVtTGlzdCA9IE9iamVjdC5rZXlzKHRoaXMuZW51bSlcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+ICh7IGtleToga2V5LCB2YWx1ZTogdGhpcy5lbnVtW2tleV0gfSkpXG4gICAgICAgICAgICAuc29ydCh0aGlzLnNvcnQpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGVudGl0eTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZW50aXR5KTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge1xuICAgIH1cblxuICAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbDtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMudmFsID0gdmFsO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy52YWx1ZXNFeGNsdWQpID8gIXRoaXMudmFsdWVzRXhjbHVkLnNvbWUoZWwgPT4gZWwgPT09IGtleSkgOiB0cnVlO1xuICAgIH1cblxufVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWVudW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWVudW0vc2VsZWN0LWVudW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFjN0Q7SUFBQTtRQVVhLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFNckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUloQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJM0MsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVF6QixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBWXJCLGFBQVEsR0FBUTtRQUNoQixDQUFDLENBQUE7UUFFRCxZQUFPLEdBQVE7UUFDZixDQUFDLENBQUE7SUE0QkwsQ0FBQzs0QkE1RVksbUJBQW1CO0lBa0M1QixzQ0FBUSxHQUFSO1FBQUEsaUJBSUM7UUFIRyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNqQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQXJDLENBQXFDLENBQUM7YUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsK0NBQWlCLEdBQWpCLFVBQWtCLE1BQVc7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVFELHNCQUFJLHNDQUFLO2FBQVQ7WUFDSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsQ0FBQzthQUVELFVBQVUsR0FBRztZQUNULElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQzs7O09BTkE7SUFRRCw4Q0FBZ0IsR0FBaEIsVUFBaUIsRUFBTztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsK0NBQWlCLEdBQWpCLFVBQWtCLEVBQU87UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELHdDQUFVLEdBQVYsVUFBVyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxzQ0FBUSxHQUFSLFVBQVMsR0FBVztRQUNoQixPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLEtBQUssR0FBRyxFQUFWLENBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEcsQ0FBQzs7SUF4RXlEO1FBQXpELFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztrQ0FBYyxVQUFVOzREQUFDO0lBRXpFO1FBQVIsS0FBSyxFQUFFOztxREFBYztJQUViO1FBQVIsS0FBSyxFQUFFOztzREFBZTtJQUVkO1FBQVIsS0FBSyxFQUFFOzs0REFBcUI7SUFFcEI7UUFBUixLQUFLLEVBQUU7O3dEQUFzQjtJQUVyQjtRQUFSLEtBQUssRUFBRTs7eURBQW1CO0lBRWxCO1FBQVIsS0FBSyxFQUFFOzt5REFBbUI7SUFFbEI7UUFBUixLQUFLLEVBQUU7O3lEQUFrQjtJQUVqQjtRQUFSLEtBQUssRUFBRTs7cURBQU07SUFFSjtRQUFULE1BQU0sRUFBRTs7Z0VBQTJDO0lBRXBDO1FBQWYsS0FBSyxDQUFDLE9BQU8sQ0FBQzs7b0RBQVU7SUFFaEI7UUFBUixLQUFLLEVBQUU7O3dEQUFpQjtJQUVoQjtRQUFSLEtBQUssRUFBRTs7cURBQWtDO0lBRWpDO1FBQVIsS0FBSyxFQUFFOzs2REFBd0I7SUFFdkI7UUFBUixLQUFLLEVBQUU7OzBEQUFtQjtJQTlCbEIsbUJBQW1CO1FBWi9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsaWxEQUEyQztZQUUzQyxTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEscUJBQW1CLEVBQW5CLENBQW1CLENBQUM7b0JBQ2xELEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7O1NBQ0osQ0FBQztPQUNXLG1CQUFtQixDQTRFL0I7SUFBRCwwQkFBQztDQUFBLEFBNUVELElBNEVDO1NBNUVZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy1zZWxlY3QtZW51bScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1lbnVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZW51bS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdEVudW1Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0RW51bUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuXG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0JywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmcgPSAnJztcblxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZW51bTtcblxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgndmFsdWUnKSB2YWw6IGFueTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNvcnQ6IChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyO1xuXG4gICAgQElucHV0KCkgdmFsdWVzRXhjbHVkOiBzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpIG51bGxWYWx1ZTogc3RyaW5nO1xuXG4gICAgZW51bUxpc3Q6IGFueVtdID0gW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnVtTGlzdCA9IE9iamVjdC5rZXlzKHRoaXMuZW51bSlcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+ICh7IGtleToga2V5LCB2YWx1ZTogdGhpcy5lbnVtW2tleV0gfSkpXG4gICAgICAgICAgICAuc29ydCh0aGlzLnNvcnQpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGVudGl0eTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZW50aXR5KTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge1xuICAgIH1cblxuICAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbDtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMudmFsID0gdmFsO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHZhbGlkS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy52YWx1ZXNFeGNsdWQpID8gIXRoaXMudmFsdWVzRXhjbHVkLnNvbWUoZWwgPT4gZWwgPT09IGtleSkgOiB0cnVlO1xuICAgIH1cblxufVxuIl19