@kirbydesign/designsystem 10.1.2 → 10.2.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/avatar/avatar.component.d.ts +2 -1
- package/button/button.component.d.ts +1 -0
- package/calendar/calendar.component.d.ts +28 -18
- package/calendar/interfaces/calendar-day.d.ts +17 -0
- package/calendar/public_api.d.ts +1 -1
- package/chart/shared/chart-config-service/chart-config.service.d.ts +1 -1
- package/empty-state/empty-state.component.d.ts +10 -3
- package/esm2022/accordion/accordion-item.component.mjs +4 -4
- package/esm2022/accordion/accordion.directive.mjs +4 -4
- package/esm2022/accordion/accordion.module.mjs +5 -5
- package/esm2022/action-group/action-group.component.mjs +4 -4
- package/esm2022/avatar/avatar.component.mjs +7 -5
- package/esm2022/badge/badge.component.mjs +4 -4
- package/esm2022/button/button.component.mjs +18 -6
- package/esm2022/calendar/calendar.component.mjs +168 -101
- package/esm2022/calendar/interfaces/calendar-day.mjs +2 -0
- package/esm2022/calendar/interfaces/calendar-year-navigator-config.mjs +2 -0
- package/esm2022/calendar/public_api.mjs +1 -1
- package/esm2022/card/card-as-button/card-as-button.directive.mjs +4 -4
- package/esm2022/card/card-footer/card-footer.component.mjs +4 -4
- package/esm2022/card/card-header/card-header.component.mjs +4 -4
- package/esm2022/card/card.component.mjs +4 -4
- package/esm2022/card/card.module.mjs +5 -5
- package/esm2022/chart/chart/chart.component.mjs +4 -4
- package/esm2022/chart/charts.module.mjs +5 -5
- package/esm2022/chart/shared/base-chart/base-chart.component.mjs +4 -4
- package/esm2022/chart/shared/chart-config-service/chart-config.service.mjs +4 -4
- package/esm2022/chart/shared/chart-js-service/chart-js.service.mjs +4 -4
- package/esm2022/chart/stock-chart/stock-chart-js.service.mjs +4 -4
- package/esm2022/chart/stock-chart/stock-chart.component.mjs +4 -4
- package/esm2022/checkbox/checkbox.component.mjs +4 -4
- package/esm2022/data-table/data-table.module.mjs +5 -5
- package/esm2022/data-table/sortable/sortable.component.mjs +4 -4
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +6 -6
- package/esm2022/dropdown/dropdown.module.mjs +5 -5
- package/esm2022/dropdown/keyboard-handler.service.mjs +4 -4
- package/esm2022/empty-state/empty-state.component.mjs +31 -7
- package/esm2022/empty-state/empty-state.module.mjs +5 -5
- package/esm2022/fab-sheet/fab-sheet.component.mjs +4 -4
- package/esm2022/flag/flag.component.mjs +4 -4
- package/esm2022/form-field/directives/affix/affix.directive.mjs +4 -4
- package/esm2022/form-field/directives/date/date-input.directive.mjs +4 -4
- package/esm2022/form-field/directives/decimal-mask/decimal-mask.directive.mjs +4 -4
- package/esm2022/form-field/form-field-message/form-field-message.component.mjs +4 -4
- package/esm2022/form-field/form-field.component.mjs +4 -4
- package/esm2022/form-field/form-field.module.mjs +8 -7
- package/esm2022/form-field/input/input.component.mjs +4 -4
- package/esm2022/form-field/input-counter/input-counter.component.mjs +4 -4
- package/esm2022/form-field/textarea/textarea.component.mjs +4 -4
- package/esm2022/header/header.component.mjs +16 -16
- package/esm2022/header/header.module.mjs +5 -5
- package/esm2022/helpers/content-mutation-observer.mjs +50 -0
- package/esm2022/helpers/element-ancestor-utils.mjs +33 -0
- package/esm2022/helpers/ionic-element-part-helper.mjs +4 -4
- package/esm2022/helpers/line-clamp-helper.mjs +4 -4
- package/esm2022/helpers/platform.service.mjs +4 -4
- package/esm2022/helpers/public_api.mjs +3 -2
- package/esm2022/icon/icon-registry.service.mjs +4 -4
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +5 -5
- package/esm2022/item/item.component.mjs +13 -9
- package/esm2022/item/item.module.mjs +5 -5
- package/esm2022/item/label/label.component.mjs +5 -5
- package/esm2022/item-group/item-group.component.mjs +4 -4
- package/esm2022/item-sliding/item-sliding.component.mjs +4 -4
- package/esm2022/kirby-app/kirby-app.component.mjs +4 -4
- package/esm2022/kirby-app/kirby-app.module.mjs +5 -5
- package/esm2022/kirby-ionic-module/kirby-ionic.module.mjs +5 -5
- package/esm2022/lib/components/segmented-control/segmented-control.component.mjs +34 -7
- package/esm2022/lib/directives/key-handler/key-handler.directive.mjs +4 -4
- package/esm2022/lib/directives/modal-router-link/modal-router-link.directive.mjs +4 -4
- package/esm2022/lib/kirby.module.mjs +5 -5
- package/esm2022/list/directives/infinite-scroll.directive.mjs +4 -4
- package/esm2022/list/directives/list-item-color.directive.mjs +4 -4
- package/esm2022/list/helpers/list-helper.mjs +4 -4
- package/esm2022/list/list-experimental/list-experimental.component.mjs +4 -4
- package/esm2022/list/list-header/list-header.component.mjs +4 -4
- package/esm2022/list/list-item/list-item.component.mjs +5 -5
- package/esm2022/list/list-section-header/list-section-header.component.mjs +4 -4
- package/esm2022/list/list.component.mjs +5 -5
- package/esm2022/list/list.directive.mjs +13 -13
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/loading-overlay/loading-overlay.component.mjs +4 -4
- package/esm2022/loading-overlay/loading-overlay.service.mjs +4 -4
- package/esm2022/menu/menu.component.mjs +215 -12
- package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +4 -4
- package/esm2022/modal/modal/alert/alert.component.mjs +4 -4
- package/esm2022/modal/modal/footer/modal-footer.component.mjs +4 -4
- package/esm2022/modal/modal/modal-component/modal.component.mjs +18 -8
- package/esm2022/modal/modal/services/action-sheet.helper.mjs +4 -4
- package/esm2022/modal/modal/services/alert.helper.mjs +4 -4
- package/esm2022/modal/modal/services/can-dismiss.helper.mjs +4 -4
- package/esm2022/modal/modal/services/modal-animation-builder.service.mjs +4 -4
- package/esm2022/modal/modal/services/modal.controller.mjs +4 -4
- package/esm2022/modal/modal/services/modal.helper.mjs +5 -4
- package/esm2022/modal/modal-navigation.service.mjs +4 -4
- package/esm2022/modal/modal-wrapper/compact/modal-compact-wrapper.component.mjs +19 -10
- package/esm2022/modal/modal-wrapper/config/modal-config.mjs +1 -1
- package/esm2022/modal/modal-wrapper/modal-elements-mover.delegate.mjs +1 -1
- package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +35 -12
- package/esm2022/modal/modal.interfaces.mjs +4 -4
- package/esm2022/page/page-footer/page-footer.component.mjs +4 -4
- package/esm2022/page/page.component.mjs +39 -38
- package/esm2022/page/page.module.mjs +5 -5
- package/esm2022/popover/popover.component.mjs +4 -4
- package/esm2022/progress-circle/progress-circle-ring.component.mjs +4 -4
- package/esm2022/progress-circle/progress-circle.component.mjs +4 -4
- package/esm2022/radio/radio-group/radio-group.component.mjs +4 -4
- package/esm2022/radio/radio-module.mjs +5 -5
- package/esm2022/radio/radio.component.mjs +4 -4
- package/esm2022/range/range.component.mjs +4 -4
- package/esm2022/reorder-list/reorder-list.component.mjs +5 -5
- package/esm2022/router-outlet/router-outlet.component.mjs +4 -4
- package/esm2022/router-outlet/router-outlet.module.mjs +5 -5
- package/esm2022/section-header/section-header.component.mjs +4 -4
- package/esm2022/shared/component-loader.directive.mjs +4 -4
- package/esm2022/shared/fit-heading/fit-heading.directive.mjs +4 -4
- package/esm2022/shared/floating/floating.directive.mjs +4 -4
- package/esm2022/shared/portal/portal.directive.mjs +4 -4
- package/esm2022/shared/public_api.mjs +2 -1
- package/esm2022/shared/resize-observer/resize-observer.factory.mjs +4 -4
- package/esm2022/shared/resize-observer/resize-observer.service.mjs +4 -4
- package/esm2022/shared/theme-color/theme-color.directive.mjs +4 -4
- package/esm2022/shared/translation/translation.interface.mjs +2 -0
- package/esm2022/shared/translation/translation.service.mjs +37 -0
- package/esm2022/shared/translation/translations/da.mjs +11 -0
- package/esm2022/shared/translation/translations/en.mjs +11 -0
- package/esm2022/slide/slide-stretch-height.directive.mjs +4 -4
- package/esm2022/slide/slide.directive.mjs +4 -4
- package/esm2022/slide/slide.module.mjs +5 -5
- package/esm2022/slide/slides.component.mjs +16 -9
- package/esm2022/slide-button/slide-button.component.mjs +4 -4
- package/esm2022/spinner/spinner.component.mjs +4 -4
- package/esm2022/spinner/spinner.module.mjs +5 -5
- package/esm2022/tab-navigation/tab-navigation/tab-navigation.component.mjs +4 -4
- package/esm2022/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +4 -4
- package/esm2022/tab-navigation/tab-navigation.module.mjs +5 -5
- package/esm2022/tabs/tab-button/tab-button.component.mjs +4 -4
- package/esm2022/tabs/tabs.component.mjs +4 -4
- package/esm2022/tabs/tabs.module.mjs +5 -5
- package/esm2022/tabs/tabs.service.mjs +4 -4
- package/esm2022/testing/test-helper.mjs +8 -5
- package/esm2022/testing-base/lib/components/mock.accordion-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.action-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.action-sheet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.alert.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.avatar.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.badge.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.base-chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.calendar.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.card.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.checkbox.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.divider.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.dropdown.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.empty-state.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.fab-sheet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.flag.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.form-field-message.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.form-field.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.header.component.mjs +10 -10
- package/esm2022/testing-base/lib/components/mock.icon.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.input-counter.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.input.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item-sliding.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.kirby-app.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.label.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-experimental.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list-section-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.list.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.loading-overlay.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.menu.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-compact-wrapper.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.modal-wrapper.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.page-footer.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.page.component.mjs +34 -34
- package/esm2022/testing-base/lib/components/mock.popover.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.progress-circle-ring.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.progress-circle.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.radio-group.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.radio.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.range.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.reorder-list.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.router-outlet.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.section-header.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.segmented-control.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.slide-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.slides.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.spinner.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.stock-chart.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-navigation-item.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tab-navigation.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.tabs.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.textarea.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.toggle-button.component.mjs +4 -4
- package/esm2022/testing-base/lib/components/mock.toggle.component.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.accordion.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.affix.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.card-as-button.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.component-loader.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.date-input.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.decimal-mask.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.fit-heading.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.floating.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.infinite-scroll.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.key-handler.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.list-item-color.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.list.directive.mjs +13 -13
- package/esm2022/testing-base/lib/directives/mock.modal-router-link.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.portal.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.slide.directive.mjs +4 -4
- package/esm2022/testing-base/lib/directives/mock.theme-color.directive.mjs +4 -4
- package/esm2022/testing-base/lib/kirby-testing-base.module.mjs +5 -5
- package/esm2022/testing-jasmine/lib/kirby-testing.module.mjs +5 -5
- package/esm2022/testing-jest/lib/kirby-testing.module.mjs +5 -5
- package/esm2022/toast/services/toast.controller.mjs +4 -4
- package/esm2022/toast/services/toast.helper.mjs +4 -4
- package/esm2022/toggle/toggle.component.mjs +4 -4
- package/esm2022/toggle-button/toggle-button.component.mjs +4 -4
- package/esm2022/toggle-button/toggle-button.module.mjs +5 -5
- package/esm2022/types/public_api.mjs +2 -1
- package/esm2022/types/unobserve-fn.mjs +2 -0
- package/esm2022/types/window-ref.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-accordion.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-action-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-avatar.mjs +6 -4
- package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-badge.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-button.mjs +17 -5
- package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-calendar.mjs +168 -177
- package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-card.mjs +16 -16
- package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-chart.mjs +22 -22
- package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-data-table.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-divider.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs +12 -12
- package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs +33 -9
- package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-flag.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +30 -30
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +19 -19
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-helpers.mjs +69 -10
- package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-icon.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-group.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-item.mjs +20 -16
- package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-kirby-ionic-module.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-list.mjs +42 -42
- package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-menu.mjs +214 -11
- package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-modal.mjs +99 -57
- package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-page.mjs +44 -43
- package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-popover.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-radio.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-section-header.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared.mjs +71 -17
- package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-slide.mjs +24 -18
- package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-spinner.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +10 -10
- package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-tabs.mjs +13 -13
- package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs +286 -286
- package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +4 -4
- package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-testing.mjs +7 -4
- package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toast.mjs +6 -6
- package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +7 -7
- package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-toggle.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-types.mjs +3 -3
- package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem.mjs +43 -16
- package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
- package/form-field/form-field.module.d.ts +2 -1
- package/helpers/content-mutation-observer.d.ts +8 -0
- package/helpers/{element-has-ancestor.d.ts → element-ancestor-utils.d.ts} +1 -0
- package/helpers/public_api.d.ts +2 -1
- package/icons/svg/accounts-outline.svg +0 -2
- package/icons/svg/accounts.svg +0 -2
- package/icons/svg/backspace.svg +0 -2
- package/icons/svg/camera.svg +0 -2
- package/icons/svg/copy.svg +0 -2
- package/icons/svg/flag.svg +0 -2
- package/icons/svg/inbox-outline.svg +0 -2
- package/icons/svg/inbox.svg +0 -2
- package/icons/svg/information.svg +0 -2
- package/icons/svg/menu-outline.svg +0 -2
- package/icons/svg/menu.svg +0 -2
- package/icons/svg/person-outline.svg +0 -2
- package/icons/svg/person.svg +0 -2
- package/icons/svg/reorder.svg +0 -2
- package/icons/svg/support.svg +0 -2
- package/item/item.component.d.ts +3 -2
- package/lib/components/segmented-control/segmented-control.component.d.ts +4 -0
- package/menu/menu.component.d.ts +32 -8
- package/modal/modal/modal-component/modal.component.d.ts +6 -3
- package/modal/modal-wrapper/compact/modal-compact-wrapper.component.d.ts +4 -2
- package/modal/modal-wrapper/config/modal-config.d.ts +3 -0
- package/modal/modal-wrapper/modal-wrapper.component.d.ts +8 -3
- package/package.json +4 -4
- package/page/page.component.d.ts +4 -3
- package/scss/base/_item-typography.scss +1 -0
- package/shared/public_api.d.ts +1 -0
- package/shared/translation/translation.interface.d.ts +10 -0
- package/shared/translation/translation.service.d.ts +12 -0
- package/shared/translation/translations/da.d.ts +2 -0
- package/shared/translation/translations/en.d.ts +2 -0
- package/slide/slides.component.d.ts +3 -1
- package/testing/test-helper.d.ts +1 -0
- package/types/public_api.d.ts +1 -0
- package/types/unobserve-fn.d.ts +1 -0
- package/calendar/helpers/calendar-cell.model.d.ts +0 -9
- package/calendar/helpers/calendar-options.model.d.ts +0 -9
- package/calendar/helpers/calendar.helper.d.ts +0 -24
- package/esm2022/calendar/helpers/calendar-cell.model.mjs +0 -2
- package/esm2022/calendar/helpers/calendar-options.model.mjs +0 -2
- package/esm2022/calendar/helpers/calendar.helper.mjs +0 -80
- package/esm2022/calendar/options/calendar-year-navigator-config.mjs +0 -2
- package/esm2022/helpers/element-has-ancestor.mjs +0 -24
- /package/calendar/{options → interfaces}/calendar-year-navigator-config.d.ts +0 -0
|
@@ -459,16 +459,16 @@ export class DropdownComponent {
|
|
|
459
459
|
this.intersectionObserverRef.disconnect();
|
|
460
460
|
}
|
|
461
461
|
}
|
|
462
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
463
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
462
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.KeyboardHandlerService }, { token: i2.ResizeObserverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
463
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DropdownComponent, selector: "kirby-dropdown", inputs: { items: "items", selectedIndex: "selectedIndex", focusedIndex: "focusedIndex", itemTextProperty: "itemTextProperty", placeholder: "placeholder", popout: "popout", attentionLevel: "attentionLevel", expand: "expand", disabled: "disabled", hasError: "hasError", size: "size", tabindex: "tabindex", usePopover: "usePopover" }, outputs: { change: "change" }, host: { listeners: { "keydown.tab": "_onTab($event)", "mousedown": "_onMouseDown($event)", "touchstart": "_onTouchStart($event)", "focus": "_onFocus()", "keydown.enter": "_onEnterOrSpace($event)", "keydown.escape": "_onEnterOrEscape()", "blur": "_onBlur($event)", "keydown.space": "_onEnterOrSpace($event)", "keydown.arrowup": "_onArrowKeys($event)", "keydown.arrowdown": "_onArrowKeys($event)", "keydown.arrowleft": "_onArrowKeys($event)", "keydown.arrowright": "_onArrowKeys($event)", "keydown.home": "_onHomeEndKeys($event)", "keydown.end": "_onHomeEndKeys($event)" }, properties: { "attr.disabled": "this._isDisabled", "class.error": "this.hasError", "class.with-popover": "this.usePopover", "attr.tabindex": "this._tabindex", "attr.no-blur": "this._noBlurOnScroll", "class.expand": "this._isBlockLevel", "attr.role": "this._role", "class.is-opening": "this._isOpening", "class.is-open": "this.isOpen", "class.popout-left": "this._popoutLeft", "class.popout-up": "this._popoutUp", "class.clicked": "this.clicked" } }, providers: [
|
|
464
464
|
{
|
|
465
465
|
provide: NG_VALUE_ACCESSOR,
|
|
466
466
|
useExisting: forwardRef((() => DropdownComponent)),
|
|
467
467
|
multi: true,
|
|
468
468
|
},
|
|
469
|
-
], queries: [{ propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "slottedItems", predicate: ListItemTemplateDirective, read: ElementRef }, { propertyName: "kirbyItemsSlotted", predicate: ItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "cardElement", first: true, predicate: CardComponent, descendants: true, read: ElementRef }, { propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "buttonElement", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "kirbyItemsDefault", predicate: ItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i
|
|
469
|
+
], queries: [{ propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "slottedItems", predicate: ListItemTemplateDirective, read: ElementRef }, { propertyName: "kirbyItemsSlotted", predicate: ItemComponent, read: ElementRef }], viewQueries: [{ propertyName: "cardElement", first: true, predicate: CardComponent, descendants: true, read: ElementRef }, { propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }, { propertyName: "buttonElement", first: true, predicate: ButtonComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "kirbyItemsDefault", predicate: ItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i,\n }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template\n #defaultItemTemplate\n let-item\n let-selected=\"selected\"\n let-index=\"index\"\n let-focused=\"focused\"\n>\n <kirby-item\n [selectable]=\"true\"\n [selected]=\"selected\"\n (click)=\"onItemSelect(index)\"\n [class.focused]=\"focused\"\n role=\"option\"\n >\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <p class=\"kirby-item-title\" tabindex=\"0\">{{ getTextFromItem(item) }}</p>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: ["@media (hover: hover) and (pointer: fine){:host{outline:none;border-radius:999px}:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host{display:inline-block;position:relative;max-width:calc(100vw - 32px)}:host.clicked{box-shadow:none}:host.expand{display:block}:host.expand kirby-card{width:100%;min-width:initial;max-width:initial}:host.error>button,:host.ng-touched.ng-invalid>button{border-color:var(--kirby-danger)}:host>button{position:relative;margin:0;outline:none;width:100%;min-width:0}:host>button.attention-level2{border:1px solid transparent}:host>button .text{overflow:hidden;text-overflow:ellipsis}:host kirby-card{display:none;opacity:0;position:absolute;z-index:800}:host.is-opening kirby-card{display:block}:host.is-open kirby-card{display:block;opacity:1}:host.is-open>button{box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}:host.popout-left kirby-card{right:0}:host.popout-up kirby-card{top:0;margin-top:-4px;transform:translateY(-100%)}:host.popout-up.is-open>button{z-index:801}kirby-popover{--max-height: 352px}kirby-card{max-height:352px;margin-block:4px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;max-width:calc(100vw - 32px);min-width:288px}@media (min-width: 321px){kirby-card{min-width:343px}}@media (hover: hover){:host-context(kirby-calendar)>button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-calendar)>button:active,:host-context(kirby-calendar)>button.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-calendar)>button{border-color:transparent;font-weight:700;font-size:initial}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"], dependencies: [{ kind: "component", type: i3.CardComponent, selector: "kirby-card", inputs: ["title", "subtitle", "backgroundImageUrl", "hasPadding", "sizes", "variant"] }, { kind: "component", type: i4.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "component", type: i5.ItemComponent, selector: "kirby-item", inputs: ["disabled", "selected", "disclosure", "selectable", "reorderable", "size", "rotateIcon"] }, { kind: "component", type: i6.PopoverComponent, selector: "kirby-popover", inputs: ["popout", "target"], outputs: ["willHide"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
470
470
|
}
|
|
471
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
472
472
|
type: Component,
|
|
473
473
|
args: [{ selector: 'kirby-dropdown', providers: [
|
|
474
474
|
{
|
|
@@ -476,7 +476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
476
476
|
useExisting: forwardRef((() => DropdownComponent)),
|
|
477
477
|
multi: true,
|
|
478
478
|
},
|
|
479
|
-
], template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i
|
|
479
|
+
], template: "<button\n kirby-button\n [size]=\"size\"\n [attentionLevel]=\"attentionLevel\"\n tabindex=\"-1\"\n (click)=\"onToggle($event)\"\n (mousedown)=\"onButtonMouseEvent($event)\"\n [disabled]=\"disabled\"\n type=\"button\"\n>\n <span class=\"text\">{{ selectedText || placeholder }}</span>\n <kirby-icon [name]=\"isOpen ? 'arrow-up' : 'arrow-down'\"></kirby-icon>\n</button>\n\n<ng-container *ngTemplateOutlet=\"usePopover ? popoverTemplate : itemWrapperTemplate\"></ng-container>\n\n<ng-template #popoverTemplate>\n <kirby-popover\n [target]=\"buttonElement\"\n [popout]=\"popout\"\n (click)=\"_onPopoverClick()\"\n (willHide)=\"_onPopoverWillHide()\"\n >\n <ng-container *ngTemplateOutlet=\"itemWrapperTemplate\"></ng-container>\n </kirby-popover>\n</ng-template>\n\n<ng-template #itemWrapperTemplate>\n <kirby-card>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate || defaultItemTemplate;\n context: {\n $implicit: item,\n selected: i === selectedIndex,\n focused: i === focusedIndex,\n index: i,\n }\n \"\n ></ng-container>\n </ng-container>\n </kirby-card>\n</ng-template>\n\n<ng-template\n #defaultItemTemplate\n let-item\n let-selected=\"selected\"\n let-index=\"index\"\n let-focused=\"focused\"\n>\n <kirby-item\n [selectable]=\"true\"\n [selected]=\"selected\"\n (click)=\"onItemSelect(index)\"\n [class.focused]=\"focused\"\n role=\"option\"\n >\n <!-- Tabindex fixes issue with popover dropdown not working in safari -->\n <p class=\"kirby-item-title\" tabindex=\"0\">{{ getTextFromItem(item) }}</p>\n <kirby-icon *ngIf=\"selected\" name=\"checkmark-selected\" slot=\"end\"></kirby-icon>\n </kirby-item>\n</ng-template>\n", styles: ["@media (hover: hover) and (pointer: fine){:host{outline:none;border-radius:999px}:host:focus{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host{display:inline-block;position:relative;max-width:calc(100vw - 32px)}:host.clicked{box-shadow:none}:host.expand{display:block}:host.expand kirby-card{width:100%;min-width:initial;max-width:initial}:host.error>button,:host.ng-touched.ng-invalid>button{border-color:var(--kirby-danger)}:host>button{position:relative;margin:0;outline:none;width:100%;min-width:0}:host>button.attention-level2{border:1px solid transparent}:host>button .text{overflow:hidden;text-overflow:ellipsis}:host kirby-card{display:none;opacity:0;position:absolute;z-index:800}:host.is-opening kirby-card{display:block}:host.is-open kirby-card{display:block;opacity:1}:host.is-open>button{box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26}:host.popout-left kirby-card{right:0}:host.popout-up kirby-card{top:0;margin-top:-4px;transform:translateY(-100%)}:host.popout-up.is-open>button{z-index:801}kirby-popover{--max-height: 352px}kirby-card{max-height:352px;margin-block:4px;overflow-y:auto;box-shadow:0 0 5px #1c1c1c0a,0 10px 15px -10px #1c1c1c26;max-width:calc(100vw - 32px);min-width:288px}@media (min-width: 321px){kirby-card{min-width:343px}}@media (hover: hover){:host-context(kirby-calendar)>button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer}}:host-context(kirby-calendar)>button:active,:host-context(kirby-calendar)>button.interaction-state-active{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black)}:host-context(kirby-calendar)>button{border-color:transparent;font-weight:700;font-size:initial}:host-context(kirby-calendar).is-open>button{box-shadow:none}\n"] }]
|
|
480
480
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.KeyboardHandlerService }, { type: i2.ResizeObserverService }], propDecorators: { items: [{
|
|
481
481
|
type: Input
|
|
482
482
|
}], selectedIndex: [{
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
608
608
|
type: HostListener,
|
|
609
609
|
args: ['keydown.end', ['$event']]
|
|
610
610
|
}] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBY3BFLE1BQU0sT0FBTyxpQkFBaUI7YUFDWixx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QyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQTRScEQsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnZDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3JDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUXRDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPO2dCQWNyQixnQkFBZ0I7c0JBRmYsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBVzlCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2hDLGVBQWU7c0JBRmQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnpDLFlBQVk7c0JBSlgsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4QzlDLGNBQWM7c0JBRmIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN2QyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9jYXJkJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IEl0ZW1Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2l0ZW0nO1xuaW1wb3J0IHsgTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vbGlzdCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsRGlyZWN0aW9uLCBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9wb3BvdmVyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcblxuaW1wb3J0IHsgT3BlblN0YXRlLCBWZXJ0aWNhbERpcmVjdGlvbiB9IGZyb20gJy4vZHJvcGRvd24udHlwZXMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4va2V5Ym9hcmQtaGFuZGxlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHN0YXRpYyByZWFkb25seSBPUEVOX0RFTEFZX0lOX01TID0gMTAwO1xuICBwcml2YXRlIHN0YXRlID0gT3BlblN0YXRlLmNsb3NlZDtcbiAgcHJpdmF0ZSBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsRGlyZWN0aW9uIHwgYCR7SG9yaXpvbnRhbERpcmVjdGlvbn1gID1cbiAgICBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICBwcml2YXRlIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbERpcmVjdGlvbiB8IGAke1ZlcnRpY2FsRGlyZWN0aW9ufWAgPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuXG4gIHByaXZhdGUgX2l0ZW1zOiBzdHJpbmdbXSB8IGFueVtdID0gW107XG4gIGdldCBpdGVtcygpOiBzdHJpbmdbXSB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgYW55W10pIHtcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0gfHwgbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBfZm9jdXNlZEluZGV4IGtlZXBzIHRyYWNrIG9mIHdoaWNoIGVsZW1lbnQgaGFzIGZvY3VzIGFuZCB3aWxsIGJlIHNlbGVjdGVkXG4gIC8vIGlmIGl0IGlzIGFjdGl2YXRlZCAoYnkgcHJlc3NpbmcgRU5URVIgb3IgU1BBQ0Uga2V5KVxuICBwcml2YXRlIF9mb2N1c2VkSW5kZXg6IG51bWJlciA9IC0xO1xuICBnZXQgZm9jdXNlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBmb2N1c2VkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9mb2N1c2VkSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2Nyb2xsSXRlbUludG9WaWV3KHRoaXMuX2ZvY3VzZWRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgaXRlbVRleHRQcm9wZXJ0eSA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlciA9ICdQbGVhc2Ugc2VsZWN0Oic7XG5cbiAgQElucHV0KCkgc2V0IHBvcG91dChkaXJlY3Rpb246IEhvcml6b250YWxEaXJlY3Rpb24gfCBgJHtIb3Jpem9udGFsRGlyZWN0aW9ufWApIHtcbiAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgfVxuXG4gIGdldCBwb3BvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGF0dGVudGlvbkxldmVsOiAnMScgfCAnMicgfCAnMycgPSAnMyc7XG5cbiAgQElucHV0KClcbiAgZXhwYW5kPzogJ2Jsb2NrJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBfaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lcnJvcicpXG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6ICdzbScgfCAnbWQnID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0YWJpbmRleCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53aXRoLXBvcG92ZXInKVxuICBASW5wdXQoKVxuICB1c2VQb3BvdmVyID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF90YWJpbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy50YWJpbmRleDtcbiAgfVxuXG4gIC8vIFByZXZlbnQgSW9uaWMgYmx1ciBvbiBzY3JvbGxcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm5vLWJsdXInKVxuICBnZXQgX25vQmx1ck9uU2Nyb2xsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkICh0YXAgb24gbW9iaWxlLCBjbGljay9rZXlwcmVzcyBvbiB3ZWIpXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBhbnkgPSBudWxsO1xuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGV4dEZyb21JdGVtKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmQnKVxuICBnZXQgX2lzQmxvY2tMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmQgPT09ICdibG9jayc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIF9yb2xlID0gJ2xpc3Rib3gnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbmluZycpXG4gIGdldCBfaXNPcGVuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbicpXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IE9wZW5TdGF0ZS5vcGVuO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb3BvdXQtbGVmdCcpXG4gIGdldCBfcG9wb3V0TGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID09PSBIb3Jpem9udGFsRGlyZWN0aW9uLmxlZnQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvcG91dC11cCcpXG4gIGdldCBfcG9wb3V0VXAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPT09IFZlcnRpY2FsRGlyZWN0aW9uLnVwO1xuICB9XG5cbiAgLyogVGhlICdjbGlja2VkJyBjbGFzcyBpcyBhcHBsaWVkIHRocm91Z2ggSG9zdGJpbmRpbmcgdG8gcHJldmVudCB0aGUgZHJvcGRvd24gZnJvbSBnZXR0aW5nIGEgZm9jdXMgcmluZyBvbiBjbGljay5cbiAgICBUaGVyZSBpcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGUgZHJvcGRvd24gdG8gZ2V0IGEgZm9jdXMgcmluZyBvbiBjbGljaywgaWYgaXQgaXMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyBpbnRlcmFjdGVkIHdpdGhcbiAgICBhZnRlciB0aGUgcGFnZSBpcyBsb2FkZWQuIElmIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFueSBvdGhlciBlbGVtZW50IGJlZm9yZSwgdGhlbiB0aGUgZHJvcGRvd24gd29uJ3QgZ2V0IGEgZm9jdXMgcmluZy5cbiAgICBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzI0NzcuXG5cbiAgICBUaGlzIHNvbHV0aW9uIGNhbiBwb3RlbnRpYWxseSBiZSByZWZhY3RvcmVkLCB3aGVuIHBvcG92ZXIgaXMgbm90IGV4cGVyaW1lbnRhbCBhbnltb3JlLiBUaGVuIGl0IGNvdWxkIGJlIHBvc3NpYmxlIFxuICAgIHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aGVuIHRoZSBwb3BvdmVyIGJhY2tkcm9wIGlzIGNsaWNrZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgYmx1ciBldmVudCwgd2hpY2ggaXMgdXRpbGl6ZWRcbiAgICBieSB0aGlzIGxpbmUgYmVsb3c6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCkuIFJpZ2h0IG5vdyB0aGlzIGZvcmNlcyB0aGUgYmx1ciBldmVudCB0byBiZSB0cmlnZ2VyZWQsIHdoZW5cbiAgICBjbGlja2luZyBvdXRzaWRlIG9mIHRoZSBkcm9wZG93bi5cbiAgICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsaWNrZWQnKVxuICBjbGlja2VkID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZChMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzbG90dGVkSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoQ2FyZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGNhcmRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICBwb3BvdmVyPzogUG9wb3ZlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKEl0ZW1Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBraXJieUl0ZW1zRGVmYXVsdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBfa2lyYnlJdGVtc1Nsb3R0ZWQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBDb250ZW50Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHNldCBraXJieUl0ZW1zU2xvdHRlZChraXJieUl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KSB7XG4gICAgY29uc3QgaGFzU2xvdHRlZEl0ZW1zID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbj8ubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2xvdHRlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVubGlzdGVuQWxsU2xvdHRlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgYSBjbGljayBsaXN0ZW5lciBmb3IgZWFjaCBuZXcgc2xvdHRlZCBpdGVtc1xuICAgIGtpcmJ5SXRlbXMuZm9yRWFjaCgoa2lyYnlJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoa2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgY29uc3QgdW5saXN0ZW46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAga2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdjbGljaycsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXRlbUNsaWNrVW5saXN0ZW4ucHVzaCh1bmxpc3Rlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9raXJieUl0ZW1zU2xvdHRlZCA9IGtpcmJ5SXRlbXM7XG4gIH1cblxuICBnZXQga2lyYnlJdGVtc1Nsb3R0ZWQoKTogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2tpcmJ5SXRlbXNTbG90dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtQ2xpY2tVbmxpc3RlbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbltdID0gW107XG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHNob3dEcm9wZG93blRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBrZXlib2FyZEhhbmRsZXJTZXJ2aWNlOiBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG9uVG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb25CdXR0b25Nb3VzZUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFByZXZlbnQgYnV0dG9uIGZvY3VzO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKiBVdGlsaXR5IHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNldCBzdHlsZXMgb24gY2FyZCBlbGVtZW50XG4gIHdoZW4gdXNpbmcgcG9wb3ZlciovXG4gIHByaXZhdGUgc2V0UG9wb3ZlckNhcmRTdHlsZShzdHlsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnVzZVBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBzdHlsZSxcbiAgICAgIHZhbHVlLFxuICAgICAgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlUG9wb3ZlciAmJiB0aGlzLmV4cGFuZCA9PT0gJ2Jsb2NrJykge1xuICAgICAgY29uc3QgeyB3aWR0aDogaW5pdGlhbFdpZHRoIH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWF4LXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWluLXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIC8vIEVuc3VyZSBpbml0aWFsIHdpZHRoIGlzIHNldCBldmVuIGlmIHRoZSByZXNpemUgb2JzZXJ2ZXIgY2FsbGJhY2sgYWxzbyBmaXJlcyBpbml0aWFsbHk6XG4gICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke2luaXRpYWxXaWR0aH1weGApO1xuXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZiwgKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gZW50cnkuY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgIGlmIChuZXdXaWR0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVBbGlnbm1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFsaWdubWVudCgpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICAvLyBHZXQgdGhlIGRlc2lnbiB0b2tlbiBzaXplIG9mIHRoZSBidXR0b24uIEluIHRoZSBidXR0b24gc3R5bGVzaGVldCBhIG1lZGl1bSBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoeGwpXG4gICAgICAvLyBhbmQgYSBzbWFsbCBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoXCJsXCIpXG4gICAgICBjb25zdCBkZXNpZ25Ub2tlblNpemVIZWlnaHQgPSB0aGlzLnNpemUgPT09ICdtZCcgPyAneGwnIDogJ2wnO1xuXG4gICAgICAvLyBTZXR0aW5nIHRoZSByb290TWFyZ2luIGVxdWFsIHRvIHRoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvblxuICAgICAgLy8gYWxsb3dzIHRoZSBJbnRlcnNlY3Rpb24gT2JzZXJ2ZXIgQ2FsbGJhY2sgdG8gYmUgY2FsbGVkXG4gICAgICAvLyBldmVuIGlmIHRoZSBkcm9wZG93biBidXR0b24gaXMgaW50ZXJzZWN0aW5nIHdpdGggdGhlIHZpZXdwb3J0XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICByb290TWFyZ2luOiBEZXNpZ25Ub2tlbkhlbHBlci5zaXplKGRlc2lnblRva2VuU2l6ZUhlaWdodCksXG4gICAgICB9O1xuICAgICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgICAvLyBPbmx5IGFwcGx5IGFsaWdubWVudCB3aGVuIG9wZW5pbmc6XG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyB0aW1lciB0byBzaG93IGRyb3Bkb3duOlxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+IDA7XG4gICAgICAgIGlmIChpc1Zpc2libGUgJiYgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPCAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRIb3Jpem9udGFsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgICB0aGlzLnNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SG9yaXpvbnRhbERpcmVjdGlvbihlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkge1xuICAgIC8vIElmIHBvcG91dCBkaXJlY3Rpb24gaXMgc2V0IHRvIHJpZ2h0LCBhbmQgdGhlIGVudHJ5IGlzIGN1dCBvZmYgdG8gdGhlIHJpZ2h0IGJ5ICR7ZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnJpZ2h0IC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5yaWdodH1weFxuICAgIC8vIGl0IGlzIHNldCB0byBwb3BvdXQgbGVmdCBpbnN0ZWFkLCBhbmQgdmljZSB2ZXJzYSBmb3IgcG9wb3V0IGRpcmVjdGlvbiBsZWZ0XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5yaWdodCA+IGVudHJ5LnJvb3RCb3VuZHMucmlnaHQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQgPCBlbnRyeS5yb290Qm91bmRzLmxlZnQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSB7XG4gICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgPCAwKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSB0b3AgYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QudG9wfXB4XG4gICAgICAvLyBvcGVuIGRvd253YXJkczpcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgIH1cbiAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA+IGVudHJ5LnJvb3RCb3VuZHMuYm90dG9tKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSBib3R0b20gYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuYm90dG9tIC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5ib3R0b219cHhcbiAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFRvcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IFNQQUNJTkcgPSA1OyAvL1RPRE86IEdldCBmcm9tIFNDU1NcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjYXJkIGNhbiBmaXQgb24gdG9wIG9mIGJ1dHRvbjpcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRUb3AgPiBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0ICsgU1BBQ0lORykge1xuICAgICAgICAvLyBvcGVuIHVwd2FyZHM6XG4gICAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi51cDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUub3BlbmluZztcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGluIGNhc2UgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgaXNuJ3QgaW52b2tlZFxuICAgICAgdGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnNob3dEcm9wZG93bigpLFxuICAgICAgICBEcm9wZG93bkNvbXBvbmVudC5PUEVOX0RFTEFZX0lOX01TXG4gICAgICApO1xuXG4gICAgICAvLyBNb3ZlIGZvY3VzIHRvIHNlbGVjdGVkIGl0ZW0gKGlmIGFueSlcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Ryb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5vcGVuO1xuICAgICAgdGhpcy5wb3BvdmVyPy5zaG93KCk7XG4gICAgICB0aGlzLnNjcm9sbEl0ZW1JbnRvVmlldyh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgICAgLy8gUmVzZXQgdmVydGljYWwgZGlyZWN0aW9uIHRvIGRlZmF1bHRcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgICAgdGhpcy5wb3BvdmVyPy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25JdGVtU2VsZWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaW5kZXgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RJdGVtQnlWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCdzIHZhbHVlXG4gICAqIGNoYW5nZXMgZnJvbSB1c2VyIGlucHV0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QgaXMgYmx1cnJlZFxuICAgKiBieSB0aGUgdXNlci4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHJlcXVpcmVkXG4gICAqIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ICE9IHRoaXMuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdEl0ZW1CeVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YodmFsdWUpO1xuICB9XG5cbiAgZ2V0VGV4dEZyb21JdGVtKGl0ZW06IHN0cmluZyB8IGFueSkge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLml0ZW1UZXh0UHJvcGVydHldO1xuICB9XG5cbiAgc2Nyb2xsSXRlbUludG9WaWV3KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBraXJieUl0ZW1zID1cbiAgICAgIHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWQgJiYgdGhpcy5raXJieUl0ZW1zU2xvdHRlZC5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkXG4gICAgICAgIDogdGhpcy5raXJieUl0ZW1zRGVmYXVsdDtcbiAgICBpZiAoa2lyYnlJdGVtcyAmJiBraXJieUl0ZW1zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRLaXJieUl0ZW0gPSBraXJieUl0ZW1zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICBpZiAoc2VsZWN0ZWRLaXJieUl0ZW0gJiYgc2VsZWN0ZWRLaXJieUl0ZW0ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpdGVtRWxlbWVudCA9IHNlbGVjdGVkS2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicsIFsnJGV2ZW50J10pXG4gIF9vblRhYihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlICdjbGlja2VkJyBjbGFzcyAoSG9zdGJpbmRpbmcpIGlmIHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IG9wZW5lZCB0aGUgZHJvcGRvd24gYnkgY2xpY2tpbmcsXG4gICAgICAvLyBzaW5jZSB0aGUgY2xhc3MgcHJldmVudHMgdGhlIGZvY3VzIHJpbmcgZnJvbSBzaG93aW5nLFxuICAgICAgLy8gd2hpY2ggaXMgZXhwZWN0ZWQgdG8gaGFwcGVuLCB3aGVuIHVzaW5nIHRoZSB0YWIga2V5XG4gICAgICB0aGlzLmNsaWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBfb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBfb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIF9vbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgX29uUG9wb3ZlcldpbGxIaWRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnKVxuICBfb25FbnRlck9yRXNjYXBlKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIF9vblBvcG92ZXJDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgX29uQmx1cigpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxuICBfb25FbnRlck9yU3BhY2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5mb2N1c2VkSW5kZXgpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgX29uQXJyb3dLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIE1pcnJvciBkZWZhdWx0IEhUTUw1IHNlbGVjdCBiZWhhdmlvdXIgLSBwcmV2ZW50IGxlZnQvcmlnaHQgYXJyb3dzIHdoZW4gb3BlbjpcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgLy8gQXZvaWQgcGFnZSBzY3JvbGxcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW4oKTtcblxuICAgICAgLy8gSWYgbm8gc2VsZWN0ZWQgaXRlbSB0aGVuIGZvY3VzIGZpcnN0IG9yIGxhc3QgaXRlbVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Rm9jdXNlZEluZGV4ID0gdGhpcy5rZXlib2FyZEhhbmRsZXJTZXJ2aWNlLmhhbmRsZShcbiAgICAgIGV2ZW50LFxuICAgICAgdGhpcy5mb2N1c2VkSW5kZXgsXG4gICAgICB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcbiAgICApO1xuXG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmhvbWUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVuZCcsIFsnJGV2ZW50J10pXG4gIF9vbkhvbWVFbmRLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdGb2N1c2VkSW5kZXggPSB0aGlzLmtleWJvYXJkSGFuZGxlclNlcnZpY2UuaGFuZGxlKFxuICAgICAgZXZlbnQsXG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCxcbiAgICAgIHRoaXMuaXRlbXMubGVuZ3RoIC0gMVxuICAgICk7XG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpIHtcbiAgICBsZXQgdW5saXN0ZW5JdGVtOiAoKSA9PiB2b2lkO1xuICAgIHdoaWxlICgodW5saXN0ZW5JdGVtID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbi5wb3AoKSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdW5saXN0ZW5JdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAga2lyYnktYnV0dG9uXG4gIFtzaXplXT1cInNpemVcIlxuICBbYXR0ZW50aW9uTGV2ZWxdPVwiYXR0ZW50aW9uTGV2ZWxcIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlKCRldmVudClcIlxuICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IHNlbGVjdGVkVGV4dCB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgPGtpcmJ5LWljb24gW25hbWVdPVwiaXNPcGVuID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJ1wiPjwva2lyYnktaWNvbj5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlUG9wb3ZlciA/IHBvcG92ZXJUZW1wbGF0ZSA6IGl0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gIDxraXJieS1wb3BvdmVyXG4gICAgW3RhcmdldF09XCJidXR0b25FbGVtZW50XCJcbiAgICBbcG9wb3V0XT1cInBvcG91dFwiXG4gICAgKGNsaWNrKT1cIl9vblBvcG92ZXJDbGljaygpXCJcbiAgICAod2lsbEhpZGUpPVwiX29uUG9wb3ZlcldpbGxIaWRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9raXJieS1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtV3JhcHBlclRlbXBsYXRlPlxuICA8a2lyYnktY2FyZD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgaXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGkgPT09IHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICBmb2N1c2VkOiBpID09PSBmb2N1c2VkSW5kZXgsXG4gICAgICAgICAgICBpbmRleDogaVxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9raXJieS1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNkZWZhdWx0SXRlbVRlbXBsYXRlXG4gIGxldC1pdGVtXG4gIGxldC1zZWxlY3RlZD1cInNlbGVjdGVkXCJcbiAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIlxuPlxuICA8a2lyYnktaXRlbVxuICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdChpbmRleClcIlxuICAgIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxuICAgIHJvbGU9XCJvcHRpb25cIlxuICA+XG4gICAgPCEtLSBUYWJpbmRleCBmaXhlcyBpc3N1ZSB3aXRoIHBvcG92ZXIgZHJvcGRvd24gbm90IHdvcmtpbmcgaW4gc2FmYXJpIC0tPlxuICAgIDxoMyB0YWJpbmRleD1cIjBcIj57eyBnZXRUZXh0RnJvbUl0ZW0oaXRlbSkgfX08L2gzPlxuICAgIDxraXJieS1pY29uICpuZ0lmPVwic2VsZWN0ZWRcIiBuYW1lPVwiY2hlY2ttYXJrLXNlbGVjdGVkXCIgc2xvdD1cImVuZFwiPjwva2lyYnktaWNvbj5cbiAgPC9raXJieS1pdGVtPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7O0FBY3BFLE1BQU0sT0FBTyxpQkFBaUI7YUFDWixx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QyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQTRScEQsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnZDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3JDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUXRDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxPQUFPO2dCQWNyQixnQkFBZ0I7c0JBRmYsWUFBWTt1QkFBQyxlQUFlOztzQkFDNUIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBVzlCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2hDLGVBQWU7c0JBRmQsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnpDLFlBQVk7c0JBSlgsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzFDLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4QzlDLGNBQWM7c0JBRmIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN2QyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9jYXJkJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7IEl0ZW1Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2l0ZW0nO1xuaW1wb3J0IHsgTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vbGlzdCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsRGlyZWN0aW9uLCBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9wb3BvdmVyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcblxuaW1wb3J0IHsgT3BlblN0YXRlLCBWZXJ0aWNhbERpcmVjdGlvbiB9IGZyb20gJy4vZHJvcGRvd24udHlwZXMnO1xuaW1wb3J0IHsgS2V5Ym9hcmRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4va2V5Ym9hcmQtaGFuZGxlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHN0YXRpYyByZWFkb25seSBPUEVOX0RFTEFZX0lOX01TID0gMTAwO1xuICBwcml2YXRlIHN0YXRlID0gT3BlblN0YXRlLmNsb3NlZDtcbiAgcHJpdmF0ZSBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsRGlyZWN0aW9uIHwgYCR7SG9yaXpvbnRhbERpcmVjdGlvbn1gID1cbiAgICBIb3Jpem9udGFsRGlyZWN0aW9uLnJpZ2h0O1xuICBwcml2YXRlIHZlcnRpY2FsRGlyZWN0aW9uOiBWZXJ0aWNhbERpcmVjdGlvbiB8IGAke1ZlcnRpY2FsRGlyZWN0aW9ufWAgPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuXG4gIHByaXZhdGUgX2l0ZW1zOiBzdHJpbmdbXSB8IGFueVtdID0gW107XG4gIGdldCBpdGVtcygpOiBzdHJpbmdbXSB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IHN0cmluZ1tdIHwgYW55W10pIHtcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPSB2YWx1ZSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0gfHwgbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBfZm9jdXNlZEluZGV4IGtlZXBzIHRyYWNrIG9mIHdoaWNoIGVsZW1lbnQgaGFzIGZvY3VzIGFuZCB3aWxsIGJlIHNlbGVjdGVkXG4gIC8vIGlmIGl0IGlzIGFjdGl2YXRlZCAoYnkgcHJlc3NpbmcgRU5URVIgb3IgU1BBQ0Uga2V5KVxuICBwcml2YXRlIF9mb2N1c2VkSW5kZXg6IG51bWJlciA9IC0xO1xuICBnZXQgZm9jdXNlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBmb2N1c2VkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9mb2N1c2VkSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2Nyb2xsSXRlbUludG9WaWV3KHRoaXMuX2ZvY3VzZWRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgaXRlbVRleHRQcm9wZXJ0eSA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlciA9ICdQbGVhc2Ugc2VsZWN0Oic7XG5cbiAgQElucHV0KCkgc2V0IHBvcG91dChkaXJlY3Rpb246IEhvcml6b250YWxEaXJlY3Rpb24gfCBgJHtIb3Jpem9udGFsRGlyZWN0aW9ufWApIHtcbiAgICB0aGlzLmhvcml6b250YWxEaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgfVxuXG4gIGdldCBwb3BvdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGF0dGVudGlvbkxldmVsOiAnMScgfCAnMicgfCAnMycgPSAnMyc7XG5cbiAgQElucHV0KClcbiAgZXhwYW5kPzogJ2Jsb2NrJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBfaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lcnJvcicpXG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6ICdzbScgfCAnbWQnID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0YWJpbmRleCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53aXRoLXBvcG92ZXInKVxuICBASW5wdXQoKVxuICB1c2VQb3BvdmVyID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF90YWJpbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogdGhpcy50YWJpbmRleDtcbiAgfVxuXG4gIC8vIFByZXZlbnQgSW9uaWMgYmx1ciBvbiBzY3JvbGxcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLm5vLWJsdXInKVxuICBnZXQgX25vQmx1ck9uU2Nyb2xsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkICh0YXAgb24gbW9iaWxlLCBjbGljay9rZXlwcmVzcyBvbiB3ZWIpXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBhbnkgPSBudWxsO1xuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGV4dEZyb21JdGVtKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmQnKVxuICBnZXQgX2lzQmxvY2tMZXZlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmQgPT09ICdibG9jayc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIF9yb2xlID0gJ2xpc3Rib3gnO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbmluZycpXG4gIGdldCBfaXNPcGVuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbicpXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IE9wZW5TdGF0ZS5vcGVuO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wb3BvdXQtbGVmdCcpXG4gIGdldCBfcG9wb3V0TGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID09PSBIb3Jpem9udGFsRGlyZWN0aW9uLmxlZnQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBvcG91dC11cCcpXG4gIGdldCBfcG9wb3V0VXAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPT09IFZlcnRpY2FsRGlyZWN0aW9uLnVwO1xuICB9XG5cbiAgLyogVGhlICdjbGlja2VkJyBjbGFzcyBpcyBhcHBsaWVkIHRocm91Z2ggSG9zdGJpbmRpbmcgdG8gcHJldmVudCB0aGUgZHJvcGRvd24gZnJvbSBnZXR0aW5nIGEgZm9jdXMgcmluZyBvbiBjbGljay5cbiAgICBUaGVyZSBpcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGUgZHJvcGRvd24gdG8gZ2V0IGEgZm9jdXMgcmluZyBvbiBjbGljaywgaWYgaXQgaXMgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyBpbnRlcmFjdGVkIHdpdGhcbiAgICBhZnRlciB0aGUgcGFnZSBpcyBsb2FkZWQuIElmIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFueSBvdGhlciBlbGVtZW50IGJlZm9yZSwgdGhlbiB0aGUgZHJvcGRvd24gd29uJ3QgZ2V0IGEgZm9jdXMgcmluZy5cbiAgICBTZWUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9raXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXNzdWVzLzI0NzcuXG5cbiAgICBUaGlzIHNvbHV0aW9uIGNhbiBwb3RlbnRpYWxseSBiZSByZWZhY3RvcmVkLCB3aGVuIHBvcG92ZXIgaXMgbm90IGV4cGVyaW1lbnRhbCBhbnltb3JlLiBUaGVuIGl0IGNvdWxkIGJlIHBvc3NpYmxlIFxuICAgIHRvIGNsb3NlIHRoZSBkcm9wZG93biB3aGVuIHRoZSBwb3BvdmVyIGJhY2tkcm9wIGlzIGNsaWNrZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgYmx1ciBldmVudCwgd2hpY2ggaXMgdXRpbGl6ZWRcbiAgICBieSB0aGlzIGxpbmUgYmVsb3c6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCkuIFJpZ2h0IG5vdyB0aGlzIGZvcmNlcyB0aGUgYmx1ciBldmVudCB0byBiZSB0cmlnZ2VyZWQsIHdoZW5cbiAgICBjbGlja2luZyBvdXRzaWRlIG9mIHRoZSBkcm9wZG93bi5cbiAgICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsaWNrZWQnKVxuICBjbGlja2VkID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZChMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBzbG90dGVkSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBWaWV3Q2hpbGQoQ2FyZENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGNhcmRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICBwb3BvdmVyPzogUG9wb3ZlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGJ1dHRvbkVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKEl0ZW1Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBraXJieUl0ZW1zRGVmYXVsdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICBfa2lyYnlJdGVtc1Nsb3R0ZWQ6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XG4gIEBDb250ZW50Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHNldCBraXJieUl0ZW1zU2xvdHRlZChraXJieUl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KSB7XG4gICAgY29uc3QgaGFzU2xvdHRlZEl0ZW1zID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbj8ubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2xvdHRlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVubGlzdGVuQWxsU2xvdHRlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgLy8gU2V0dXAgYSBjbGljayBsaXN0ZW5lciBmb3IgZWFjaCBuZXcgc2xvdHRlZCBpdGVtc1xuICAgIGtpcmJ5SXRlbXMuZm9yRWFjaCgoa2lyYnlJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoa2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ29wdGlvbicpO1xuICAgICAgY29uc3QgdW5saXN0ZW46IEV2ZW50TGlzdGVuZXJEaXNwb3NlRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAga2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdjbGljaycsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSXRlbVNlbGVjdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXRlbUNsaWNrVW5saXN0ZW4ucHVzaCh1bmxpc3Rlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9raXJieUl0ZW1zU2xvdHRlZCA9IGtpcmJ5SXRlbXM7XG4gIH1cblxuICBnZXQga2lyYnlJdGVtc1Nsb3R0ZWQoKTogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2tpcmJ5SXRlbXNTbG90dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtQ2xpY2tVbmxpc3RlbjogRXZlbnRMaXN0ZW5lckRpc3Bvc2VGbltdID0gW107XG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHNob3dEcm9wZG93blRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBrZXlib2FyZEhhbmRsZXJTZXJ2aWNlOiBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG9uVG9nZ2xlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb25CdXR0b25Nb3VzZUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFByZXZlbnQgYnV0dG9uIGZvY3VzO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKiBVdGlsaXR5IHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHNldCBzdHlsZXMgb24gY2FyZCBlbGVtZW50XG4gIHdoZW4gdXNpbmcgcG9wb3ZlciovXG4gIHByaXZhdGUgc2V0UG9wb3ZlckNhcmRTdHlsZShzdHlsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnVzZVBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBzdHlsZSxcbiAgICAgIHZhbHVlLFxuICAgICAgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlUG9wb3ZlciAmJiB0aGlzLmV4cGFuZCA9PT0gJ2Jsb2NrJykge1xuICAgICAgY29uc3QgeyB3aWR0aDogaW5pdGlhbFdpZHRoIH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWF4LXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIHRoaXMuc2V0UG9wb3ZlckNhcmRTdHlsZSgnbWluLXdpZHRoJywgJ2luaXRpYWwnKTtcbiAgICAgIC8vIEVuc3VyZSBpbml0aWFsIHdpZHRoIGlzIHNldCBldmVuIGlmIHRoZSByZXNpemUgb2JzZXJ2ZXIgY2FsbGJhY2sgYWxzbyBmaXJlcyBpbml0aWFsbHk6XG4gICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke2luaXRpYWxXaWR0aH1weGApO1xuXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZiwgKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gZW50cnkuY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgIGlmIChuZXdXaWR0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNldFBvcG92ZXJDYXJkU3R5bGUoJy0ta2lyYnktY2FyZC13aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVBbGlnbm1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFsaWdubWVudCgpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICAvLyBHZXQgdGhlIGRlc2lnbiB0b2tlbiBzaXplIG9mIHRoZSBidXR0b24uIEluIHRoZSBidXR0b24gc3R5bGVzaGVldCBhIG1lZGl1bSBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoeGwpXG4gICAgICAvLyBhbmQgYSBzbWFsbCBidXR0b24gaGVpZ2h0IGlzIHV0aWxzLnNpemUoXCJsXCIpXG4gICAgICBjb25zdCBkZXNpZ25Ub2tlblNpemVIZWlnaHQgPSB0aGlzLnNpemUgPT09ICdtZCcgPyAneGwnIDogJ2wnO1xuXG4gICAgICAvLyBTZXR0aW5nIHRoZSByb290TWFyZ2luIGVxdWFsIHRvIHRoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvblxuICAgICAgLy8gYWxsb3dzIHRoZSBJbnRlcnNlY3Rpb24gT2JzZXJ2ZXIgQ2FsbGJhY2sgdG8gYmUgY2FsbGVkXG4gICAgICAvLyBldmVuIGlmIHRoZSBkcm9wZG93biBidXR0b24gaXMgaW50ZXJzZWN0aW5nIHdpdGggdGhlIHZpZXdwb3J0XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICByb290TWFyZ2luOiBEZXNpZ25Ub2tlbkhlbHBlci5zaXplKGRlc2lnblRva2VuU2l6ZUhlaWdodCksXG4gICAgICB9O1xuICAgICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgICAvLyBPbmx5IGFwcGx5IGFsaWdubWVudCB3aGVuIG9wZW5pbmc6XG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbmNlbCBhbnkgcGVuZGluZyB0aW1lciB0byBzaG93IGRyb3Bkb3duOlxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQpO1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+IDA7XG4gICAgICAgIGlmIChpc1Zpc2libGUgJiYgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPCAxKSB7XG4gICAgICAgICAgdGhpcy5zZXRIb3Jpem9udGFsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgICB0aGlzLnNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLmNhcmRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SG9yaXpvbnRhbERpcmVjdGlvbihlbnRyeTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkge1xuICAgIC8vIElmIHBvcG91dCBkaXJlY3Rpb24gaXMgc2V0IHRvIHJpZ2h0LCBhbmQgdGhlIGVudHJ5IGlzIGN1dCBvZmYgdG8gdGhlIHJpZ2h0IGJ5ICR7ZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LnJpZ2h0IC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5yaWdodH1weFxuICAgIC8vIGl0IGlzIHNldCB0byBwb3BvdXQgbGVmdCBpbnN0ZWFkLCBhbmQgdmljZSB2ZXJzYSBmb3IgcG9wb3V0IGRpcmVjdGlvbiBsZWZ0XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbERpcmVjdGlvbiA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodCkge1xuICAgICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC5yaWdodCA+IGVudHJ5LnJvb3RCb3VuZHMucmlnaHQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQgPCBlbnRyeS5yb290Qm91bmRzLmxlZnQpIHtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsRGlyZWN0aW9uID0gSG9yaXpvbnRhbERpcmVjdGlvbi5yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZlcnRpY2FsRGlyZWN0aW9uKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSB7XG4gICAgaWYgKGVudHJ5LmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgPCAwKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSB0b3AgYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QudG9wfXB4XG4gICAgICAvLyBvcGVuIGRvd253YXJkczpcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgIH1cbiAgICBpZiAoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA+IGVudHJ5LnJvb3RCb3VuZHMuYm90dG9tKSB7XG4gICAgICAvLyBlbnRyeSBpcyBjdXQgb2ZmIGF0IHRoZSBib3R0b20gYnkgJHtlbnRyeS5ib3VuZGluZ0NsaWVudFJlY3QuYm90dG9tIC0gZW50cnkuaW50ZXJzZWN0aW9uUmVjdC5ib3R0b219cHhcbiAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFRvcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IFNQQUNJTkcgPSA1OyAvL1RPRE86IEdldCBmcm9tIFNDU1NcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBjYXJkIGNhbiBmaXQgb24gdG9wIG9mIGJ1dHRvbjpcbiAgICAgIGlmIChjb250YWluZXJPZmZzZXRUb3AgPiBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0ICsgU1BBQ0lORykge1xuICAgICAgICAvLyBvcGVuIHVwd2FyZHM6XG4gICAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi51cDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUub3BlbmluZztcbiAgICAgIC8vIGVuc3VyZXMgdGhhdCB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGluIGNhc2UgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgaXNuJ3QgaW52b2tlZFxuICAgICAgdGhpcy5zaG93RHJvcGRvd25UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnNob3dEcm9wZG93bigpLFxuICAgICAgICBEcm9wZG93bkNvbXBvbmVudC5PUEVOX0RFTEFZX0lOX01TXG4gICAgICApO1xuXG4gICAgICAvLyBNb3ZlIGZvY3VzIHRvIHNlbGVjdGVkIGl0ZW0gKGlmIGFueSlcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Ryb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSBPcGVuU3RhdGUub3BlbmluZykge1xuICAgICAgdGhpcy5zdGF0ZSA9IE9wZW5TdGF0ZS5vcGVuO1xuICAgICAgdGhpcy5wb3BvdmVyPy5zaG93KCk7XG4gICAgICB0aGlzLnNjcm9sbEl0ZW1JbnRvVmlldyh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgICAgLy8gUmVzZXQgdmVydGljYWwgZGlyZWN0aW9uIHRvIGRlZmF1bHRcbiAgICAgIHRoaXMudmVydGljYWxEaXJlY3Rpb24gPSBWZXJ0aWNhbERpcmVjdGlvbi5kb3duO1xuICAgICAgdGhpcy5wb3BvdmVyPy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25JdGVtU2VsZWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaW5kZXgpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0J3MgdmFsdWUuIFBhcnQgb2YgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICAgKiByZXF1aXJlZCB0byBpbnRlZ3JhdGUgd2l0aCBBbmd1bGFyJ3MgY29yZSBmb3JtcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgbW9kZWwuXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RJdGVtQnlWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHNlbGVjdCdzIHZhbHVlXG4gICAqIGNoYW5nZXMgZnJvbSB1c2VyIGlucHV0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgICogcmVxdWlyZWQgdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBzZWxlY3QgaXMgYmx1cnJlZFxuICAgKiBieSB0aGUgdXNlci4gUGFydCBvZiB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlIHJlcXVpcmVkXG4gICAqIHRvIGludGVncmF0ZSB3aXRoIEFuZ3VsYXIncyBjb3JlIGZvcm1zIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyB0aGUgc2VsZWN0LiBQYXJ0IG9mIHRoZSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2UgcmVxdWlyZWRcbiAgICogdG8gaW50ZWdyYXRlIHdpdGggQW5ndWxhcidzIGNvcmUgZm9ybXMgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBTZXRzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ICE9IHRoaXMuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdEl0ZW1CeVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLml0ZW1zLmluZGV4T2YodmFsdWUpO1xuICB9XG5cbiAgZ2V0VGV4dEZyb21JdGVtKGl0ZW06IHN0cmluZyB8IGFueSkge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLml0ZW1UZXh0UHJvcGVydHldO1xuICB9XG5cbiAgc2Nyb2xsSXRlbUludG9WaWV3KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBraXJieUl0ZW1zID1cbiAgICAgIHRoaXMua2lyYnlJdGVtc1Nsb3R0ZWQgJiYgdGhpcy5raXJieUl0ZW1zU2xvdHRlZC5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmtpcmJ5SXRlbXNTbG90dGVkXG4gICAgICAgIDogdGhpcy5raXJieUl0ZW1zRGVmYXVsdDtcbiAgICBpZiAoa2lyYnlJdGVtcyAmJiBraXJieUl0ZW1zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRLaXJieUl0ZW0gPSBraXJieUl0ZW1zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICBpZiAoc2VsZWN0ZWRLaXJieUl0ZW0gJiYgc2VsZWN0ZWRLaXJieUl0ZW0ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBpdGVtRWxlbWVudCA9IHNlbGVjdGVkS2lyYnlJdGVtLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnRhYicsIFsnJGV2ZW50J10pXG4gIF9vblRhYihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlICdjbGlja2VkJyBjbGFzcyAoSG9zdGJpbmRpbmcpIGlmIHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IG9wZW5lZCB0aGUgZHJvcGRvd24gYnkgY2xpY2tpbmcsXG4gICAgICAvLyBzaW5jZSB0aGUgY2xhc3MgcHJldmVudHMgdGhlIGZvY3VzIHJpbmcgZnJvbSBzaG93aW5nLFxuICAgICAgLy8gd2hpY2ggaXMgZXhwZWN0ZWQgdG8gaGFwcGVuLCB3aGVuIHVzaW5nIHRoZSB0YWIga2V5XG4gICAgICB0aGlzLmNsaWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBfb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBfb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIF9vbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgX29uUG9wb3ZlcldpbGxIaWRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSBPcGVuU3RhdGUuY2xvc2VkO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnKVxuICBfb25FbnRlck9yRXNjYXBlKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIF9vblBvcG92ZXJDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQnXSlcbiAgX29uQmx1cigpIHtcbiAgICBpZiAodGhpcy51c2VQb3BvdmVyKSByZXR1cm47XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc3BhY2UnLCBbJyRldmVudCddKVxuICBfb25FbnRlck9yU3BhY2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5mb2N1c2VkSW5kZXgpO1xuICAgIH1cblxuICAgIHRoaXMudG9nZ2xlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93dXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93ZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dsZWZ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3JpZ2h0JywgWyckZXZlbnQnXSlcbiAgX29uQXJyb3dLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIE1pcnJvciBkZWZhdWx0IEhUTUw1IHNlbGVjdCBiZWhhdmlvdXIgLSBwcmV2ZW50IGxlZnQvcmlnaHQgYXJyb3dzIHdoZW4gb3BlbjpcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgLy8gQXZvaWQgcGFnZSBzY3JvbGxcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW4oKTtcblxuICAgICAgLy8gSWYgbm8gc2VsZWN0ZWQgaXRlbSB0aGVuIGZvY3VzIGZpcnN0IG9yIGxhc3QgaXRlbVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IDApIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Rm9jdXNlZEluZGV4ID0gdGhpcy5rZXlib2FyZEhhbmRsZXJTZXJ2aWNlLmhhbmRsZShcbiAgICAgIGV2ZW50LFxuICAgICAgdGhpcy5mb2N1c2VkSW5kZXgsXG4gICAgICB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcbiAgICApO1xuXG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmhvbWUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVuZCcsIFsnJGV2ZW50J10pXG4gIF9vbkhvbWVFbmRLZXlzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdGb2N1c2VkSW5kZXggPSB0aGlzLmtleWJvYXJkSGFuZGxlclNlcnZpY2UuaGFuZGxlKFxuICAgICAgZXZlbnQsXG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCxcbiAgICAgIHRoaXMuaXRlbXMubGVuZ3RoIC0gMVxuICAgICk7XG4gICAgaWYgKG5ld0ZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IG5ld0ZvY3VzZWRJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpIHtcbiAgICBsZXQgdW5saXN0ZW5JdGVtOiAoKSA9PiB2b2lkO1xuICAgIHdoaWxlICgodW5saXN0ZW5JdGVtID0gdGhpcy5pdGVtQ2xpY2tVbmxpc3Rlbi5wb3AoKSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdW5saXN0ZW5JdGVtKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bmxpc3RlbkFsbFNsb3R0ZWRJdGVtcygpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmKSB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAga2lyYnktYnV0dG9uXG4gIFtzaXplXT1cInNpemVcIlxuICBbYXR0ZW50aW9uTGV2ZWxdPVwiYXR0ZW50aW9uTGV2ZWxcIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlKCRldmVudClcIlxuICAobW91c2Vkb3duKT1cIm9uQnV0dG9uTW91c2VFdmVudCgkZXZlbnQpXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidGV4dFwiPnt7IHNlbGVjdGVkVGV4dCB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgPGtpcmJ5LWljb24gW25hbWVdPVwiaXNPcGVuID8gJ2Fycm93LXVwJyA6ICdhcnJvdy1kb3duJ1wiPjwva2lyYnktaWNvbj5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlUG9wb3ZlciA/IHBvcG92ZXJUZW1wbGF0ZSA6IGl0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gIDxraXJieS1wb3BvdmVyXG4gICAgW3RhcmdldF09XCJidXR0b25FbGVtZW50XCJcbiAgICBbcG9wb3V0XT1cInBvcG91dFwiXG4gICAgKGNsaWNrKT1cIl9vblBvcG92ZXJDbGljaygpXCJcbiAgICAod2lsbEhpZGUpPVwiX29uUG9wb3ZlcldpbGxIaWRlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1XcmFwcGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9raXJieS1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtV3JhcHBlclRlbXBsYXRlPlxuICA8a2lyYnktY2FyZD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgaXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGkgPT09IHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICBmb2N1c2VkOiBpID09PSBmb2N1c2VkSW5kZXgsXG4gICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwva2lyYnktY2FyZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdEl0ZW1UZW1wbGF0ZVxuICBsZXQtaXRlbVxuICBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWZvY3VzZWQ9XCJmb2N1c2VkXCJcbj5cbiAgPGtpcmJ5LWl0ZW1cbiAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaW5kZXgpXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJmb2N1c2VkXCJcbiAgICByb2xlPVwib3B0aW9uXCJcbiAgPlxuICAgIDwhLS0gVGFiaW5kZXggZml4ZXMgaXNzdWUgd2l0aCBwb3BvdmVyIGRyb3Bkb3duIG5vdCB3b3JraW5nIGluIHNhZmFyaSAtLT5cbiAgICA8cCBjbGFzcz1cImtpcmJ5LWl0ZW0tdGl0bGVcIiB0YWJpbmRleD1cIjBcIj57eyBnZXRUZXh0RnJvbUl0ZW0oaXRlbSkgfX08L3A+XG4gICAgPGtpcmJ5LWljb24gKm5nSWY9XCJzZWxlY3RlZFwiIG5hbWU9XCJjaGVja21hcmstc2VsZWN0ZWRcIiBzbG90PVwiZW5kXCI+PC9raXJieS1pY29uPlxuICA8L2tpcmJ5LWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -11,15 +11,15 @@ import { KeyboardHandlerService } from './keyboard-handler.service';
|
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
const declarations = [DropdownComponent];
|
|
13
13
|
export class DropdownModule {
|
|
14
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
15
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
14
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
15
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DropdownModule, declarations: [DropdownComponent], imports: [CardModule,
|
|
16
16
|
IconModule,
|
|
17
17
|
ItemModule,
|
|
18
18
|
FormFieldModule,
|
|
19
19
|
PopoverComponent,
|
|
20
20
|
ButtonComponent,
|
|
21
21
|
CommonModule], exports: [DropdownComponent] }); }
|
|
22
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
22
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownModule, providers: [KeyboardHandlerService], imports: [CardModule,
|
|
23
23
|
IconModule,
|
|
24
24
|
ItemModule,
|
|
25
25
|
FormFieldModule,
|
|
@@ -27,7 +27,7 @@ export class DropdownModule {
|
|
|
27
27
|
ButtonComponent,
|
|
28
28
|
CommonModule] }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownModule, decorators: [{
|
|
31
31
|
type: NgModule,
|
|
32
32
|
args: [{
|
|
33
33
|
imports: [
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
44
44
|
providers: [KeyboardHandlerService],
|
|
45
45
|
}]
|
|
46
46
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZHJvcGRvd24vc3JjL2Ryb3Bkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRSxNQUFNLFlBQVksR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxjQUFjO2tJQUFkLGNBQWM7bUlBQWQsY0FBYyxpQkFoQkwsaUJBQWlCLGFBSW5DLFVBQVU7WUFDVixVQUFVO1lBQ1YsVUFBVTtZQUNWLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLFlBQVksYUFWTSxpQkFBaUI7bUlBZ0IxQixjQUFjLGFBRmQsQ0FBQyxzQkFBc0IsQ0FBQyxZQVZqQyxVQUFVO1lBQ1YsVUFBVTtZQUNWLFVBQVU7WUFDVixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixZQUFZOzs0RkFNSCxjQUFjO2tCQWQxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDO29CQUMvQixPQUFPLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztvQkFDMUIsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYnV0dG9uJztcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2NhcmQnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2ljb24nO1xuaW1wb3J0IHsgSXRlbU1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaXRlbSc7XG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9wb3BvdmVyJztcblxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlib2FyZEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9rZXlib2FyZC1oYW5kbGVyLnNlcnZpY2UnO1xuXG5jb25zdCBkZWNsYXJhdGlvbnMgPSBbRHJvcGRvd25Db21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ2FyZE1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIEl0ZW1Nb2R1bGUsXG4gICAgRm9ybUZpZWxkTW9kdWxlLFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zXSxcbiAgZXhwb3J0czogWy4uLmRlY2xhcmF0aW9uc10sXG4gIHByb3ZpZGVyczogW0tleWJvYXJkSGFuZGxlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1vZHVsZSB7fVxuIl19
|
|
@@ -38,13 +38,13 @@ export class KeyboardHandlerService {
|
|
|
38
38
|
}
|
|
39
39
|
return newIndex;
|
|
40
40
|
}
|
|
41
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
42
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
41
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, providedIn: 'root' }); }
|
|
43
43
|
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KeyboardHandlerService, decorators: [{
|
|
45
45
|
type: Injectable,
|
|
46
46
|
args: [{
|
|
47
47
|
providedIn: 'root',
|
|
48
48
|
}]
|
|
49
49
|
}] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZHJvcGRvd24vc3JjL2tleWJvYXJkLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxLQUFvQixFQUFFLGFBQXFCLEVBQUUsUUFBZ0IsRUFBRSxXQUFXLEdBQUcsS0FBSztRQUN2RixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQixRQUFRLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssV0FBVztnQkFDZCxJQUFJLGFBQWEsS0FBSyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ3ZDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQ3RCLENBQUM7cUJBQU0sQ0FBQztvQkFDTix3QkFBd0I7b0JBQ3hCLFFBQVEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUMvRSxvQ0FBb0M7b0JBQ3BDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2YsQ0FBQztxQkFBTSxJQUFJLGFBQWEsR0FBRyxRQUFRLEVBQUUsQ0FBQztvQkFDcEMsb0JBQW9CO29CQUNwQixRQUFRLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULHFCQUFxQjtnQkFDckIsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDYixNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLG9CQUFvQjtnQkFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDcEIsTUFBTTtZQUNSO2dCQUNFLE1BQU07UUFDVixDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztrSUFuQ1Usc0JBQXNCO3NJQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEtleWJvYXJkSGFuZGxlclNlcnZpY2Uge1xuICBoYW5kbGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHNlbGVjdGVkSW5kZXg6IG51bWJlciwgbWF4SW5kZXg6IG51bWJlciwgY3ljbGljSW5kZXggPSBmYWxzZSkge1xuICAgIGxldCBuZXdJbmRleCA9IC0xO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAwICYmIGN5Y2xpY0luZGV4KSB7XG4gICAgICAgICAgbmV3SW5kZXggPSBtYXhJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTZWxlY3QgcHJldmlvdXMgaXRlbTpcbiAgICAgICAgICBuZXdJbmRleCA9IHNlbGVjdGVkSW5kZXggLSAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkIHx8IChzZWxlY3RlZEluZGV4ID09PSBtYXhJbmRleCAmJiBjeWNsaWNJbmRleCkpIHtcbiAgICAgICAgICAvLyBOb25lIHNlbGVjdGVkLCBzZWxlY3QgZmlyc3QgaXRlbTpcbiAgICAgICAgICBuZXdJbmRleCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA8IG1heEluZGV4KSB7XG4gICAgICAgICAgLy8gU2VsZWN0IG5leHQgaXRlbTpcbiAgICAgICAgICBuZXdJbmRleCA9IHNlbGVjdGVkSW5kZXggKyAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIC8vIFNlbGVjdCBmaXJzdCBpdGVtOlxuICAgICAgICBuZXdJbmRleCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgLy8gU2VsZWN0IGxhc3QgaXRlbTpcbiAgICAgICAgbmV3SW5kZXggPSBtYXhJbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG5ld0luZGV4O1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,33 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, Input, QueryList, Renderer2, } from '@angular/core';
|
|
2
2
|
import { ButtonComponent } from '@kirbydesign/designsystem/button';
|
|
3
|
+
import { getIonModalDialogAncestor } from '@kirbydesign/designsystem/helpers';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@kirbydesign/designsystem/icon";
|
|
5
6
|
import * as i2 from "@angular/common";
|
|
6
7
|
export class EmptyStateComponent {
|
|
8
|
+
set title(value) {
|
|
9
|
+
this._title = value;
|
|
10
|
+
if (this.ionModalDialog) {
|
|
11
|
+
this.renderer.setAttribute(this.ionModalDialog, 'aria-label', value);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
get title() {
|
|
15
|
+
return this._title;
|
|
16
|
+
}
|
|
17
|
+
constructor(elementRef, renderer) {
|
|
18
|
+
this.elementRef = elementRef;
|
|
19
|
+
this.renderer = renderer;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
/* If initialized inside a modal we want to set
|
|
23
|
+
* the aria-label attribute on ion-modal to the title of empty state.
|
|
24
|
+
* Further updates are handled by title setter.
|
|
25
|
+
*/
|
|
26
|
+
this.ionModalDialog = getIonModalDialogAncestor(this.elementRef.nativeElement);
|
|
27
|
+
if (this.ionModalDialog) {
|
|
28
|
+
this.renderer.setAttribute(this.ionModalDialog, 'aria-label', this.title);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
7
31
|
ngAfterContentInit() {
|
|
8
32
|
this.enforceAttentionLevelRules();
|
|
9
33
|
/* setTimeout prevents ExpressionChangedAfterItHasBeenCheckedError when changing attention
|
|
@@ -26,13 +50,13 @@ export class EmptyStateComponent {
|
|
|
26
50
|
}
|
|
27
51
|
});
|
|
28
52
|
}
|
|
29
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
53
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EmptyStateComponent, selector: "kirby-empty-state", inputs: { iconName: "iconName", title: "title", subtitle: "subtitle" }, queries: [{ propertyName: "slottedButtons", predicate: ButtonComponent }], ngImport: i0, template: "<article>\n <div *ngIf=\"iconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <span *ngIf=\"title\" class=\"title kirby-text-medium\">{{ title }}</span>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
55
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateComponent, decorators: [{
|
|
33
57
|
type: Component,
|
|
34
|
-
args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <
|
|
35
|
-
}], propDecorators: { iconName: [{
|
|
58
|
+
args: [{ selector: 'kirby-empty-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article>\n <div *ngIf=\"iconName\" class=\"icon-outline\">\n <kirby-icon [name]=\"iconName\" size=\"lg\"></kirby-icon>\n </div>\n <span *ngIf=\"title\" class=\"title kirby-text-medium\">{{ title }}</span>\n <p *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</p>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</article>\n", styles: ["article{max-width:330px;margin:auto;display:flex;flex-direction:column;justify-content:center;text-align:center}.icon-outline{width:96px;height:96px;margin-left:auto;margin-right:auto;margin-bottom:24px;display:flex;flex-direction:column;justify-content:center;border:4px solid var(--kirby-medium);border-radius:50%}kirby-icon{color:var(--kirby-medium)}.title{margin-bottom:8px}p.subtitle{margin-bottom:24px;white-space:pre-wrap}:host(.primary) .icon-outline{border-color:var(--kirby-primary)}:host(.primary) kirby-icon{color:var(--kirby-primary)}:host(.secondary) .icon-outline{border-color:var(--kirby-secondary)}:host(.secondary) kirby-icon{color:var(--kirby-secondary)}:host(.tertiary) .icon-outline{border-color:var(--kirby-tertiary)}:host(.tertiary) kirby-icon{color:var(--kirby-tertiary)}:host(.success) .icon-outline{border-color:var(--kirby-success)}:host(.success) kirby-icon{color:var(--kirby-success)}:host(.warning) .icon-outline{border-color:var(--kirby-warning)}:host(.warning) kirby-icon{color:var(--kirby-warning)}:host(.danger) .icon-outline{border-color:var(--kirby-danger)}:host(.danger) kirby-icon{color:var(--kirby-danger)}:host(.white-overlay) .icon-outline{border-color:var(--kirby-white-overlay)}:host(.white-overlay) kirby-icon{color:var(--kirby-white-overlay)}:host(.light) .icon-outline{border-color:var(--kirby-light)}:host(.light) kirby-icon{color:var(--kirby-light)}:host(.medium) .icon-outline{border-color:var(--kirby-medium)}:host(.medium) kirby-icon{color:var(--kirby-medium)}:host(.dark) .icon-outline{border-color:var(--kirby-dark)}:host(.dark) kirby-icon{color:var(--kirby-dark)}:host(.dark-overlay) .icon-outline{border-color:var(--kirby-dark-overlay)}:host(.dark-overlay) kirby-icon{color:var(--kirby-dark-overlay)}\n"] }]
|
|
59
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { iconName: [{
|
|
36
60
|
type: Input
|
|
37
61
|
}], title: [{
|
|
38
62
|
type: Input
|
|
@@ -42,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
42
66
|
type: ContentChildren,
|
|
43
67
|
args: [ButtonComponent]
|
|
44
68
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZW1wdHktc3RhdGUvc3JjL2VtcHR5LXN0YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2VtcHR5LXN0YXRlL3NyYy9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVE5RSxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLElBQWEsS0FBSyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU9ELFlBQ1UsVUFBbUMsRUFDbkMsUUFBbUI7UUFEbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUMxQixDQUFDO0lBRUosUUFBUTtRQUNOOzs7V0FHRztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEM7dUVBQytEO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUYsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7a0lBL0RVLG1CQUFtQjtzSEFBbkIsbUJBQW1CLGdLQW9CYixlQUFlLDZCQ3hDbEMsc1dBVUE7OzRGRFVhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTt1R0FNdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQVlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0UsY0FBYztzQkFEckIsZUFBZTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5pbXBvcnQgeyBnZXRJb25Nb2RhbERpYWxvZ0FuY2VzdG9yIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktZW1wdHktc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW1wdHktc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRW1wdHlTdGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCB7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgaW9uTW9kYWxEaWFsb2c6IEhUTUxFbGVtZW50O1xuXG4gIEBJbnB1dCgpIGljb25OYW1lOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aXRsZSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuaW9uTW9kYWxEaWFsb2cpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuaW9uTW9kYWxEaWFsb2csICdhcmlhLWxhYmVsJywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihCdXR0b25Db21wb25lbnQpXG4gIHByaXZhdGUgc2xvdHRlZEJ1dHRvbnM6IFF1ZXJ5TGlzdDxCdXR0b25Db21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKiBJZiBpbml0aWFsaXplZCBpbnNpZGUgYSBtb2RhbCB3ZSB3YW50IHRvIHNldFxuICAgICAqIHRoZSBhcmlhLWxhYmVsIGF0dHJpYnV0ZSBvbiBpb24tbW9kYWwgdG8gdGhlIHRpdGxlIG9mIGVtcHR5IHN0YXRlLlxuICAgICAqIEZ1cnRoZXIgdXBkYXRlcyBhcmUgaGFuZGxlZCBieSB0aXRsZSBzZXR0ZXIuXG4gICAgICovXG4gICAgdGhpcy5pb25Nb2RhbERpYWxvZyA9IGdldElvbk1vZGFsRGlhbG9nQW5jZXN0b3IodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRGlhbG9nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmlvbk1vZGFsRGlhbG9nLCAnYXJpYS1sYWJlbCcsIHRoaXMudGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzKCk7XG5cbiAgICAvKiBzZXRUaW1lb3V0IHByZXZlbnRzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3Igd2hlbiBjaGFuZ2luZyBhdHRlbnRpb24gXG4gICAgbGV2ZWxzIG9mIHNsb3R0ZWQgYnV0dG9ucyBpbiB0aGlzLmVuZm9yY2VBdHRlbnRpb25MZXZlbFJ1bGVzICovXG4gICAgdGhpcy5zbG90dGVkQnV0dG9ucy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZW5mb3JjZUF0dGVudGlvbkxldmVsUnVsZXMoKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogRW5mb3JjZXMgdGhhdCBhbGwgc2xvdHRlZCBidXR0b25zIHdpbGwgaGF2ZSB0aGVpciBhdHRlbnRpb25cbiAgICogbGV2ZWwgc2V0IHRvIDMsIGV4Y2VwdCB0aGUgZmlyc3QgYnV0dG9uIGlmIGl0IGhhc1xuICAgKiBsZXZlbCAxLlxuICAgKi9cbiAgcHJpdmF0ZSBlbmZvcmNlQXR0ZW50aW9uTGV2ZWxSdWxlcygpIHtcbiAgICB0aGlzLnNsb3R0ZWRCdXR0b25zLmZvckVhY2goKGJ1dHRvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiAoYnV0dG9uLmF0dGVudGlvbkxldmVsID09PSB1bmRlZmluZWQgfHwgYnV0dG9uLmF0dGVudGlvbkxldmVsID09PSAnMScpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1dHRvbi5hdHRlbnRpb25MZXZlbCAhPT0gJzMnKSB7XG4gICAgICAgIGJ1dHRvbi5hdHRlbnRpb25MZXZlbCA9ICczJztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGFydGljbGU+XG4gIDxkaXYgKm5nSWY9XCJpY29uTmFtZVwiIGNsYXNzPVwiaWNvbi1vdXRsaW5lXCI+XG4gICAgPGtpcmJ5LWljb24gW25hbWVdPVwiaWNvbk5hbWVcIiBzaXplPVwibGdcIj48L2tpcmJ5LWljb24+XG4gIDwvZGl2PlxuICA8c3BhbiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZSBraXJieS10ZXh0LW1lZGl1bVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICA8cCAqbmdJZj1cInN1YnRpdGxlXCIgY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IHN1YnRpdGxlIH19PC9wPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2FydGljbGU+XG4iXX0=
|
|
@@ -6,11 +6,11 @@ import { EmptyStateComponent } from './empty-state.component';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
const declarations = [EmptyStateComponent];
|
|
8
8
|
export class EmptyStateModule {
|
|
9
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
10
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
11
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateModule, declarations: [EmptyStateComponent], imports: [IconModule, CommonModule, ThemeColorDirective], exports: [EmptyStateComponent, ThemeColorDirective] }); }
|
|
11
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateModule, imports: [IconModule, CommonModule] }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyStateModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
imports: [IconModule, CommonModule, ThemeColorDirective],
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
18
18
|
exports: [...declarations, ThemeColorDirective],
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZW1wdHktc3RhdGUvc3JjL2VtcHR5LXN0YXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTlELE1BQU0sWUFBWSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQU8zQyxNQUFNLE9BQU8sZ0JBQWdCO2tJQUFoQixnQkFBZ0I7bUlBQWhCLGdCQUFnQixpQkFQUCxtQkFBbUIsYUFHN0IsVUFBVSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsYUFIbkMsbUJBQW1CLEVBS1osbUJBQW1CO21JQUVuQyxnQkFBZ0IsWUFKakIsVUFBVSxFQUFFLFlBQVk7OzRGQUl2QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztvQkFDeEQsWUFBWSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLG1CQUFtQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBUaGVtZUNvbG9yRGlyZWN0aXZlIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9zaGFyZWQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuY29uc3QgZGVjbGFyYXRpb25zID0gW0VtcHR5U3RhdGVDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbSWNvbk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBUaGVtZUNvbG9yRGlyZWN0aXZlXSxcbiAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zXSxcbiAgZXhwb3J0czogWy4uLmRlY2xhcmF0aW9ucywgVGhlbWVDb2xvckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEVtcHR5U3RhdGVNb2R1bGUge31cbiJdfQ==
|