@c8y/ngx-components 1021.11.1 → 1021.21.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/alarms/alarms-date-filter.component.d.ts +34 -0
- package/alarms/alarms-date-filter.component.d.ts.map +1 -0
- package/alarms/alarms-filter.component.d.ts +2 -1
- package/alarms/alarms-filter.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts +2 -17
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +5 -2
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts +3 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts +47 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +15 -13
- package/alarms/alarms.module.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +5 -0
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +1 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +7 -5
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +4 -7
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts +4 -4
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/core/action-bar/action-bar-item.component.d.ts +1 -1
- package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
- package/core/action-bar/action-bar.module.d.ts +6 -6
- package/core/action-bar/action-bar.module.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts +3 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts +39 -0
- package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/common/aggregation/aggregation.service.d.ts +17 -0
- package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/common/index.d.ts +4 -0
- package/core/common/index.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +48 -0
- package/core/common/inter-app.service.d.ts.map +1 -0
- package/core/common/interval-based-reload.abstract.d.ts +120 -0
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
- package/core/dashboard/dashboard.module.d.ts +26 -20
- package/core/dashboard/dashboard.module.d.ts.map +1 -1
- package/core/dashboard/index.d.ts +3 -0
- package/core/dashboard/index.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
- package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
- package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
- package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
- package/core/dashboard/widget-change-event.model.d.ts +1 -1
- package/core/dashboard/widget-change-event.model.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts +2 -1
- package/core/dashboard/wiget-time-context/widget-time-context-helper.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +12 -8
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +7 -26
- package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
- package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
- package/core/header/header.module.d.ts +18 -18
- package/core/header/header.module.d.ts.map +1 -1
- package/core/header/title/title.component.d.ts +1 -1
- package/core/header/title/title.component.d.ts.map +1 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
- package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
- package/core/i18n/i18n.module.d.ts +0 -4
- package/core/i18n/i18n.module.d.ts.map +1 -1
- package/core/i18n/index.d.ts +2 -1
- package/core/i18n/index.d.ts.map +1 -1
- package/core/i18n/translation-loader.service.d.ts +50 -0
- package/core/i18n/translation-loader.service.d.ts.map +1 -0
- package/core/i18n/translation-utils.d.ts +14 -0
- package/core/i18n/translation-utils.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +7 -10
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
- package/datapoints-export-selector/index.d.ts +15 -0
- package/datapoints-export-selector/index.d.ts.map +1 -0
- package/device-list/device-list.module.d.ts +4 -2
- package/device-list/device-list.module.d.ts.map +1 -1
- package/esm2022/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.mjs +4 -4
- package/esm2022/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.mjs +3 -3
- package/esm2022/alarms/alarms-date-filter.component.mjs +139 -0
- package/esm2022/alarms/alarms-filter.component.mjs +11 -5
- package/esm2022/alarms/alarms-list.component.mjs +5 -16
- package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
- package/esm2022/alarms/alarms-view.service.mjs +16 -2
- package/esm2022/alarms/alarms.component.mjs +12 -6
- package/esm2022/alarms/alarms.model.mjs +17 -1
- package/esm2022/alarms/alarms.module.mjs +11 -4
- package/esm2022/branding/shared/data/store-branding.service.mjs +24 -1
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +3 -1
- package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
- package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
- package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
- package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
- package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.component.mjs +3 -3
- package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
- package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
- package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
- package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
- package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
- package/esm2022/core/common/index.mjs +5 -1
- package/esm2022/core/common/inter-app.service.mjs +76 -0
- package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
- package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
- package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
- package/esm2022/core/dashboard/dashboard.module.mjs +22 -4
- package/esm2022/core/dashboard/index.mjs +4 -1
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
- package/esm2022/core/dashboard/widget-change-event.model.mjs +1 -1
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
- package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-helper.service.mjs +3 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -36
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -72
- package/esm2022/core/date-time-picker/date-time-picker.component.mjs +9 -3
- package/esm2022/core/header/header.module.mjs +7 -5
- package/esm2022/core/header/title/title.component.mjs +3 -3
- package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
- package/esm2022/core/i18n/i18n.module.mjs +7 -14
- package/esm2022/core/i18n/index.mjs +3 -2
- package/esm2022/core/i18n/translate.parser.mjs +2 -2
- package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
- package/esm2022/core/i18n/translation-utils.mjs +24 -0
- package/esm2022/core/list-display-switch/list-display-switch.component.mjs +3 -3
- package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
- package/esm2022/datapoints-export-selector/index.mjs +15 -0
- package/esm2022/device-list/add-smart-group.component.mjs +4 -3
- package/esm2022/device-list/device-list.module.mjs +22 -4
- package/esm2022/interval-picker/c8y-ngx-components-interval-picker.mjs +5 -0
- package/esm2022/interval-picker/index.mjs +3 -0
- package/esm2022/interval-picker/interval-picker.component.mjs +68 -0
- package/esm2022/interval-picker/interval-picker.model.mjs +47 -0
- package/esm2022/map/cluster-map.component.mjs +41 -13
- package/esm2022/map/map-status.component.mjs +6 -5
- package/esm2022/map/map.component.mjs +9 -5
- package/esm2022/map/map.model.mjs +1 -1
- package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
- package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
- package/esm2022/translation-editor/data/index.mjs +2 -0
- package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
- package/esm2022/translation-editor/index.mjs +10 -0
- package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
- package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -0
- package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
- package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
- package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
- package/esm2022/widgets/cockpit/index.mjs +4 -2
- package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
- package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
- package/esm2022/widgets/definitions/index.mjs +2 -1
- package/esm2022/widgets/definitions/map/index.mjs +4 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
- package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
- package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
- package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
- package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +5 -5
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +189 -31
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +23 -0
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -0
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +120 -0
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-map.mjs +52 -19
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
- package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +5093 -4369
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/c8y-ngx-components-interval-picker.d.ts.map +1 -0
- package/interval-picker/index.d.ts +3 -0
- package/interval-picker/index.d.ts.map +1 -0
- package/{core/dashboard/wiget-time-context/interval-picker → interval-picker}/interval-picker.component.d.ts +10 -2
- package/interval-picker/interval-picker.component.d.ts.map +1 -0
- package/interval-picker/interval-picker.model.d.ts +15 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -0
- package/locales/de.po +289 -18
- package/locales/en.po +12 -0
- package/locales/en_US.po +3 -0
- package/locales/es.po +253 -18
- package/locales/fr.po +253 -18
- package/locales/ja_JP.po +282 -18
- package/locales/locales.pot +266 -21
- package/locales/nl.po +253 -18
- package/locales/pl.po +253 -18
- package/locales/pt_BR.po +253 -18
- package/map/cluster-map.component.d.ts +8 -3
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +0 -3
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +4 -2
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +2 -1
- package/map/map.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
- package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
- package/translation-editor/data/index.d.ts +2 -0
- package/translation-editor/data/index.d.ts.map +1 -0
- package/translation-editor/data/translation-store.service.d.ts +61 -0
- package/translation-editor/data/translation-store.service.d.ts.map +1 -0
- package/translation-editor/index.d.ts +2 -0
- package/translation-editor/index.d.ts.map +1 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
- package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
- package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +2 -0
- package/translation-editor/lazy/index.d.ts.map +1 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
- package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
- package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
- package/widgets/cockpit/index.d.ts +13 -0
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/cockpit-exports/index.d.ts +6 -0
- package/widgets/cockpit-exports/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
- package/widgets/definitions/datapoints-table/index.d.ts +14 -0
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
- package/widgets/definitions/index.d.ts +1 -0
- package/widgets/definitions/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +2 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
- package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
- package/widgets/implementations/datapoints-table/index.d.ts +10 -0
- package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +8 -3
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.model.d.ts +4 -3
- package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.d.ts.map +0 -1
- package/core/i18n/translate.loader.d.ts +0 -31
- package/core/i18n/translate.loader.d.ts.map +0 -1
- package/esm2022/core/dashboard/wiget-time-context/interval-picker/interval-picker.component.mjs +0 -55
- package/esm2022/core/i18n/translate.loader.mjs +0 -71
|
@@ -35,21 +35,10 @@ export class AlarmsListComponent {
|
|
|
35
35
|
* clicks on an alarm.
|
|
36
36
|
*/
|
|
37
37
|
this.navigationOptions = {
|
|
38
|
-
/**
|
|
39
|
-
* Defines if the alarm should navigate to a detail view when clicked.
|
|
40
|
-
*/
|
|
41
38
|
allowNavigationToAlarmsView: true,
|
|
42
|
-
/**
|
|
43
|
-
* Defines if the component should try to determine the context to navigate
|
|
44
|
-
* to the correct alarm detail view or not. If set to true, the component will
|
|
45
|
-
* not try to determine the context and will always navigate to the all alarms view.
|
|
46
|
-
*/
|
|
47
39
|
alwaysNavigateToAllAlarms: false,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* the alarm is cleared.
|
|
51
|
-
*/
|
|
52
|
-
includeClearedQueryParams: false
|
|
40
|
+
includeClearedQueryParams: false,
|
|
41
|
+
queryParamsHandling: 'merge'
|
|
53
42
|
};
|
|
54
43
|
/**
|
|
55
44
|
* Controls the visibility of the loading bar
|
|
@@ -158,11 +147,11 @@ export class AlarmsListComponent {
|
|
|
158
147
|
this.activeChildParam$.subscribe();
|
|
159
148
|
}
|
|
160
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AlarmsViewService }, { token: i3.ContextRouteService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"merge\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsListComponent, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", splitView: "splitView" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "innerScrollWrapper", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "directive", type: i3.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i3.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i3.DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i3.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "c8yDate" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
|
|
162
151
|
}
|
|
163
152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsListComponent, decorators: [{
|
|
164
153
|
type: Component,
|
|
165
|
-
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n queryParamsHandling=\"
|
|
154
|
+
args: [{ selector: 'c8y-alarms-list', template: "<div\n class=\"inner-scroll\"\n [ngClass]=\"{ 'split-view__list bg-level-1': splitView, 'bg-component': !splitView }\"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <div\n class=\"flex-wrap flex-no-shrink sticky-top m-b-16\"\n [ngClass]=\"{\n 'separator-bottom card-header p-b-0': splitView,\n 'd-flex fit-w separator-top-bottom widget-bar p-l-16 p-r-16':\n !splitView && navigationOptions.allowNavigationToAlarmsView\n }\"\n >\n <div\n class=\"h4 card-title\"\n *ngIf=\"splitView\"\n >\n {{ 'Alarms list' | translate }}\n </div>\n <div\n [ngClass]=\"{ 'fit-w d-flex a-i-center gap-16': !splitView, 'fit-h-20 m-l-auto': splitView }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Loading -->\n <div\n class=\"fit-w overflow-hidden\"\n [ngClass]=\"{ 'p-t-16': splitView }\"\n >\n <div\n class=\"loading-bar\"\n style=\"z-index: 101\"\n [ngClass]=\"{ active: isInitialLoading && !isEmptyListLoading }\"\n ></div>\n </div>\n\n <div\n class=\"alert alert-warning\"\n role=\"alert\"\n translate\n *ngIf=\"\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n \"\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n </div>\n <c8y-list-group\n class=\"p-r-16 interactive\"\n [ngStyle]=\"{ opacity: isInitialLoading && !isEmptyListLoading ? 0.2 : 1 }\"\n style=\"transition: opacity 0.15s linear\"\n data-cy=\"c8y-alarm-list--group\"\n >\n <c8y-li-timeline\n class=\"pointer\"\n role=\"button\"\n data-cy=\"c8y-alarm-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon [typeFilters]=\"typeFilters\" [alarm]=\"alarm\"></c8y-alarms-icon>\n </div>\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarm.firstOccurrenceTime\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n <span\n class=\"badge badge-info\"\n *ngIf=\"alarm.count > 1\"\n >\n {{ alarm.count }}\n </span>\n </button>\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p class=\"text-truncate-wrap p-b-4\">\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n <div\n [title]=\"item.title | translate\"\n *ngFor=\"let item of alarm | alarmListIndicator | async\"\n >\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n <c8y-loading *ngIf=\"isInitialLoading && isEmptyListLoading\"></c8y-loading>\n <div\n class=\"p-relative p-l-24\"\n *ngIf=\"isEmptyListLoading && !isInitialLoading\"\n >\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No alarms to display.' | translate\"\n data-cy=\"alarm-list--empty-state\"\n *ngIf=\"hasPermissions; else alertsA\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a\n c8y-guide-href=\"/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms\"\n >\n user documentation\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n </c8y-list-group>\n</div>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
|
|
166
155
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.AlarmsViewService }, { type: i3.ContextRouteService }, { type: i1.Router }], propDecorators: { alarms: [{
|
|
167
156
|
type: Input
|
|
168
157
|
}], hasPermissions: [{
|
|
@@ -185,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
185
174
|
type: ViewChild,
|
|
186
175
|
args: ['scrollWrapper']
|
|
187
176
|
}] } });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sbUJBQW1CO0lBOEc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWpIZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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e1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgTGlzdEl0ZW1Db21wb25lbnQsXG4gIExvYWRNb3JlTW9kZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50LCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFsYXJtc1ZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hbGFybXMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSBhbGFybSBzaG91bGQgbmF2aWdhdGUgdG8gYSBkZXRhaWwgdmlldyB3aGVuIGNsaWNrZWQuXG4gICAgICovXG4gICAgYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3OiB0cnVlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdHJ5IHRvIGRldGVybWluZSB0aGUgY29udGV4dCB0byBuYXZpZ2F0ZVxuICAgICAqIHRvIHRoZSBjb3JyZWN0IGFsYXJtIGRldGFpbCB2aWV3IG9yIG5vdC4gSWYgc2V0IHRvIHRydWUsIHRoZSBjb21wb25lbnQgd2lsbFxuICAgICAqIG5vdCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGFuZCB3aWxsIGFsd2F5cyBuYXZpZ2F0ZSB0byB0aGUgYWxsIGFsYXJtcyB2aWV3LlxuICAgICAqL1xuICAgIGFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGNsZWFyZWQgcXVlcnkgcGFyYW1ldGVyIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbmF2aWdhdGlvbiBpZlxuICAgICAqIHRoZSBhbGFybSBpcyBjbGVhcmVkLlxuICAgICAqL1xuICAgIGluY2x1ZGVDbGVhcmVkUXVlcnlQYXJhbXM6IGZhbHNlXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBsb2FkaW5nIGJhclxuICAgKiBXaGVuIHNldCB0byBgZmFsc2VgLCB0aGUgYWxhcm0gbGlzdCBpcyBkaXNwbGF5ZWQuIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIG9wYWNpdHkgb2YgYWxhcm1zIGxpc3QgaXMgY2hhbmdlZCBhbmQgYSBsb2FkaW5nIGJhciBpcyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGlzSW5pdGlhbExvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgYW5kIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBjb21wb25lbnRzXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgbWVhbnMgdGhlIGxpc3QgaXMgZGlzcGxheWVkIGluIGEgc3BsaXQgdmlldyBsYXlvdXQ6XG4gICAqIHRoZSBsaXN0IG9uIHRoZSBmaXJzdCBjb2x1bW4gYW5kIHRoZSBzZWxlY3RlZCByZWNvcmQgZGV0YWlsIG9uIHRoZSBzZWNvbmQgY29sdW1uICh0aGUgY29ja3BpdFxuICAgKiBhbGFybXMgdmlldyBmb3IgZXhhbXBsZSlcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBhcyBhIHN0YW5kYWxvbmUgY29tcG9uZW50LCBvcGVuaW5nIHRoZSBkZXRhaWwgd2lsbFxuICAgKiByZWRpcmVjdCB0byB0aGUgYWxhcm1zXG4gICAqL1xuICBASW5wdXQoKVxuICBzcGxpdFZpZXcgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gaW5zdGFuY2Ugb2YgYSBzZWxlY3RlZCBhbGFybSB3aGVuIG9uZSBpcyBjaG9zZW4gZnJvbSB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdGVkQWxhcm0gPSBuZXcgRXZlbnRFbWl0dGVyPElBbGFybT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhlIHNjcm9sbGluZyBzdGF0ZTogdHJ1ZSB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBzY3JvbGxpbmcsIGFuZCBmYWxzZSB3aGVuIHRoZSB1c2VyIHJlYWNoZXMgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNjcm9sbGluZ1N0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGFsYXJtIG9yIGxhc3QgYWxhcm0gbWFya2VkIGFzIGFjdGl2ZSBieSB0aGUgcm91dGVyTGlua0FjdGl2ZSBkaXJlY3RpdmUuXG4gICAqL1xuICBhY3RpdmVBbGFybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBbGFybT4obnVsbCk7XG4gIGFjdGl2ZUNoaWxkUGFyYW0kID0gbmV3IE9ic2VydmFibGU8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbFdyYXBwZXInKVxuICBpbm5lclNjcm9sbFdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNTY3JvbGxpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgYzh5LWxvYWRpbmcgY29tcG9uZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqIFRoZSBsb2FkaW5nIGNvbXBvbmVudCBpcyBzaG93biB3aGVuIG5vIGFsYXJtcyBhcmUgZGlzcGxheWVkIGluIHRoZSB2aWV3IG9yIHdoZW4gdGhlIHJlcXVlc3QgaXMgaW5pdGlhbCxcbiAgICogYXMgd2UgZG9uJ3Qgd2FudCB0byBzZWUgZW1wdHkgc3BhY2Ugb24gYWxhcm0gbGlzdCBkdXJpbmcgbG9hZGluZy5cbiAgICovXG4gIGlzRW1wdHlMaXN0TG9hZGluZyA9IHRydWU7XG5cbiAgYWxlcnRBZ2dyZWdhdG9yID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IoKTtcblxuICBtYXBBbGFybUxpbmsgPSBwaXBlKFxuICAgIG1hcCgoYWxhcm1zOiBJQWxhcm1bXSkgPT5cbiAgICAgIGFsYXJtcy5tYXAoKGFsYXJtOiBJQWxhcm0pID0+IHtcbiAgICAgICAgYWxhcm0ubGluayA9IHRoaXMuZ2V0Um91dGVyTGluayhhbGFybSk7XG4gICAgICAgIHJldHVybiBhbGFybTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIEhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTCA9IDUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMudmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNoYW5nZSBvZiB0aGUgYWN0aXZlIHJvdXRlLlxuICAgKlxuICAgKiBAcGFyYW0gaXNBY3RpdmUgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3V0ZSBpcyBhY3RpdmUgb3Igbm90LlxuICAgKiBAcGFyYW0gc2Nyb2xsQW5jaG9yIC0gVGhlIExpc3RJdGVtQ29tcG9uZW50IHVzZWQgYXMgYSBzY3JvbGwgYW5jaG9yLlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgSUFsYXJtIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGFjdGl2ZSBhbGFybS5cbiAgICovXG4gIGFjdGl2ZVJvdXRlQ2hhbmdlZChpc0FjdGl2ZTogYm9vbGVhbiwgc2Nyb2xsQW5jaG9yOiBMaXN0SXRlbUNvbXBvbmVudCwgYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgc2Nyb2xsQW5jaG9yLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgYmxvY2s6ICduZWFyZXN0J1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KGFsYXJtKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWxhcm1zICYmIGNoYW5nZXMuYWxhcm1zKSB7XG4gICAgICB0aGlzLmFjdGl2ZUFsYXJtJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5pc0VtcHR5TGlzdExvYWRpbmcgPSAhdGhpcy5hbGFybXM/LmRhdGE/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oYXNQZXJtaXNzaW9ucz8uY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5hbGVydEFnZ3JlZ2F0b3IuYWRkQWxlcnRzKFxuICAgICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgICB0eXBlOiAnc3lzdGVtJyxcbiAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFsYXJtcy5cIilcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSB0aGlzLmlubmVyU2Nyb2xsV3JhcHBlci5uYXRpdmVFbGVtZW50O1xuICAgICAgZnJvbUV2ZW50KHNjcm9sbEVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgdGhpcy5pc1Njcm9sbGluZyA9IHRoaXMuc2hvdWxkQ291bnRkb3duSW50ZXJ2YWxCZUhpZGRlbih0YXJnZXQpO1xuICAgICAgICAgIHRoaXMub25TY3JvbGxpbmdTdGF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNTY3JvbGxpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbkFsYXJtT3BlbihhbGFybTogSUFsYXJtKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdGVkQWxhcm0uZW1pdChhbGFybSk7XG4gIH1cblxuICBnZXRSb3V0ZXJMaW5rKGFsYXJtOiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25PcHRpb25zLmFsd2F5c05hdmlnYXRlVG9BbGxBbGFybXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsYXJtc1ZpZXdTZXJ2aWNlLmdldFJvdXRlckxpbmsobnVsbCwgYWxhcm0pO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0RGF0YSA9IHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5nZXRDb250ZXh0RGF0YSh0aGlzLmFjdGl2YXRlZFJvdXRlKTtcbiAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhLCBhbGFybSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNjcm9sbFRvcFBpeGVscyA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgcmV0dXJuIHNjcm9sbFRvcFBpeGVscyA+IHRoaXMuSElERV9JTlRFUlZBTF9DT1VOVERPV05fU0NST0xMO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlJZkZpbHRlcnNNYXRjaGluZ0FsYXJtKCkge1xuICAgIHRoaXMuYWN0aXZlQ2hpbGRQYXJhbSQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW4ubGVuZ3RoID4gMCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5jaGlsZHJlblswXS5wYXJhbXMpLFxuICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgLy8gZG9uZSB0byBnZXQgdGhlIGZpcnN0IG5hdmlnYXRpb25cbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaW5uZXItc2Nyb2xsXCJcbiAgW25nQ2xhc3NdPVwieyAnc3BsaXQtdmlld19fbGlzdCBiZy1sZXZlbC0xJzogc3BsaXRWaWV3LCAnYmctY29tcG9uZW50JzogIXNwbGl0VmlldyB9XCJcbiAgZGF0YS1jeT1cImM4eS1hbGFybXMtbGlzdFwiXG4gICNzY3JvbGxXcmFwcGVyXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZsZXgtd3JhcCBmbGV4LW5vLXNocmluayBzdGlja3ktdG9wIG0tYi0xNlwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NlcGFyYXRvci1ib3R0b20gY2FyZC1oZWFkZXIgcC1iLTAnOiBzcGxpdFZpZXcsXG4gICAgICAnZC1mbGV4IGZpdC13IHNlcGFyYXRvci10b3AtYm90dG9tIHdpZGdldC1iYXIgcC1sLTE2IHAtci0xNic6XG4gICAgICAgICFzcGxpdFZpZXcgJiYgbmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3XG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImg0IGNhcmQtdGl0bGVcIlxuICAgICAgKm5nSWY9XCJzcGxpdFZpZXdcIlxuICAgID5cbiAgICAgIHt7ICdBbGFybXMgbGlzdCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbbmdDbGFzc109XCJ7ICdmaXQtdyBkLWZsZXggYS1pLWNlbnRlciBnYXAtMTYnOiAhc3BsaXRWaWV3LCAnZml0LWgtMjAgbS1sLWF1dG8nOiBzcGxpdFZpZXcgfVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gIExvYWRpbmcgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaXQtdyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgW25nQ2xhc3NdPVwieyAncC10LTE2Jzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJsb2FkaW5nLWJhclwiXG4gICAgICAgIHN0eWxlPVwiei1pbmRleDogMTAxXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGlzSW5pdGlhbExvYWRpbmcgJiYgIWlzRW1wdHlMaXN0TG9hZGluZyB9XCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhaXNFbXB0eUxpc3RMb2FkaW5nICYmXG4gICAgICAgIChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKSAmJlxuICAgICAgICAoYWN0aXZlQWxhcm0kIHwgYXN5bmMpPy5pZCAhPT0gKGFjdGl2ZUNoaWxkUGFyYW0kIHwgYXN5bmMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIFRoZSBzZWxlY3RlZCBhbGFybSBpcyBub3QgY3VycmVudGx5IGluIHRoZSBsaXN0LCBjaGFuZ2UgeW91ciBmaWx0ZXIuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Yzh5LWxpc3QtZ3JvdXBcbiAgICBjbGFzcz1cInAtci0xNiBpbnRlcmFjdGl2ZVwiXG4gICAgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgPyAwLjIgOiAxIH1cIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXJcIlxuICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tZ3JvdXBcIlxuICA+XG4gICAgPGM4eS1saS10aW1lbGluZVxuICAgICAgY2xhc3M9XCJwb2ludGVyXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImM4eS1hbGFybS1saXN0LS10aW1lbGluZS1yZXBlYXRcIlxuICAgICAgKmM4eUZvcj1cImxldCBhbGFybSBvZiBhbGFybXM7IGxldCBpID0gaW5kZXg7IHBpcGU6IG1hcEFsYXJtTGluazsgbG9hZE1vcmU6IGxvYWRNb3JlTW9kZVwiXG4gICAgICBbcm91dGVyTGlua109XCJuYXZpZ2F0aW9uT3B0aW9ucy5hbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXcgPyBhbGFybS5saW5rIDogbnVsbFwiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc9XCJtZXJnZVwiXG4gICAgICAoaXNBY3RpdmVDaGFuZ2UpPVwiYWN0aXZlUm91dGVDaGFuZ2VkKCRldmVudCwgbGlTY3JvbGxBbmNob3IsIGFsYXJtKVwiXG4gICAgICAoY2xpY2spPVwib25BbGFybU9wZW4oYWxhcm0pXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJcbiAgICAgICAgbmF2aWdhdGlvbk9wdGlvbnMuaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtc1xuICAgICAgICAgID8geyBzaG93Q2xlYXJlZDogYWxhcm0uc3RhdHVzID09PSAnQ0xFQVJFRCcgfVxuICAgICAgICAgIDoge31cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCJhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAge3sgYWxhcm0udGltZSB8IGM4eURhdGU6ICdtZWRpdW1EYXRlJyB9fVxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bVRpbWUnIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8Yzh5LWxpXG4gICAgICAgIHN0eWxlPVwic2Nyb2xsLW1hcmdpbi10b3A6IDU2cHhcIlxuICAgICAgICAjbGlTY3JvbGxBbmNob3JcbiAgICAgID5cbiAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwiYS1zLXN0YXJ0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFsYXJtLWljb25zXCI+XG4gICAgICAgICAgICA8Yzh5LWFsYXJtcy1pY29uIFt0eXBlRmlsdGVyc109XCJ0eXBlRmlsdGVyc1wiIFthbGFybV09XCJhbGFybVwiPjwvYzh5LWFsYXJtcy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAgIGFsYXJtQmFkZ2VUb29sdGlwXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgIDogeyBhbGFybUZpcnN0T2NjdXJyZW5jZVRpbWU6IGFsYXJtLmZpcnN0T2NjdXJyZW5jZVRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtJyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uY291bnQgPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgYWxhcm0uY291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiYS1zLXN0cmV0Y2hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1zdGFydCBmaXQtaFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi13aWR0aC0wIGZsZXgtZ3Jvd1wiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcCBwLWItNFwiPlxuICAgICAgICAgICAgICAgIHt7IGFsYXJtLnRleHQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21hbGwgdGV4dC1tdXRlZCB0ZXh0LXRydW5jYXRlIGZsZXgtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYWxhcm0uc291cmNlLm5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidleGNoYW5nZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICB7eyBhbGFybS5zb3VyY2UubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWxhcm0gfCBhbGFybUxpc3RJbmRpY2F0b3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjOHlJY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgIDwvYzh5LWxpPlxuICAgIDwvYzh5LWxpLXRpbWVsaW5lPlxuICAgIDxjOHktbG9hZGluZyAqbmdJZj1cImlzSW5pdGlhbExvYWRpbmcgJiYgaXNFbXB0eUxpc3RMb2FkaW5nXCI+PC9jOHktbG9hZGluZz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInAtcmVsYXRpdmUgcC1sLTI0XCJcbiAgICAgICpuZ0lmPVwiaXNFbXB0eUxpc3RMb2FkaW5nICYmICFpc0luaXRpYWxMb2FkaW5nXCJcbiAgICA+XG4gICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgIFtpY29uXT1cIidjOHktYWxlcnQtaWRsZSdcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGFsYXJtcyB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBkYXRhLWN5PVwiYWxhcm0tbGlzdC0tZW1wdHktc3RhdGVcIlxuICAgICAgICAqbmdJZj1cImhhc1Blcm1pc3Npb25zOyBlbHNlIGFsZXJ0c0FcIlxuICAgICAgPlxuICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2RldmljZS1tYW5hZ2VtZW50LWFwcGxpY2F0aW9uL21vbml0b3JpbmctYW5kLWNvbnRyb2xsaW5nLWRldmljZXMvI3dvcmtpbmctd2l0aC1hbGFybXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIC5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGlzdC1ncm91cD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FsZXJ0c0E+XG4gIDxjOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzIFthbGVydHNdPVwiYWxlcnRBZ2dyZWdhdG9yXCI+PC9jOHktZHluYW1pYy1jb21wb25lbnQtYWxlcnRzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsK0JBQStCLEVBRy9CLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUc5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxtQkFBd0MsRUFDeEMsTUFBYztRQUhkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXRHZixzQkFBaUIsR0FBRyxPQUFPLENBQ2xDLHVIQUF1SCxDQUN4SCxD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d0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJQWxhcm0sIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgTG9hZE1vcmVNb2RlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICcuL2FsYXJtcy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWxhcm1zLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFsYXJtc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGFsYXJtQmFkZ2VUb29sdGlwID0gZ2V0dGV4dChcbiAgICAnTnVtYmVyIG9mIG9jY3VycmVuY2VzYG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBhbGFybWAuIEZpcnN0IG9jY3VycmVuY2Uge3sgYWxhcm1GaXJzdE9jY3VycmVuY2VUaW1lIH19IChkZXZpY2UgdGltZSkuJ1xuICApO1xuICByZWFkb25seSBhbGFybUxhc3RPY2N1cnJlbmNlTGFiZWwgPSBnZXR0ZXh0KCdMYXN0IG9jY3VycmVuY2Ugb2YgdGhpcyBhbGFybSAoZGV2aWNlIHRpbWUpLicpO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcmVjZWl2aW5nIGEgbGlzdCBvZiBhbGFybXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbGFybXM6IElSZXN1bHRMaXN0PElBbGFybSAmIHsgbGluaz86IHN0cmluZyB9PjtcblxuICBASW5wdXQoKSBoYXNQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGFwcGxpZWQgdHlwZSBmaWx0ZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdHlwZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdID0gW107XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciByZWNlaXZpbmcgbG9hZCBtb3JlIG1vZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkTW9yZU1vZGU6IExvYWRNb3JlTW9kZSA9ICdoaWRkZW4nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIG9wdGlvbnMsIGhvdyB0aGUgYWxhcm0gbGlzdCBzaG91bGQgYmUgbmF2aWdhdGVkIGlmIGEgdXNlclxuICAgKiBjbGlja3Mgb24gYW4gYWxhcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F0aW9uT3B0aW9uczogQWxhcm1OYXZpZ2F0aW9uT3B0aW9ucyA9IHtcbiAgICBhbGxvd05hdmlnYXRpb25Ub0FsYXJtc1ZpZXc6IHRydWUsXG4gICAgYWx3YXlzTmF2aWdhdGVUb0FsbEFsYXJtczogZmFsc2UsXG4gICAgaW5jbHVkZUNsZWFyZWRRdWVyeVBhcmFtczogZmFsc2UsXG4gICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbG9hZGluZyBiYXJcbiAgICogV2hlbiBzZXQgdG8gYGZhbHNlYCwgdGhlIGFsYXJtIGxpc3QgaXMgZGlzcGxheWVkLiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBvcGFjaXR5IG9mIGFsYXJtcyBsaXN0IGlzIGNoYW5nZWQgYW5kIGEgbG9hZGluZyBiYXIgaXMgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBpc0luaXRpYWxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IGFuZCBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgY29tcG9uZW50c1xuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIG1lYW5zIHRoZSBsaXN0IGlzIGRpc3BsYXllZCBpbiBhIHNwbGl0IHZpZXcgbGF5b3V0OlxuICAgKiB0aGUgbGlzdCBvbiB0aGUgZmlyc3QgY29sdW1uIGFuZCB0aGUgc2VsZWN0ZWQgcmVjb3JkIGRldGFpbCBvbiB0aGUgc2Vjb25kIGNvbHVtbiAodGhlIGNvY2twaXRcbiAgICogYWxhcm1zIHZpZXcgZm9yIGV4YW1wbGUpXG4gICAqIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGUgbGlzdCBpcyBkaXNwbGF5ZWQgYXMgYSBzdGFuZGFsb25lIGNvbXBvbmVudCwgb3BlbmluZyB0aGUgZGV0YWlsIHdpbGxcbiAgICogcmVkaXJlY3QgdG8gdGhlIGFsYXJtc1xuICAgKi9cbiAgQElucHV0KClcbiAgc3BsaXRWaWV3ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGluc3RhbmNlIG9mIGEgc2VsZWN0ZWQgYWxhcm0gd2hlbiBvbmUgaXMgY2hvc2VuIGZyb20gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TZWxlY3RlZEFsYXJtID0gbmV3IEV2ZW50RW1pdHRlcjxJQWxhcm0+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBzY3JvbGxpbmcgc3RhdGU6IHRydWUgd2hlbiB0aGUgdXNlciBzdGFydHMgc2Nyb2xsaW5nLCBhbmQgZmFsc2Ugd2hlbiB0aGUgdXNlciByZWFjaGVzIHRoZSB0b3Agb2YgdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxpbmdTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQ3VycmVudCBhbGFybSBvciBsYXN0IGFsYXJtIG1hcmtlZCBhcyBhY3RpdmUgYnkgdGhlIHJvdXRlckxpbmtBY3RpdmUgZGlyZWN0aXZlLlxuICAgKi9cbiAgYWN0aXZlQWxhcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQWxhcm0+KG51bGwpO1xuICBhY3RpdmVDaGlsZFBhcmFtJCA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdzY3JvbGxXcmFwcGVyJylcbiAgaW5uZXJTY3JvbGxXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gIGlzU2Nyb2xsaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGM4eS1sb2FkaW5nIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKiBUaGUgbG9hZGluZyBjb21wb25lbnQgaXMgc2hvd24gd2hlbiBubyBhbGFybXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgdmlldyBvciB3aGVuIHRoZSByZXF1ZXN0IGlzIGluaXRpYWwsXG4gICAqIGFzIHdlIGRvbid0IHdhbnQgdG8gc2VlIGVtcHR5IHNwYWNlIG9uIGFsYXJtIGxpc3QgZHVyaW5nIGxvYWRpbmcuXG4gICAqL1xuICBpc0VtcHR5TGlzdExvYWRpbmcgPSB0cnVlO1xuXG4gIGFsZXJ0QWdncmVnYXRvciA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yKCk7XG5cbiAgbWFwQWxhcm1MaW5rID0gcGlwZShcbiAgICBtYXAoKGFsYXJtczogSUFsYXJtW10pID0+XG4gICAgICBhbGFybXMubWFwKChhbGFybTogSUFsYXJtKSA9PiB7XG4gICAgICAgIGFsYXJtLmxpbmsgPSB0aGlzLmdldFJvdXRlckxpbmsoYWxhcm0pO1xuICAgICAgICByZXR1cm4gYWxhcm07XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBISURFX0lOVEVSVkFMX0NPVU5URE9XTl9TQ1JPTEwgPSA1MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFsYXJtc1ZpZXdTZXJ2aWNlOiBBbGFybXNWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICB0aGlzLnZlcmlmeUlmRmlsdGVyc01hdGNoaW5nQWxhcm0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjaGFuZ2Ugb2YgdGhlIGFjdGl2ZSByb3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGlzQWN0aXZlIC0gQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm91dGUgaXMgYWN0aXZlIG9yIG5vdC5cbiAgICogQHBhcmFtIHNjcm9sbEFuY2hvciAtIFRoZSBMaXN0SXRlbUNvbXBvbmVudCB1c2VkIGFzIGEgc2Nyb2xsIGFuY2hvci5cbiAgICogQHBhcmFtIGFsYXJtIC0gVGhlIElBbGFybSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBhY3RpdmUgYWxhcm0uXG4gICAqL1xuICBhY3RpdmVSb3V0ZUNoYW5nZWQoaXNBY3RpdmU6IGJvb2xlYW4sIHNjcm9sbEFuY2hvcjogTGlzdEl0ZW1Db21wb25lbnQsIGFsYXJtOiBJQWxhcm0pOiB2b2lkIHtcbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHNjcm9sbEFuY2hvci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChhbGFybSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsYXJtcyAmJiBjaGFuZ2VzLmFsYXJtcykge1xuICAgICAgdGhpcy5hY3RpdmVBbGFybSQubmV4dChudWxsKTtcbiAgICAgIHRoaXMuaXNFbXB0eUxpc3RMb2FkaW5nID0gIXRoaXMuYWxhcm1zPy5kYXRhPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzUGVybWlzc2lvbnM/LmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWxlcnRBZ2dyZWdhdG9yLmFkZEFsZXJ0cyhcbiAgICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgICAgdHlwZTogJ3N5c3RlbScsXG4gICAgICAgICAgdGV4dDogZ2V0dGV4dChcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhbGFybXMuXCIpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGFybXNWaWV3U2VydmljZS5pc0ludGVydmFsUmVmcmVzaCgpKSB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5pbm5lclNjcm9sbFdyYXBwZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIGZyb21FdmVudChzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIHRoaXMuaXNTY3JvbGxpbmcgPSB0aGlzLnNob3VsZENvdW50ZG93bkludGVydmFsQmVIaWRkZW4odGFyZ2V0KTtcbiAgICAgICAgICB0aGlzLm9uU2Nyb2xsaW5nU3RhdGVDaGFuZ2UuZW1pdCh0aGlzLmlzU2Nyb2xsaW5nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25BbGFybU9wZW4oYWxhcm06IElBbGFybSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3RlZEFsYXJtLmVtaXQoYWxhcm0pO1xuICB9XG5cbiAgZ2V0Um91dGVyTGluayhhbGFybTogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uT3B0aW9ucy5hbHdheXNOYXZpZ2F0ZVRvQWxsQWxhcm1zKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGFybXNWaWV3U2VydmljZS5nZXRSb3V0ZXJMaW5rKG51bGwsIGFsYXJtKTtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRDb3VudGRvd25JbnRlcnZhbEJlSGlkZGVuKHRhcmdldDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzY3JvbGxUb3BQaXhlbHMgPSB0YXJnZXQuc2Nyb2xsVG9wO1xuICAgIHJldHVybiBzY3JvbGxUb3BQaXhlbHMgPiB0aGlzLkhJREVfSU5URVJWQUxfQ09VTlRET1dOX1NDUk9MTDtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZGaWx0ZXJzTWF0Y2hpbmdBbGFybSgpIHtcbiAgICB0aGlzLmFjdGl2ZUNoaWxkUGFyYW0kID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLmxlbmd0aCA+IDApLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUuY2hpbGRyZW5bMF0ucGFyYW1zKSxcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIC8vIGRvbmUgdG8gZ2V0IHRoZSBmaXJzdCBuYXZpZ2F0aW9uXG4gICAgdGhpcy5hY3RpdmVDaGlsZFBhcmFtJC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImlubmVyLXNjcm9sbFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NwbGl0LXZpZXdfX2xpc3QgYmctbGV2ZWwtMSc6IHNwbGl0VmlldywgJ2JnLWNvbXBvbmVudCc6ICFzcGxpdFZpZXcgfVwiXG4gIGRhdGEtY3k9XCJjOHktYWxhcm1zLWxpc3RcIlxuICAjc2Nyb2xsV3JhcHBlclxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4LXdyYXAgZmxleC1uby1zaHJpbmsgc3RpY2t5LXRvcCBtLWItMTZcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdzZXBhcmF0b3ItYm90dG9tIGNhcmQtaGVhZGVyIHAtYi0wJzogc3BsaXRWaWV3LFxuICAgICAgJ2QtZmxleCBmaXQtdyBzZXBhcmF0b3ItdG9wLWJvdHRvbSB3aWRnZXQtYmFyIHAtbC0xNiBwLXItMTYnOlxuICAgICAgICAhc3BsaXRWaWV3ICYmIG5hdmlnYXRpb25PcHRpb25zLmFsbG93TmF2aWdhdGlvblRvQWxhcm1zVmlld1xuICAgIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJoNCBjYXJkLXRpdGxlXCJcbiAgICAgICpuZ0lmPVwic3BsaXRWaWV3XCJcbiAgICA+XG4gICAgICB7eyAnQWxhcm1zIGxpc3QnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwieyAnZml0LXcgZC1mbGV4IGEtaS1jZW50ZXIgZ2FwLTE2JzogIXNwbGl0VmlldywgJ2ZpdC1oLTIwIG0tbC1hdXRvJzogc3BsaXRWaWV3IH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8IS0tICBMb2FkaW5nIC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZml0LXcgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtdC0xNic6IHNwbGl0VmlldyB9XCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibG9hZGluZy1iYXJcIlxuICAgICAgICBzdHlsZT1cInotaW5kZXg6IDEwMVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0luaXRpYWxMb2FkaW5nICYmICFpc0VtcHR5TGlzdExvYWRpbmcgfVwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgIWlzRW1wdHlMaXN0TG9hZGluZyAmJlxuICAgICAgICAoYWN0aXZlQ2hpbGRQYXJhbSQgfCBhc3luYykgJiZcbiAgICAgICAgKGFjdGl2ZUFsYXJtJCB8IGFzeW5jKT8uaWQgIT09IChhY3RpdmVDaGlsZFBhcmFtJCB8IGFzeW5jKVxuICAgICAgXCJcbiAgICA+XG4gICAgICBUaGUgc2VsZWN0ZWQgYWxhcm0gaXMgbm90IGN1cnJlbnRseSBpbiB0aGUgbGlzdCwgY2hhbmdlIHlvdXIgZmlsdGVyLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGM4eS1saXN0LWdyb3VwXG4gICAgY2xhc3M9XCJwLXItMTYgaW50ZXJhY3RpdmVcIlxuICAgIFtuZ1N0eWxlXT1cInsgb3BhY2l0eTogaXNJbml0aWFsTG9hZGluZyAmJiAhaXNFbXB0eUxpc3RMb2FkaW5nID8gMC4yIDogMSB9XCJcbiAgICBzdHlsZT1cInRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyXCJcbiAgICBkYXRhLWN5PVwiYzh5LWFsYXJtLWxpc3QtLWdyb3VwXCJcbiAgPlxuICAgIDxjOHktbGktdGltZWxpbmVcbiAgICAgIGNsYXNzPVwicG9pbnRlclwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tbGlzdC0tdGltZWxpbmUtcmVwZWF0XCJcbiAgICAgICpjOHlGb3I9XCJsZXQgYWxhcm0gb2YgYWxhcm1zOyBsZXQgaSA9IGluZGV4OyBwaXBlOiBtYXBBbGFybUxpbms7IGxvYWRNb3JlOiBsb2FkTW9yZU1vZGVcIlxuICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGlvbk9wdGlvbnMuYWxsb3dOYXZpZ2F0aW9uVG9BbGFybXNWaWV3ID8gYWxhcm0ubGluayA6IG51bGxcIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJuYXZpZ2F0aW9uT3B0aW9ucy5xdWVyeVBhcmFtc0hhbmRsaW5nXCJcbiAgICAgIChpc0FjdGl2ZUNoYW5nZSk9XCJhY3RpdmVSb3V0ZUNoYW5nZWQoJGV2ZW50LCBsaVNjcm9sbEFuY2hvciwgYWxhcm0pXCJcbiAgICAgIChjbGljayk9XCJvbkFsYXJtT3BlbihhbGFybSlcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIlxuICAgICAgICBuYXZpZ2F0aW9uT3B0aW9ucy5pbmNsdWRlQ2xlYXJlZFF1ZXJ5UGFyYW1zXG4gICAgICAgICAgPyB7IHNob3dDbGVhcmVkOiBhbGFybS5zdGF0dXMgPT09ICdDTEVBUkVEJyB9XG4gICAgICAgICAgOiB7fVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cImFsYXJtTGFzdE9jY3VycmVuY2VMYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICB7eyBhbGFybS50aW1lIHwgYzh5RGF0ZTogJ21lZGl1bURhdGUnIH19XG4gICAgICAgIHt7IGFsYXJtLnRpbWUgfCBjOHlEYXRlOiAnbWVkaXVtVGltZScgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxjOHktbGlcbiAgICAgICAgc3R5bGU9XCJzY3JvbGwtbWFyZ2luLXRvcDogNTZweFwiXG4gICAgICAgICNsaVNjcm9sbEFuY2hvclxuICAgICAgPlxuICAgICAgICA8Yzh5LWxpLWljb24gY2xhc3M9XCJhLXMtc3RhcnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWxhcm0taWNvbnNcIj5cbiAgICAgICAgICAgIDxjOHktYWxhcm1zLWljb24gW3R5cGVGaWx0ZXJzXT1cInR5cGVGaWx0ZXJzXCIgW2FsYXJtXT1cImFsYXJtXCI+PC9jOHktYWxhcm1zLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgYWxhcm1CYWRnZVRvb2x0aXBcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgOiB7IGFsYXJtRmlyc3RPY2N1cnJlbmNlVGltZTogYWxhcm0uZmlyc3RPY2N1cnJlbmNlVGltZSB8IGM4eURhdGU6ICdtZWRpdW0nIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5maXJzdE9jY3VycmVuY2VUaW1lXCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5jb3VudCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhbGFybS5jb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJhLXMtc3RyZXRjaFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLXN0YXJ0IGZpdC1oXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXdpZHRoLTAgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwIHAtYi00XCI+XG4gICAgICAgICAgICAgICAge3sgYWxhcm0udGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWFsbCB0ZXh0LW11dGVkIHRleHQtdHJ1bmNhdGUgZmxleC1ncm93XCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJhbGFybS5zb3VyY2UubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2V4Y2hhbmdlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IGFsYXJtLnNvdXJjZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhbGFybSB8IGFsYXJtTGlzdEluZGljYXRvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2M4eUljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgPC9jOHktbGk+XG4gICAgPC9jOHktbGktdGltZWxpbmU+XG4gICAgPGM4eS1sb2FkaW5nICpuZ0lmPVwiaXNJbml0aWFsTG9hZGluZyAmJiBpc0VtcHR5TGlzdExvYWRpbmdcIj48L2M4eS1sb2FkaW5nPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicC1yZWxhdGl2ZSBwLWwtMjRcIlxuICAgICAgKm5nSWY9XCJpc0VtcHR5TGlzdExvYWRpbmcgJiYgIWlzSW5pdGlhbExvYWRpbmdcIlxuICAgID5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ2M4eS1hbGVydC1pZGxlJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gYWxhcm1zIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIGRhdGEtY3k9XCJhbGFybS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiaGFzUGVybWlzc2lvbnM7IGVsc2UgYWxlcnRzQVwiXG4gICAgICA+XG4gICAgICAgIDxwIGM4eS1ndWlkZS1kb2NzPlxuICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICBuZ05vbkJpbmRhYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGM4eS1ndWlkZS1ocmVmPVwiL2RvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vbW9uaXRvcmluZy1hbmQtY29udHJvbGxpbmctZGV2aWNlcy8jd29ya2luZy13aXRoLWFsYXJtc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHVzZXIgZG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgLlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saXN0LWdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYWxlcnRzQT5cbiAgPGM4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHMgW2FsZXJ0c109XCJhbGVydEFnZ3JlZ2F0b3JcIj48L2M4eS1keW5hbWljLWNvbXBvbmVudC1hbGVydHM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -118,14 +118,14 @@ export class AlarmsTypeFilterComponent {
|
|
|
118
118
|
return [...alarmFilters, ...missingFilters];
|
|
119
119
|
}
|
|
120
120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsTypeFilterComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlarmEventSelectorService }, { token: i3.ActivatedRoute }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsTypeFilterComponent, selector: "c8y-alarms-type-filter", inputs: { alarms: "alarms" }, outputs: { onFilterChanged: "onFilterChanged" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AlarmsTypeFilterComponent, selector: "c8y-alarms-type-filter", inputs: { alarms: "alarms" }, outputs: { onFilterChanged: "onFilterChanged" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by Alarm types' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\">\n <ng-container *ngIf=\"activeFilters.length > 0; else allTypes\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let filter of activeFilters\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); deselect(filter)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small\"\n [ngStyle]=\"{ 'background-color': filter.color }\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"bell\"\n ></i>\n </span>\n {{ filter.filters.type }}\n </span>\n </ng-container>\n <ng-template #allTypes>\n <span class=\"text-nowrap\">\n {{ 'All alarm types' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last text-center\">\n <button\n class=\"btn-default btn\"\n [title]=\"'Clear filters' | translate\"\n *ngIf=\"activeFilters.length\"\n (click)=\"deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn-default btn btn--caret\"\n [title]=\"'Alarm types' | translate\"\n data-cy=\"c8y-alarm-type-filter\"\n dropdownToggle\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropdown-menu-action-bar\"\n style=\"max-width:unset; min-width: 250px\"\n *dropdownMenu\n >\n <c8y-alarm-event-selection-list\n [title]=\"'Alarm type filter' | translate\"\n [attr.name]=\"formControlName\"\n [config]=\"{\n title: 'Alarm type filter' | translate,\n allowChangingContext: false\n }\"\n [inline]=\"true\"\n [hideSource]=\"true\"\n [addButtonLabel]=\"'Manage alarm types' | translate\"\n [canEdit]=\"false\"\n [canDragAndDrop]=\"false\"\n [canRemove]=\"false\"\n [timelineType]=\"'ALARM'\"\n [activeToggleAsSwitch]=\"false\"\n [formControlName]=\"formControlName\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n icon=\"c8y-alarm\"\n [title]=\"'No alarm found' | translate\"\n [subtitle]=\"'There is no alarm to filter. You can still add a custom alarm.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </c8y-alarm-event-selection-list>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i6.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.AlarmEventSelectionListComponent, selector: "c8y-alarm-event-selection-list", inputs: ["timelineType", "canRemove", "canEdit", "canDragAndDrop", "title", "addButtonLabel", "hideSource", "inline", "activeToggleAsSwitch", "omitProperties", "config"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
122
122
|
}
|
|
123
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AlarmsTypeFilterComponent, decorators: [{
|
|
124
124
|
type: Component,
|
|
125
|
-
args: [{ selector: 'c8y-alarms-type-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <
|
|
125
|
+
args: [{ selector: 'c8y-alarms-type-filter', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <div\n class=\"dropdown\"\n title=\"{{ 'Filter by Alarm types' | translate }}\"\n dropdown\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group fit-w\">\n <div class=\"form-control d-flex a-i-center inner-scroll\">\n <ng-container *ngIf=\"activeFilters.length > 0; else allTypes\">\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let filter of activeFilters\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); deselect(filter)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <span\n class=\"circle-icon-wrapper circle-icon-wrapper--small\"\n [ngStyle]=\"{ 'background-color': filter.color }\"\n >\n <i\n class=\"stroked-icon\"\n c8yIcon=\"bell\"\n ></i>\n </span>\n {{ filter.filters.type }}\n </span>\n </ng-container>\n <ng-template #allTypes>\n <span class=\"text-nowrap\">\n {{ 'All alarm types' | translate }}\n </span>\n </ng-template>\n </div>\n <div class=\"input-group-btn input-group-btn--last text-center\">\n <button\n class=\"btn-default btn\"\n [title]=\"'Clear filters' | translate\"\n *ngIf=\"activeFilters.length\"\n (click)=\"deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn-default btn btn--caret\"\n [title]=\"'Alarm types' | translate\"\n data-cy=\"c8y-alarm-type-filter\"\n dropdownToggle\n >\n <i class=\"caret\"></i>\n </button>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropdown-menu-action-bar\"\n style=\"max-width:unset; min-width: 250px\"\n *dropdownMenu\n >\n <c8y-alarm-event-selection-list\n [title]=\"'Alarm type filter' | translate\"\n [attr.name]=\"formControlName\"\n [config]=\"{\n title: 'Alarm type filter' | translate,\n allowChangingContext: false\n }\"\n [inline]=\"true\"\n [hideSource]=\"true\"\n [addButtonLabel]=\"'Manage alarm types' | translate\"\n [canEdit]=\"false\"\n [canDragAndDrop]=\"false\"\n [canRemove]=\"false\"\n [timelineType]=\"'ALARM'\"\n [activeToggleAsSwitch]=\"false\"\n [formControlName]=\"formControlName\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n icon=\"c8y-alarm\"\n [title]=\"'No alarm found' | translate\"\n [subtitle]=\"'There is no alarm to filter. You can still add a custom alarm.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </c8y-alarm-event-selection-list>\n </div>\n </div>\n</form>\n" }]
|
|
126
126
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlarmEventSelectorService }, { type: i3.ActivatedRoute }, { type: i3.Router }], propDecorators: { alarms: [{
|
|
127
127
|
type: Input
|
|
128
128
|
}], onFilterChanged: [{
|
|
129
129
|
type: Output
|
|
130
130
|
}] } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXR5cGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdHlwZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy10eXBlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQWdCLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBTWhELE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1UsV0FBd0IsRUFDeEIseUJBQW9ELEVBQ3BELGNBQThCLEVBQzlCLE1BQWM7UUFIZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbkJ4QixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHbkMsb0JBQWUsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQixtQkFBYyxHQUFHLFlBQVksQ0FBQztRQUV2QyxjQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxJ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SSxDQUFDLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN4RCxJQUFJO2dCQUNKLE1BQU0sRUFBRSxJQUFJO2FBQ0gsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBaEpVLHlCQUF5QjtrR0FBekIseUJBQXlCLGtLQ3JCdEMseW1HQWlHQTs7MkZENUVhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx3QkFBd0I7MEtBS2xDLE1BQU07c0JBREwsS0FBSztnQkFNTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsYXJtRGV0YWlscywgQWxhcm1FdmVudFNlbGVjdG9yU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtdHlwZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLXR5cGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNUeXBlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIGFsYXJtczogSVJlc3VsdExpc3Q8SUFsYXJtPjtcblxuICBhY3RpdmVGaWx0ZXJzOiBBbGFybURldGFpbHNbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBvbkZpbHRlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBbGFybURldGFpbHNbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2xOYW1lID0gJ2FsYXJtcyc7XG4gIHJlYWRvbmx5IHF1ZXJ5UGFyYW1OYW1lID0gJ3R5cGVGaWx0ZXInO1xuXG4gIGZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgIFt0aGlzLmZvcm1Db250cm9sTmFtZV06IG5ldyBGb3JtQ29udHJvbChbXSlcbiAgfSk7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcXVlcnlQYXJhbSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYWxhcm1FdmVudFNlbGVjdG9yU2VydmljZTogQWxhcm1FdmVudFNlbGVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3QgYWxhcm1zOiBBbGFybURldGFpbHNbXSA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkudmFsdWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlQWxhcm1GaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1ldGVyKGFsYXJtcywgcGFyYW1zW3RoaXMucXVlcnlQYXJhbU5hbWVdKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYWxhcm1GaWx0ZXJzOiBBbGFybURldGFpbHNbXSkgPT5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKGFsYXJtRmlsdGVycylcbiAgICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cFxuICAgICAgLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSlcbiAgICAgIC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChhbGFybUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdKSA9PiB0aGlzLmFwcGx5RmlsdGVyQ2hhbmdlKGFsYXJtRmlsdGVycykpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFsYXJtcyAmJiBjaGFuZ2VzLmFsYXJtcy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRBbGFybXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBkZXNlbGVjdCh0eXBlOiBBbGFybURldGFpbHMpIHtcbiAgICBjb25zdCBhbGFybXM6IEFsYXJtRGV0YWlsc1tdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS52YWx1ZTtcbiAgICBjb25zdCBhbGFybUZpbHRlciA9IGFsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLmZpbHRlcnMudHlwZSA9PT0gdHlwZS5maWx0ZXJzLnR5cGUpO1xuICAgIGFsYXJtRmlsdGVyLl9fYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKGFsYXJtcyk7XG4gIH1cblxuICBkZXNlbGVjdEFsbCgpIHtcbiAgICBjb25zdCBhbGFybXM6IEFsYXJtRGV0YWlsc1tdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS52YWx1ZTtcbiAgICBjb25zdCBhbGxGaWx0ZXJzID0gYWxhcm1zLm1hcChhbGFybSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hbGFybSxcbiAgICAgICAgX19hY3RpdmU6IGZhbHNlXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZShhbGxGaWx0ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQWxhcm1GaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1ldGVyKFxuICAgIGFsYXJtRmlsdGVyczogQWxhcm1EZXRhaWxzW10sXG4gICAgZmlsdGVyVHlwZXNRdWVyeTogc3RyaW5nXG4gICk6IEFsYXJtRGV0YWlsc1tdIHtcbiAgICBpZiAoIWZpbHRlclR5cGVzUXVlcnkpIHtcbiAgICAgIHJldHVybiBhbGFybUZpbHRlcnM7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVzID0gZmlsdGVyVHlwZXNRdWVyeS5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBhbGFybUZpbHRlcnMubWFwKChhbGFybTogQWxhcm1EZXRhaWxzKSA9PiAoe1xuICAgICAgLi4uYWxhcm0sXG4gICAgICBfX2FjdGl2ZTogdHlwZXMuaW5jbHVkZXMoYWxhcm0uZmlsdGVycy50eXBlKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJDaGFuZ2UoYWxhcm1GaWx0ZXJzOiBBbGFybURldGFpbHNbXSkge1xuICAgIGNvbnN0IGFjdGl2ZXMgPSBhbGFybUZpbHRlcnMuZmlsdGVyKChhbGFybUZpbHRlcjogQWxhcm1EZXRhaWxzKSA9PiBhbGFybUZpbHRlci5fX2FjdGl2ZSk7XG4gICAgY29uc3QgbmV3UXVlcnlQYXJhbSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXMoYWN0aXZlcyk7XG4gICAgY29uc3QgaGFzQ2hhbmdlZCA9IG5ld1F1ZXJ5UGFyYW0gIT09IHRoaXMucXVlcnlQYXJhbTtcbiAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzID0gYWN0aXZlcztcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5hY3RpdmVGaWx0ZXJzKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgdHlwZUZpbHRlcjogbmV3UXVlcnlQYXJhbSB8fCBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWVyeVBhcmFtID0gbmV3UXVlcnlQYXJhbTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1zKGFjdGl2ZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWN0aXZlRmlsdGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5maWx0ZXJzLnR5cGUpLmpvaW4oJywnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0QWxhcm1zKCkge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy5xdWVyeVBhcmFtTmFtZSk7XG4gICAgY29uc3QgYWxhcm1UeXBlc0Zyb21DdXJyZW50bHlTaG93bkFsYXJtcyA9XG4gICAgICBhd2FpdCB0aGlzLmFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UuZ2V0VW5pcXVlQWxhcm1zT25seSh0aGlzLmFsYXJtcy5kYXRhKTtcbiAgICBjb25zdCBhbGFybVR5cGVzV2l0aE1pc3NpbmdBbmRDdXN0b20gPSBhd2FpdCB0aGlzLmFkZE1pc3NpbmdBbGFybVR5cGVzRnJvbVF1ZXJ5UGFyYW1zKFxuICAgICAgYWxhcm1UeXBlc0Zyb21DdXJyZW50bHlTaG93bkFsYXJtcyxcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyc1xuICAgICk7XG4gICAgY29uc3Qgc2VsZWN0YWJsZUFsYXJtVHlwZXMgPSB0aGlzLmdldEFjdGl2ZUFsYXJtRmlsdGVyc0Zyb21RdWVyeVBhcmFtZXRlcihcbiAgICAgIGFsYXJtVHlwZXNXaXRoTWlzc2luZ0FuZEN1c3RvbSxcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyc1xuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoc2VsZWN0YWJsZUFsYXJtVHlwZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRNaXNzaW5nQWxhcm1UeXBlc0Zyb21RdWVyeVBhcmFtcyhcbiAgICBhbGFybUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdLFxuICAgIHF1ZXJ5UGFyYW1ldGVyczogc3RyaW5nXG4gICk6IFByb21pc2U8QWxhcm1EZXRhaWxzW10+IHtcbiAgICBpZiAoIXF1ZXJ5UGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuIGFsYXJtRmlsdGVycztcbiAgICB9XG4gICAgY29uc3QgdHlwZXMgPSBxdWVyeVBhcmFtZXRlcnMuc3BsaXQoJywnKTtcbiAgICBjb25zdCBtaXNzaW5nRmlsdGVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdHlwZXNcbiAgICAgICAgLmZpbHRlcih0eXBlID0+ICFhbGFybUZpbHRlcnMuZmluZChhbGFybUZpbHRlciA9PiBhbGFybUZpbHRlci5maWx0ZXJzLnR5cGUgPT09IHR5cGUpKVxuICAgICAgICAubWFwKHR5cGUgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UuY3JlYXRlSXRlbSgnQUxBUk0nLCB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgc291cmNlOiBudWxsXG4gICAgICAgICAgfSBhcyBJQWxhcm0pO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIFsuLi5hbGFybUZpbHRlcnMsIC4uLm1pc3NpbmdGaWx0ZXJzXTtcbiAgfVxufVxuIiwiPGZvcm1cbiAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbj5cbiAgPGxhYmVsIGNsYXNzPVwibS1iLTAgZmxleC1uby1zaHJpbmtcIj5cbiAgICB7eyAnQWxhcm0gdHlwZXMnIHwgdHJhbnNsYXRlIH19XG4gIDwvbGFiZWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duXCJcbiAgICBkcm9wZG93blxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZml0LXdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1mbGV4IGEtaS1jZW50ZXIgaW5uZXItc2Nyb2xsXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDA7IGVsc2UgYWxsVHlwZXNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIGNoaXBcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBhY3RpdmVGaWx0ZXJzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGVzZWxlY3QoZmlsdGVyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaXJjbGUtaWNvbi13cmFwcGVyIGNpcmNsZS1pY29uLXdyYXBwZXItLXNtYWxsXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGZpbHRlci5jb2xvciB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0cm9rZWQtaWNvblwiXG4gICAgICAgICAgICAgICAgYzh5SWNvbj1cImJlbGxcIlxuICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAge3sgZmlsdGVyLmZpbHRlcnMudHlwZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYWxsVHlwZXM+XG4gICAgICAgICAge3sgJ0FsbCBhbGFybSB0eXBlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBpbnB1dC1ncm91cC1idG4tLWxhc3QgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWRlZmF1bHQgYnRuXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NsZWFyIGZpbHRlcnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVzZWxlY3RBbGwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwidGltZXNcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tZGVmYXVsdCBidG4gYnRuLS1jYXJldFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidBbGFybSB0eXBlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tdHlwZS1maWx0ZXJcIlxuICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImNhcmV0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LWFjdGlvbi1iYXJcIlxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjUwcHhcIlxuICAgICAgKmRyb3Bkb3duTWVudVxuICAgID5cbiAgICAgIDxjOHktYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgW3RpdGxlXT1cIidBbGFybSB0eXBlIGZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cImZvcm1Db250cm9sTmFtZVwiXG4gICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgIHRpdGxlOiAnQWxhcm0gdHlwZSBmaWx0ZXInIHwgdHJhbnNsYXRlLFxuICAgICAgICAgIGFsbG93Q2hhbmdpbmdDb250ZXh0OiBmYWxzZVxuICAgICAgICB9XCJcbiAgICAgICAgW2lubGluZV09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVTb3VyY2VdPVwidHJ1ZVwiXG4gICAgICAgIFthZGRCdXR0b25MYWJlbF09XCInTWFuYWdlIGFsYXJtIHR5cGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtjYW5FZGl0XT1cImZhbHNlXCJcbiAgICAgICAgW2NhbkRyYWdBbmREcm9wXT1cImZhbHNlXCJcbiAgICAgICAgW2NhblJlbW92ZV09XCJmYWxzZVwiXG4gICAgICAgIFt0aW1lbGluZVR5cGVdPVwiJ0FMQVJNJ1wiXG4gICAgICAgIFthY3RpdmVUb2dnbGVBc1N3aXRjaF09XCJmYWxzZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIGNsYXNzPVwicC10LThcIlxuICAgICAgICAgIGljb249XCJjOHktYWxhcm1cIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gYWxhcm0gZm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoZXJlIGlzIG5vIGFsYXJtIHRvIGZpbHRlci4gWW91IGNhbiBzdGlsbCBhZGQgYSBjdXN0b20gYWxhcm0uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgIDwvYzh5LWFsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXR5cGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdHlwZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vYWxhcm1zL2FsYXJtcy10eXBlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQWdCLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBTWhELE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1UsV0FBd0IsRUFDeEIseUJBQW9ELEVBQ3BELGNBQThCLEVBQzlCLE1BQWM7UUFIZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBbkJ4QixrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHbkMsb0JBQWUsR0FBaUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQixtQkFBYyxHQUFHLFlBQVksQ0FBQztRQUV2QyxjQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxJ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SSxDQUFDLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN4RCxJQUFJO2dCQUNKLE1BQU0sRUFBRSxJQUFJO2FBQ0gsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBaEpVLHlCQUF5QjtrR0FBekIseUJBQXlCLGtLQ3JCdEMsb29HQWlHQTs7MkZENUVhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx3QkFBd0I7MEtBS2xDLE1BQU07c0JBREwsS0FBSztnQkFNTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUFsYXJtLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsYXJtRGV0YWlscywgQWxhcm1FdmVudFNlbGVjdG9yU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hbGFybXMtdHlwZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxhcm1zLXR5cGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNUeXBlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIGFsYXJtczogSVJlc3VsdExpc3Q8SUFsYXJtPjtcblxuICBhY3RpdmVGaWx0ZXJzOiBBbGFybURldGFpbHNbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBvbkZpbHRlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBbGFybURldGFpbHNbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2xOYW1lID0gJ2FsYXJtcyc7XG4gIHJlYWRvbmx5IHF1ZXJ5UGFyYW1OYW1lID0gJ3R5cGVGaWx0ZXInO1xuXG4gIGZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgIFt0aGlzLmZvcm1Db250cm9sTmFtZV06IG5ldyBGb3JtQ29udHJvbChbXSlcbiAgfSk7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcXVlcnlQYXJhbSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYWxhcm1FdmVudFNlbGVjdG9yU2VydmljZTogQWxhcm1FdmVudFNlbGVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3QgYWxhcm1zOiBBbGFybURldGFpbHNbXSA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkudmFsdWU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlQWxhcm1GaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1ldGVyKGFsYXJtcywgcGFyYW1zW3RoaXMucXVlcnlQYXJhbU5hbWVdKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYWxhcm1GaWx0ZXJzOiBBbGFybURldGFpbHNbXSkgPT5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKGFsYXJtRmlsdGVycylcbiAgICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cFxuICAgICAgLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSlcbiAgICAgIC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChhbGFybUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdKSA9PiB0aGlzLmFwcGx5RmlsdGVyQ2hhbmdlKGFsYXJtRmlsdGVycykpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmFsYXJtcyAmJiBjaGFuZ2VzLmFsYXJtcy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRBbGFybXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBkZXNlbGVjdCh0eXBlOiBBbGFybURldGFpbHMpIHtcbiAgICBjb25zdCBhbGFybXM6IEFsYXJtRGV0YWlsc1tdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS52YWx1ZTtcbiAgICBjb25zdCBhbGFybUZpbHRlciA9IGFsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLmZpbHRlcnMudHlwZSA9PT0gdHlwZS5maWx0ZXJzLnR5cGUpO1xuICAgIGFsYXJtRmlsdGVyLl9fYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKGFsYXJtcyk7XG4gIH1cblxuICBkZXNlbGVjdEFsbCgpIHtcbiAgICBjb25zdCBhbGFybXM6IEFsYXJtRGV0YWlsc1tdID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKS52YWx1ZTtcbiAgICBjb25zdCBhbGxGaWx0ZXJzID0gYWxhcm1zLm1hcChhbGFybSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hbGFybSxcbiAgICAgICAgX19hY3RpdmU6IGZhbHNlXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkucGF0Y2hWYWx1ZShhbGxGaWx0ZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlQWxhcm1GaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1ldGVyKFxuICAgIGFsYXJtRmlsdGVyczogQWxhcm1EZXRhaWxzW10sXG4gICAgZmlsdGVyVHlwZXNRdWVyeTogc3RyaW5nXG4gICk6IEFsYXJtRGV0YWlsc1tdIHtcbiAgICBpZiAoIWZpbHRlclR5cGVzUXVlcnkpIHtcbiAgICAgIHJldHVybiBhbGFybUZpbHRlcnM7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVzID0gZmlsdGVyVHlwZXNRdWVyeS5zcGxpdCgnLCcpO1xuICAgIHJldHVybiBhbGFybUZpbHRlcnMubWFwKChhbGFybTogQWxhcm1EZXRhaWxzKSA9PiAoe1xuICAgICAgLi4uYWxhcm0sXG4gICAgICBfX2FjdGl2ZTogdHlwZXMuaW5jbHVkZXMoYWxhcm0uZmlsdGVycy50eXBlKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJDaGFuZ2UoYWxhcm1GaWx0ZXJzOiBBbGFybURldGFpbHNbXSkge1xuICAgIGNvbnN0IGFjdGl2ZXMgPSBhbGFybUZpbHRlcnMuZmlsdGVyKChhbGFybUZpbHRlcjogQWxhcm1EZXRhaWxzKSA9PiBhbGFybUZpbHRlci5fX2FjdGl2ZSk7XG4gICAgY29uc3QgbmV3UXVlcnlQYXJhbSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXMoYWN0aXZlcyk7XG4gICAgY29uc3QgaGFzQ2hhbmdlZCA9IG5ld1F1ZXJ5UGFyYW0gIT09IHRoaXMucXVlcnlQYXJhbTtcbiAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzID0gYWN0aXZlcztcbiAgICAgIHRoaXMub25GaWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5hY3RpdmVGaWx0ZXJzKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgdHlwZUZpbHRlcjogbmV3UXVlcnlQYXJhbSB8fCBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWVyeVBhcmFtID0gbmV3UXVlcnlQYXJhbTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1zKGFjdGl2ZUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWN0aXZlRmlsdGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5maWx0ZXJzLnR5cGUpLmpvaW4oJywnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0QWxhcm1zKCkge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy5xdWVyeVBhcmFtTmFtZSk7XG4gICAgY29uc3QgYWxhcm1UeXBlc0Zyb21DdXJyZW50bHlTaG93bkFsYXJtcyA9XG4gICAgICBhd2FpdCB0aGlzLmFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UuZ2V0VW5pcXVlQWxhcm1zT25seSh0aGlzLmFsYXJtcy5kYXRhKTtcbiAgICBjb25zdCBhbGFybVR5cGVzV2l0aE1pc3NpbmdBbmRDdXN0b20gPSBhd2FpdCB0aGlzLmFkZE1pc3NpbmdBbGFybVR5cGVzRnJvbVF1ZXJ5UGFyYW1zKFxuICAgICAgYWxhcm1UeXBlc0Zyb21DdXJyZW50bHlTaG93bkFsYXJtcyxcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyc1xuICAgICk7XG4gICAgY29uc3Qgc2VsZWN0YWJsZUFsYXJtVHlwZXMgPSB0aGlzLmdldEFjdGl2ZUFsYXJtRmlsdGVyc0Zyb21RdWVyeVBhcmFtZXRlcihcbiAgICAgIGFsYXJtVHlwZXNXaXRoTWlzc2luZ0FuZEN1c3RvbSxcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyc1xuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoc2VsZWN0YWJsZUFsYXJtVHlwZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRNaXNzaW5nQWxhcm1UeXBlc0Zyb21RdWVyeVBhcmFtcyhcbiAgICBhbGFybUZpbHRlcnM6IEFsYXJtRGV0YWlsc1tdLFxuICAgIHF1ZXJ5UGFyYW1ldGVyczogc3RyaW5nXG4gICk6IFByb21pc2U8QWxhcm1EZXRhaWxzW10+IHtcbiAgICBpZiAoIXF1ZXJ5UGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuIGFsYXJtRmlsdGVycztcbiAgICB9XG4gICAgY29uc3QgdHlwZXMgPSBxdWVyeVBhcmFtZXRlcnMuc3BsaXQoJywnKTtcbiAgICBjb25zdCBtaXNzaW5nRmlsdGVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdHlwZXNcbiAgICAgICAgLmZpbHRlcih0eXBlID0+ICFhbGFybUZpbHRlcnMuZmluZChhbGFybUZpbHRlciA9PiBhbGFybUZpbHRlci5maWx0ZXJzLnR5cGUgPT09IHR5cGUpKVxuICAgICAgICAubWFwKHR5cGUgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmFsYXJtRXZlbnRTZWxlY3RvclNlcnZpY2UuY3JlYXRlSXRlbSgnQUxBUk0nLCB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgc291cmNlOiBudWxsXG4gICAgICAgICAgfSBhcyBJQWxhcm0pO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIFsuLi5hbGFybUZpbHRlcnMsIC4uLm1pc3NpbmdGaWx0ZXJzXTtcbiAgfVxufVxuIiwiPGZvcm1cbiAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgIHRpdGxlPVwie3sgJ0ZpbHRlciBieSBBbGFybSB0eXBlcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIGRyb3Bkb3duXG4gICAgI2ZpbHRlcnNEcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgICBbY2RrVHJhcEZvY3VzXT1cImZpbHRlcnNEcm9wZG93bi5pc09wZW5cIlxuICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBmaXQtd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbCBkLWZsZXggYS1pLWNlbnRlciBpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMDsgZWxzZSBhbGxUeXBlc1wiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRhZyB0YWctLWluZm8gY2hpcFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGFjdGl2ZUZpbHRlcnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1jbGVhbiB0ZXh0LTEwXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZXNlbGVjdChmaWx0ZXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRpbWVzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNpcmNsZS1pY29uLXdyYXBwZXIgY2lyY2xlLWljb24td3JhcHBlci0tc21hbGxcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogZmlsdGVyLmNvbG9yIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3Ryb2tlZC1pY29uXCJcbiAgICAgICAgICAgICAgICBjOHlJY29uPVwiYmVsbFwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7eyBmaWx0ZXIuZmlsdGVycy50eXBlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhbGxUeXBlcz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICB7eyAnQWxsIGFsYXJtIHR5cGVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBpbnB1dC1ncm91cC1idG4tLWxhc3QgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWRlZmF1bHQgYnRuXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NsZWFyIGZpbHRlcnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUZpbHRlcnMubGVuZ3RoXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVzZWxlY3RBbGwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwidGltZXNcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4tZGVmYXVsdCBidG4gYnRuLS1jYXJldFwiXG4gICAgICAgICAgW3RpdGxlXT1cIidBbGFybSB0eXBlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktYWxhcm0tdHlwZS1maWx0ZXJcIlxuICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImNhcmV0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LWFjdGlvbi1iYXJcIlxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6dW5zZXQ7IG1pbi13aWR0aDogMjUwcHhcIlxuICAgICAgKmRyb3Bkb3duTWVudVxuICAgID5cbiAgICAgIDxjOHktYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgW3RpdGxlXT1cIidBbGFybSB0eXBlIGZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cImZvcm1Db250cm9sTmFtZVwiXG4gICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgIHRpdGxlOiAnQWxhcm0gdHlwZSBmaWx0ZXInIHwgdHJhbnNsYXRlLFxuICAgICAgICAgIGFsbG93Q2hhbmdpbmdDb250ZXh0OiBmYWxzZVxuICAgICAgICB9XCJcbiAgICAgICAgW2lubGluZV09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVTb3VyY2VdPVwidHJ1ZVwiXG4gICAgICAgIFthZGRCdXR0b25MYWJlbF09XCInTWFuYWdlIGFsYXJtIHR5cGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtjYW5FZGl0XT1cImZhbHNlXCJcbiAgICAgICAgW2NhbkRyYWdBbmREcm9wXT1cImZhbHNlXCJcbiAgICAgICAgW2NhblJlbW92ZV09XCJmYWxzZVwiXG4gICAgICAgIFt0aW1lbGluZVR5cGVdPVwiJ0FMQVJNJ1wiXG4gICAgICAgIFthY3RpdmVUb2dnbGVBc1N3aXRjaF09XCJmYWxzZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgID5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIGNsYXNzPVwicC10LThcIlxuICAgICAgICAgIGljb249XCJjOHktYWxhcm1cIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gYWxhcm0gZm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1RoZXJlIGlzIG5vIGFsYXJtIHRvIGZpbHRlci4gWW91IGNhbiBzdGlsbCBhZGQgYSBjdXN0b20gYWxhcm0uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgIDwvYzh5LWFsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -21,6 +21,7 @@ export class AlarmsViewService {
|
|
|
21
21
|
this.optionsService = optionsService;
|
|
22
22
|
this.ALARM_REFRESH_TYPE_KEY = 'alarmsRefreshType';
|
|
23
23
|
this.DEFAULT_INTERVAL_VALUE = 30_000;
|
|
24
|
+
this.DEFAULT_REFRESH_OPTION_VALUE = 'interval';
|
|
24
25
|
this.DEFAULT_INTERVAL_VALUES = [5_000, 10_000, 15_000, 30_000, 60_000];
|
|
25
26
|
this.REALTIME_UPDATE_ALARMS_MESSAGE = gettext('The list was updated, click to refresh.');
|
|
26
27
|
this.reloadAlarmsList$ = new Subject();
|
|
@@ -40,11 +41,12 @@ export class AlarmsViewService {
|
|
|
40
41
|
*
|
|
41
42
|
* @param severities an array of severities to filter the alarms.
|
|
42
43
|
* @param showCleared flag indicating whether to show cleared alarms. Defaults to false.
|
|
44
|
+
* @param selectedDates an array of two dates to filter alarms by creation and last update dates.
|
|
43
45
|
* @param filter additional query filters for retrieving alarms.
|
|
44
46
|
*
|
|
45
47
|
* @returns A promise that resolves to a list of alarms satisfying the specified filters.
|
|
46
48
|
*/
|
|
47
|
-
|
|
49
|
+
retrieveFilteredAlarms(severities, showCleared = false, selectedDates, filter) {
|
|
48
50
|
const severitiesQuery = this.getSeverityQueryParameter(severities);
|
|
49
51
|
const statusesQuery = this.getStatusQueryParameter(showCleared);
|
|
50
52
|
const _filter = {
|
|
@@ -52,10 +54,22 @@ export class AlarmsViewService {
|
|
|
52
54
|
withTotalPages: true,
|
|
53
55
|
...(severitiesQuery && { severity: severitiesQuery }),
|
|
54
56
|
...(statusesQuery && { status: statusesQuery }),
|
|
57
|
+
...(selectedDates && {
|
|
58
|
+
lastUpdatedFrom: selectedDates[0].toISOString(),
|
|
59
|
+
createdTo: selectedDates[1].toISOString()
|
|
60
|
+
}),
|
|
55
61
|
...filter
|
|
56
62
|
};
|
|
57
63
|
return this.alarmService.list(_filter);
|
|
58
64
|
}
|
|
65
|
+
retrieveAlarmsByDate(dates) {
|
|
66
|
+
return this.alarmService.list({
|
|
67
|
+
lastUpdatedFrom: dates[0].toISOString(),
|
|
68
|
+
createdTo: dates[1].toISOString(),
|
|
69
|
+
pageSize: 50,
|
|
70
|
+
withTotalPages: true
|
|
71
|
+
});
|
|
72
|
+
}
|
|
59
73
|
/**
|
|
60
74
|
* Updates the state to enable or disable intervals.
|
|
61
75
|
* @param value - A boolean value to indicate whether to enable intervals.
|
|
@@ -228,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
228
242
|
providedIn: 'root'
|
|
229
243
|
}]
|
|
230
244
|
}], ctorParameters: () => [{ type: i1.AlarmService }, { type: i2.OptionsService }] });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsV0FBVyxFQUtYLFFBQVEsRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBR0wsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsNEJBQXVCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsbUNBQThCLEdBQUcsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFHN0Ysc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF0QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtC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LEVBQUUsS0FBYztRQUNoRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0sseUJBQXlCLENBQUMsVUFBMEI7UUFDMUQsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyx1QkFBdUIsQ0FBQyxXQUFvQjtRQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFzQixDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVztZQUNsQyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBL09VLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGFybVF1ZXJ5RmlsdGVyLFxuICBBbGFybVNlcnZpY2UsXG4gIEFMQVJNX1NUQVRVU19MQUJFTFMsXG4gIEFsYXJtU3RhdHVzVHlwZSxcbiAgQWxhcm1TdGF0dXMsXG4gIElBbGFybSxcbiAgSVJlc3VsdExpc3QsXG4gIFNldmVyaXR5RmlsdGVyLFxuICBTZXZlcml0eVR5cGUsXG4gIFNldmVyaXR5XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgQ29udGV4dERhdGEsXG4gIE9wdGlvbnNTZXJ2aWNlLFxuICBWaWV3Q29udGV4dCxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUxBUk1TX1BBVEggfSBmcm9tICcuL2FsYXJtcy5tb2RlbCc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgbWFuYWdpbmcgYW5kIHJldHJpZXZpbmcgYWxhcm1zIGRhdGEgd2l0aGluIHRoZSBhbGFybXMgdmlldy5cbiAqXG4gKiBUaGUgYEFsYXJtc1ZpZXdTZXJ2aWNlYCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRvIGludGVyYWN0IHdpdGggYWxhcm1zLFxuICogaW5jbHVkaW5nIGZpbHRlcmluZywgY291bnRpbmcsIGFuZCB0cmFuc2xhdGlvbi1yZWxhdGVkIG9wZXJhdGlvbnMgaW4gYW4gYWxhcm1zIHZpZXcuXG4gKlxuICogVGhpcyBzZXJ2aWNlIHJlbGllcyBvbiB0aGUgYEFsYXJtU2VydmljZWAgZm9yIGZldGNoaW5nIGFsYXJtIGRhdGEgYW5kIHRoZSBgT3B0aW9uc1NlcnZpY2VgXG4gKiBmb3IgY29uZmlndXJpbmcgYWxhcm1zIHZpZXcgb3B0aW9ucy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWxhcm1zVmlld1NlcnZpY2Uge1xuICByZWFkb25seSBBTEFSTV9SRUZSRVNIX1RZUEVfS0VZOiBrZXlvZiBBcHBsaWNhdGlvbk9wdGlvbnMgPSAnYWxhcm1zUmVmcmVzaFR5cGUnO1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFID0gMzBfMDAwO1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFUyA9IFs1XzAwMCwgMTBfMDAwLCAxNV8wMDAsIDMwXzAwMCwgNjBfMDAwXTtcbiAgcmVhZG9ubHkgUkVBTFRJTUVfVVBEQVRFX0FMQVJNU19NRVNTQUdFID0gZ2V0dGV4dCgnVGhlIGxpc3Qgd2FzIHVwZGF0ZWQsIGNsaWNrIHRvIHJlZnJlc2guJyk7XG5cbiAgaXNJbnRlcnZhbEVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWxvYWRBbGFybXNMaXN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaXNJbnRlcnZhbEVuYWJsZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtU2VydmljZTogQWxhcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbEVuYWJsZWQkID0gdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgc3ViamVjdCB0byBpbml0aWFsaXplIHRoZSBhbGFybXMgcmVsb2FkaW5nLlxuICAgKi9cbiAgdXBkYXRlQWxhcm1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxhcm1zIGZpbHRlcmVkIGJ5IHNwZWNpZmllZCBzZXZlcml0aWVzIGFuZCBvdGhlciBvcHRpb25hbCBxdWVyeSBmaWx0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyBhbiBhcnJheSBvZiBzZXZlcml0aWVzIHRvIGZpbHRlciB0aGUgYWxhcm1zLlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gc2hvdyBjbGVhcmVkIGFsYXJtcy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEBwYXJhbSBmaWx0ZXIgYWRkaXRpb25hbCBxdWVyeSBmaWx0ZXJzIGZvciByZXRyaWV2aW5nIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBsaXN0IG9mIGFsYXJtcyBzYXRpc2Z5aW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVycy5cbiAgICovXG4gIHJldHJpZXZlQWxhcm1zKFxuICAgIHNldmVyaXRpZXM6IFNldmVyaXR5VHlwZVtdLFxuICAgIHNob3dDbGVhcmVkID0gZmFsc2UsXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICBjb25zdCBzZXZlcml0aWVzUXVlcnkgPSB0aGlzLmdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllcyk7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuXG4gICAgY29uc3QgX2ZpbHRlcjogQWxhcm1RdWVyeUZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgLi4uKHNldmVyaXRpZXNRdWVyeSAmJiB7IHNldmVyaXR5OiBzZXZlcml0aWVzUXVlcnkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3QoX2ZpbHRlcik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgdG8gZW5hYmxlIG9yIGRpc2FibGUgaW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUgd2hldGhlciB0byBlbmFibGUgaW50ZXJ2YWxzLlxuICAgKi9cbiAgdXBkYXRlSW50ZXJ2YWxTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkPy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjb3VudCBvZiBhbGFybXMgZmlsdGVyZWQgYnkgc2V2ZXJpdHkgYW5kIGNsZWFyYW5jZSBzdGF0dXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIFRoZSBzZXZlcml0eSBsZXZlbCB0byBmaWx0ZXIgYnkgKGUuZy4sIENSSVRJQ0FMLCBNQUpPUiwgZXRjLikuXG4gICAqIEBwYXJhbSBzaG93Q2xlYXJlZCAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgY2xlYXJlZCBhbGFybXMgaW4gdGhlIGNvdW50LlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXIgY3JpdGVyaWEgZm9yIGFsYXJtcy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG51bWJlciBvZiBhbGFybXMgdGhhdCBtYXRjaCB0aGUgZmlsdGVyIGNyaXRlcmlhLlxuICAgKlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxhcm1zQ291bnRCeVNldmVyaXR5KFxuICAgIHNldmVyaXR5OiBTZXZlcml0eVR5cGUsXG4gICAgc2hvd0NsZWFyZWQ6IGJvb2xlYW4sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHN0YXR1c2VzUXVlcnkgPSB0aGlzLmdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkKTtcbiAgICBjb25zdCBfZmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyID0ge1xuICAgICAgLi4uKHNldmVyaXR5ICYmIHsgc2V2ZXJpdHk6IHNldmVyaXR5IH0pLFxuICAgICAgLi4uKHN0YXR1c2VzUXVlcnkgJiYgeyBzdGF0dXM6IHN0YXR1c2VzUXVlcnkgfSksXG4gICAgICAuLi5maWx0ZXJcbiAgICB9O1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hbGFybVNlcnZpY2UuY291bnQoX2ZpbHRlcik7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgYWxhcm1zIHJlZnJlc2ggdHlwZSBmcm9tIHRoZSBPcHRpb25zU2VydmljZVxuICAgKiBhbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIGl0IGlzIHNldCB0byBcImludGVydmFsXCIuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm1zIHJlZnJlc2ggdHlwZSBpcyBcImludGVydmFsLFwiIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldCh0aGlzLkFMQVJNX1JFRlJFU0hfVFlQRV9LRVksICdpbnRlcnZhbCcpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJ2ludGVydmFsJztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMgYmFzZWQgb24gdGhlIG5ldyBzZXZlcml0eSBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eVVwZGF0ZXMgLSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlcyB0byBlYWNoIHNldmVyaXR5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSByZXByZXNlbnRpbmcgdGhlIHVwZGF0ZWQgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICovXG4gIHVwZGF0ZVNlbGVjdGVkU2V2ZXJpdGllcyhzZXZlcml0eVVwZGF0ZXM6IFNldmVyaXR5RmlsdGVyKTogU2V2ZXJpdHlUeXBlW10ge1xuICAgIHJldHVybiAoT2JqZWN0LmtleXMoc2V2ZXJpdHlVcGRhdGVzKSBhcyBTZXZlcml0eVR5cGVbXSlcbiAgICAgIC5maWx0ZXIoa2V5ID0+IHNldmVyaXR5VXBkYXRlc1trZXldKVxuICAgICAgLm1hcChrZXkgPT4ga2V5LnRvVXBwZXJDYXNlKCkgYXMgU2V2ZXJpdHlUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGFjdGl2ZSBhbGFybXMgb2YgdGhlIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBmb3IgdGhlIGdpdmVuIGxpc3Qgb2Ygc2V2ZXJpdGllcyBieSBtYWtpbmcgYnVsayB1cGRhdGUgY2FsbHMuIElmIG5vIHNldmVyaXRpZXMgYXJlIHNlbGVjdGVkLCBpdCBkZWZhdWx0cyB0byB1c2luZyBhbGwgYXZhaWxhYmxlIHNldmVyaXRpZXMuXG4gICAqIEl0IHdvcmtzIGJ5IHNlbmRpbmcgYSBzZXJpZXMgb2YgdXBkYXRlIHJlcXVlc3RzIGZvciBlYWNoIHNldmVyaXR5IGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGluZGljYXRpbmcgaWYgYWxsIGFsYXJtcyB3ZXJlIHJlc29sdmVkIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRTZXZlcml0aWVzIEFuIGFycmF5IG9mIHNldmVyaXRpZXMgdG8gYmUgY2xlYXJlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgc2V2ZXJpdGllcyB3aWxsIGJlIGNsZWFyZWQuXG4gICAqIEBwYXJhbSBzb3VyY2VJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGFybXMgdG8gYmUgY2xlYXJlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgd2l0aCBhIGZsYWcgYHJlc29sdmVkSW1tZWRpYXRlbHlgLiBUaGUgZmxhZyBpcyB0cnVlIGlmIGFsbCBhbGFybXMgZm9yIGFsbCBzZWxlY3RlZCBzZXZlcml0aWVzIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHk7IG90aGVyd2lzZSBmYWxzZS5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzZXZlcml0aWVzVG9DbGVhcjogU2V2ZXJpdHlUeXBlW10gPSBbU2V2ZXJpdHkuTUFKT1IsIFNldmVyaXR5Lk1JTk9SXTtcbiAgICpcbiAgICogY2xlYXJBbGxBY3RpdmVBbGFybXMoc2V2ZXJpdGllc1RvQ2xlYXIpLnRoZW4oKHsgcmVzb2x2ZWRJbW1lZGlhdGVseSB9KSA9PiB7XG4gICAqICAgaWYgKHJlc29sdmVkSW1tZWRpYXRlbHkpIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdBbGwgc2VsZWN0ZWQgYWxhcm1zIHdlcmUgY2xlYXJlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdTb21lIGFsYXJtcyBjb3VsZCBub3QgYmUgY2xlYXJlZC4nKTtcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogKipOb3RlKipcbiAgICogLSBUaGUgbWV0aG9kIHVzZXMgdGhlIGBhbGFybVNlcnZpY2UudXBkYXRlQnVsa2AgZm9yIGVhY2ggc2V2ZXJpdHkgdG8gY2xlYXIgdGhlIGFjdGl2ZSBhbGFybXMuXG4gICAqIC0gSXQgbWF5IGZldGNoIHRoZSBgc291cmNlSWRgIGJhc2VkIG9uIHRoZSB2aWV3IChpZiBhcHBsaWNhYmxlKSBhbmQgaW5jbHVkZSBpdCBhcyBhIHF1ZXJ5IHBhcmFtZXRlciBpbiB0aGUgdXBkYXRlIGNhbGxzLlxuICAgKiAtIFRoZSBtZXRob2QgcmV0dXJucyBpbW1lZGlhdGVseSBidXQgdGhlIHJldHVybmVkIFByb21pc2UgbmVlZHMgdG8gaGF2ZSBhIGB0aGVuYCBvciBgY2F0Y2hgIG1ldGhvZCBjYWxsIHRvIGhhbmRsZSB0aGUgcmVzdWx0IG9yIGVycm9yIHJlc3BlY3RpdmVseS5cbiAgICogLSBVc2VzIGBQcm9taXNlLmFsbGAgdG8gd2FpdCBmb3IgYWxsIHVwZGF0ZSByZXF1ZXN0cyB0byBjb21wbGV0ZSBiZWZvcmUgcmVzb2x2aW5nIHRoZSBmaW5hbCByZXN1bHQuXG4gICAqL1xuICBhc3luYyBjbGVhckFsbEFjdGl2ZUFsYXJtcyhcbiAgICBzZWxlY3RlZFNldmVyaXRpZXM6IFNldmVyaXR5VHlwZVtdLFxuICAgIHNvdXJjZUlkOiBzdHJpbmcgfCBudW1iZXJcbiAgKTogUHJvbWlzZTx7IHJlc29sdmVkSW1tZWRpYXRlbHk6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHNldmVyaXRpZXNUb1VwZGF0ZSA9IHNlbGVjdGVkU2V2ZXJpdGllcyB8fCBTZXZlcml0eTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LnZhbHVlcyhzZXZlcml0aWVzVG9VcGRhdGUpLm1hcCgoc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSkgPT4ge1xuICAgICAgY29uc3QgY29tbW9uUGFyYW1zID0geyByZXNvbHZlZDogZmFsc2UsIHNldmVyaXR5IH07XG5cbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBzb3VyY2VJZFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmNvbW1vblBhcmFtcyxcbiAgICAgICAgICAgIHNvdXJjZTogc291cmNlSWQsXG4gICAgICAgICAgICB3aXRoU291cmNlQXNzZXRzOiB0cnVlLFxuICAgICAgICAgICAgd2l0aFNvdXJjZURldmljZXM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIDogY29tbW9uUGFyYW1zO1xuXG4gICAgICByZXR1cm4gdGhpcy5hbGFybVNlcnZpY2UudXBkYXRlQnVsayh7IHN0YXR1czogQWxhcm1TdGF0dXMuQ0xFQVJFRCB9LCBwYXJhbWV0ZXJzKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb2x2ZWRJbW1lZGlhdGVseTogcmVzcG9uc2VzLmV2ZXJ5KHJlcyA9PiByZXMpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGxpbmsgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbnRleHQgZGF0YS5cbiAgICogQHBhcmFtIGNvbnRleHREYXRhIFRoZSBjb250ZXh0IHRoZSBuYXZpZ2F0aW9uIHdhcyB0cmlnZ2VyZWQgZnJvbS5cbiAgICogQHBhcmFtIGFsYXJtIFRoZSBhbGFybSB0byBuYXZpZ2F0ZSB0by5cbiAgICogQHJldHVybnMgQSBsaW5rIHRvIGJlIHVzZWQgYXMgYW4gdXJsIG5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJMaW5rKGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nIHtcbiAgICBsZXQgZGV0YWlsVXJsID0gYC8ke0FMQVJNU19QQVRIfWA7XG4gICAgaWYgKGFsYXJtKSB7XG4gICAgICBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9LyR7YWxhcm0uaWR9YDtcbiAgICB9XG4gICAgaWYgKCFjb250ZXh0RGF0YSkge1xuICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbnRleHREYXRhLmNvbnRleHQpIHtcbiAgICAgIGNhc2UgVmlld0NvbnRleHQuRGV2aWNlOlxuICAgICAgICByZXR1cm4gYC9kZXZpY2UvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5Hcm91cDpcbiAgICAgICAgcmV0dXJuIGAvZ3JvdXAvJHtjb250ZXh0RGF0YS5jb250ZXh0RGF0YS5pZH0ke2RldGFpbFVybH1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRldGFpbFVybDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29ycmVjdCBhcnJheSBuYXZpZ2F0aW9uLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhIHJvdXRlci5uYXZpZ2F0aW9uLlxuICAgKi9cbiAgZ2V0Um91dGVyTmF2aWdhdGlvbkFycmF5KGNvbnRleHREYXRhPzogQ29udGV4dERhdGEsIGFsYXJtPzogSUFsYXJtKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldFJvdXRlckxpbmsoY29udGV4dERhdGEsIGFsYXJtKS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdmFsdWUgZm9yIHF1ZXJ5IHBhcmFtZXRlciBmb3IgZmlsdGVyaW5nIGFsYXJtcyBieSBzZXZlcml0eSBiYXNlZCBvbiBhcnJheSBvZiBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyAtIEFuIGFycmF5IG9mIGFsYXJtIHNldmVyaXR5IHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGZpbHRlci5cbiAgICogSWYgdGhlIGFycmF5IGlzIGVtcHR5IG9yIHVuZGVmaW5lZCwgbm8gc2V2ZXJpdHkgZmlsdGVyIHdpbGwgYmUgYXBwbGllZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHNlbGVjdGVkIGFsYXJtIHNldmVyaXRpZXMsXG4gICAqIG9yIG51bGwgaWYgbm8gc2V2ZXJpdGllcyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBwcml2YXRlIGdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXNldmVyaXRpZXMgfHwgc2V2ZXJpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNldmVyaXRpZXMubGVuZ3RoID09PSBPYmplY3Qua2V5cyhTZXZlcml0eSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldmVyaXRpZXMuam9pbignLCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHN0YXR1c2VzIGJhc2VkIG9uIHNob3dDbGVhcmVkIG9wdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gQSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBpbmNsdWRlIGNsZWFyZWQgc3RhdHVzZXMuXG4gICAqIElmIHRydWUsIGFsbCBzdGF0dXNlcywgaW5jbHVkaW5nICdDTEVBUkVEJywgd2lsbCBiZSBpbmNsdWRlZDsgaWYgZmFsc2UsICdDTEVBUkVEJyB3aWxsIGJlIGV4Y2x1ZGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgYWxhcm0gc3RhdHVzZXMuXG4gICAqL1xuICBwcml2YXRlIGdldFN0YXR1c1F1ZXJ5UGFyYW1ldGVyKHNob3dDbGVhcmVkOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0dXNlcyA9IE9iamVjdC5rZXlzKEFMQVJNX1NUQVRVU19MQUJFTFMpIGFzIEFsYXJtU3RhdHVzVHlwZVtdO1xuICAgIGNvbnN0IGZpbHRlcmVkU3RhdHVzZXMgPSBzaG93Q2xlYXJlZFxuICAgICAgPyBzdGF0dXNlc1xuICAgICAgOiBzdGF0dXNlcy5maWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ0NMRUFSRUQnKTtcbiAgICByZXR1cm4gZmlsdGVyZWRTdGF0dXNlcy5qb2luKCcsJyk7XG4gIH1cbn1cbiJdfQ==
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm1zLXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtcy9hbGFybXMtdmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLFlBQVksRUFDWixtQkFBbUIsRUFFbkIsV0FBVyxFQUtYLFFBQVEsRUFDVCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBSUwsY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBWTVCLFlBQ1UsWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBYi9CLDJCQUFzQixHQUE2QixtQkFBbUIsQ0FBQztRQUN2RSwyQkFBc0IsR0FBRyxNQUFNLENBQUM7UUFDaEMsaUNBQTRCLEdBQUcsVUFBVSxDQUFDO1FBQzFDLDRCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLG1DQUE4QixHQUFHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBRzdGLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFRdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMs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QUFDLG1CQUFtQixDQUFzQixDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVztZQUNsQyxDQUFDLENBQUMsUUFBUTtZQUNWLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBL1BVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGFybVF1ZXJ5RmlsdGVyLFxuICBBbGFybVNlcnZpY2UsXG4gIEFMQVJNX1NUQVRVU19MQUJFTFMsXG4gIEFsYXJtU3RhdHVzVHlwZSxcbiAgQWxhcm1TdGF0dXMsXG4gIElBbGFybSxcbiAgSVJlc3VsdExpc3QsXG4gIFNldmVyaXR5RmlsdGVyLFxuICBTZXZlcml0eVR5cGUsXG4gIFNldmVyaXR5XG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uT3B0aW9ucyxcbiAgQ29udGV4dERhdGEsXG4gIERhdGVUaW1lQ29udGV4dCxcbiAgT3B0aW9uc1NlcnZpY2UsXG4gIFZpZXdDb250ZXh0LFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBTEFSTVNfUEFUSCB9IGZyb20gJy4vYWxhcm1zLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBhbmQgcmV0cmlldmluZyBhbGFybXMgZGF0YSB3aXRoaW4gdGhlIGFsYXJtcyB2aWV3LlxuICpcbiAqIFRoZSBgQWxhcm1zVmlld1NlcnZpY2VgIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCBhbGFybXMsXG4gKiBpbmNsdWRpbmcgZmlsdGVyaW5nLCBjb3VudGluZywgYW5kIHRyYW5zbGF0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyBpbiBhbiBhbGFybXMgdmlldy5cbiAqXG4gKiBUaGlzIHNlcnZpY2UgcmVsaWVzIG9uIHRoZSBgQWxhcm1TZXJ2aWNlYCBmb3IgZmV0Y2hpbmcgYWxhcm0gZGF0YSBhbmQgdGhlIGBPcHRpb25zU2VydmljZWBcbiAqIGZvciBjb25maWd1cmluZyBhbGFybXMgdmlldyBvcHRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGFybXNWaWV3U2VydmljZSB7XG4gIHJlYWRvbmx5IEFMQVJNX1JFRlJFU0hfVFlQRV9LRVk6IGtleW9mIEFwcGxpY2F0aW9uT3B0aW9ucyA9ICdhbGFybXNSZWZyZXNoVHlwZSc7XG4gIHJlYWRvbmx5IERFRkFVTFRfSU5URVJWQUxfVkFMVUUgPSAzMF8wMDA7XG4gIHJlYWRvbmx5IERFRkFVTFRfUkVGUkVTSF9PUFRJT05fVkFMVUUgPSAnaW50ZXJ2YWwnO1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFUyA9IFs1XzAwMCwgMTBfMDAwLCAxNV8wMDAsIDMwXzAwMCwgNjBfMDAwXTtcbiAgcmVhZG9ubHkgUkVBTFRJTUVfVVBEQVRFX0FMQVJNU19NRVNTQUdFID0gZ2V0dGV4dCgnVGhlIGxpc3Qgd2FzIHVwZGF0ZWQsIGNsaWNrIHRvIHJlZnJlc2guJyk7XG5cbiAgaXNJbnRlcnZhbEVuYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWxvYWRBbGFybXNMaXN0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfaXNJbnRlcnZhbEVuYWJsZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtU2VydmljZTogQWxhcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIGlmICh0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoKCkpIHtcbiAgICAgIHRoaXMuX2lzSW50ZXJ2YWxFbmFibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbEVuYWJsZWQkID0gdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgc3ViamVjdCB0byBpbml0aWFsaXplIHRoZSBhbGFybXMgcmVsb2FkaW5nLlxuICAgKi9cbiAgdXBkYXRlQWxhcm1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkQWxhcm1zTGlzdCQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxhcm1zIGZpbHRlcmVkIGJ5IHNwZWNpZmllZCBzZXZlcml0aWVzIGFuZCBvdGhlciBvcHRpb25hbCBxdWVyeSBmaWx0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdGllcyBhbiBhcnJheSBvZiBzZXZlcml0aWVzIHRvIGZpbHRlciB0aGUgYWxhcm1zLlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gc2hvdyBjbGVhcmVkIGFsYXJtcy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZERhdGVzIGFuIGFycmF5IG9mIHR3byBkYXRlcyB0byBmaWx0ZXIgYWxhcm1zIGJ5IGNyZWF0aW9uIGFuZCBsYXN0IHVwZGF0ZSBkYXRlcy5cbiAgICogQHBhcmFtIGZpbHRlciBhZGRpdGlvbmFsIHF1ZXJ5IGZpbHRlcnMgZm9yIHJldHJpZXZpbmcgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGxpc3Qgb2YgYWxhcm1zIHNhdGlzZnlpbmcgdGhlIHNwZWNpZmllZCBmaWx0ZXJzLlxuICAgKi9cbiAgcmV0cmlldmVGaWx0ZXJlZEFsYXJtcyhcbiAgICBzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSxcbiAgICBzaG93Q2xlYXJlZCA9IGZhbHNlLFxuICAgIHNlbGVjdGVkRGF0ZXM/OiBbRGF0ZSwgRGF0ZV0sXG4gICAgZmlsdGVyPzogQWxhcm1RdWVyeUZpbHRlclxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElBbGFybT4+IHtcbiAgICBjb25zdCBzZXZlcml0aWVzUXVlcnkgPSB0aGlzLmdldFNldmVyaXR5UXVlcnlQYXJhbWV0ZXIoc2V2ZXJpdGllcyk7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuXG4gICAgY29uc3QgX2ZpbHRlcjogQWxhcm1RdWVyeUZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiA1MCxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgLi4uKHNldmVyaXRpZXNRdWVyeSAmJiB7IHNldmVyaXR5OiBzZXZlcml0aWVzUXVlcnkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLihzZWxlY3RlZERhdGVzICYmIHtcbiAgICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBzZWxlY3RlZERhdGVzWzBdLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGNyZWF0ZWRUbzogc2VsZWN0ZWREYXRlc1sxXS50b0lTT1N0cmluZygpXG4gICAgICB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3QoX2ZpbHRlcik7XG4gIH1cblxuICByZXRyaWV2ZUFsYXJtc0J5RGF0ZShkYXRlczogRGF0ZVRpbWVDb250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3Qoe1xuICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBkYXRlc1swXS50b0lTT1N0cmluZygpLFxuICAgICAgY3JlYXRlZFRvOiBkYXRlc1sxXS50b0lTT1N0cmluZygpLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGVuYWJsZSBpbnRlcnZhbHMuXG4gICAqL1xuICB1cGRhdGVJbnRlcnZhbFN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNJbnRlcnZhbEVuYWJsZWQ/Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGNvdW50IG9mIGFsYXJtcyBmaWx0ZXJlZCBieSBzZXZlcml0eSBhbmQgY2xlYXJhbmNlIHN0YXR1cy5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5IC0gVGhlIHNldmVyaXR5IGxldmVsIHRvIGZpbHRlciBieSAoZS5nLiwgQ1JJVElDQUwsIE1BSk9SLCBldGMuKS5cbiAgICogQHBhcmFtIHNob3dDbGVhcmVkIC0gV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSBjbGVhcmVkIGFsYXJtcyBpbiB0aGUgY291bnQuXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSBBZGRpdGlvbmFsIGZpbHRlciBjcml0ZXJpYSBmb3IgYWxhcm1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbnVtYmVyIG9mIGFsYXJtcyB0aGF0IG1hdGNoIHRoZSBmaWx0ZXIgY3JpdGVyaWEuXG4gICAqXG4gICAqL1xuICBhc3luYyBnZXRBbGFybXNDb3VudEJ5U2V2ZXJpdHkoXG4gICAgc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSxcbiAgICBzaG93Q2xlYXJlZDogYm9vbGVhbixcbiAgICBmaWx0ZXI/OiBBbGFybVF1ZXJ5RmlsdGVyXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgc3RhdHVzZXNRdWVyeSA9IHRoaXMuZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQpO1xuICAgIGNvbnN0IF9maWx0ZXI6IEFsYXJtUXVlcnlGaWx0ZXIgPSB7XG4gICAgICAuLi4oc2V2ZXJpdHkgJiYgeyBzZXZlcml0eTogc2V2ZXJpdHkgfSksXG4gICAgICAuLi4oc3RhdHVzZXNRdWVyeSAmJiB7IHN0YXR1czogc3RhdHVzZXNRdWVyeSB9KSxcbiAgICAgIC4uLmZpbHRlclxuICAgIH07XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFsYXJtU2VydmljZS5jb3VudChfZmlsdGVyKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBhbGFybXMgcmVmcmVzaCB0eXBlIGZyb20gdGhlIE9wdGlvbnNTZXJ2aWNlXG4gICAqIGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgaXQgaXMgc2V0IHRvIFwiaW50ZXJ2YWxcIi5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBhbGFybXMgcmVmcmVzaCB0eXBlIGlzIFwiaW50ZXJ2YWwsXCIgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0KHRoaXMuQUxBUk1fUkVGUkVTSF9UWVBFX0tFWSwgJ2ludGVydmFsJyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnaW50ZXJ2YWwnO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgc2V2ZXJpdGllcyBiYXNlZCBvbiB0aGUgbmV3IHNldmVyaXR5IGZpbHRlci5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5VXBkYXRlcyAtIFRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSB1cGRhdGVzIHRvIGVhY2ggc2V2ZXJpdHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IHJlcHJlc2VudGluZyB0aGUgdXBkYXRlZCBzZWxlY3RlZCBzZXZlcml0aWVzLlxuICAgKi9cbiAgdXBkYXRlU2VsZWN0ZWRTZXZlcml0aWVzKHNldmVyaXR5VXBkYXRlczogU2V2ZXJpdHlGaWx0ZXIpOiBTZXZlcml0eVR5cGVbXSB7XG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhzZXZlcml0eVVwZGF0ZXMpIGFzIFNldmVyaXR5VHlwZVtdKVxuICAgICAgLmZpbHRlcihrZXkgPT4gc2V2ZXJpdHlVcGRhdGVzW2tleV0pXG4gICAgICAubWFwKGtleSA9PiBrZXkudG9VcHBlckNhc2UoKSBhcyBTZXZlcml0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgYWN0aXZlIGFsYXJtcyBvZiB0aGUgc2VsZWN0ZWQgc2V2ZXJpdGllcy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBhY3RpdmUgYWxhcm1zIGZvciB0aGUgZ2l2ZW4gbGlzdCBvZiBzZXZlcml0aWVzIGJ5IG1ha2luZyBidWxrIHVwZGF0ZSBjYWxscy4gSWYgbm8gc2V2ZXJpdGllcyBhcmUgc2VsZWN0ZWQsIGl0IGRlZmF1bHRzIHRvIHVzaW5nIGFsbCBhdmFpbGFibGUgc2V2ZXJpdGllcy5cbiAgICogSXQgd29ya3MgYnkgc2VuZGluZyBhIHNlcmllcyBvZiB1cGRhdGUgcmVxdWVzdHMgZm9yIGVhY2ggc2V2ZXJpdHkgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgaW5kaWNhdGluZyBpZiBhbGwgYWxhcm1zIHdlcmUgcmVzb2x2ZWQgaW1tZWRpYXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBzZWxlY3RlZFNldmVyaXRpZXMgQW4gYXJyYXkgb2Ygc2V2ZXJpdGllcyB0byBiZSBjbGVhcmVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCBzZXZlcml0aWVzIHdpbGwgYmUgY2xlYXJlZC5cbiAgICogQHBhcmFtIHNvdXJjZUlkIC0gSWRlbnRpZmllciBmb3IgdGhlIHNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGFsYXJtcyB0byBiZSBjbGVhcmVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCB3aXRoIGEgZmxhZyBgcmVzb2x2ZWRJbW1lZGlhdGVseWAuIFRoZSBmbGFnIGlzIHRydWUgaWYgYWxsIGFsYXJtcyBmb3IgYWxsIHNlbGVjdGVkIHNldmVyaXRpZXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseTsgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHNldmVyaXRpZXNUb0NsZWFyOiBTZXZlcml0eVR5cGVbXSA9IFtTZXZlcml0eS5NQUpPUiwgU2V2ZXJpdHkuTUlOT1JdO1xuICAgKlxuICAgKiBjbGVhckFsbEFjdGl2ZUFsYXJtcyhzZXZlcml0aWVzVG9DbGVhcikudGhlbigoeyByZXNvbHZlZEltbWVkaWF0ZWx5IH0pID0+IHtcbiAgICogICBpZiAocmVzb2x2ZWRJbW1lZGlhdGVseSkge1xuICAgKiAgICAgY29uc29sZS5sb2coJ0FsbCBzZWxlY3RlZCBhbGFybXMgd2VyZSBjbGVhcmVkIHN1Y2Nlc3NmdWxseS4nKTtcbiAgICogICB9IGVsc2Uge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1NvbWUgYWxhcm1zIGNvdWxkIG5vdCBiZSBjbGVhcmVkLicpO1xuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiAqKk5vdGUqKlxuICAgKiAtIFRoZSBtZXRob2QgdXNlcyB0aGUgYGFsYXJtU2VydmljZS51cGRhdGVCdWxrYCBmb3IgZWFjaCBzZXZlcml0eSB0byBjbGVhciB0aGUgYWN0aXZlIGFsYXJtcy5cbiAgICogLSBJdCBtYXkgZmV0Y2ggdGhlIGBzb3VyY2VJZGAgYmFzZWQgb24gdGhlIHZpZXcgKGlmIGFwcGxpY2FibGUpIGFuZCBpbmNsdWRlIGl0IGFzIGEgcXVlcnkgcGFyYW1ldGVyIGluIHRoZSB1cGRhdGUgY2FsbHMuXG4gICAqIC0gVGhlIG1ldGhvZCByZXR1cm5zIGltbWVkaWF0ZWx5IGJ1dCB0aGUgcmV0dXJuZWQgUHJvbWlzZSBuZWVkcyB0byBoYXZlIGEgYHRoZW5gIG9yIGBjYXRjaGAgbWV0aG9kIGNhbGwgdG8gaGFuZGxlIHRoZSByZXN1bHQgb3IgZXJyb3IgcmVzcGVjdGl2ZWx5LlxuICAgKiAtIFVzZXMgYFByb21pc2UuYWxsYCB0byB3YWl0IGZvciBhbGwgdXBkYXRlIHJlcXVlc3RzIHRvIGNvbXBsZXRlIGJlZm9yZSByZXNvbHZpbmcgdGhlIGZpbmFsIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIGNsZWFyQWxsQWN0aXZlQWxhcm1zKFxuICAgIHNlbGVjdGVkU2V2ZXJpdGllczogU2V2ZXJpdHlUeXBlW10sXG4gICAgc291cmNlSWQ6IHN0cmluZyB8IG51bWJlclxuICApOiBQcm9taXNlPHsgcmVzb2x2ZWRJbW1lZGlhdGVseTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3Qgc2V2ZXJpdGllc1RvVXBkYXRlID0gc2VsZWN0ZWRTZXZlcml0aWVzIHx8IFNldmVyaXR5O1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3QudmFsdWVzKHNldmVyaXRpZXNUb1VwZGF0ZSkubWFwKChzZXZlcml0eTogU2V2ZXJpdHlUeXBlKSA9PiB7XG4gICAgICBjb25zdCBjb21tb25QYXJhbXMgPSB7IHJlc29sdmVkOiBmYWxzZSwgc2V2ZXJpdHkgfTtcblxuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHNvdXJjZUlkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uY29tbW9uUGFyYW1zLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIHdpdGhTb3VyY2VBc3NldHM6IHRydWUsXG4gICAgICAgICAgICB3aXRoU291cmNlRGV2aWNlczogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgOiBjb21tb25QYXJhbXM7XG5cbiAgICAgIHJldHVybiB0aGlzLmFsYXJtU2VydmljZS51cGRhdGVCdWxrKHsgc3RhdHVzOiBBbGFybVN0YXR1cy5DTEVBUkVEIH0sIHBhcmFtZXRlcnMpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIHJldHVybiB7XG4gICAgICByZXNvbHZlZEltbWVkaWF0ZWx5OiByZXNwb25zZXMuZXZlcnkocmVzID0+IHJlcylcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvcnJlY3QgbGluayBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29udGV4dCBkYXRhLlxuICAgKiBAcGFyYW0gY29udGV4dERhdGEgVGhlIGNvbnRleHQgdGhlIG5hdmlnYXRpb24gd2FzIHRyaWdnZXJlZCBmcm9tLlxuICAgKiBAcGFyYW0gYWxhcm0gVGhlIGFsYXJtIHRvIG5hdmlnYXRlIHRvLlxuICAgKiBAcmV0dXJucyBBIGxpbmsgdG8gYmUgdXNlZCBhcyBhbiB1cmwgbmF2aWdhdGlvbi5cbiAgICovXG4gIGdldFJvdXRlckxpbmsoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmcge1xuICAgIGxldCBkZXRhaWxVcmwgPSBgLyR7QUxBUk1TX1BBVEh9YDtcbiAgICBpZiAoYWxhcm0pIHtcbiAgICAgIGRldGFpbFVybCA9IGAvJHtBTEFSTVNfUEFUSH0vJHthbGFybS5pZH1gO1xuICAgIH1cbiAgICBpZiAoIWNvbnRleHREYXRhKSB7XG4gICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29udGV4dERhdGEuY29udGV4dCkge1xuICAgICAgY2FzZSBWaWV3Q29udGV4dC5EZXZpY2U6XG4gICAgICAgIHJldHVybiBgL2RldmljZS8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBjYXNlIFZpZXdDb250ZXh0Lkdyb3VwOlxuICAgICAgICByZXR1cm4gYC9ncm91cC8ke2NvbnRleHREYXRhLmNvbnRleHREYXRhLmlkfSR7ZGV0YWlsVXJsfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGV0YWlsVXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGFycmF5IG5hdmlnYXRpb24uXG4gICAqIEBwYXJhbSBjb250ZXh0RGF0YSBUaGUgY29udGV4dCB0aGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20uXG4gICAqIEBwYXJhbSBhbGFybSBUaGUgYWxhcm0gdG8gbmF2aWdhdGUgdG8uXG4gICAqIEByZXR1cm5zIEEgbGluayB0byBiZSB1c2VkIGFzIGEgcm91dGVyLm5hdmlnYXRpb24uXG4gICAqL1xuICBnZXRSb3V0ZXJOYXZpZ2F0aW9uQXJyYXkoY29udGV4dERhdGE/OiBDb250ZXh0RGF0YSwgYWxhcm0/OiBJQWxhcm0pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um91dGVyTGluayhjb250ZXh0RGF0YSwgYWxhcm0pLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBmb3IgcXVlcnkgcGFyYW1ldGVyIGZvciBmaWx0ZXJpbmcgYWxhcm1zIGJ5IHNldmVyaXR5IGJhc2VkIG9uIGFycmF5IG9mIHNlbGVjdGVkIHNldmVyaXRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0aWVzIC0gQW4gYXJyYXkgb2YgYWxhcm0gc2V2ZXJpdHkgdHlwZXMgdG8gaW5jbHVkZSBpbiB0aGUgZmlsdGVyLlxuICAgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHkgb3IgdW5kZWZpbmVkLCBubyBzZXZlcml0eSBmaWx0ZXIgd2lsbCBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2Ygc2VsZWN0ZWQgYWxhcm0gc2V2ZXJpdGllcyxcbiAgICogb3IgbnVsbCBpZiBubyBzZXZlcml0aWVzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0U2V2ZXJpdHlRdWVyeVBhcmFtZXRlcihzZXZlcml0aWVzOiBTZXZlcml0eVR5cGVbXSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghc2V2ZXJpdGllcyB8fCBzZXZlcml0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2V2ZXJpdGllcy5sZW5ndGggPT09IE9iamVjdC5rZXlzKFNldmVyaXR5KS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V2ZXJpdGllcy5qb2luKCcsJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZhbHVlIGZvciBxdWVyeSBwYXJhbWV0ZXIgZm9yIGZpbHRlcmluZyBhbGFybXMgYnkgc3RhdHVzZXMgYmFzZWQgb24gc2hvd0NsZWFyZWQgb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gc2hvd0NsZWFyZWQgLSBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgY2xlYXJlZCBzdGF0dXNlcy5cbiAgICogSWYgdHJ1ZSwgYWxsIHN0YXR1c2VzLCBpbmNsdWRpbmcgJ0NMRUFSRUQnLCB3aWxsIGJlIGluY2x1ZGVkOyBpZiBmYWxzZSwgJ0NMRUFSRUQnIHdpbGwgYmUgZXhjbHVkZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiBhbGFybSBzdGF0dXNlcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0U3RhdHVzUXVlcnlQYXJhbWV0ZXIoc2hvd0NsZWFyZWQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gT2JqZWN0LmtleXMoQUxBUk1fU1RBVFVTX0xBQkVMUykgYXMgQWxhcm1TdGF0dXNUeXBlW107XG4gICAgY29uc3QgZmlsdGVyZWRTdGF0dXNlcyA9IHNob3dDbGVhcmVkXG4gICAgICA/IHN0YXR1c2VzXG4gICAgICA6IHN0YXR1c2VzLmZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnQ0xFQVJFRCcpO1xuICAgIHJldHVybiBmaWx0ZXJlZFN0YXR1c2VzLmpvaW4oJywnKTtcbiAgfVxufVxuIl19
|