@fundamental-ngx/platform 0.52.2-rc.3 → 0.52.2-rc.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
  2. package/esm2022/form/date-picker/date-picker.component.mjs +2 -2
  3. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +2 -2
  4. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -3
  5. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +2 -2
  6. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
  7. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +18 -4
  8. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +4 -4
  9. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +2 -2
  10. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +8 -3
  11. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
  12. package/esm2022/table/table.component.mjs +5 -6
  13. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
  14. package/esm2022/variant-management/variant-management.component.mjs +3 -3
  15. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +1 -1
  16. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-form.mjs +10 -5
  18. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
  20. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
  22. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-platform-table.mjs +32 -13
  24. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
  26. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +2 -2
  28. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  29. package/form/multi-combobox/commons/base-multi-combobox.d.ts +10 -3
  30. package/package.json +10 -10
  31. package/schematics/ng-add/index.js +1 -1
  32. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -1
  33. package/table/components/table-p13-dialog/table-p13-dialog.component.d.ts +4 -2
@@ -183,7 +183,7 @@ export class VariantManagementComponent {
183
183
  provide: FDP_VARIANT_MANAGEMENT,
184
184
  useExisting: VariantManagementComponent
185
185
  }
186
- ], queries: [{ propertyName: "dirtyLabel", first: true, predicate: VariantManagementDirtyLabelDirective, descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: FilterStringsPipe, name: "fdFilterStrings" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
186
+ ], queries: [{ propertyName: "dirtyLabel", first: true, predicate: VariantManagementDirtyLabelDirective, descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item [selected]=\"variant.name === activeVariant.name\" (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: FilterStringsPipe, name: "fdFilterStrings" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
187
  }
188
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: VariantManagementComponent, decorators: [{
189
189
  type: Component,
@@ -215,7 +215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
215
215
  AsyncPipe,
216
216
  NgClass,
217
217
  ButtonComponent
218
- ], template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
218
+ ], template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item [selected]=\"variant.name === activeVariant.name\" (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
219
219
  }], ctorParameters: () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }], propDecorators: { variants: [{
220
220
  type: Input
221
221
  }], headerSize: [{
@@ -244,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
244
244
  type: HostBinding,
245
245
  args: ['class']
246
246
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFyaWFudC1tYW5hZ2VtZW50L3ZhcmlhbnQtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhcmlhbnQtbWFuYWdlbWVudC92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JILE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDBC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VUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9DQUFvQztnQkFLbEQsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFNBQVM7Z0JBS0gsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdHJpbmdzUGlwZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckNvbXBvbmVudCxcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZSwgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdExpbmtEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7XG4gICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckJvZHlIZWFkZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmlnZ2VyQ29uZmlnXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEhlYWRlclNpemVzLCBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgRkRQX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZHluYW1pYy1wYWdlJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50LCBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5hZ2VWYXJpYW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtdmFyaWFudC1pdGVtL21hbmFnZS12YXJpYW50LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hbmFnZVZhcmlhbnRzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hbmFnZS12YXJpYW50cy1kaWFsb2cvbWFuYWdlLXZhcmlhbnRzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhcmlhbnQtbWFuYWdlbWVudC1kaXJ0eS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2F2ZURpYWxvZ0NvbnRleHQgfSBmcm9tICcuL21vZGVscy9zYXZlLWRpYWxvZy5tb2RlbCc7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudCB9IGZyb20gJy4vbW9kZWxzL3ZhcmlhbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBOZXdWYXJpYW50LCBWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMvdmFyaWFudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRQX1ZBUklBTlRfTUFOQUdFTUVOVCB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IFZhcmlhbnRJdGVtIH0gZnJvbSAnLi92YXJpYW50LWl0ZW0uY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YXJpYW50LW1hbmFnZW1lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9WQVJJQU5UX01BTkFHRU1FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVmFyaWFudE1hbmFnZW1lbnRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5SGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTGlzdExpbmtEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgRmlsdGVyU3RyaW5nc1BpcGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWYXJpYW50TWFuYWdlbWVudENvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIFZhcmlhbnRNYW5hZ2VtZW50PFQ+IHtcbiAgICAvKiogSW5pdGlhbCB2YXJpYW50cyBhcnJheS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YXJpYW50cyhpdGVtczogVmFyaWFudDxUPltdKSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gdGhpcy5fdHJhbnNmb3JtVmFyaWFudHMoaXRlbXMpO1xuXG4gICAgICAgIGxldCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlzRGVmYXVsdCk7XG4gICAgICAgIGN1cnJlbnRWYXJpYW50SW5kZXggPSBjdXJyZW50VmFyaWFudEluZGV4ID4gLTEgPyBjdXJyZW50VmFyaWFudEluZGV4IDogMDtcbiAgICAgICAgY29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RWYXJpYW50KGN1cnJlbnRWYXJpYW50IGFzIFZhcmlhbnRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogSGVhZGVyIHNpemUuICovXG4gICAgQElucHV0KClcbiAgICBoZWFkZXJTaXplOiBIZWFkZXJTaXplcyA9IDQ7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBvcG92ZXJUcmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHsgdHJpZ2dlcjogJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSwgb3BlbkFjdGlvbjogdHJ1ZSB9XG4gICAgXTtcblxuICAgIC8qKiBVc2VyJ3MgbmFtZSB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyB2YXJpYW50cyB1c2VyIGNyZWF0ZXMuICovXG4gICAgQElucHV0KClcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBzZWFyY2ggZmllbGQgZm9yIHZhcmlhbnRzIGxpc3QuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZGlzcGxheVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBjb21wb25lbnQgaXMgaW4gcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2YXJpYW50cyBkYXRhIGhhcyBiZWVuIHVwZGF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFyaWFudHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZhcmlhbnQ8VD5bXT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gbmV3IHZhcmlhbnQgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFyaWFudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFyaWFudDxUPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkaXJ0eSBsYWJlbCBkaXJlY3RpdmUuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChWYXJpYW50TWFuYWdlbWVudERpcnR5TGFiZWxEaXJlY3RpdmUpXG4gICAgZGlydHlMYWJlbDogVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgICBfcG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGludGVybmFsbHkgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB3cmFwcGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBhY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFyaWFudDxUPiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZWxlY3RlZCB2YXJpYW50LiAqL1xuICAgIGFjdGl2ZVZhcmlhbnQhOiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhcmlhbnRzOiBWYXJpYW50SXRlbTxUPltdID0gW107XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9maWx0ZXJQaHJhc2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2R5bmFtaWNQYWdlKCk6IER5bmFtaWNQYWdlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlRHluYW1pY1BhZ2UgfHwgdGhpcy5fcGxhdGZvcm1EeW5hbWljUGFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHluYW1pY1BhZ2VDb2xsYXBzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfY29yZUR5bmFtaWNQYWdlID0gaW5qZWN0KEZEX0RZTkFNSUNfUEFHRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcGxhdGZvcm1EeW5hbWljUGFnZSA9IGluamVjdChGRFBfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxBY3RpdmVWYXJpYW50OiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX2R5bmFtaWNQYWdlKSB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29sbGFwc2VkJC5uZXh0KHRoaXMuX2R5bmFtaWNQYWdlIS5jb2xsYXBzZWQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbnVhbGx5IHNlbGVjdCB2YXJpYW50LlxuICAgICAqIEBwYXJhbSB2YXJpYW50IFZhcmlhbnQgdG8gc2VsZWN0LlxuICAgICAqL1xuICAgIHNlbGVjdFZhcmlhbnQodmFyaWFudDogVmFyaWFudEl0ZW08VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50ID0gdmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdmFyaWFudC5jbG9uZSh7fSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnRDaGFuZ2UuZW1pdCh2YXJpYW50KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdC5uZXh0KHZhcmlhbnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9yaWdpbmFsIHZhcmlhbnQgZGF0YS4gKi9cbiAgICBnZXRPcmlnaW5hbEFjdGl2ZVZhcmlhbnREYXRhKCk6IFZhcmlhbnQ8VD5bJ2RhdGEnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW5hbEFjdGl2ZVZhcmlhbnQuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IGFjdGl2ZSB2YXJpYW50IGRhdGEgd2l0aCBhcHBsaWVkIGNoYW5nZXMuICovXG4gICAgZ2V0QWN0aXZlVmFyaWFudERhdGEoKTogVmFyaWFudDxUPlsnZGF0YSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmFyaWFudC5kYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGN1cnJlbnQgdmFyaWFudCB3aXRoIGl0cyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNhdmVDdXJyZW50VmFyaWFudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlkID09PSB0aGlzLmFjdGl2ZVZhcmlhbnQuaWQpO1xuICAgICAgICB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XSA9IHRoaXMuYWN0aXZlVmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHt9LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlblNhdmVEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9wb3Zlcj8uY2xvc2UoZmFsc2UpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48U2F2ZURpYWxvZ0NvbnRleHQ+KE1hbmFnZVZhcmlhbnRJdGVtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdWYXJpYW50TmFtZXM6IHRoaXMuX3ZhcmlhbnRzLm1hcCgodmFyaWFudCkgPT4gdmFyaWFudC5uYW1lKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFyaWFudE5hbWU6IHRoaXMuYWN0aXZlVmFyaWFudC5uYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IE5ld1ZhcmlhbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHsgLi4ucmVzdWx0LCAuLi57IGNyZWF0ZWRCeTogdGhpcy51c2VyTmFtZSB9IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzLnB1c2gobmV3VmFyaWFudCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50c0NoYW5nZS5lbWl0KHRoaXMuX3ZhcmlhbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnQgPSBuZXdWYXJpYW50O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBjdXJyZW50IGFjdGl2ZSBwcmVzZXQgd2l0aCBuZXcgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gcHJlc2V0IFByZXNldCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb21wb25lbnROYW1lIGNvbXBvbmVudCB0byB3aGljaCB0aGlzIHByZXNldCBiZWxvbmdzIHRvLlxuICAgICAqL1xuICAgIHVwZGF0ZUFjdGl2ZVByZXNldChwcmVzZXQ6IFQsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVWYXJpYW50RGF0YSA9IHRoaXMuX29yaWdpbmFsQWN0aXZlVmFyaWFudC5kYXRhW2NvbXBvbmVudE5hbWVdO1xuICAgICAgICB0aGlzLl92YXJpYW50Q2hhbmdlZCA9IGFjdGl2ZVZhcmlhbnREYXRhICYmICFlcXVhbChwcmVzZXQsIGFjdGl2ZVZhcmlhbnREYXRhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50LmRhdGFbY29tcG9uZW50TmFtZV0gPSBwcmVzZXQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3Blbk1hbmFnZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3BvdmVyPy5jbG9zZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbjxWYXJpYW50SXRlbVtdPihNYW5hZ2VWYXJpYW50c0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fdmFyaWFudHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFyaWFudHM6IFZhcmlhbnRJdGVtW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IHZhcmlhbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3VibWl0KHNlYXJjaDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUGhyYXNlID0gc2VhcmNoLnRleHQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJQaHJhc2UgPSBudWxsO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgX3RyYWNrRm4oaW5kZXg6IG51bWJlciwgaXRlbTogVmFyaWFudEl0ZW08VD4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zZm9ybVZhcmlhbnRzKGl0ZW1zOiBWYXJpYW50PFQ+W10pOiBWYXJpYW50SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgodmFyaWFudCkgPT4gbmV3IFZhcmlhbnRJdGVtKHZhcmlhbnQpKTtcbiAgICB9XG59XG4iLCJAaWYgKGFjdGl2ZVZhcmlhbnQpIHtcbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19wb3BvdmVyLWJvZHlcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwicG9wb3ZlclRyaWdnZXJzXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDRcbiAgICAgICAgICAgICAgICAgICAgZmQtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUtLWR5bmFtaWMtcGFnZSc6IF9keW5hbWljUGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmZC12YXJpYW50LW1hbmFnZW1lbnRfX3RpdGxlLS1keW5hbWljLXBhZ2UtLWNvbGxhcHNlZCc6IF9keW5hbWljUGFnZUNvbGxhcHNlZCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRlclNpemVdPVwiaGVhZGVyU2l6ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhY3RpdmVWYXJpYW50Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgIEBpZiAoX3ZhcmlhbnRDaGFuZ2VkICYmICFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC12YXJpYW50LW1hbmFnZW1lbnRfX2RpcnR5LWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtdmFyaWFudC1tYW5hZ2VtZW50X19kaXJ0eS1pbmRpY2F0b3ItLWN1c3RvbV09XCIhIWRpcnR5TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREaXJ0eUluZGljYXRvcj4qPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpcnR5TGFiZWwgPyBkaXJ0eUxhYmVsLnRlbXBsYXRlUmVmIDogZGVmYXVsdERpcnR5SW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZE1lbnVdPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8ZGl2IGZkLXBvcG92ZXItYm9keS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2JhckRlc2lnbl09XCJkaXNwbGF5U2VhcmNoID8gJ2hlYWRlci13aXRoLXN1YmhlYWRlcicgOiAnaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WYXJpYW50TWFuYWdlbWVudC5teVZpZXdzJyB8IGZkVHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNlYXJjaCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cIl9vblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxTZWFyY2gpPVwiX2NhbmNlbFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgb2YgX3ZhcmlhbnRzIHwgZmRGaWx0ZXJTdHJpbmdzOiB7IHNlYXJjaFRlcm06IF9maWx0ZXJQaHJhc2UsIGtleTogJ25hbWUnIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrIHZhcmlhbnQuaWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSAoY2xpY2spPVwic2VsZWN0VmFyaWFudCh2YXJpYW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhY3RpdmVWYXJpYW50LnJlYWRvbmx5ICYmIF92YXJpYW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQuc2F2ZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUN1cnJlbnRWYXJpYW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJhY3RpdmVWYXJpYW50LnJlYWRvbmx5IHx8ICFfdmFyaWFudENoYW5nZWQgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNhdmVBcycgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3BlblNhdmVEaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQubWFuYWdlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuTWFuYWdlRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbiJdfQ==
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFyaWFudC1tYW5hZ2VtZW50L3ZhcmlhbnQtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhcmlhbnQtbWFuYWdlbWVudC92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JILE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDBC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VUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9DQUFvQztnQkFLbEQsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFNBQVM7Z0JBS0gsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdHJpbmdzUGlwZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckNvbXBvbmVudCxcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZSwgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdExpbmtEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7XG4gICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckJvZHlIZWFkZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmlnZ2VyQ29uZmlnXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEhlYWRlclNpemVzLCBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgRkRQX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZHluYW1pYy1wYWdlJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50LCBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5hZ2VWYXJpYW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtdmFyaWFudC1pdGVtL21hbmFnZS12YXJpYW50LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hbmFnZVZhcmlhbnRzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hbmFnZS12YXJpYW50cy1kaWFsb2cvbWFuYWdlLXZhcmlhbnRzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhcmlhbnQtbWFuYWdlbWVudC1kaXJ0eS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2F2ZURpYWxvZ0NvbnRleHQgfSBmcm9tICcuL21vZGVscy9zYXZlLWRpYWxvZy5tb2RlbCc7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudCB9IGZyb20gJy4vbW9kZWxzL3ZhcmlhbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBOZXdWYXJpYW50LCBWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMvdmFyaWFudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRQX1ZBUklBTlRfTUFOQUdFTUVOVCB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IFZhcmlhbnRJdGVtIH0gZnJvbSAnLi92YXJpYW50LWl0ZW0uY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YXJpYW50LW1hbmFnZW1lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9WQVJJQU5UX01BTkFHRU1FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVmFyaWFudE1hbmFnZW1lbnRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5SGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTGlzdExpbmtEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgRmlsdGVyU3RyaW5nc1BpcGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWYXJpYW50TWFuYWdlbWVudENvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIFZhcmlhbnRNYW5hZ2VtZW50PFQ+IHtcbiAgICAvKiogSW5pdGlhbCB2YXJpYW50cyBhcnJheS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YXJpYW50cyhpdGVtczogVmFyaWFudDxUPltdKSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gdGhpcy5fdHJhbnNmb3JtVmFyaWFudHMoaXRlbXMpO1xuXG4gICAgICAgIGxldCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlzRGVmYXVsdCk7XG4gICAgICAgIGN1cnJlbnRWYXJpYW50SW5kZXggPSBjdXJyZW50VmFyaWFudEluZGV4ID4gLTEgPyBjdXJyZW50VmFyaWFudEluZGV4IDogMDtcbiAgICAgICAgY29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RWYXJpYW50KGN1cnJlbnRWYXJpYW50IGFzIFZhcmlhbnRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogSGVhZGVyIHNpemUuICovXG4gICAgQElucHV0KClcbiAgICBoZWFkZXJTaXplOiBIZWFkZXJTaXplcyA9IDQ7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBvcG92ZXJUcmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHsgdHJpZ2dlcjogJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSwgb3BlbkFjdGlvbjogdHJ1ZSB9XG4gICAgXTtcblxuICAgIC8qKiBVc2VyJ3MgbmFtZSB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyB2YXJpYW50cyB1c2VyIGNyZWF0ZXMuICovXG4gICAgQElucHV0KClcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBzZWFyY2ggZmllbGQgZm9yIHZhcmlhbnRzIGxpc3QuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZGlzcGxheVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBjb21wb25lbnQgaXMgaW4gcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2YXJpYW50cyBkYXRhIGhhcyBiZWVuIHVwZGF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFyaWFudHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZhcmlhbnQ8VD5bXT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gbmV3IHZhcmlhbnQgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFyaWFudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFyaWFudDxUPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkaXJ0eSBsYWJlbCBkaXJlY3RpdmUuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChWYXJpYW50TWFuYWdlbWVudERpcnR5TGFiZWxEaXJlY3RpdmUpXG4gICAgZGlydHlMYWJlbDogVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgICBfcG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGludGVybmFsbHkgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB3cmFwcGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBhY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFyaWFudDxUPiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZWxlY3RlZCB2YXJpYW50LiAqL1xuICAgIGFjdGl2ZVZhcmlhbnQhOiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhcmlhbnRzOiBWYXJpYW50SXRlbTxUPltdID0gW107XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9maWx0ZXJQaHJhc2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2R5bmFtaWNQYWdlKCk6IER5bmFtaWNQYWdlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlRHluYW1pY1BhZ2UgfHwgdGhpcy5fcGxhdGZvcm1EeW5hbWljUGFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHluYW1pY1BhZ2VDb2xsYXBzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfY29yZUR5bmFtaWNQYWdlID0gaW5qZWN0KEZEX0RZTkFNSUNfUEFHRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcGxhdGZvcm1EeW5hbWljUGFnZSA9IGluamVjdChGRFBfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxBY3RpdmVWYXJpYW50OiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX2R5bmFtaWNQYWdlKSB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29sbGFwc2VkJC5uZXh0KHRoaXMuX2R5bmFtaWNQYWdlIS5jb2xsYXBzZWQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbnVhbGx5IHNlbGVjdCB2YXJpYW50LlxuICAgICAqIEBwYXJhbSB2YXJpYW50IFZhcmlhbnQgdG8gc2VsZWN0LlxuICAgICAqL1xuICAgIHNlbGVjdFZhcmlhbnQodmFyaWFudDogVmFyaWFudEl0ZW08VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50ID0gdmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdmFyaWFudC5jbG9uZSh7fSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnRDaGFuZ2UuZW1pdCh2YXJpYW50KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdC5uZXh0KHZhcmlhbnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9yaWdpbmFsIHZhcmlhbnQgZGF0YS4gKi9cbiAgICBnZXRPcmlnaW5hbEFjdGl2ZVZhcmlhbnREYXRhKCk6IFZhcmlhbnQ8VD5bJ2RhdGEnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW5hbEFjdGl2ZVZhcmlhbnQuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IGFjdGl2ZSB2YXJpYW50IGRhdGEgd2l0aCBhcHBsaWVkIGNoYW5nZXMuICovXG4gICAgZ2V0QWN0aXZlVmFyaWFudERhdGEoKTogVmFyaWFudDxUPlsnZGF0YSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmFyaWFudC5kYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGN1cnJlbnQgdmFyaWFudCB3aXRoIGl0cyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNhdmVDdXJyZW50VmFyaWFudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlkID09PSB0aGlzLmFjdGl2ZVZhcmlhbnQuaWQpO1xuICAgICAgICB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XSA9IHRoaXMuYWN0aXZlVmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHt9LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlblNhdmVEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9wb3Zlcj8uY2xvc2UoZmFsc2UpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48U2F2ZURpYWxvZ0NvbnRleHQ+KE1hbmFnZVZhcmlhbnRJdGVtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdWYXJpYW50TmFtZXM6IHRoaXMuX3ZhcmlhbnRzLm1hcCgodmFyaWFudCkgPT4gdmFyaWFudC5uYW1lKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFyaWFudE5hbWU6IHRoaXMuYWN0aXZlVmFyaWFudC5uYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IE5ld1ZhcmlhbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHsgLi4ucmVzdWx0LCAuLi57IGNyZWF0ZWRCeTogdGhpcy51c2VyTmFtZSB9IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzLnB1c2gobmV3VmFyaWFudCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50c0NoYW5nZS5lbWl0KHRoaXMuX3ZhcmlhbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnQgPSBuZXdWYXJpYW50O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBjdXJyZW50IGFjdGl2ZSBwcmVzZXQgd2l0aCBuZXcgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gcHJlc2V0IFByZXNldCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb21wb25lbnROYW1lIGNvbXBvbmVudCB0byB3aGljaCB0aGlzIHByZXNldCBiZWxvbmdzIHRvLlxuICAgICAqL1xuICAgIHVwZGF0ZUFjdGl2ZVByZXNldChwcmVzZXQ6IFQsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVWYXJpYW50RGF0YSA9IHRoaXMuX29yaWdpbmFsQWN0aXZlVmFyaWFudC5kYXRhW2NvbXBvbmVudE5hbWVdO1xuICAgICAgICB0aGlzLl92YXJpYW50Q2hhbmdlZCA9IGFjdGl2ZVZhcmlhbnREYXRhICYmICFlcXVhbChwcmVzZXQsIGFjdGl2ZVZhcmlhbnREYXRhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50LmRhdGFbY29tcG9uZW50TmFtZV0gPSBwcmVzZXQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3Blbk1hbmFnZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3BvdmVyPy5jbG9zZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbjxWYXJpYW50SXRlbVtdPihNYW5hZ2VWYXJpYW50c0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fdmFyaWFudHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFyaWFudHM6IFZhcmlhbnRJdGVtW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IHZhcmlhbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3VibWl0KHNlYXJjaDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUGhyYXNlID0gc2VhcmNoLnRleHQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJQaHJhc2UgPSBudWxsO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgX3RyYWNrRm4oaW5kZXg6IG51bWJlciwgaXRlbTogVmFyaWFudEl0ZW08VD4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zZm9ybVZhcmlhbnRzKGl0ZW1zOiBWYXJpYW50PFQ+W10pOiBWYXJpYW50SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgodmFyaWFudCkgPT4gbmV3IFZhcmlhbnRJdGVtKHZhcmlhbnQpKTtcbiAgICB9XG59XG4iLCJAaWYgKGFjdGl2ZVZhcmlhbnQpIHtcbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19wb3BvdmVyLWJvZHlcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwicG9wb3ZlclRyaWdnZXJzXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDRcbiAgICAgICAgICAgICAgICAgICAgZmQtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUtLWR5bmFtaWMtcGFnZSc6IF9keW5hbWljUGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmZC12YXJpYW50LW1hbmFnZW1lbnRfX3RpdGxlLS1keW5hbWljLXBhZ2UtLWNvbGxhcHNlZCc6IF9keW5hbWljUGFnZUNvbGxhcHNlZCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRlclNpemVdPVwiaGVhZGVyU2l6ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhY3RpdmVWYXJpYW50Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgIEBpZiAoX3ZhcmlhbnRDaGFuZ2VkICYmICFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC12YXJpYW50LW1hbmFnZW1lbnRfX2RpcnR5LWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtdmFyaWFudC1tYW5hZ2VtZW50X19kaXJ0eS1pbmRpY2F0b3ItLWN1c3RvbV09XCIhIWRpcnR5TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREaXJ0eUluZGljYXRvcj4qPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpcnR5TGFiZWwgPyBkaXJ0eUxhYmVsLnRlbXBsYXRlUmVmIDogZGVmYXVsdERpcnR5SW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZE1lbnVdPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8ZGl2IGZkLXBvcG92ZXItYm9keS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2JhckRlc2lnbl09XCJkaXNwbGF5U2VhcmNoID8gJ2hlYWRlci13aXRoLXN1YmhlYWRlcicgOiAnaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WYXJpYW50TWFuYWdlbWVudC5teVZpZXdzJyB8IGZkVHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNlYXJjaCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cIl9vblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxTZWFyY2gpPVwiX2NhbmNlbFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgb2YgX3ZhcmlhbnRzIHwgZmRGaWx0ZXJTdHJpbmdzOiB7IHNlYXJjaFRlcm06IF9maWx0ZXJQaHJhc2UsIGtleTogJ25hbWUnIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrIHZhcmlhbnQuaWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwidmFyaWFudC5uYW1lID09PSBhY3RpdmVWYXJpYW50Lm5hbWVcIiAoY2xpY2spPVwic2VsZWN0VmFyaWFudCh2YXJpYW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhY3RpdmVWYXJpYW50LnJlYWRvbmx5ICYmIF92YXJpYW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQuc2F2ZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUN1cnJlbnRWYXJpYW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJhY3RpdmVWYXJpYW50LnJlYWRvbmx5IHx8ICFfdmFyaWFudENoYW5nZWQgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNhdmVBcycgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3BlblNhdmVEaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQubWFuYWdlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuTWFuYWdlRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbiJdfQ==
@@ -977,7 +977,7 @@ class ApprovalFlowAddNodeComponent {
977
977
  this._cdr.detectChanges();
978
978
  }
979
979
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1$1.DialogRef }, { token: ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
980
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n @if (!_selectMode && !_data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n }\n @if (!_selectMode && _data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n }\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n }\n @if (viewService.isTeamMembersMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n }\n @if (viewService.isUserDetailsMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n }\n </p>\n @if (_selectMode && !_userToShowDetails) {\n <fdp-search-field\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n }\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n @if (!_selectMode) {\n @if (_data.showNodeTypeSelect) {\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_nodeType\">\n @for (option of _nodeTypesArray; track option) {\n @switch (option) {\n @case (_nodeTypes.SERIAL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n }\n @case (_nodeTypes.PARALLEL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n }\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_approverType\">\n @for (option of _approverTypesArray; track option) {\n @switch (option) {\n @case (_approverTypes.SINGLE_USER) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.ANYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.EVERYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n @if (_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n }\n @if (!_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n }\n </div>\n @if (_nodeType === _nodeTypes.PARALLEL) {\n <div fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n }\n @if (_checkDueDate) {\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n }\n }\n @if (_selectMode) {\n @if (viewService.isSelectTeamMode) {\n @if (!_data.teamDataSource.isDataLoading) {\n <fdp-approval-flow-team-list\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\n <fdp-approval-flow-user-list\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\n <fdp-approval-flow-user-details\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n }\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (!_selectMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n }\n @if (_selectMode) {\n @if (viewService.isSelectUserMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isSelectTeamMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isTeamMembersMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isUserDetailsMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n }\n }\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "glyphFont", "dropdownValues", "openDropdownOnAddOnClicked", "addonIconTitle", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "customDateTimeFormat", "message", "messageTriggers", "selectedDate", "selectedMultipleDates", "selectedRangeDate", "selectedMultipleDateRanges", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "allowMultipleSelection", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedMultipleDatesChange", "selectedRangeDateChange", "selectedMultipleDateRangesChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
980
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n @if (!_selectMode && !_data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n }\n @if (!_selectMode && _data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n }\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n }\n @if (viewService.isTeamMembersMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n }\n @if (viewService.isUserDetailsMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n }\n </p>\n @if (_selectMode && !_userToShowDetails) {\n <fdp-search-field\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n }\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n @if (!_selectMode) {\n @if (_data.showNodeTypeSelect) {\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_nodeType\">\n @for (option of _nodeTypesArray; track option) {\n @switch (option) {\n @case (_nodeTypes.SERIAL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n }\n @case (_nodeTypes.PARALLEL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n }\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_approverType\">\n @for (option of _approverTypesArray; track option) {\n @switch (option) {\n @case (_approverTypes.SINGLE_USER) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.ANYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.EVERYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n @if (_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n }\n @if (!_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n }\n </div>\n @if (_nodeType === _nodeTypes.PARALLEL) {\n <div fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n }\n @if (_checkDueDate) {\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n }\n }\n @if (_selectMode) {\n @if (viewService.isSelectTeamMode) {\n @if (!_data.teamDataSource.isDataLoading) {\n <fdp-approval-flow-team-list\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\n <fdp-approval-flow-user-list\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\n <fdp-approval-flow-user-details\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n }\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (!_selectMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n }\n @if (_selectMode) {\n @if (viewService.isSelectUserMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isSelectTeamMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isTeamMembersMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isUserDetailsMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n }\n }\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "glyphFont", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "glyphFont", "dropdownValues", "openDropdownOnAddOnClicked", "addonIconTitle", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "customDateTimeFormat", "message", "messageTriggers", "selectedDate", "selectedMultipleDates", "selectedRangeDate", "selectedMultipleDateRanges", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "allowMultipleSelection", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "dateRangeFormat", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedMultipleDatesChange", "selectedRangeDateChange", "selectedMultipleDateRangesChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
981
981
  }
982
982
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
983
983
  type: Component,