@fundamental-ngx/platform 0.48.0-rc.9 → 0.48.0
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.
- package/approval-flow/approval-flow-node/approval-flow-node.component.d.ts +0 -2
- package/button/button.component.d.ts +7 -8
- package/dynamic-page/dynamic-page.component.d.ts +24 -15
- package/dynamic-page/dynamic-page.tokens.d.ts +3 -0
- package/dynamic-page/index.d.ts +2 -1
- package/dynamic-page/platform-dynamic-page.interface.d.ts +22 -0
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +5 -7
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow.component.mjs +5 -5
- package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
- package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
- package/esm2022/button/button.component.mjs +14 -15
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
- package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +48 -35
- package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.tokens.mjs +3 -0
- package/esm2022/dynamic-page/index.mjs +3 -2
- package/esm2022/dynamic-page/platform-dynamic-page.interface.mjs +2 -0
- package/esm2022/feed-input/feed-input.component.mjs +6 -6
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +11 -43
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +21 -63
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +33 -63
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +15 -22
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +3 -3
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +24 -58
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +21 -57
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -60
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +5 -9
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +27 -13
- package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
- package/esm2022/form/form-generator/form-generator.service.mjs +11 -16
- package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
- package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
- package/esm2022/form/form-group/form-field/form-field.component.mjs +40 -47
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +40 -50
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
- package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +16 -48
- package/esm2022/form/input-group/addon-body.component.mjs +4 -5
- package/esm2022/form/input-group/addon.component.mjs +3 -3
- package/esm2022/form/input-group/input-group.component.mjs +13 -46
- package/esm2022/form/input-group/input-group.config.mjs +3 -3
- package/esm2022/form/input-group/input-group.module.mjs +4 -4
- package/esm2022/form/input-group/input.component.mjs +3 -3
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +64 -102
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +25 -71
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +18 -26
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +43 -83
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +13 -21
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +32 -91
- package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +12 -44
- package/esm2022/form/radio-group/radio-group.component.mjs +32 -74
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +59 -101
- package/esm2022/form/select/select/select.component.mjs +17 -60
- package/esm2022/form/select/select.config.mjs +3 -3
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +72 -85
- package/esm2022/form/step-input/number/number-step-input.component.mjs +14 -53
- package/esm2022/form/step-input/step-input-action-button.mjs +9 -13
- package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input-increment.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input.config.mjs +3 -3
- package/esm2022/form/step-input/step-input.module.mjs +4 -4
- package/esm2022/form/switch/switch/switch.component.mjs +12 -49
- package/esm2022/form/switch/switch/switch.config.mjs +3 -3
- package/esm2022/form/switch/switch.module.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +14 -45
- package/esm2022/form/text-area/text-area.config.mjs +3 -3
- package/esm2022/form/text-area/text-area.module.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +11 -42
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx.module.mjs +4 -4
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +6 -6
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +85 -90
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +21 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +26 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +40 -26
- package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +76 -0
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +28 -16
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +14 -5
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +12 -21
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +10 -12
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +10 -11
- package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +14 -0
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +208 -27
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +19 -9
- package/esm2022/icon-tab-bar/index.mjs +3 -1
- package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
- package/esm2022/info-label/info-label.component.mjs +6 -4
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +15 -23
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +5 -5
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +20 -22
- package/esm2022/list/display-list-item/display-list-item.component.mjs +5 -5
- package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
- package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +5 -5
- package/esm2022/list/list-group-footer.component.mjs +5 -5
- package/esm2022/list/list-group-header.component.mjs +7 -7
- package/esm2022/list/list.component.mjs +25 -66
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +3 -3
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
- package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +5 -5
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +5 -5
- package/esm2022/menu/menu-trigger.directive.mjs +3 -3
- package/esm2022/menu/menu.component.mjs +5 -6
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +14 -9
- package/esm2022/menu-button/menu-button.module.mjs +4 -4
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +11 -14
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +4 -4
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
- package/esm2022/message-popover/message-popover.component.mjs +53 -54
- package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +10 -5
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +13 -8
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +8 -10
- package/esm2022/page-footer/page-footer.module.mjs +4 -4
- package/esm2022/panel/panel-actions.component.mjs +3 -3
- package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +8 -9
- package/esm2022/panel/panel.config.mjs +3 -3
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +12 -22
- package/esm2022/search-field/search-field.component.mjs +36 -42
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
- package/esm2022/settings-generator/default-config.mjs +2 -2
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
- package/esm2022/settings-generator/models/settings.model.mjs +1 -1
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +34 -28
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +4 -5
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +6 -6
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +12 -13
- package/esm2022/shared/base.mjs +30 -18
- package/esm2022/shared/form/base.input.mjs +70 -69
- package/esm2022/shared/form/collection-base.input.mjs +7 -49
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +25 -66
- package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
- package/esm2022/shared/pipes/pipe.module.mjs +4 -4
- package/esm2022/shared/platform.config.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +11 -43
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +11 -14
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +8 -16
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -6
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +13 -18
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +22 -47
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +12 -10
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +73 -57
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
- package/esm2022/split-menu-button/split-menu-button.component.mjs +17 -24
- package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
- package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
- package/esm2022/table/components/reset-button/reset-button.component.mjs +8 -9
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +10 -9
- package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +11 -14
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +4 -4
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +6 -10
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +31 -15
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +19 -24
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +4 -4
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +11 -14
- package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -8
- package/esm2022/table/components/table-row/table-row.component.mjs +12 -17
- package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +38 -23
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +8 -11
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +138 -62
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +20 -23
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +10 -9
- package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +5 -5
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/services/table-column-resize.service.mjs +22 -20
- package/esm2022/table-helpers/services/table-responsive.service.mjs +9 -14
- package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
- package/esm2022/table-helpers/services/table.service.mjs +23 -21
- package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
- package/esm2022/table-helpers/table.mjs +1 -1
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -4
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +28 -8
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +9 -5
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
- package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
- package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
- package/esm2022/value-help-dialog/index.mjs +3 -1
- package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
- package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +59 -32
- package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -6
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
- package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
- package/esm2022/variant-management/variant-management.component.mjs +47 -13
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +21 -28
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +19 -19
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +12 -18
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +7 -12
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +11 -10
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
- package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +42 -44
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +16 -17
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +88 -130
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +853 -1636
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +532 -220
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +9 -7
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +18 -26
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +104 -143
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +71 -74
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +13 -8
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +10 -12
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -20
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +49 -77
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +75 -72
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +162 -218
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +12 -44
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +144 -162
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +20 -27
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +143 -148
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +366 -291
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +144 -53
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +63 -30
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +82 -98
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +4 -4
- package/form/checkbox/checkbox.component.d.ts +4 -6
- package/form/checkbox-group/checkbox-group.component.d.ts +3 -8
- package/form/combobox/combobox/combobox.component.d.ts +4 -12
- package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +5 -8
- package/form/combobox/commons/base-combobox.d.ts +4 -9
- package/form/date-picker/date-picker.component.d.ts +8 -11
- package/form/datetime-picker/datetime-picker.component.d.ts +9 -11
- package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +0 -2
- package/form/form-generator/form-generator/form-generator.component.d.ts +3 -1
- package/form/form-generator/form-generator.service.d.ts +3 -7
- package/form/form-generator/interfaces/dynamic-form-item.d.ts +5 -5
- package/form/form-group/form-field/form-field.component.d.ts +16 -20
- package/form/form-group/form-group.component.d.ts +36 -35
- package/form/input/input.component.d.ts +3 -6
- package/form/input-group/addon-body.component.d.ts +0 -1
- package/form/input-group/input-group.component.d.ts +4 -5
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +13 -16
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -12
- package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +6 -9
- package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
- package/form/multi-input/base-multi-input.d.ts +10 -15
- package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +5 -8
- package/form/multi-input/multi-input.component.d.ts +7 -37
- package/form/radio-group/radio/radio.component.d.ts +4 -5
- package/form/radio-group/radio-group.component.d.ts +7 -11
- package/form/select/commons/base-select.d.ts +11 -18
- package/form/select/select/select.component.d.ts +2 -15
- package/form/step-input/base.step-input.d.ts +13 -14
- package/form/step-input/number/number-step-input.component.d.ts +2 -7
- package/form/step-input/step-input-action-button.d.ts +4 -7
- package/form/step-input/step-input-decrement.directive.d.ts +2 -5
- package/form/step-input/step-input-increment.directive.d.ts +2 -5
- package/form/switch/switch/switch.component.d.ts +5 -8
- package/form/text-area/text-area.component.d.ts +4 -5
- package/form/time-picker/time-picker.component.d.ts +4 -5
- package/fundamental-ngx-platform-v0.48.0.tgz +0 -0
- package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +19 -20
- package/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.d.ts +2 -0
- package/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.d.ts +45 -0
- package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +1 -3
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
- package/icon-tab-bar/directives/icon-tab-bar-free-content.directive.d.ts +5 -0
- package/icon-tab-bar/icon-tab-bar.component.d.ts +82 -8
- package/icon-tab-bar/icon-tab-bar.module.d.ts +7 -1
- package/icon-tab-bar/index.d.ts +2 -0
- package/icon-tab-bar/interfaces/tab-config.interface.d.ts +13 -5
- package/info-label/info-label.component.d.ts +2 -2
- package/link/link.component.d.ts +4 -7
- package/list/base-list-item.d.ts +4 -6
- package/list/list.component.d.ts +6 -15
- package/menu-button/menu-button.component.d.ts +7 -4
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
- package/message-popover/message-popover.component.d.ts +13 -20
- package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
- package/object-marker/object-marker.component.d.ts +4 -1
- package/object-status/object-status.component.d.ts +4 -1
- package/package.json +4 -4
- package/page-footer/page-footer.component.d.ts +2 -4
- package/panel/panel.component.d.ts +2 -3
- package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +7 -10
- package/search-field/search-field.component.d.ts +10 -19
- package/settings-generator/models/settings.model.d.ts +7 -6
- package/settings-generator/settings-generator-content/settings-generator-content.component.d.ts +31 -12
- package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +0 -2
- package/settings-generator/settings-generator.component.d.ts +3 -3
- package/settings-generator/settings-generator.service.d.ts +1 -1
- package/shared/base.d.ts +11 -4
- package/shared/form/base.input.d.ts +24 -16
- package/shared/form/collection-base.input.d.ts +1 -9
- package/shared/form/inline-layout-collection-base.input.d.ts +5 -12
- package/slider/slider.component.d.ts +3 -6
- package/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.d.ts +3 -5
- package/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.d.ts +0 -5
- package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
- package/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.d.ts +8 -17
- package/smart-filter-bar/directives/smart-filter-bar-subject.directive.d.ts +2 -0
- package/smart-filter-bar/smart-filter-bar.component.d.ts +28 -22
- package/split-menu-button/split-menu-button.component.d.ts +11 -14
- package/table/components/reset-button/reset-button.component.d.ts +2 -3
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +4 -5
- package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
- package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
- package/table/components/table-header-row/table-header-row.component.d.ts +1 -3
- package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
- package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
- package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/components/table-row/table-row.component.d.ts +2 -2
- package/table/components/table-toolbar/table-toolbar.component.d.ts +24 -8
- package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/table.component.d.ts +29 -19
- package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
- package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -3
- package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
- package/table-helpers/services/table-column-resize.service.d.ts +4 -2
- package/table-helpers/services/table-responsive.service.d.ts +3 -5
- package/table-helpers/services/table.service.d.ts +12 -10
- package/table-helpers/table.d.ts +1 -0
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
- package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
- package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
- package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
- package/value-help-dialog/index.d.ts +2 -0
- package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
- package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +14 -7
- package/variant-management/variant-management.component.d.ts +19 -6
- package/wizard-generator/base-wizard-generator.d.ts +9 -12
- package/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.d.ts +2 -3
- package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
- package/wizard-generator/components/wizard-generator/wizard-generator.component.d.ts +1 -4
- package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
- package/dynamic-page/dynamic-page.service.d.ts +0 -35
- package/esm2022/dynamic-page/dynamic-page.service.mjs +0 -58
- package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
- package/fundamental-ngx-platform-v0.48.0-rc.9.tgz +0 -0
- package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
|
@@ -95,8 +95,6 @@ export declare class ApprovalFlowNodeComponent implements OnInit, OnChanges, OnD
|
|
|
95
95
|
/** @hidden */
|
|
96
96
|
private _subscriptions;
|
|
97
97
|
/** @hidden */
|
|
98
|
-
private _translationResolver;
|
|
99
|
-
/** @hidden */
|
|
100
98
|
constructor(_elRef: ElementRef, _cdr: ChangeDetectorRef, _rtlService: RtlService);
|
|
101
99
|
/** @hidden */
|
|
102
100
|
get _nativeElement(): HTMLElement;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import { ModuleDeprecation, Nullable } from '@fundamental-ngx/cdk/utils';
|
|
3
3
|
import { ButtonType, GlyphPosition } from '@fundamental-ngx/core/button';
|
|
4
|
+
import { IconFont } from '@fundamental-ngx/core/icon';
|
|
4
5
|
import { BaseComponent } from '@fundamental-ngx/platform/shared';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
/**
|
|
7
8
|
* @deprecated
|
|
8
9
|
* Button component is deprecated. Use `fd-button` from `@fundamental-ngx/core` instead.
|
|
9
10
|
*/
|
|
10
|
-
export declare class ButtonComponent extends BaseComponent
|
|
11
|
-
protected _changeDetector: ChangeDetectorRef;
|
|
12
|
-
private _elementRef;
|
|
11
|
+
export declare class ButtonComponent extends BaseComponent {
|
|
13
12
|
/** Position of glyph related to text */
|
|
14
13
|
glyphPosition: GlyphPosition;
|
|
15
14
|
/**
|
|
@@ -21,6 +20,8 @@ export declare class ButtonComponent extends BaseComponent implements AfterViewI
|
|
|
21
20
|
* Default value is set to ''.
|
|
22
21
|
*/
|
|
23
22
|
glyph: string;
|
|
23
|
+
/** Glyph font family */
|
|
24
|
+
glyphFont: IconFont;
|
|
24
25
|
/** The buttonType of the button. Types includes
|
|
25
26
|
'standard','positive', 'negative', 'attention', 'ghost',
|
|
26
27
|
'transparent', 'emphasized','menu'.
|
|
@@ -75,15 +76,13 @@ export declare class ButtonComponent extends BaseComponent implements AfterViewI
|
|
|
75
76
|
/** @hidden */
|
|
76
77
|
private _ariaPressed;
|
|
77
78
|
/** @hidden */
|
|
78
|
-
constructor(
|
|
79
|
-
/** @hidden */
|
|
80
|
-
ngAfterViewInit(): void;
|
|
79
|
+
constructor();
|
|
81
80
|
/**
|
|
82
81
|
* Handles button click
|
|
83
82
|
*/
|
|
84
83
|
onBtnClick($event: any): void;
|
|
85
84
|
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
|
|
86
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "fdp-button", never, { "glyphPosition": { "alias": "glyphPosition"; "required": false; }; "label": { "alias": "label"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "toggled": { "alias": "toggled"; "required": false; }; "title": { "alias": "title"; "required": false; }; "ariaSelected": { "alias": "ariaSelected"; "required": false; }; "ariaDisabled": { "alias": "ariaDisabled"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControlsId": { "alias": "ariaControlsId"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "buttonClicked": "buttonClicked"; }, never, never, true, never>;
|
|
85
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "fdp-button", never, { "glyphPosition": { "alias": "glyphPosition"; "required": false; }; "label": { "alias": "label"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "glyphFont": { "alias": "glyphFont"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "toggled": { "alias": "toggled"; "required": false; }; "title": { "alias": "title"; "required": false; }; "ariaSelected": { "alias": "ariaSelected"; "required": false; }; "ariaDisabled": { "alias": "ariaDisabled"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControlsId": { "alias": "ariaControlsId"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "buttonClicked": "buttonClicked"; }, never, never, true, never>;
|
|
87
86
|
}
|
|
88
87
|
export declare class DeprecatedButtonAriaSelected implements ModuleDeprecation {
|
|
89
88
|
/** @hidden */
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { AfterContentInit, AfterViewInit,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { AfterContentInit, AfterViewInit, DestroyRef, DoCheck, ElementRef, EventEmitter, OnDestroy, QueryList, Signal } from '@angular/core';
|
|
2
|
+
import { HasElementRef } from '@fundamental-ngx/cdk/utils';
|
|
3
|
+
import { DynamicPage } from '@fundamental-ngx/core/dynamic-page';
|
|
4
|
+
import { TabList } from '@fundamental-ngx/core/shared';
|
|
5
|
+
import { IconTabBarItem, IconTabBarTabComponent } from '@fundamental-ngx/platform/icon-tab-bar';
|
|
4
6
|
import { BaseComponent } from '@fundamental-ngx/platform/shared';
|
|
5
7
|
import { DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';
|
|
6
8
|
import { DynamicPageContentHostComponent } from './dynamic-page-content/dynamic-page-content-host.component';
|
|
@@ -8,27 +10,24 @@ import { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page
|
|
|
8
10
|
import { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';
|
|
9
11
|
import { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';
|
|
10
12
|
import { DynamicPageTitleComponent } from './dynamic-page-header/title/dynamic-page-title.component';
|
|
13
|
+
import { PlatformDynamicPage } from './platform-dynamic-page.interface';
|
|
11
14
|
import * as i0 from "@angular/core";
|
|
12
15
|
/** Dynamic Page tab change event */
|
|
13
16
|
export declare class DynamicPageTabChangeEvent {
|
|
14
17
|
source: DynamicPageContentComponent;
|
|
15
|
-
payload:
|
|
18
|
+
payload: IconTabBarItem;
|
|
16
19
|
/**
|
|
17
20
|
* Dynamic Page tab change event
|
|
18
21
|
* @param source Dynamic Page component
|
|
19
22
|
* @param payload Tab component
|
|
20
23
|
*/
|
|
21
|
-
constructor(source: DynamicPageContentComponent, payload:
|
|
24
|
+
constructor(source: DynamicPageContentComponent, payload: IconTabBarItem);
|
|
22
25
|
}
|
|
23
|
-
export declare class DynamicPageComponent extends BaseComponent implements AfterContentInit, AfterViewInit, DoCheck, OnDestroy {
|
|
24
|
-
protected _cd: ChangeDetectorRef;
|
|
25
|
-
readonly elementRef: ElementRef<HTMLElement>;
|
|
26
|
+
export declare class DynamicPageComponent extends BaseComponent implements AfterContentInit, AfterViewInit, DoCheck, OnDestroy, PlatformDynamicPage, HasElementRef {
|
|
26
27
|
/** Whether DynamicPage should snap on scroll */
|
|
27
28
|
disableSnapOnScroll: boolean;
|
|
28
29
|
/** Page role */
|
|
29
30
|
role: string;
|
|
30
|
-
/** aria label for the page */
|
|
31
|
-
ariaLabel: Nullable<string>;
|
|
32
31
|
/** Whether or not tabs should be stacked. */
|
|
33
32
|
stackContent: boolean;
|
|
34
33
|
/**
|
|
@@ -72,11 +71,15 @@ export declare class DynamicPageComponent extends BaseComponent implements After
|
|
|
72
71
|
/** reference to content components list */
|
|
73
72
|
contentComponents: QueryList<DynamicPageContentComponent>;
|
|
74
73
|
/** @hidden */
|
|
75
|
-
|
|
74
|
+
_dynamicPageComponent: DynamicPage;
|
|
75
|
+
/** @hidden */
|
|
76
|
+
_tabListComponent: TabList;
|
|
76
77
|
/** Reference to tab items components */
|
|
77
|
-
dynamicPageTabs: QueryList<
|
|
78
|
+
dynamicPageTabs: QueryList<IconTabBarTabComponent>;
|
|
78
79
|
/** @hidden */
|
|
79
80
|
_contentHostComponents: QueryList<DynamicPageContentHostComponent>;
|
|
81
|
+
/** Whether Dynamic page is collapsed */
|
|
82
|
+
collapsed: Signal<boolean>;
|
|
80
83
|
/**
|
|
81
84
|
* @hidden
|
|
82
85
|
* whether tabbed content is present in this page
|
|
@@ -88,7 +91,13 @@ export declare class DynamicPageComponent extends BaseComponent implements After
|
|
|
88
91
|
*/
|
|
89
92
|
_tabs: DynamicPageContentComponent[];
|
|
90
93
|
/** @hidden */
|
|
91
|
-
|
|
94
|
+
readonly elementRef: ElementRef<HTMLElement>;
|
|
95
|
+
/** @hidden */
|
|
96
|
+
protected _destroyRef: DestroyRef;
|
|
97
|
+
/** toggle the visibility of the header on click of title area. */
|
|
98
|
+
toggleCollapse(): void;
|
|
99
|
+
/** Triggers recheck for spacing and sizing of elements inside DynamicPage. */
|
|
100
|
+
refreshSize(): void;
|
|
92
101
|
/** @hidden */
|
|
93
102
|
ngAfterContentInit(): void;
|
|
94
103
|
/** @hidden */
|
|
@@ -100,7 +109,7 @@ export declare class DynamicPageComponent extends BaseComponent implements After
|
|
|
100
109
|
*/
|
|
101
110
|
setSelectedTab(id: string): void;
|
|
102
111
|
/** @hidden */
|
|
103
|
-
_onSelectedTabChange(event:
|
|
112
|
+
_onSelectedTabChange(event: IconTabBarItem): void;
|
|
104
113
|
/** @hidden */
|
|
105
114
|
private _listenToContentComponentsListChanges;
|
|
106
115
|
/** @hidden */
|
|
@@ -108,5 +117,5 @@ export declare class DynamicPageComponent extends BaseComponent implements After
|
|
|
108
117
|
/** @hidden */
|
|
109
118
|
private _isTabContentPresent;
|
|
110
119
|
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicPageComponent, never>;
|
|
111
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicPageComponent, "fdp-dynamic-page", never, { "disableSnapOnScroll": { "alias": "disableSnapOnScroll"; "required": false; }; "role": { "alias": "role"; "required": false; }; "
|
|
120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicPageComponent, "fdp-dynamic-page", never, { "disableSnapOnScroll": { "alias": "disableSnapOnScroll"; "required": false; }; "role": { "alias": "role"; "required": false; }; "stackContent": { "alias": "stackContent"; "required": false; }; "background": { "alias": "background"; "required": false; }; "size": { "alias": "size"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "autoResponsive": { "alias": "autoResponsive"; "required": false; }; "expandContent": { "alias": "expandContent"; "required": false; }; }, { "tabChange": "tabChange"; }, ["titleComponent", "headerComponent", "footerComponent", "contentComponent", "contentComponents"], never, true, never>;
|
|
112
121
|
}
|
package/dynamic-page/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ export * from './constants';
|
|
|
2
2
|
export * from './dynamic-page.component';
|
|
3
3
|
export * from './dynamic-page.config';
|
|
4
4
|
export * from './dynamic-page.module';
|
|
5
|
-
export * from './dynamic-page.service';
|
|
6
5
|
export * from './utils';
|
|
7
6
|
export * from './dynamic-page-content/dynamic-page-content-host.component';
|
|
8
7
|
export * from './dynamic-page-content/dynamic-page-content.component';
|
|
@@ -15,3 +14,5 @@ export * from './dynamic-page-header/header/dynamic-page-header.component';
|
|
|
15
14
|
export * from './dynamic-page-header/key-info/dynamic-page-key-info.component';
|
|
16
15
|
export * from './dynamic-page-header/title/dynamic-page-title-image.component';
|
|
17
16
|
export * from './dynamic-page-header/title/dynamic-page-title.component';
|
|
17
|
+
export * from './dynamic-page.tokens';
|
|
18
|
+
export * from './platform-dynamic-page.interface';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EventEmitter, QueryList } from '@angular/core';
|
|
2
|
+
import { DynamicPage } from '@fundamental-ngx/core/dynamic-page';
|
|
3
|
+
import { IconTabBarTabComponent } from '@fundamental-ngx/platform/icon-tab-bar';
|
|
4
|
+
import { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';
|
|
5
|
+
import { DynamicPageFooterComponent } from './dynamic-page-footer/dynamic-page-footer.component';
|
|
6
|
+
import { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';
|
|
7
|
+
import { DynamicPageTitleComponent } from './dynamic-page-header/title/dynamic-page-title.component';
|
|
8
|
+
import { DynamicPageTabChangeEvent } from './dynamic-page.component';
|
|
9
|
+
export interface PlatformDynamicPage extends DynamicPage {
|
|
10
|
+
stackContent: boolean;
|
|
11
|
+
tabChange: EventEmitter<DynamicPageTabChangeEvent>;
|
|
12
|
+
titleComponent: DynamicPageTitleComponent;
|
|
13
|
+
headerComponent: DynamicPageHeaderComponent;
|
|
14
|
+
footerComponent: DynamicPageFooterComponent;
|
|
15
|
+
contentComponent: DynamicPageContentComponent;
|
|
16
|
+
contentComponents: QueryList<DynamicPageContentComponent>;
|
|
17
|
+
dynamicPageTabs: QueryList<IconTabBarTabComponent>;
|
|
18
|
+
/**
|
|
19
|
+
* marks the dynamic page tab as selected when the id of the tab is passed
|
|
20
|
+
*/
|
|
21
|
+
setSelectedTab(id: string): void;
|
|
22
|
+
}
|
|
@@ -270,10 +270,10 @@ export class ApprovalFlowAddNodeComponent {
|
|
|
270
270
|
this._filteredTeamMembers = [...users];
|
|
271
271
|
this._cdr.detectChanges();
|
|
272
272
|
}
|
|
273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", 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", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { 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", "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", "dropdownValues", "openDropdownOnAddOnClicked", "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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.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", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "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", "ariaLabel", "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 }); }
|
|
273
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
274
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", 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" }, { 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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.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", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "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", "ariaLabel", "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 }); }
|
|
275
275
|
}
|
|
276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
|
|
277
277
|
type: Component,
|
|
278
278
|
args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
279
279
|
class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
304
304
|
FdTranslatePipe
|
|
305
305
|
], 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"] }]
|
|
306
306
|
}], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }] });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxF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LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCdXR0b25CYXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1c3lJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnVzeS1pbmRpY2F0b3InO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUl0ZW1Db21wb25lbnQsIEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL211bHRpLWlucHV0JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50LCBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlLCBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QvYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMvYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IGRpc3BsYXlUZWFtRm4sIGRpc3BsYXlVc2VyRm4sIGZpbHRlckJ5TmFtZSwgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsIFZJRVdfTU9ERVMgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLXZpZXcuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgIGlzRWRpdD86IGJvb2xlYW47XG4gICAgc2hvd05vZGVUeXBlU2VsZWN0PzogYm9vbGVhbjtcbiAgICBub2RlPzogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUYXJnZXQ/OiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0O1xuICAgIHRlYW1EYXRhU291cmNlOiBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxBcHByb3ZhbFRlYW0+O1xuICAgIHVzZXJEYXRhU291cmNlOiBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxBcHByb3ZhbFVzZXI+O1xuICAgIHVzZXJEZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgY2hlY2tEdWVEYXRlPzogYm9vbGVhbjtcbiAgICBydGw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ0Zvcm1EYXRhIHtcbiAgICBub2RlOiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVR5cGU6IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcbiAgICB0b05leHRTZXJpYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgPSAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVmb3JlLWFsbCcgfCAnYWZ0ZXItYWxsJztcblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93Tm9kZVRhcmdldCA9IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgfCAnZW1wdHknIHwgJ3BhcmFsbGVsJztcblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTIHtcbiAgICBTRVJJQUwgPSAnU0VSSUFMJyxcbiAgICBQQVJBTExFTCA9ICdQQVJBTExFTCdcbn1cblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUyB7XG4gICAgU0lOR0xFX1VTRVIgPSAnU0lOR0xFX1VTRVInLFxuICAgIEFOWU9ORSA9ICdBTllPTkUnLFxuICAgIEVWRVJZT05FID0gJ0VWRVJZT05FJ1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dBZGROb2RlIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vc3R5bGVzL2FwcHJvdmFsLWZsb3ctZGlhbG9nLnNjc3MnLCAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctZGlhbG9nIGZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgQ29udGVudERlbnNpdHlEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIEZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBNdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIERhdGVQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckRldGFpbHNDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBCdXN5SW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGUgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMuU0VSSUFMO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGVzID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5TSU5HTEVfVVNFUjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXMgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kdWVEYXRlID0gRmREYXRlLmdldE5vdygpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGVhbXM6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZEFwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbTogTnVsbGFibGU8QXBwcm92YWxUZWFtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbUFycmF5OiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZpbHRlcmVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlscz86IEFwcHJvdmFsVXNlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jaGVja0R1ZURhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlVc2VyRm4gPSBkaXNwbGF5VXNlckZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVRlYW1GbiA9IGRpc3BsYXlUZWFtRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGRUb05leHRTZXJpYWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0NoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8QWRkTm9kZURpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwdWJsaWMgdmlld1NlcnZpY2U6IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9kYXRhKCk6IEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2luZ2xlVXNlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHByb3ZlclR5cGUgPT09IHRoaXMuX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzTWFpblN1Ym1pdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgOiB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheTtcblxuICAgICAgICByZXR1cm4gIWFwcHJvdmVycy5sZW5ndGggfHwgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiAhdGhpcy5fZHVlRGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2hlYWRlckFycm93R2x5cGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICduYXZpZ2F0aW9uLScgKyAodGhpcy5fZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHRyaWdnZXJpbmcgaW5pdGlhbCBsb2FkaW5nIG9mIGRhdGEgaW4gZGF0YSBzb3VyY2VzLlxuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgY29uc3QgdGVhbXMkID0gdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1YiA9IGNvbWJpbmVMYXRlc3QoW3RlYW1zJCwgYXBwcm92ZXJzJF0pLnN1YnNjcmliZSgoW3RlYW1zLCBhcHByb3ZlcnNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90ZWFtcyA9IHRlYW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9hcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrRHVlRGF0ZSA9ICEhdGhpcy5fZGF0YS5jaGVja0R1ZURhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tEdWVEYXRlICYmIHRoaXMuX2RhdGEubm9kZT8uZHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdWVEYXRlID0gRmREYXRlLmdldEZkRGF0ZUJ5RGF0ZShuZXcgRGF0ZSh0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gWy4uLih0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyA/PyBbXSldO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVhbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRlYW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RlYW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZlclR5cGUgPSB0aGlzLl9kYXRhLm5vZGU/LmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FwcHJvdmVyVHlwZXMuQU5ZT05FO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIgPSB0aGlzLnZpZXdTZXJ2aWNlLm9uVmlld0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25TZWFyY2hTdHJpbmdDaGFuZ2UoJycpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhLm5vZGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuU0VSSUFMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncGFyYWxsZWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlBBUkFMTEVMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dvVG9TZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyBWSUVXX01PREVTLlNFTEVDVF9VU0VSIDogVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGggJiYgIXRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fZGF0YS5pc0VkaXQgJiYgIXRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRWaWV3KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0ZWRBcHByb3ZlcnMoYXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICB0aGlzLl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycy5zb21lKFxuICAgICAgICAgICAgKHUpID0+IHUudGVhbUlkICE9PSB0aGlzLl9kYXRhLm5vZGUhLmFwcHJvdmVyc1swXS50ZWFtSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmRlc2NyaXB0aW9uID0gdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA/ICcnIDogdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQ7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhLm5vZGUuaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkO1xuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0ZWRUZWFtKHRlYW06IEFwcHJvdmFsVGVhbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkVGVhbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXdTZXJ2aWNlLnRlYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW07XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RoaXMudmlld1NlcnZpY2UudGVhbV07XG5cbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkID0gdGhpcy52aWV3U2VydmljZS50ZWFtLmlkO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmRlc2NyaXB0aW9uID0gdGhpcy52aWV3U2VydmljZS50ZWFtLm5hbWU7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkID0gdGhpcy5fYXBwcm92ZXJUeXBlID09PSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLkVWRVJZT05FO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWVVc2VyRGV0YWlscyh1c2VyOiBBcHByb3ZhbFVzZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlVTRVJfREVUQUlMUyk7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1c2VyO1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlsc0RhdGEkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuZ2V0T25lKG5ldyBNYXAoW1snaWQnLCB1c2VyLmlkXV0pKTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRVc2VyRGV0YWlsc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy52aWV3U2VydmljZS50ZWFtID8gVklFV19NT0RFUy5WSUVXX1RFQU1fTUVNQkVSUyA6IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlsc0RhdGEkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmlld1RlYW1NZW1iZXJzKHRlYW06IEFwcHJvdmFsVGVhbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5WSUVXX1RFQU1fTUVNQkVSUyk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IHRlYW0ubWVtYmVycztcblxuICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMpOyAvLyBhcHBseWluZyBsb2NhbCBmaWx0ZXJpbmdcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VGVhbU1lbWJlcnNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSBbXTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSAmJiAhdGhpcy5faXNTaW5nbGVVc2VyTW9kZSAmJiB0aGlzLl9zZWxlY3RlZFRlYW0pIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSBbLi4udGhpcy5fc2VsZWN0ZWRUZWFtLm1lbWJlcnNdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSAmJiB0aGlzLl9jaGVja0R1ZURhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlID0gdGhpcy5fZHVlRGF0ZS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgIG5vZGU6IHRoaXMuX2RhdGEubm9kZSxcbiAgICAgICAgICAgIG5vZGVUeXBlOiB0aGlzLl9ub2RlVHlwZSxcbiAgICAgICAgICAgIHRvTmV4dFNlcmlhbDogdGhpcy5fYWRkVG9OZXh0U2VyaWFsXG4gICAgICAgIH0gYXMgQWRkTm9kZURpYWxvZ0Zvcm1EYXRhKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlYXJjaFN0cmluZ0NoYW5nZShzZWFyY2hTdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgTWFwKFtbJ3F1ZXJ5Jywgc2VhcmNoU3RyaW5nXV0pO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh1c2VyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWRUZWFtTWVtYmVycyA9IFsuLi51c2Vyc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBmZENvbXBhY3Q+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKF9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfb25TZWFyY2hTdHJpbmdDaGFuZ2UoJGV2ZW50LnRleHQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHkgW2NsYXNzLmZkLWRpYWxvZ19fYm9keS0tYXV0by1oZWlnaHRdPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgQGlmICghX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAoX2RhdGEuc2hvd05vZGVUeXBlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0IFsodmFsdWUpXT1cIl9ub2RlVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIF9ub2RlVHlwZXNBcnJheTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfbm9kZVR5cGVzLlNFUklBTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVNlcmlhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX25vZGVUeXBlcy5QQVJBTExFTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVBhcmFsbGVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfYXBwcm92ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBfYXBwcm92ZXJUeXBlc0FycmF5OyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVXNlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX2FwcHJvdmVyVHlwZXMuQU5ZT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtQW55b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5FVkVSWU9ORSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVGVhbUV2ZXJ5b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nVXNlck9yVGVhbScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgQGlmIChfaXNTaW5nbGVVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVVzZXJGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJfZ29Ub1NlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX3NldFNlbGVjdGVkQXBwcm92ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICghX2lzU2luZ2xlVXNlck1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FsbEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlUZWFtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl9hZGRUb05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQWRkVG9OZXh0JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKF9jaGVja0R1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dEdWVEYXRlJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWRhdGUtcGlja2VyIHR5cGU9XCJzaW5nbGVcIiBbc3RhdGVdPVwiIXRoaXMuX2R1ZURhdGUgPyAnZXJyb3InIDogbnVsbFwiIFsobmdNb2RlbCldPVwiX2R1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9zZWxlY3RNb2RlKSB7XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFfZGF0YS50ZWFtRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1J0bF09XCJfZGF0YS5ydGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RlYW1zXT1cIl90ZWFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUZWFtSWRdPVwiX3NlbGVjdGVkVGVhbT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVGVhbUNsaWNrKT1cIl92aWV3VGVhbU1lbWJlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25UZWFtUmFkaW9DbGljayk9XCJfc2V0U2VsZWN0ZWRUZWFtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3Q+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJ0cnVlXCIgW2Jsb2NrXT1cInRydWVcIj4gPC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgIV9kYXRhLnVzZXJEYXRhU291cmNlLmlzRGF0YUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJzXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgPyBfYXBwcm92ZXJzIDogX2ZpbHRlcmVkVGVhbU1lbWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2VsZWN0YWJsZV09XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFVzZXJzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIl9zZWxlY3RlZEFwcHJvdmVycyA9ICRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cInRydWVcIiBbYmxvY2tdPVwidHJ1ZVwiPiA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUgJiYgX3VzZXJUb1Nob3dEZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBbdXNlcl09XCJfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc1RlbXBsYXRlXT1cIl9kYXRhLnVzZXJEZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgQGlmICghX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQWRkQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZFRlYW0gJiYgIXZpZXdTZXJ2aWNlLnRlYW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZFRlYW0oKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxF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LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCdXR0b25CYXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1c3lJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnVzeS1pbmRpY2F0b3InO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUl0ZW1Db21wb25lbnQsIEZvcm1MYWJlbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaWNvbic7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL211bHRpLWlucHV0JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50LCBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1EYXRhU291cmNlLCBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QvYXBwcm92YWwtZmxvdy10ZWFtLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMvYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYXBwcm92YWwtZmxvdy11c2VyLWxpc3QvYXBwcm92YWwtZmxvdy11c2VyLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IGRpc3BsYXlUZWFtRm4sIGRpc3BsYXlVc2VyRm4sIGZpbHRlckJ5TmFtZSwgdHJhY2tCeUZuIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBBcHByb3ZhbE5vZGUsIEFwcHJvdmFsVGVhbSwgQXBwcm92YWxVc2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsIFZJRVdfTU9ERVMgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLXZpZXcuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgIGlzRWRpdD86IGJvb2xlYW47XG4gICAgc2hvd05vZGVUeXBlU2VsZWN0PzogYm9vbGVhbjtcbiAgICBub2RlPzogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUYXJnZXQ/OiBBcHByb3ZhbEZsb3dOb2RlVGFyZ2V0O1xuICAgIHRlYW1EYXRhU291cmNlOiBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZTxBcHByb3ZhbFRlYW0+O1xuICAgIHVzZXJEYXRhU291cmNlOiBBcHByb3ZhbEZsb3dVc2VyRGF0YVNvdXJjZTxBcHByb3ZhbFVzZXI+O1xuICAgIHVzZXJEZXRhaWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgY2hlY2tEdWVEYXRlPzogYm9vbGVhbjtcbiAgICBydGw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkTm9kZURpYWxvZ0Zvcm1EYXRhIHtcbiAgICBub2RlOiBBcHByb3ZhbE5vZGU7XG4gICAgbm9kZVR5cGU6IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcbiAgICB0b05leHRTZXJpYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgPSAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVmb3JlLWFsbCcgfCAnYWZ0ZXItYWxsJztcblxuZXhwb3J0IHR5cGUgQXBwcm92YWxGbG93Tm9kZVRhcmdldCA9IEFwcHJvdmFsRmxvd05ld05vZGVQbGFjZW1lbnQgfCAnZW1wdHknIHwgJ3BhcmFsbGVsJztcblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTIHtcbiAgICBTRVJJQUwgPSAnU0VSSUFMJyxcbiAgICBQQVJBTExFTCA9ICdQQVJBTExFTCdcbn1cblxuZXhwb3J0IGVudW0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUyB7XG4gICAgU0lOR0xFX1VTRVIgPSAnU0lOR0xFX1VTRVInLFxuICAgIEFOWU9ORSA9ICdBTllPTkUnLFxuICAgIEVWRVJZT05FID0gJ0VWRVJZT05FJ1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBBcHByb3ZhbEZsb3dBZGROb2RlIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMC40MC4wXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWFwcHJvdmFsLWZsb3ctYWRkLW5vZGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vc3R5bGVzL2FwcHJvdmFsLWZsb3ctZGlhbG9nLnNjc3MnLCAnLi9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmRwLWFwcHJvdmFsLWZsb3ctZGlhbG9nIGZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgQ29udGVudERlbnNpdHlEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIEZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBGb3JtTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBNdWx0aUlucHV0Q29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIERhdGVQaWNrZXJDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1RlYW1MaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckRldGFpbHNDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBCdXN5SW5kaWNhdG9yQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcHJvdmFsRmxvd0FkZE5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGUgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMuU0VSSUFMO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGVzID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbm9kZVR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX05PREVfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5TSU5HTEVfVVNFUjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXMgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kdWVEYXRlID0gRmREYXRlLmdldE5vdygpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGVhbXM6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZEFwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbTogTnVsbGFibGU8QXBwcm92YWxUZWFtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbUFycmF5OiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZpbHRlcmVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlscz86IEFwcHJvdmFsVXNlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jaGVja0R1ZURhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlVc2VyRm4gPSBkaXNwbGF5VXNlckZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVRlYW1GbiA9IGRpc3BsYXlUZWFtRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0J5Rm4gPSB0cmFja0J5Rm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGRUb05leHRTZXJpYWwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0NoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8QWRkTm9kZURpYWxvZ1JlZkRhdGE+LFxuICAgICAgICBwdWJsaWMgdmlld1NlcnZpY2U6IEFwcHJvdmFsRmxvd0FkZE5vZGVWaWV3U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9kYXRhKCk6IEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmRhdGE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2luZ2xlVXNlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHByb3ZlclR5cGUgPT09IHRoaXMuX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzTWFpblN1Ym1pdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMgPSB0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgOiB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheTtcblxuICAgICAgICByZXR1cm4gIWFwcHJvdmVycy5sZW5ndGggfHwgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiAhdGhpcy5fZHVlRGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2hlYWRlckFycm93R2x5cGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICduYXZpZ2F0aW9uLScgKyAodGhpcy5fZGF0YS5ydGwgPyAncmlnaHQnIDogJ2xlZnQnKSArICctYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHRyaWdnZXJpbmcgaW5pdGlhbCBsb2FkaW5nIG9mIGRhdGEgaW4gZGF0YSBzb3VyY2VzLlxuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgY29uc3QgdGVhbXMkID0gdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1YiA9IGNvbWJpbmVMYXRlc3QoW3RlYW1zJCwgYXBwcm92ZXJzJF0pLnN1YnNjcmliZSgoW3RlYW1zLCBhcHByb3ZlcnNdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90ZWFtcyA9IHRlYW1zO1xuXG4gICAgICAgICAgICB0aGlzLl9hcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoZWNrRHVlRGF0ZSA9ICEhdGhpcy5fZGF0YS5jaGVja0R1ZURhdGU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tEdWVEYXRlICYmIHRoaXMuX2RhdGEubm9kZT8uZHVlRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kdWVEYXRlID0gRmREYXRlLmdldEZkRGF0ZUJ5RGF0ZShuZXcgRGF0ZSh0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gWy4uLih0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycyA/PyBbXSldO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVhbXMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRlYW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RlYW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHByb3ZlclR5cGUgPSB0aGlzLl9kYXRhLm5vZGU/LmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9hcHByb3ZlclR5cGVzLkVWRVJZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FwcHJvdmVyVHlwZXMuQU5ZT05FO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIgPSB0aGlzLnZpZXdTZXJ2aWNlLm9uVmlld0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25TZWFyY2hTdHJpbmdDaGFuZ2UoJycpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhLm5vZGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VtcHR5JzpcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuU0VSSUFMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncGFyYWxsZWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlBBUkFMTEVMO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dvVG9TZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyBWSUVXX01PREVTLlNFTEVDVF9VU0VSIDogVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGggJiYgIXRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fZGF0YS5pc0VkaXQgJiYgIXRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RNb2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRWaWV3KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0ZWRBcHByb3ZlcnMoYXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICB0aGlzLl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycy5zb21lKFxuICAgICAgICAgICAgKHUpID0+IHUudGVhbUlkICE9PSB0aGlzLl9kYXRhLm5vZGUhLmFwcHJvdmVyc1swXS50ZWFtSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmRlc2NyaXB0aW9uID0gdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA/ICcnIDogdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnNbMF0/LmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQ7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kYXRhLm5vZGUuaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkO1xuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0ZWRUZWFtKHRlYW06IEFwcHJvdmFsVGVhbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkVGVhbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpZXdTZXJ2aWNlLnRlYW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW07XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5ID0gW3RoaXMudmlld1NlcnZpY2UudGVhbV07XG5cbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkID0gdGhpcy52aWV3U2VydmljZS50ZWFtLmlkO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmRlc2NyaXB0aW9uID0gdGhpcy52aWV3U2VydmljZS50ZWFtLm5hbWU7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkID0gdGhpcy5fYXBwcm92ZXJUeXBlID09PSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLkVWRVJZT05FO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWVVc2VyRGV0YWlscyh1c2VyOiBBcHByb3ZhbFVzZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlVTRVJfREVUQUlMUyk7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1c2VyO1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlsc0RhdGEkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuZ2V0T25lKG5ldyBNYXAoW1snaWQnLCB1c2VyLmlkXV0pKTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRVc2VyRGV0YWlsc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy52aWV3U2VydmljZS50ZWFtID8gVklFV19NT0RFUy5WSUVXX1RFQU1fTUVNQkVSUyA6IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlsc0RhdGEkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmlld1RlYW1NZW1iZXJzKHRlYW06IEFwcHJvdmFsVGVhbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5WSUVXX1RFQU1fTUVNQkVSUyk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IHRlYW0ubWVtYmVycztcblxuICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMpOyAvLyBhcHBseWluZyBsb2NhbCBmaWx0ZXJpbmdcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VGVhbU1lbWJlcnNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSBbXTtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSAmJiAhdGhpcy5faXNTaW5nbGVVc2VyTW9kZSAmJiB0aGlzLl9zZWxlY3RlZFRlYW0pIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSBbLi4udGhpcy5fc2VsZWN0ZWRUZWFtLm1lbWJlcnNdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RhdGEubm9kZSAmJiB0aGlzLl9jaGVja0R1ZURhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlID0gdGhpcy5fZHVlRGF0ZS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgIG5vZGU6IHRoaXMuX2RhdGEubm9kZSxcbiAgICAgICAgICAgIG5vZGVUeXBlOiB0aGlzLl9ub2RlVHlwZSxcbiAgICAgICAgICAgIHRvTmV4dFNlcmlhbDogdGhpcy5fYWRkVG9OZXh0U2VyaWFsXG4gICAgICAgIH0gYXMgQWRkTm9kZURpYWxvZ0Zvcm1EYXRhKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblNlYXJjaFN0cmluZ0NoYW5nZShzZWFyY2hTdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgTWFwKFtbJ3F1ZXJ5Jywgc2VhcmNoU3RyaW5nXV0pO1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2gocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMuZmlsdGVyKCh1c2VyKSA9PiBmaWx0ZXJCeU5hbWUodXNlciwgc2VhcmNoU3RyaW5nKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh1c2VyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWRUZWFtTWVtYmVycyA9IFsuLi51c2Vyc107XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBmZENvbXBhY3Q+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXIgW2NsYXNzLnNob3ctc2VhcmNoXT1cIl9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSAmJiAhX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyQWRkQXBwcm92ZXJzJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlICYmIF9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckVkaXRBcHByb3ZlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVyVGVhbScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJfaGVhZGVyQXJyb3dHbHlwaFwiIChjbGljayk9XCJfZXhpdFRlYW1NZW1iZXJzTW9kZSgpXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICB7eyB2aWV3U2VydmljZS50ZWFtPy5uYW1lID8/ICcnIH19ICh7eyB2aWV3U2VydmljZS50ZWFtPy5tZW1iZXJzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRVc2VyRGV0YWlsc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJEZXRhaWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICBAaWYgKF9zZWxlY3RNb2RlICYmICFfdXNlclRvU2hvd0RldGFpbHMpIHtcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfb25TZWFyY2hTdHJpbmdDaGFuZ2UoJGV2ZW50LnRleHQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHkgW2NsYXNzLmZkLWRpYWxvZ19fYm9keS0tYXV0by1oZWlnaHRdPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgQGlmICghX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAoX2RhdGEuc2hvd05vZGVUeXBlU2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0IFsodmFsdWUpXT1cIl9ub2RlVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIF9ub2RlVHlwZXNBcnJheTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfbm9kZVR5cGVzLlNFUklBTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVNlcmlhbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX25vZGVUeXBlcy5QQVJBTExFTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dOb2RlVHlwZVBhcmFsbGVsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2ZkLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfYXBwcm92ZXJUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBfYXBwcm92ZXJUeXBlc0FycmF5OyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVXNlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX2FwcHJvdmVyVHlwZXMuQU5ZT05FKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtQW55b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlIChfYXBwcm92ZXJUeXBlcy5FVkVSWU9ORSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVGVhbUV2ZXJ5b25lJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nVXNlck9yVGVhbScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgQGlmIChfaXNTaW5nbGVVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93blZhbHVlc109XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVVzZXJGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3BlbkNoYW5nZSk9XCJfZ29Ub1NlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiX3NldFNlbGVjdGVkQXBwcm92ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICghX2lzU2luZ2xlVXNlck1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FsbEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlUZWFtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl9hZGRUb05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQWRkVG9OZXh0JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKF9jaGVja0R1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+e3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dEdWVEYXRlJyB8IGZkVHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWRhdGUtcGlja2VyIHR5cGU9XCJzaW5nbGVcIiBbc3RhdGVdPVwiIXRoaXMuX2R1ZURhdGUgPyAnZXJyb3InIDogbnVsbFwiIFsobmdNb2RlbCldPVwiX2R1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9zZWxlY3RNb2RlKSB7XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFfZGF0YS50ZWFtRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1J0bF09XCJfZGF0YS5ydGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RlYW1zXT1cIl90ZWFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUZWFtSWRdPVwiX3NlbGVjdGVkVGVhbT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVGVhbUNsaWNrKT1cIl92aWV3VGVhbU1lbWJlcnMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25UZWFtUmFkaW9DbGljayk9XCJfc2V0U2VsZWN0ZWRUZWFtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3Q+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJ0cnVlXCIgW2Jsb2NrXT1cInRydWVcIj4gPC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgIV9kYXRhLnVzZXJEYXRhU291cmNlLmlzRGF0YUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJzXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgPyBfYXBwcm92ZXJzIDogX2ZpbHRlcmVkVGVhbU1lbWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2VsZWN0YWJsZV09XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFVzZXJzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIl9zZWxlY3RlZEFwcHJvdmVycyA9ICRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItbGlzdD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWJ1c3ktaW5kaWNhdG9yIFtsb2FkaW5nXT1cInRydWVcIiBbYmxvY2tdPVwidHJ1ZVwiPiA8L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUgJiYgX3VzZXJUb1Nob3dEZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBbdXNlcl09XCJfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc1RlbXBsYXRlXT1cIl9kYXRhLnVzZXJEZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc109XCJfdXNlclRvU2hvd0RldGFpbHNEYXRhJFwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgQGlmICghX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQWRkQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoX3NlbGVjdE1vZGUpIHtcbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRBcHByb3ZlcnMoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZFRlYW0gJiYgIXZpZXdTZXJ2aWNlLnRlYW1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZFRlYW0oKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
|