@sbb-esta/lyne-elements 2.10.1 → 3.0.0-next.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/_index.scss +1 -1
- package/action-group/action-group.component.d.ts.map +1 -1
- package/alert/alert/alert.component.d.ts +2 -7
- package/alert/alert/alert.component.d.ts.map +1 -1
- package/alert/alert/alert.component.js +55 -67
- package/autocomplete/autocomplete-base-element.d.ts +26 -17
- package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/autocomplete/autocomplete-base-element.js +98 -70
- package/autocomplete/autocomplete.component.d.ts +3 -2
- package/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/autocomplete/autocomplete.component.js +16 -19
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +3 -2
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +22 -25
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -0
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +6 -7
- package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +4 -1
- package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +11 -13
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +4 -6
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +25 -29
- package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +4 -1
- package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -1
- package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +10 -12
- package/autocomplete.js +4 -5
- package/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +1 -0
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
- package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +9 -12
- package/button/accent-button/accent-button.component.d.ts +1 -0
- package/button/accent-button/accent-button.component.d.ts.map +1 -1
- package/button/button/button.component.d.ts +1 -0
- package/button/button/button.component.d.ts.map +1 -1
- package/button/common/button-common.d.ts +4 -6
- package/button/common/button-common.d.ts.map +1 -1
- package/button/mini-button/mini-button.component.d.ts +1 -0
- package/button/mini-button/mini-button.component.d.ts.map +1 -1
- package/button/secondary-button/secondary-button.component.d.ts +1 -0
- package/button/secondary-button/secondary-button.component.d.ts.map +1 -1
- package/button/transparent-button/transparent-button.component.d.ts +1 -0
- package/button/transparent-button/transparent-button.component.d.ts.map +1 -1
- package/calendar/calendar.component.d.ts +18 -14
- package/calendar/calendar.component.d.ts.map +1 -1
- package/calendar/calendar.component.js +137 -123
- package/card/card/card.component.d.ts +0 -6
- package/card/card/card.component.d.ts.map +1 -1
- package/card/card/card.component.js +11 -19
- package/card/card-badge/card-badge.component.d.ts +4 -1
- package/card/card-badge/card-badge.component.d.ts.map +1 -1
- package/card/card-badge/card-badge.component.js +8 -11
- package/card/card-button/card-button.component.d.ts +1 -0
- package/card/card-button/card-button.component.d.ts.map +1 -1
- package/card/common/card-action-common.d.ts.map +1 -1
- package/card/common/card-action-common.js +21 -24
- package/checkbox/checkbox/checkbox.component.d.ts +4 -1
- package/checkbox/checkbox/checkbox.component.d.ts.map +1 -1
- package/checkbox/checkbox/checkbox.component.js +48 -38
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts +4 -1
- package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/checkbox/checkbox-panel/checkbox-panel.component.js +46 -36
- package/checkbox/common/checkbox-common.d.ts +4 -2
- package/checkbox/common/checkbox-common.d.ts.map +1 -1
- package/chip/chip/chip.component.d.ts +5 -6
- package/chip/chip/chip.component.d.ts.map +1 -1
- package/chip/chip/chip.component.js +37 -50
- package/chip/chip-group/chip-group.component.d.ts +22 -10
- package/chip/chip-group/chip-group.component.d.ts.map +1 -1
- package/chip/chip-group/chip-group.component.js +131 -116
- package/clock/clock.component.d.ts +1 -1
- package/clock/clock.component.d.ts.map +1 -1
- package/clock/clock.component.js +2 -2
- package/container/sticky-bar/sticky-bar.component.d.ts +5 -0
- package/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
- package/container/sticky-bar/sticky-bar.component.js +48 -38
- package/core/a11y/focus.d.ts +0 -32
- package/core/a11y/focus.d.ts.map +1 -1
- package/core/a11y/focus.js +3 -65
- package/core/a11y/input-modality-detector.d.ts +0 -5
- package/core/a11y/input-modality-detector.d.ts.map +1 -1
- package/core/a11y/input-modality-detector.js +16 -27
- package/core/a11y/interactivity-checker.d.ts +0 -11
- package/core/a11y/interactivity-checker.d.ts.map +1 -1
- package/core/a11y/interactivity-checker.js +0 -1
- package/core/a11y/live-announcer.d.ts +62 -0
- package/core/a11y/live-announcer.d.ts.map +1 -0
- package/core/a11y/live-announcer.js +47 -0
- package/core/a11y.d.ts +1 -0
- package/core/a11y.d.ts.map +1 -1
- package/core/a11y.js +19 -21
- package/core/base-elements/action-base-element.d.ts +3 -1
- package/core/base-elements/action-base-element.d.ts.map +1 -1
- package/core/base-elements/action-base-element.js +12 -11
- package/core/base-elements/button-base-element.d.ts +25 -18
- package/core/base-elements/button-base-element.d.ts.map +1 -1
- package/core/base-elements/button-base-element.js +97 -65
- package/core/base-elements/open-close-base-element.d.ts +3 -1
- package/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/core/base-elements/open-close-base-element.js +2 -1
- package/core/base-elements.js +9 -8
- package/core/controllers/inert-controller.d.ts.map +1 -1
- package/core/controllers/inert-controller.js +3 -3
- package/core/controllers.d.ts +0 -1
- package/core/controllers.d.ts.map +1 -1
- package/core/controllers.js +17 -19
- package/core/datetime/date-adapter.d.ts +2 -2
- package/core/datetime/date-adapter.d.ts.map +1 -1
- package/core/datetime/date-adapter.js +1 -1
- package/core/datetime/native-date-adapter.d.ts +2 -3
- package/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/core/datetime/native-date-adapter.js +71 -75
- package/core/decorators/id-reference.d.ts +11 -0
- package/core/decorators/id-reference.d.ts.map +1 -0
- package/core/decorators/id-reference.js +79 -0
- package/core/decorators/plain-date.d.ts +23 -0
- package/core/decorators/plain-date.d.ts.map +1 -0
- package/core/decorators/plain-date.js +29 -0
- package/core/decorators.d.ts +2 -2
- package/core/decorators.d.ts.map +1 -1
- package/core/decorators.js +17 -16
- package/core/dom.d.ts +0 -2
- package/core/dom.d.ts.map +1 -1
- package/core/dom.js +22 -26
- package/core/eventing/forward-event.d.ts +0 -6
- package/core/eventing/forward-event.d.ts.map +1 -1
- package/core/eventing/forward-event.js +4 -6
- package/core/eventing.js +12 -13
- package/core/i18n/i18n.d.ts +4 -1
- package/core/i18n/i18n.d.ts.map +1 -1
- package/core/i18n/i18n.js +106 -88
- package/core/i18n.js +42 -39
- package/core/interfaces/types.d.ts +0 -1
- package/core/interfaces/types.d.ts.map +1 -1
- package/core/mixins/animation-complete-mixin.d.ts +1 -1
- package/core/mixins/animation-complete-mixin.d.ts.map +1 -1
- package/core/mixins/disabled-mixin.d.ts +2 -2
- package/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/core/mixins/element-internals-mixin.d.ts +15 -0
- package/core/mixins/element-internals-mixin.d.ts.map +1 -0
- package/core/mixins/element-internals-mixin.js +41 -0
- package/core/mixins/form-associated-checkbox-mixin.d.ts +7 -13
- package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-checkbox-mixin.js +30 -26
- package/core/mixins/form-associated-input-mixin.d.ts +15 -9
- package/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-input-mixin.js +65 -49
- package/core/mixins/form-associated-mixin.d.ts +8 -7
- package/core/mixins/form-associated-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-mixin.js +49 -41
- package/core/mixins/form-associated-radio-button-mixin.d.ts +6 -14
- package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
- package/core/mixins/form-associated-radio-button-mixin.js +32 -23
- package/core/mixins/readonly-mixin.d.ts +10 -0
- package/core/mixins/readonly-mixin.d.ts.map +1 -0
- package/core/mixins/readonly-mixin.js +30 -0
- package/core/mixins/required-mixin.d.ts +2 -2
- package/core/mixins/required-mixin.d.ts.map +1 -1
- package/core/mixins.d.ts +2 -0
- package/core/mixins.d.ts.map +1 -1
- package/core/mixins.js +25 -21
- package/core/styles/core.scss +38 -14
- package/core/styles/mixins/font-face.scss +6 -18
- package/core/styles/mixins/link.scss +3 -7
- package/core/styles/mixins/lists.scss +0 -63
- package/core/styles/mixins/overlay.scss +7 -1
- package/core/styles/mixins/table.scss +0 -7
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +2 -0
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +7 -1
- package/core/styles/table.scss +0 -4
- package/core/testing.d.ts +0 -1
- package/core/testing.d.ts.map +1 -1
- package/core/testing.js +8 -10
- package/core.css +48 -18
- package/custom-elements.json +13214 -6131
- package/date-input/date-input.component.d.ts +12 -14
- package/date-input/date-input.component.d.ts.map +1 -1
- package/date-input/date-input.component.js +53 -57
- package/datepicker/common/datepicker-association-controllers.d.ts.map +1 -1
- package/datepicker/common/datepicker-association-controllers.js +7 -7
- package/datepicker/common/datepicker-button.d.ts +0 -12
- package/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/datepicker/common/datepicker-button.js +45 -59
- package/datepicker/datepicker/datepicker.component.d.ts +3 -20
- package/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/datepicker/datepicker/datepicker.component.js +85 -95
- package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -0
- package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
- package/datepicker/datepicker-next-day/datepicker-next-day.component.js +12 -12
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -0
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +13 -13
- package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +0 -8
- package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
- package/datepicker/datepicker-toggle/datepicker-toggle.component.js +51 -65
- package/datepicker/datepicker.js +2 -4
- package/datepicker.js +10 -12
- package/development/action-group/action-group.component.d.ts.map +1 -1
- package/development/action-group/action-group.component.js +1 -1
- package/development/alert/alert/alert.component.d.ts +2 -7
- package/development/alert/alert/alert.component.d.ts.map +1 -1
- package/development/alert/alert/alert.component.js +8 -26
- package/development/autocomplete/autocomplete-base-element.d.ts +26 -17
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +69 -39
- package/development/autocomplete/autocomplete.component.d.ts +3 -2
- package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.component.js +5 -9
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +3 -2
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +5 -9
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -0
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +2 -3
- package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +4 -1
- package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +5 -7
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +4 -6
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +20 -19
- package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +4 -1
- package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -1
- package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +5 -7
- package/development/autocomplete.js +2 -3
- package/development/breadcrumb/breadcrumb/breadcrumb.component.js +2 -2
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +1 -0
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
- package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +5 -8
- package/development/button/accent-button/accent-button.component.d.ts +1 -0
- package/development/button/accent-button/accent-button.component.d.ts.map +1 -1
- package/development/button/accent-button/accent-button.component.js +1 -1
- package/development/button/button/button.component.d.ts +1 -0
- package/development/button/button/button.component.d.ts.map +1 -1
- package/development/button/button/button.component.js +1 -1
- package/development/button/common/button-common.d.ts +4 -6
- package/development/button/common/button-common.d.ts.map +1 -1
- package/development/button/common/button-common.js +1 -1
- package/development/button/mini-button/mini-button.component.d.ts +1 -0
- package/development/button/mini-button/mini-button.component.d.ts.map +1 -1
- package/development/button/mini-button/mini-button.component.js +1 -1
- package/development/button/secondary-button/secondary-button.component.d.ts +1 -0
- package/development/button/secondary-button/secondary-button.component.d.ts.map +1 -1
- package/development/button/secondary-button/secondary-button.component.js +1 -1
- package/development/button/transparent-button/transparent-button.component.d.ts +1 -0
- package/development/button/transparent-button/transparent-button.component.d.ts.map +1 -1
- package/development/button/transparent-button/transparent-button.component.js +1 -1
- package/development/calendar/calendar.component.d.ts +18 -14
- package/development/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar.component.js +57 -36
- package/development/card/card/card.component.d.ts +0 -6
- package/development/card/card/card.component.d.ts.map +1 -1
- package/development/card/card/card.component.js +5 -13
- package/development/card/card-badge/card-badge.component.d.ts +4 -1
- package/development/card/card-badge/card-badge.component.d.ts.map +1 -1
- package/development/card/card-badge/card-badge.component.js +6 -8
- package/development/card/card-button/card-button.component.d.ts +1 -0
- package/development/card/card-button/card-button.component.d.ts.map +1 -1
- package/development/card/card-button/card-button.component.js +1 -1
- package/development/card/common/card-action-common.d.ts.map +1 -1
- package/development/card/common/card-action-common.js +6 -15
- package/development/checkbox/checkbox/checkbox.component.d.ts +4 -1
- package/development/checkbox/checkbox/checkbox.component.d.ts.map +1 -1
- package/development/checkbox/checkbox/checkbox.component.js +19 -4
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts +4 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
- package/development/checkbox/checkbox-panel/checkbox-panel.component.js +20 -4
- package/development/checkbox/common/checkbox-common.d.ts +4 -2
- package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
- package/development/checkbox/common/checkbox-common.js +1 -1
- package/development/chip/chip/chip.component.d.ts +5 -6
- package/development/chip/chip/chip.component.d.ts.map +1 -1
- package/development/chip/chip/chip.component.js +12 -31
- package/development/chip/chip-group/chip-group.component.d.ts +22 -10
- package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
- package/development/chip/chip-group/chip-group.component.js +52 -27
- package/development/clock/clock.component.d.ts +1 -1
- package/development/clock/clock.component.d.ts.map +1 -1
- package/development/clock/clock.component.js +3 -3
- package/development/container/sticky-bar/sticky-bar.component.d.ts +5 -0
- package/development/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
- package/development/container/sticky-bar/sticky-bar.component.js +30 -9
- package/development/core/a11y/focus.d.ts +0 -32
- package/development/core/a11y/focus.d.ts.map +1 -1
- package/development/core/a11y/focus.js +2 -82
- package/development/core/a11y/input-modality-detector.d.ts +0 -5
- package/development/core/a11y/input-modality-detector.d.ts.map +1 -1
- package/development/core/a11y/input-modality-detector.js +2 -18
- package/development/core/a11y/interactivity-checker.d.ts +0 -11
- package/development/core/a11y/interactivity-checker.d.ts.map +1 -1
- package/development/core/a11y/interactivity-checker.js +1 -2
- package/development/core/a11y/live-announcer.d.ts +62 -0
- package/development/core/a11y/live-announcer.d.ts.map +1 -0
- package/development/core/a11y/live-announcer.js +87 -0
- package/development/core/a11y.d.ts +1 -0
- package/development/core/a11y.d.ts.map +1 -1
- package/development/core/a11y.js +7 -9
- package/development/core/base-elements/action-base-element.d.ts +3 -1
- package/development/core/base-elements/action-base-element.d.ts.map +1 -1
- package/development/core/base-elements/action-base-element.js +3 -2
- package/development/core/base-elements/button-base-element.d.ts +25 -18
- package/development/core/base-elements/button-base-element.d.ts.map +1 -1
- package/development/core/base-elements/button-base-element.js +105 -67
- package/development/core/base-elements/open-close-base-element.d.ts +3 -1
- package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
- package/development/core/base-elements/open-close-base-element.js +3 -2
- package/development/core/base-elements.js +2 -1
- package/development/core/controllers/inert-controller.d.ts.map +1 -1
- package/development/core/controllers/inert-controller.js +2 -2
- package/development/core/controllers.d.ts +0 -1
- package/development/core/controllers.d.ts.map +1 -1
- package/development/core/controllers.js +1 -3
- package/development/core/datetime/date-adapter.d.ts +2 -2
- package/development/core/datetime/date-adapter.d.ts.map +1 -1
- package/development/core/datetime/date-adapter.js +2 -2
- package/development/core/datetime/native-date-adapter.d.ts +2 -3
- package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
- package/development/core/datetime/native-date-adapter.js +2 -6
- package/development/core/decorators/id-reference.d.ts +11 -0
- package/development/core/decorators/id-reference.d.ts.map +1 -0
- package/development/core/decorators/id-reference.js +123 -0
- package/development/core/decorators/plain-date.d.ts +23 -0
- package/development/core/decorators/plain-date.d.ts.map +1 -0
- package/development/core/decorators/plain-date.js +37 -0
- package/development/core/decorators.d.ts +2 -2
- package/development/core/decorators.d.ts.map +1 -1
- package/development/core/decorators.js +5 -4
- package/development/core/dom.d.ts +0 -2
- package/development/core/dom.d.ts.map +1 -1
- package/development/core/dom.js +1 -5
- package/development/core/eventing/forward-event.d.ts +0 -6
- package/development/core/eventing/forward-event.d.ts.map +1 -1
- package/development/core/eventing/forward-event.js +2 -4
- package/development/core/eventing.js +1 -2
- package/development/core/i18n/i18n.d.ts +4 -1
- package/development/core/i18n/i18n.d.ts.map +1 -1
- package/development/core/i18n/i18n.js +43 -22
- package/development/core/i18n.js +4 -1
- package/development/core/interfaces/types.d.ts +0 -1
- package/development/core/interfaces/types.d.ts.map +1 -1
- package/development/core/mixins/animation-complete-mixin.d.ts +1 -1
- package/development/core/mixins/animation-complete-mixin.d.ts.map +1 -1
- package/development/core/mixins/animation-complete-mixin.js +1 -1
- package/development/core/mixins/disabled-mixin.d.ts +2 -2
- package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
- package/development/core/mixins/disabled-mixin.js +1 -1
- package/development/core/mixins/element-internals-mixin.d.ts +15 -0
- package/development/core/mixins/element-internals-mixin.d.ts.map +1 -0
- package/development/core/mixins/element-internals-mixin.js +59 -0
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts +7 -13
- package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-checkbox-mixin.js +8 -6
- package/development/core/mixins/form-associated-input-mixin.d.ts +15 -9
- package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-input-mixin.js +39 -20
- package/development/core/mixins/form-associated-mixin.d.ts +8 -7
- package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-mixin.js +31 -17
- package/development/core/mixins/form-associated-radio-button-mixin.d.ts +6 -14
- package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
- package/development/core/mixins/form-associated-radio-button-mixin.js +20 -8
- package/development/core/mixins/readonly-mixin.d.ts +10 -0
- package/development/core/mixins/readonly-mixin.d.ts.map +1 -0
- package/development/core/mixins/readonly-mixin.js +40 -0
- package/development/core/mixins/required-mixin.d.ts +2 -2
- package/development/core/mixins/required-mixin.d.ts.map +1 -1
- package/development/core/mixins/required-mixin.js +1 -1
- package/development/core/mixins.d.ts +2 -0
- package/development/core/mixins.d.ts.map +1 -1
- package/development/core/mixins.js +5 -1
- package/development/core/testing.d.ts +0 -1
- package/development/core/testing.d.ts.map +1 -1
- package/development/core/testing.js +1 -3
- package/development/date-input/date-input.component.d.ts +12 -14
- package/development/date-input/date-input.component.d.ts.map +1 -1
- package/development/date-input/date-input.component.js +17 -22
- package/development/datepicker/common/datepicker-association-controllers.d.ts.map +1 -1
- package/development/datepicker/common/datepicker-association-controllers.js +3 -3
- package/development/datepicker/common/datepicker-button.d.ts +0 -12
- package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
- package/development/datepicker/common/datepicker-button.js +1 -23
- package/development/datepicker/datepicker/datepicker.component.d.ts +3 -20
- package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/development/datepicker/datepicker/datepicker.component.js +24 -33
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -0
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +7 -6
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -0
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +7 -6
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +0 -8
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -21
- package/development/datepicker/datepicker.js +2 -4
- package/development/datepicker.js +2 -4
- package/development/divider/divider.component.d.ts +2 -1
- package/development/divider/divider.component.d.ts.map +1 -1
- package/development/divider/divider.component.js +5 -8
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +5 -1
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +9 -8
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +2 -0
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
- package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +6 -5
- package/development/file-selector/common/file-selector-common.d.ts +6 -5
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/development/file-selector/common/file-selector-common.js +4 -4
- package/development/file-selector/file-selector/file-selector.component.d.ts +1 -0
- package/development/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
- package/development/file-selector/file-selector/file-selector.component.js +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts +1 -0
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/flip-card/flip-card-details/flip-card-details.component.d.ts +1 -0
- package/development/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
- package/development/flip-card/flip-card-details/flip-card-details.component.js +6 -5
- package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -0
- package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
- package/development/flip-card/flip-card-summary/flip-card-summary.component.js +6 -5
- package/development/footer/footer.component.js +1 -1
- package/development/form-field/form-field/form-field.component.d.ts +9 -10
- package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/development/form-field/form-field/form-field.component.js +169 -180
- package/development/form-field/form-field-clear/form-field-clear.component.d.ts +1 -0
- package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
- package/development/form-field/form-field-clear/form-field-clear.component.js +3 -5
- package/development/header/common/header-action-common.d.ts +3 -3
- package/development/header/common/header-action-common.d.ts.map +1 -1
- package/development/header/common/header-action-common.js +1 -1
- package/development/header/header/header.component.d.ts +8 -4
- package/development/header/header/header.component.d.ts.map +1 -1
- package/development/header/header/header.component.js +17 -10
- package/development/header/header-button/header-button.component.d.ts +1 -0
- package/development/header/header-button/header-button.component.d.ts.map +1 -1
- package/development/header/header-button/header-button.component.js +1 -1
- package/development/image/image.component.d.ts +1 -1
- package/development/image/image.component.d.ts.map +1 -1
- package/development/image/image.component.js +7 -6
- package/development/link/block-link-button/block-link-button.component.d.ts +1 -0
- package/development/link/block-link-button/block-link-button.component.d.ts.map +1 -1
- package/development/link/block-link-button/block-link-button.component.js +1 -1
- package/development/link/common/block-link-common.d.ts +3 -4
- package/development/link/common/block-link-common.d.ts.map +1 -1
- package/development/link/common/block-link-common.js +4 -4
- package/development/link/common/inline-link-common.d.ts +3 -2
- package/development/link/common/inline-link-common.d.ts.map +1 -1
- package/development/link/common/inline-link-common.js +2 -2
- package/development/link/common/link-common.d.ts +4 -2
- package/development/link/common/link-common.d.ts.map +1 -1
- package/development/link/common/link-common.js +1 -1
- package/development/link/common.js +1 -1
- package/development/link/link-button/link-button.component.d.ts +1 -0
- package/development/link/link-button/link-button.component.d.ts.map +1 -1
- package/development/link/link-button/link-button.component.js +1 -1
- package/development/{link-common-CJEWffDZ.js → link-common-DPLJx5Uo.js} +2 -2
- package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -1
- package/development/link.js +1 -1
- package/development/loading-indicator/loading-indicator.component.d.ts +5 -1
- package/development/loading-indicator/loading-indicator.component.d.ts.map +1 -1
- package/development/loading-indicator/loading-indicator.component.js +9 -8
- package/development/loading-indicator-circle/loading-indicator-circle.component.d.ts +5 -1
- package/development/loading-indicator-circle/loading-indicator-circle.component.d.ts.map +1 -1
- package/development/loading-indicator-circle/loading-indicator-circle.component.js +9 -8
- package/development/menu/common/menu-action-common.d.ts +4 -8
- package/development/menu/common/menu-action-common.d.ts.map +1 -1
- package/development/menu/common/menu-action-common.js +5 -63
- package/development/menu/menu/menu.component.d.ts +5 -4
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +17 -13
- package/development/menu/menu-button/menu-button.component.d.ts +1 -0
- package/development/menu/menu-button/menu-button.component.d.ts.map +1 -1
- package/development/menu/menu-button/menu-button.component.js +1 -1
- package/development/navigation/navigation/navigation.component.d.ts +6 -4
- package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.js +18 -15
- package/development/navigation/navigation-button/navigation-button.component.d.ts +1 -0
- package/development/navigation/navigation-button/navigation-button.component.d.ts.map +1 -1
- package/development/navigation/navigation-button/navigation-button.component.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.d.ts +5 -4
- package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +19 -16
- package/development/notification/notification.component.d.ts +4 -7
- package/development/notification/notification.component.d.ts.map +1 -1
- package/development/notification/notification.component.js +12 -29
- package/development/option/optgroup/optgroup-base-element.d.ts +2 -1
- package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/development/option/optgroup/optgroup-base-element.js +16 -37
- package/development/option/option/option-base-element.d.ts +6 -12
- package/development/option/option/option-base-element.d.ts.map +1 -1
- package/development/option/option/option-base-element.js +25 -21
- package/development/option/option/option.component.d.ts +5 -2
- package/development/option/option/option.component.d.ts.map +1 -1
- package/development/option/option/option.component.js +24 -21
- package/development/overlay/overlay-base-element.d.ts +1 -8
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +10 -30
- package/development/paginator/common/paginator-common.d.ts +3 -7
- package/development/paginator/common/paginator-common.d.ts.map +1 -1
- package/development/paginator/common/paginator-common.js +16 -29
- package/development/paginator/paginator/paginator.component.d.ts +0 -5
- package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
- package/development/paginator/paginator/paginator.component.js +2 -14
- package/development/popover/popover/popover.component.d.ts +3 -3
- package/development/popover/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover/popover.component.js +18 -13
- package/development/popover/popover-trigger/popover-trigger.component.d.ts +1 -0
- package/development/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -1
- package/development/popover/popover-trigger/popover-trigger.component.js +1 -1
- package/development/radio-button/common/radio-button-common.d.ts +4 -2
- package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/development/radio-button/common/radio-button-common.js +1 -1
- package/development/radio-button/radio-button/radio-button.component.d.ts +6 -2
- package/development/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
- package/development/radio-button/radio-button/radio-button.component.js +21 -4
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +8 -6
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.component.js +8 -11
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -2
- package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-panel/radio-button-panel.component.js +22 -4
- package/development/sbb-tokens-CVLcOi-S.js +1 -1
- package/development/select/select.component.d.ts +18 -12
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +122 -69
- package/development/sidebar/icon-sidebar/icon-sidebar.component.d.ts +4 -2
- package/development/sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
- package/development/sidebar/icon-sidebar/icon-sidebar.component.js +5 -6
- package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +1 -0
- package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
- package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +2 -2
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +2 -0
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +6 -3
- package/development/sidebar/sidebar-title/sidebar-title.component.d.ts +1 -0
- package/development/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-title/sidebar-title.component.js +6 -3
- package/development/slider/slider.component.d.ts +6 -15
- package/development/slider/slider.component.d.ts.map +1 -1
- package/development/slider/slider.component.js +37 -85
- package/development/stepper/step/step.component.d.ts +4 -1
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +6 -8
- package/development/stepper/step-label/step-label.component.d.ts +2 -0
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +5 -8
- package/development/stepper/stepper/stepper.component.d.ts +1 -1
- package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/development/stepper/stepper/stepper.component.js +9 -8
- package/development/table/table-wrapper/table-wrapper.component.d.ts +2 -1
- package/development/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
- package/development/table/table-wrapper/table-wrapper.component.js +4 -6
- package/development/tabs/tab/tab.component.d.ts +4 -1
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +4 -3
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +2 -4
- package/development/tabs/tab-label/tab-label.component.d.ts +2 -1
- package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/development/tabs/tab-label/tab-label.component.js +8 -5
- package/development/tag/tag/tag.component.d.ts +7 -3
- package/development/tag/tag/tag.component.d.ts.map +1 -1
- package/development/tag/tag/tag.component.js +26 -7
- package/development/tag/tag-group/tag-group.component.d.ts +7 -5
- package/development/tag/tag-group/tag-group.component.d.ts.map +1 -1
- package/development/tag/tag-group/tag-group.component.js +29 -21
- package/development/teaser-product/common/teaser-product-common.d.ts +4 -2
- package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
- package/development/teaser-product/common/teaser-product-common.js +1 -1
- package/development/time-input/time-input.component.d.ts +29 -42
- package/development/time-input/time-input.component.d.ts.map +1 -1
- package/development/time-input/time-input.component.js +158 -205
- package/development/title/title-base.d.ts +4 -1
- package/development/title/title-base.d.ts.map +1 -1
- package/development/title/title-base.js +9 -17
- package/development/toast/toast.component.d.ts +3 -4
- package/development/toast/toast.component.d.ts.map +1 -1
- package/development/toast/toast.component.js +53 -73
- package/development/toggle/toggle/toggle.component.d.ts +13 -9
- package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
- package/development/toggle/toggle/toggle.component.js +29 -29
- package/development/toggle/toggle-option/toggle-option.component.d.ts +5 -3
- package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/development/toggle/toggle-option/toggle-option.component.js +6 -8
- package/development/toggle-check/toggle-check.component.d.ts +5 -2
- package/development/toggle-check/toggle-check.component.d.ts.map +1 -1
- package/development/toggle-check/toggle-check.component.js +19 -4
- package/divider/divider.component.d.ts +2 -1
- package/divider/divider.component.d.ts.map +1 -1
- package/divider/divider.component.js +26 -29
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +5 -1
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +14 -14
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +2 -0
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
- package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +20 -20
- package/file-selector/common/file-selector-common.d.ts +6 -5
- package/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/file-selector/common/file-selector-common.js +35 -35
- package/file-selector/file-selector/file-selector.component.d.ts +1 -0
- package/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts +1 -0
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
- package/flip-card/flip-card-details/flip-card-details.component.d.ts +1 -0
- package/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
- package/flip-card/flip-card-details/flip-card-details.component.js +16 -16
- package/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -0
- package/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
- package/flip-card/flip-card-summary/flip-card-summary.component.js +13 -13
- package/font-characters-extension.css +3 -3
- package/footer/footer.component.js +1 -1
- package/form-field/form-field/form-field.component.d.ts +9 -10
- package/form-field/form-field/form-field.component.d.ts.map +1 -1
- package/form-field/form-field/form-field.component.js +194 -209
- package/form-field/form-field-clear/form-field-clear.component.d.ts +1 -0
- package/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
- package/form-field/form-field-clear/form-field-clear.component.js +9 -12
- package/header/common/header-action-common.d.ts +3 -3
- package/header/common/header-action-common.d.ts.map +1 -1
- package/header/header/header.component.d.ts +8 -4
- package/header/header/header.component.d.ts.map +1 -1
- package/header/header/header.component.js +51 -46
- package/header/header-button/header-button.component.d.ts +1 -0
- package/header/header-button/header-button.component.d.ts.map +1 -1
- package/image/image.component.d.ts +1 -1
- package/image/image.component.d.ts.map +1 -1
- package/image/image.component.js +4 -2
- package/link/block-link-button/block-link-button.component.d.ts +1 -0
- package/link/block-link-button/block-link-button.component.d.ts.map +1 -1
- package/link/common/block-link-common.d.ts +3 -4
- package/link/common/block-link-common.d.ts.map +1 -1
- package/link/common/block-link-common.js +6 -6
- package/link/common/inline-link-common.d.ts +3 -2
- package/link/common/inline-link-common.d.ts.map +1 -1
- package/link/common/inline-link-common.js +1 -1
- package/link/common/link-common.d.ts +4 -2
- package/link/common/link-common.d.ts.map +1 -1
- package/link/common/link-common.js +1 -1
- package/link/common.js +1 -1
- package/link/link-button/link-button.component.d.ts +1 -0
- package/link/link-button/link-button.component.d.ts.map +1 -1
- package/{link-common-DZrQ-32d.js → link-common-BBKGg9HN.js} +1 -1
- package/link-list/link-list-anchor/link-list-anchor.component.js +4 -4
- package/link.js +1 -1
- package/loading-indicator/loading-indicator.component.d.ts +5 -1
- package/loading-indicator/loading-indicator.component.d.ts.map +1 -1
- package/loading-indicator/loading-indicator.component.js +9 -9
- package/loading-indicator-circle/loading-indicator-circle.component.d.ts +5 -1
- package/loading-indicator-circle/loading-indicator-circle.component.d.ts.map +1 -1
- package/loading-indicator-circle/loading-indicator-circle.component.js +14 -14
- package/menu/common/menu-action-common.d.ts +4 -8
- package/menu/common/menu-action-common.d.ts.map +1 -1
- package/menu/common/menu-action-common.js +16 -41
- package/menu/menu/menu.component.d.ts +5 -4
- package/menu/menu/menu.component.d.ts.map +1 -1
- package/menu/menu/menu.component.js +35 -34
- package/menu/menu-button/menu-button.component.d.ts +1 -0
- package/menu/menu-button/menu-button.component.d.ts.map +1 -1
- package/navigation/navigation/navigation.component.d.ts +6 -4
- package/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/navigation/navigation/navigation.component.js +43 -43
- package/navigation/navigation-button/navigation-button.component.d.ts +1 -0
- package/navigation/navigation-button/navigation-button.component.d.ts.map +1 -1
- package/navigation/navigation-section/navigation-section.component.d.ts +5 -4
- package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/navigation/navigation-section/navigation-section.component.js +47 -47
- package/notification/notification.component.d.ts +4 -7
- package/notification/notification.component.d.ts.map +1 -1
- package/notification/notification.component.js +63 -73
- package/option/optgroup/optgroup-base-element.d.ts +2 -1
- package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
- package/option/optgroup/optgroup-base-element.js +43 -43
- package/option/option/option-base-element.d.ts +6 -12
- package/option/option/option-base-element.d.ts.map +1 -1
- package/option/option/option-base-element.js +57 -64
- package/option/option/option.component.d.ts +5 -2
- package/option/option/option.component.d.ts.map +1 -1
- package/option/option/option.component.js +18 -21
- package/overlay/overlay-base-element.d.ts +1 -8
- package/overlay/overlay-base-element.d.ts.map +1 -1
- package/overlay/overlay-base-element.js +44 -55
- package/package.json +1 -1
- package/paginator/common/paginator-common.d.ts +3 -7
- package/paginator/common/paginator-common.d.ts.map +1 -1
- package/paginator/common/paginator-common.js +49 -58
- package/paginator/paginator/paginator.component.d.ts +0 -5
- package/paginator/paginator/paginator.component.d.ts.map +1 -1
- package/paginator/paginator/paginator.component.js +40 -48
- package/popover/popover/popover.component.d.ts +3 -3
- package/popover/popover/popover.component.d.ts.map +1 -1
- package/popover/popover/popover.component.js +50 -47
- package/popover/popover-trigger/popover-trigger.component.d.ts +1 -0
- package/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -1
- package/radio-button/common/radio-button-common.d.ts +4 -2
- package/radio-button/common/radio-button-common.d.ts.map +1 -1
- package/radio-button/radio-button/radio-button.component.d.ts +6 -2
- package/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
- package/radio-button/radio-button/radio-button.component.js +43 -31
- package/radio-button/radio-button-group/radio-button-group.component.d.ts +8 -6
- package/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.component.js +24 -26
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -2
- package/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
- package/radio-button/radio-button-panel/radio-button-panel.component.js +46 -34
- package/select/select.component.d.ts +18 -12
- package/select/select.component.d.ts.map +1 -1
- package/select/select.component.js +140 -113
- package/sidebar/icon-sidebar/icon-sidebar.component.d.ts +4 -2
- package/sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
- package/sidebar/icon-sidebar/icon-sidebar.component.js +19 -20
- package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +1 -0
- package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
- package/sidebar/sidebar/sidebar.component.js +1 -1
- package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +2 -0
- package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
- package/sidebar/sidebar-close-button/sidebar-close-button.component.js +11 -9
- package/sidebar/sidebar-title/sidebar-title.component.d.ts +1 -0
- package/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
- package/sidebar/sidebar-title/sidebar-title.component.js +17 -15
- package/slider/slider.component.d.ts +6 -15
- package/slider/slider.component.d.ts.map +1 -1
- package/slider/slider.component.js +71 -98
- package/standard-theme.css +48 -18
- package/stepper/step/step.component.d.ts +4 -1
- package/stepper/step/step.component.d.ts.map +1 -1
- package/stepper/step/step.component.js +5 -8
- package/stepper/step-label/step-label.component.d.ts +2 -0
- package/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/stepper/step-label/step-label.component.js +12 -17
- package/stepper/stepper/stepper.component.d.ts +1 -1
- package/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/stepper/stepper/stepper.component.js +8 -6
- package/table/table-wrapper/table-wrapper.component.d.ts +2 -1
- package/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
- package/table/table-wrapper/table-wrapper.component.js +19 -21
- package/tabs/tab/tab.component.d.ts +4 -1
- package/tabs/tab/tab.component.d.ts.map +1 -1
- package/tabs/tab/tab.component.js +10 -9
- package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/tabs/tab-group/tab-group.component.js +8 -8
- package/tabs/tab-label/tab-label.component.d.ts +2 -1
- package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
- package/tabs/tab-label/tab-label.component.js +18 -18
- package/tag/tag/tag.component.d.ts +7 -3
- package/tag/tag/tag.component.d.ts.map +1 -1
- package/tag/tag/tag.component.js +75 -62
- package/tag/tag-group/tag-group.component.d.ts +7 -5
- package/tag/tag-group/tag-group.component.d.ts.map +1 -1
- package/tag/tag-group/tag-group.component.js +69 -64
- package/teaser-product/common/teaser-product-common.d.ts +4 -2
- package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
- package/time-input/time-input.component.d.ts +29 -42
- package/time-input/time-input.component.d.ts.map +1 -1
- package/time-input/time-input.component.js +100 -143
- package/title/title-base.d.ts +4 -1
- package/title/title-base.d.ts.map +1 -1
- package/title/title-base.js +33 -34
- package/toast/toast.component.d.ts +3 -4
- package/toast/toast.component.d.ts.map +1 -1
- package/toast/toast.component.js +64 -70
- package/toggle/toggle/toggle.component.d.ts +13 -9
- package/toggle/toggle/toggle.component.d.ts.map +1 -1
- package/toggle/toggle/toggle.component.js +48 -49
- package/toggle/toggle-option/toggle-option.component.d.ts +5 -3
- package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
- package/toggle/toggle-option/toggle-option.component.js +37 -39
- package/toggle-check/toggle-check.component.d.ts +5 -2
- package/toggle-check/toggle-check.component.d.ts.map +1 -1
- package/toggle-check/toggle-check.component.js +53 -43
- package/core/controllers/connected-abort-controller.d.ts +0 -14
- package/core/controllers/connected-abort-controller.d.ts.map +0 -1
- package/core/controllers/connected-abort-controller.js +0 -19
- package/core/decorators/date-converter.d.ts +0 -8
- package/core/decorators/date-converter.d.ts.map +0 -1
- package/core/decorators/date-converter.js +0 -17
- package/core/decorators/date-only-type.d.ts +0 -8
- package/core/decorators/date-only-type.d.ts.map +0 -1
- package/core/decorators/date-only-type.js +0 -10
- package/core/dom/find-referenced-element.d.ts +0 -8
- package/core/dom/find-referenced-element.d.ts.map +0 -1
- package/core/dom/find-referenced-element.js +0 -7
- package/core/dom/input-element.d.ts +0 -12
- package/core/dom/input-element.d.ts.map +0 -1
- package/core/dom/input-element.js +0 -12
- package/core/testing/scroll.d.ts +0 -7
- package/core/testing/scroll.d.ts.map +0 -1
- package/core/testing/scroll.js +0 -6
- package/development/core/controllers/connected-abort-controller.d.ts +0 -14
- package/development/core/controllers/connected-abort-controller.d.ts.map +0 -1
- package/development/core/controllers/connected-abort-controller.js +0 -25
- package/development/core/decorators/date-converter.d.ts +0 -8
- package/development/core/decorators/date-converter.d.ts.map +0 -1
- package/development/core/decorators/date-converter.js +0 -18
- package/development/core/decorators/date-only-type.d.ts +0 -8
- package/development/core/decorators/date-only-type.d.ts.map +0 -1
- package/development/core/decorators/date-only-type.js +0 -11
- package/development/core/dom/find-referenced-element.d.ts +0 -8
- package/development/core/dom/find-referenced-element.d.ts.map +0 -1
- package/development/core/dom/find-referenced-element.js +0 -15
- package/development/core/dom/input-element.d.ts +0 -12
- package/development/core/dom/input-element.d.ts.map +0 -1
- package/development/core/dom/input-element.js +0 -13
- package/development/core/testing/scroll.d.ts +0 -7
- package/development/core/testing/scroll.d.ts.map +0 -1
- package/development/core/testing/scroll.js +0 -8
|
@@ -3,6 +3,7 @@ import { SbbButtonBaseElement } from '../../core/base-elements.js';
|
|
|
3
3
|
declare const SbbFormFieldClearElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbNegativeMixinType> & typeof SbbButtonBaseElement;
|
|
4
4
|
/**
|
|
5
5
|
* Combined with `sbb-form-field`, it displays a button which clears the input value.
|
|
6
|
+
* @overrideType value - string
|
|
6
7
|
*/
|
|
7
8
|
export declare class SbbFormFieldClearElement extends SbbFormFieldClearElement_base {
|
|
8
9
|
static styles: CSSResultGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field-clear.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field-clear/form-field-clear.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"form-field-clear.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/form-field/form-field-clear/form-field-clear.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,OAAO,eAAe,CAAC;;AAEvB;;;GAGG;AACH,qBAEM,wBAAyB,SAAQ,6BAAsC;IAC3E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,UAAU,CAAC,CAA6B;IAChD,OAAO,CAAC,SAAS,CAAmC;;IAOpC,iBAAiB,IAAI,IAAI;YAU3B,YAAY;cAWP,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAMzD,cAAc,IAAI,cAAc;CAGpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,sBAAsB,EAAE,wBAAwB,CAAC;KAClD;CACF"}
|
|
@@ -3,7 +3,6 @@ import { css, html } from "lit";
|
|
|
3
3
|
import { customElement } from "lit/decorators.js";
|
|
4
4
|
import { SbbButtonBaseElement } from "../../core/base-elements.js";
|
|
5
5
|
import { SbbLanguageController } from "../../core/controllers.js";
|
|
6
|
-
import { hostAttributes } from "../../core/decorators.js";
|
|
7
6
|
import { i18nClearInput } from "../../core/i18n.js";
|
|
8
7
|
import { SbbNegativeMixin } from "../../core/mixins.js";
|
|
9
8
|
import "../../icon.js";
|
|
@@ -122,9 +121,7 @@ sbb-icon {
|
|
|
122
121
|
}`;
|
|
123
122
|
let SbbFormFieldClearElement = (() => {
|
|
124
123
|
var _a;
|
|
125
|
-
let _classDecorators = [customElement("sbb-form-field-clear")
|
|
126
|
-
slot: "suffix"
|
|
127
|
-
})];
|
|
124
|
+
let _classDecorators = [customElement("sbb-form-field-clear")];
|
|
128
125
|
let _classDescriptor;
|
|
129
126
|
let _classExtraInitializers = [];
|
|
130
127
|
let _classThis;
|
|
@@ -140,6 +137,7 @@ let SbbFormFieldClearElement = (() => {
|
|
|
140
137
|
super.connectedCallback();
|
|
141
138
|
this._formField = this.closest("sbb-form-field, [data-form-field]");
|
|
142
139
|
if (this._formField) {
|
|
140
|
+
this.slot || (this.slot = "suffix");
|
|
143
141
|
this.negative = this._formField.hasAttribute("negative");
|
|
144
142
|
}
|
|
145
143
|
}
|
|
@@ -172,4 +170,4 @@ let SbbFormFieldClearElement = (() => {
|
|
|
172
170
|
export {
|
|
173
171
|
SbbFormFieldClearElement
|
|
174
172
|
};
|
|
175
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
173
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jbGVhci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY2xlYXIvZm9ybS1maWVsZC1jbGVhci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiQnV0dG9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuQ2xlYXJJbnB1dCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2Zvcm0tZmllbGQtY2xlYXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGBzYmItZm9ybS1maWVsZGAsIGl0IGRpc3BsYXlzIGEgYnV0dG9uIHdoaWNoIGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuXG4gKiBAb3ZlcnJpZGVUeXBlIHZhbHVlIC0gc3RyaW5nXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1mb3JtLWZpZWxkLWNsZWFyJylcbmNsYXNzIFNiYkZvcm1GaWVsZENsZWFyRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiQnV0dG9uQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJpdmF0ZSBfZm9ybUZpZWxkPzogU2JiRm9ybUZpZWxkRWxlbWVudCB8IG51bGw7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoKSA9PiB0aGlzLl9oYW5kbGVDbGljaygpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdDxTYmJGb3JtRmllbGRFbGVtZW50Pignc2JiLWZvcm0tZmllbGQsIFtkYXRhLWZvcm0tZmllbGRdJyk7XG5cbiAgICBpZiAodGhpcy5fZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLnNsb3QgfHw9ICdzdWZmaXgnO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuX2Zvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9mb3JtRmllbGQ/LmlucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0IHx8IGlucHV0LmxvY2FsTmFtZSAhPT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9mb3JtRmllbGQ/LmNsZWFyKCk7XG4gICAgaW5wdXQuZm9jdXMoKTtcbiAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGkxOG5DbGVhcklucHV0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxzYmItaWNvbiBuYW1lPVwiY3Jvc3Mtc21hbGxcIj48L3NiYi1pY29uPiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZm9ybS1maWVsZC1jbGVhcic6IFNiYkZvcm1GaWVsZENsZWFyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBb0JNLDRCQUF3QixNQUFBOzswQkFEN0IsY0FBYyxzQkFBc0IsQ0FBQzs7OztvQkFDQyxpQkFBaUIsb0JBQW9CO0FBQTdDLEVBQUEsbUJBQVEsWUFBc0M7QUFBQSxJQU0zRSxjQUFBOzs7QUFGUSxXQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUloRCxPQUFBQSxNQUFBLEtBQUsscUJBQUwsZ0JBQUFBLElBQUEsV0FBd0IsU0FBUyxNQUFNLEtBQUs7SUFBYztBQUFBLElBRzVDLG9CQUFpQjtBQUMvQixZQUFNLGtCQUFpQjtBQUNsQixXQUFBLGFBQWEsS0FBSyxRQUE2QixtQ0FBbUM7QUFFdkYsVUFBSSxLQUFLLFlBQVk7QUFDbkIsYUFBSyxTQUFMLEtBQUssT0FBUztBQUNkLGFBQUssV0FBVyxLQUFLLFdBQVcsYUFBYSxVQUFVO0FBQUEsTUFBQTtBQUFBLElBQ3pEO0FBQUEsSUFHTSxNQUFNLGVBQVk7O0FBQ2xCLFlBQUEsU0FBUUEsTUFBQSxLQUFLLGVBQUwsZ0JBQUFBLElBQWlCO0FBQy9CLFVBQUksQ0FBQyxTQUFTLE1BQU0sY0FBYyxTQUFTO0FBQ3pDO0FBQUEsTUFBQTtBQUVGLGlCQUFLLGVBQUwsbUJBQWlCO0FBQ2pCLFlBQU0sTUFBSztBQUNMLFlBQUEsY0FBYyxJQUFJLFdBQVcsU0FBUyxFQUFFLFNBQVMsTUFBTSxVQUFVLEtBQU0sQ0FBQSxDQUFDO0FBQ3hFLFlBQUEsY0FBYyxJQUFJLE1BQU0sVUFBVSxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFBQSxJQUFBO0FBQUEsSUFHekMsV0FBVyxtQkFBdUM7QUFDbkUsWUFBTSxXQUFXLGlCQUFpQjtBQUVsQyxXQUFLLGFBQWEsY0FBYyxlQUFlLEtBQUssVUFBVSxPQUFPLENBQUM7QUFBQSxJQUFBO0FBQUEsSUFHckQsaUJBQWM7QUFDeEIsYUFBQTtBQUFBLElBQUE7QUFBQTs7QUF2Q1gsaUJBeUNDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUF4Q3dCLEdBQU0sU0FBbUIsT0FENUMsa0JBQXdCLFlBQUEsdUJBQUEsR0FBQzs7OyJ9
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { SbbActionBaseElement } from '../../core/base-elements.js';
|
|
2
2
|
import { SbbHorizontalFrom } from '../../core/interfaces.js';
|
|
3
3
|
import { AbstractConstructor } from '../../core/mixins.js';
|
|
4
|
-
|
|
5
|
-
export declare class SbbHeaderActionCommonElementMixinType
|
|
4
|
+
declare const SbbHeaderActionCommonElementMixinType_base: AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & typeof SbbActionBaseElement;
|
|
5
|
+
export declare class SbbHeaderActionCommonElementMixinType extends SbbHeaderActionCommonElementMixinType_base {
|
|
6
6
|
accessor expandFrom: SbbHorizontalFrom;
|
|
7
|
-
accessor iconName: string;
|
|
8
7
|
}
|
|
9
8
|
export declare const SbbHeaderActionCommonElementMixin: <T extends AbstractConstructor<SbbActionBaseElement>>(superClass: T) => AbstractConstructor<SbbHeaderActionCommonElementMixinType> & T;
|
|
9
|
+
export {};
|
|
10
10
|
//# sourceMappingURL=header-action-common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/common/header-action-common.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC
|
|
1
|
+
{"version":3,"file":"header-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/common/header-action-common.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;;AAKhE,MAAM,CAAC,OAAO,OAAO,qCAAsC,SAAQ,0CAElE;IACC,SAAgB,UAAU,EAAE,iBAAiB,CAAC;CAC/C;AAGD,eAAO,MAAM,iCAAiC,GAC5C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,EAEnD,YAAY,CAAC,KACZ,mBAAmB,CAAC,qCAAqC,CAAC,GAAG,CA6B/D,CAAC"}
|
|
@@ -431,4 +431,4 @@ const SbbHeaderActionCommonElementMixin = (superClass) => {
|
|
|
431
431
|
export {
|
|
432
432
|
SbbHeaderActionCommonElementMixin
|
|
433
433
|
};
|
|
434
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
434
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWFjdGlvbi1jb21tb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9oZWFkZXIvY29tbW9uL2hlYWRlci1hY3Rpb24tY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC9zdGF0aWMtaHRtbC5qcyc7XG5cbmltcG9ydCB0eXBlIHsgU2JiQWN0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzL3Nsb3Qtc3RhdGUuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2hlYWRlci1hY3Rpb24uc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiSGVhZGVyQWN0aW9uQ29tbW9uRWxlbWVudE1peGluVHlwZSBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oXG4gIFNiYkFjdGlvbkJhc2VFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBhY2Nlc3NvciBleHBhbmRGcm9tOiBTYmJIb3Jpem9udGFsRnJvbTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IFNiYkhlYWRlckFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpbiA9IDxcbiAgVCBleHRlbmRzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiQWN0aW9uQmFzZUVsZW1lbnQ+LFxuPihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSGVhZGVyQWN0aW9uQ29tbW9uRWxlbWVudE1peGluVHlwZT4gJiBUID0+IHtcbiAgQHNsb3RTdGF0ZSgpXG4gIGFic3RyYWN0IGNsYXNzIFNiYkhlYWRlckFjdGlvbkNvbW1vbkVsZW1lbnRcbiAgICBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oc3VwZXJDbGFzcylcbiAgICBpbXBsZW1lbnRzIFBhcnRpYWw8U2JiSGVhZGVyQWN0aW9uQ29tbW9uRWxlbWVudE1peGluVHlwZT5cbiAge1xuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBzZXQgdGhlIG1pbmltdW0gYnJlYWtwb2ludCBmcm9tIHdoaWNoIHRoZSB0ZXh0IGlzIGRpc3BsYXllZC5cbiAgICAgKiBFLmcuIGlmIHNldCB0byAnbGFyZ2UnLCB0aGUgdGV4dCB3aWxsIGJlIHZpc2libGUgZm9yIGJyZWFrcG9pbnRzIGxhcmdlLCB3aWRlLCB1bHRyYSxcbiAgICAgKiBhbmQgaGlkZGVuIGZvciBhbGwgdGhlIG90aGVycy4gSWdub3JlZCBpZiBubyBpY29uIGlzIHNldC5cbiAgICAgKi9cbiAgICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdleHBhbmQtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kRnJvbTogU2JiSG9yaXpvbnRhbEZyb20gPSAnbWVkaXVtJztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItaGVhZGVyLWFjdGlvbl9fd3JhcHBlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JiLWhlYWRlci1hY3Rpb25fX2ljb25cIj4gJHtzdXBlci5yZW5kZXJJY29uU2xvdCgpfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItaGVhZGVyLWFjdGlvbl9fdGV4dFwiPlxuICAgICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFNiYkhlYWRlckFjdGlvbkNvbW1vbkVsZW1lbnQgYXMgdW5rbm93biBhcyBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkhlYWRlckFjdGlvbkNvbW1vbkVsZW1lbnRNaXhpblR5cGU+ICZcbiAgICBUO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQmEsTUFBQSxvQ0FBb0MsQ0FHL0MsZUFDa0U7TUFFbkQsZ0NBQTRCLE1BQUE7O0FBRDFDLFFBQUEsbUJBQUEsQ0FBQSxXQUFXOzs7O3NCQUVGLGlCQUFpQixVQUFVOzs7O0FBQW5DLElBQUEsbUJBQVEsWUFBNEI7QUFBQTs7QUFXcEMseURBQUEsa0JBQUEsTUFBQSwwQkFBZ0QsUUFBUTs7Ozs7Ozs7TUFBeEQsSUFBZ0IsYUFBeUM7QUFBQSxlQUFBLG1CQUFBO0FBQUEsTUFBQTtBQUFBLE1BQXpELElBQWdCLFdBQXlDLE9BQUE7QUFBQSwyQkFBQSw4QkFBQTtBQUFBLE1BQUE7QUFBQSxNQUV0QyxpQkFBYztBQUN4QixlQUFBO0FBQUE7QUFBQSxtREFFc0MsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBQTtBQUFBLE9BTHJFOztnQ0FEQyxTQUFTLEVBQUUsV0FBVyxlQUFlLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFDdEMsbUJBQUEsSUFBQSxNQUFBLHdCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsY0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxnQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsWUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsWUFBQSxhQUF5QztBQUFBLFdBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWjNELG1CQXdCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1VBcEJlLEdBQU0sU0FBbUIsT0FKMUIsa0JBQTRCLFlBQUEsdUJBQUEsR0FDekM7OztBQXdCSyxTQUFBO0FBRVQ7In0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CSSResultGroup, LitElement, PropertyDeclaration, TemplateResult } from 'lit';
|
|
1
|
+
import { CSSResultGroup, LitElement, PropertyDeclaration, PropertyValues, TemplateResult } from 'lit';
|
|
2
2
|
declare const SbbHeaderElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
|
|
3
3
|
/**
|
|
4
4
|
* It displays a header section for the page.
|
|
@@ -14,8 +14,12 @@ export declare class SbbHeaderElement extends SbbHeaderElement_base {
|
|
|
14
14
|
* By default, the content has the appropriate page size.
|
|
15
15
|
*/
|
|
16
16
|
accessor expanded: boolean;
|
|
17
|
-
/**
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* The element's id or the element on which the scroll listener is attached.
|
|
19
|
+
*
|
|
20
|
+
* For attribute usage, provide an id reference.
|
|
21
|
+
*/
|
|
22
|
+
accessor scrollOrigin: HTMLElement | null;
|
|
19
23
|
/** Whether the header should hide and show on scroll. */
|
|
20
24
|
accessor hideOnScroll: boolean;
|
|
21
25
|
/**
|
|
@@ -28,13 +32,13 @@ export declare class SbbHeaderElement extends SbbHeaderElement_base {
|
|
|
28
32
|
private _scrollEventsController;
|
|
29
33
|
private _scrollFunction;
|
|
30
34
|
private _lastScroll;
|
|
31
|
-
private _scrollOriginIdReferenceController;
|
|
32
35
|
constructor();
|
|
33
36
|
/** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
|
|
34
37
|
connectedCallback(): void;
|
|
35
38
|
/** Removes the scroll listener, if previously attached. */
|
|
36
39
|
disconnectedCallback(): void;
|
|
37
40
|
requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration): void;
|
|
41
|
+
protected firstUpdated(changedProperties: PropertyValues<this>): void;
|
|
38
42
|
private _updateScrollListener;
|
|
39
43
|
/** Returns the correct function to attach on scroll. */
|
|
40
44
|
private _getScrollFunction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;;
|
|
1
|
+
{"version":3,"file":"header.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header/header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;;AAYb;;;;;;GAMG;AACH,qBAEM,gBAAiB,SAAQ,qBAA6B;IAC1D,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAQ;IAExD,yDAAyD;IACzD,SAEgB,YAAY,EAAE,OAAO,CAAS;IAE9C;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAE3E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;;IAOxB,gGAAgG;IAChF,iBAAiB,IAAI,IAAI;IAOzC,2DAA2D;IAC3C,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAC3B,IAAI,CAAC,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;cAQY,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAK9E,OAAO,CAAC,qBAAqB;IAuB7B,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAI1B,2DAA2D;IAC3D,OAAO,CAAC,yBAAyB;IAOjC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA8CvB,uEAAuE;IACvE,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;cAgBP,MAAM,IAAI,cAAc;CAS5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,YAAY,EAAE,gBAAgB,CAAC;KAChC;CACF"}
|
|
@@ -9,8 +9,7 @@ import { __esDecorate, __runInitializers } from "tslib";
|
|
|
9
9
|
import { css, LitElement, isServer, html } from "lit";
|
|
10
10
|
import { customElement, property, state } from "lit/decorators.js";
|
|
11
11
|
import { SbbFocusVisibleWithinController } from "../../core/a11y.js";
|
|
12
|
-
import {
|
|
13
|
-
import { forceType } from "../../core/decorators.js";
|
|
12
|
+
import { forceType, idReference } from "../../core/decorators.js";
|
|
14
13
|
import { isLean } from "../../core/dom.js";
|
|
15
14
|
import { SbbHydrationMixin } from "../../core/mixins.js";
|
|
16
15
|
const style = css`*,
|
|
@@ -201,13 +200,12 @@ let SbbHeaderElement = (() => {
|
|
|
201
200
|
__privateAdd(this, _size_accessor_storage);
|
|
202
201
|
__privateAdd(this, __headerOnTop_accessor_storage);
|
|
203
202
|
__privateSet(this, _expanded_accessor_storage, __runInitializers(this, _expanded_initializers, false));
|
|
204
|
-
__privateSet(this, _scrollOrigin_accessor_storage, (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers,
|
|
203
|
+
__privateSet(this, _scrollOrigin_accessor_storage, (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _scrollOrigin_initializers, null)));
|
|
205
204
|
__privateSet(this, _hideOnScroll_accessor_storage, (__runInitializers(this, _scrollOrigin_extraInitializers), __runInitializers(this, _hideOnScroll_initializers, false)));
|
|
206
205
|
__privateSet(this, _size_accessor_storage, (__runInitializers(this, _hideOnScroll_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m")));
|
|
207
206
|
__privateSet(this, __headerOnTop_accessor_storage, (__runInitializers(this, _size_extraInitializers), __runInitializers(this, __headerOnTop_initializers, true)));
|
|
208
207
|
this._scrollElement = __runInitializers(this, __headerOnTop_extraInitializers);
|
|
209
208
|
this._lastScroll = 0;
|
|
210
|
-
this._scrollOriginIdReferenceController = new SbbIdReferenceController(this, "scrollOrigin");
|
|
211
209
|
this.addController(new SbbFocusVisibleWithinController(this));
|
|
212
210
|
}
|
|
213
211
|
/**
|
|
@@ -220,8 +218,11 @@ let SbbHeaderElement = (() => {
|
|
|
220
218
|
set expanded(value) {
|
|
221
219
|
__privateSet(this, _expanded_accessor_storage, value);
|
|
222
220
|
}
|
|
223
|
-
|
|
224
|
-
|
|
221
|
+
/**
|
|
222
|
+
* The element's id or the element on which the scroll listener is attached.
|
|
223
|
+
*
|
|
224
|
+
* For attribute usage, provide an id reference.
|
|
225
|
+
*/
|
|
225
226
|
get scrollOrigin() {
|
|
226
227
|
return __privateGet(this, _scrollOrigin_accessor_storage);
|
|
227
228
|
}
|
|
@@ -254,7 +255,9 @@ let SbbHeaderElement = (() => {
|
|
|
254
255
|
/** If `hideOnScroll` is set, checks the element to hook the listener on, and possibly add it.*/
|
|
255
256
|
connectedCallback() {
|
|
256
257
|
super.connectedCallback();
|
|
257
|
-
this.
|
|
258
|
+
if (this.hasUpdated) {
|
|
259
|
+
this._updateScrollListener();
|
|
260
|
+
}
|
|
258
261
|
}
|
|
259
262
|
/** Removes the scroll listener, if previously attached. */
|
|
260
263
|
disconnectedCallback() {
|
|
@@ -269,9 +272,13 @@ let SbbHeaderElement = (() => {
|
|
|
269
272
|
this._updateScrollListener();
|
|
270
273
|
}
|
|
271
274
|
}
|
|
275
|
+
firstUpdated(changedProperties) {
|
|
276
|
+
super.firstUpdated(changedProperties);
|
|
277
|
+
this._updateScrollListener();
|
|
278
|
+
}
|
|
272
279
|
_updateScrollListener() {
|
|
273
280
|
var _a2;
|
|
274
|
-
const scrollElement = this.scrollOrigin
|
|
281
|
+
const scrollElement = this.scrollOrigin ?? document;
|
|
275
282
|
if (scrollElement === this._scrollElement) {
|
|
276
283
|
return;
|
|
277
284
|
}
|
|
@@ -362,7 +369,7 @@ let SbbHeaderElement = (() => {
|
|
|
362
369
|
}, _expanded_accessor_storage = new WeakMap(), _scrollOrigin_accessor_storage = new WeakMap(), _hideOnScroll_accessor_storage = new WeakMap(), _size_accessor_storage = new WeakMap(), __headerOnTop_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
363
370
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
364
371
|
_expanded_decorators = [forceType(), property({ reflect: true, type: Boolean })];
|
|
365
|
-
_scrollOrigin_decorators = [property({ attribute: "scroll-origin" })];
|
|
372
|
+
_scrollOrigin_decorators = [idReference(), property({ attribute: "scroll-origin" })];
|
|
366
373
|
_hideOnScroll_decorators = [forceType(), property({ attribute: "hide-on-scroll", reflect: true, type: Boolean })];
|
|
367
374
|
_size_decorators = [property({ reflect: true })];
|
|
368
375
|
__headerOnTop_decorators = [state()];
|
|
@@ -390,4 +397,4 @@ let SbbHeaderElement = (() => {
|
|
|
390
397
|
export {
|
|
391
398
|
SbbHeaderElement
|
|
392
399
|
};
|
|
393
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2hlYWRlci9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYklkUmVmZXJlbmNlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9oZWFkZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgSVNfTUVOVV9PUEVORURfUVVFUlkgPSBcIlthcmlhLWNvbnRyb2xzXVthcmlhLWV4cGFuZGVkPSd0cnVlJ11cIjtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIGhlYWRlciBzZWN0aW9uIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBhY3Rpb25zLCBjb250ZW50IGFuZCBsb2dvIHRvIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLXotaW5kZXg9MTBdIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSB6LWluZGV4IG9mIHRoZSBoZWFkZXIuXG4gKiBAY3NzcHJvcCBbLS1zYmItaGVhZGVyLWhlaWdodD16ZXJvLXNtYWxsOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTE0eCk7bWVkaXVtLXVsdHJhOnZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTI0eCldIC0gQ2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGhlaWdodCBvZiB0aGUgaGVhZGVyLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItaGVhZGVyJylcbmNsYXNzIFNiYkhlYWRlckVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBoZWFkZXIgY29udGVudCB0byBzdHJldGNoIHRvIGZ1bGwgd2lkdGguXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgcGFnZSBzaXplLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVE9ETzogUmVtb3ZlIHRoZSBkb2N1bWVudCBhcyBkZWZhdWx0IGFzc2lnbm1lbnQgYW5kIHJlZmFjdG9yIGxvZ2ljIHRvIHJldHVybiBkb2N1bWVudFxuICAvKiogVGhlIGVsZW1lbnQncyBpZCBvciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgc2Nyb2xsIGxpc3RlbmVyIGlzIGF0dGFjaGVkLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzY3JvbGwtb3JpZ2luJyB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2Nyb2xsT3JpZ2luOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IERvY3VtZW50ID0gIWlzU2VydmVyID8gZG9jdW1lbnQgOiBudWxsITtcblxuICAvKiogV2hldGhlciB0aGUgaGVhZGVyIHNob3VsZCBoaWRlIGFuZCBzaG93IG9uIHNjcm9sbC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGUtb24tc2Nyb2xsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaGlkZU9uU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgdGhlIGhlYWRlciwgZWl0aGVyIG0gb3Igcy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ20nIHwgJ3MnID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfaGVhZGVyT25Ub3AgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3Njcm9sbEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zY3JvbGxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9zY3JvbGxGdW5jdGlvbjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0U2Nyb2xsID0gMDtcbiAgcHJpdmF0ZSBfc2Nyb2xsT3JpZ2luSWRSZWZlcmVuY2VDb250cm9sbGVyID0gbmV3IFNiYklkUmVmZXJlbmNlQ29udHJvbGxlcih0aGlzLCAnc2Nyb2xsT3JpZ2luJyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIobmV3IFNiYkZvY3VzVmlzaWJsZVdpdGhpbkNvbnRyb2xsZXIodGhpcykpO1xuICB9XG5cbiAgLyoqIElmIGBoaWRlT25TY3JvbGxgIGlzIHNldCwgY2hlY2tzIHRoZSBlbGVtZW50IHRvIGhvb2sgdGhlIGxpc3RlbmVyIG9uLCBhbmQgcG9zc2libHkgYWRkIGl0LiovXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICAvKiogUmVtb3ZlcyB0aGUgc2Nyb2xsIGxpc3RlbmVyLCBpZiBwcmV2aW91c2x5IGF0dGFjaGVkLiAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzU2VydmVyICYmICghbmFtZSB8fCBuYW1lID09PSAnc2Nyb2xsT3JpZ2luJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPVxuICAgICAgdGhpcy5zY3JvbGxPcmlnaW4gaW5zdGFuY2VvZiBIVE1MRWxlbWVudFxuICAgICAgICA/IHRoaXMuc2Nyb2xsT3JpZ2luXG4gICAgICAgIDogKHRoaXMuX3Njcm9sbE9yaWdpbklkUmVmZXJlbmNlQ29udHJvbGxlci5maW5kKCkgPz8gZG9jdW1lbnQpO1xuICAgIGlmIChzY3JvbGxFbGVtZW50ID09PSB0aGlzLl9zY3JvbGxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50ID0gc2Nyb2xsRWxlbWVudDtcbiAgICBpZiAoIXRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9zY3JvbGxGdW5jdGlvbiA9IHRoaXMuX2dldFNjcm9sbEZ1bmN0aW9uLmJpbmQodGhpcyk7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxGdW5jdGlvbiwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fc2Nyb2xsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gdGhpcy5fZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KCdzY3JvbGxUb3AnKTtcbiAgICAvLyBgY3VycmVudFNjcm9sbGAgY2FuIGJlIG5lZ2F0aXZlLCBlLmcuIG9uIG1vYmlsZTsgdGhpcyBpcyBub3QgYWxsb3dlZC5cbiAgICB0aGlzLl9sYXN0U2Nyb2xsID0gY3VycmVudFNjcm9sbCA8PSAwID8gMCA6IGN1cnJlbnRTY3JvbGw7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgY29ycmVjdCBmdW5jdGlvbiB0byBhdHRhY2ggb24gc2Nyb2xsLiAqL1xuICBwcml2YXRlIF9nZXRTY3JvbGxGdW5jdGlvbigpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5oaWRlT25TY3JvbGwgPyB0aGlzLl9zY3JvbGxMaXN0ZW5lcigpIDogdGhpcy5fc2Nyb2xsU2hhZG93TGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHkgb2YgdGhlIHNjcm9sbENvbnRleHQuICovXG4gIHByaXZhdGUgX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eShwcm9wZXJ0eTogJ3Njcm9sbFRvcCcgfCAnc2Nyb2xsSGVpZ2h0Jyk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEVsZW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbEVsZW1lbnQuZG9jdW1lbnRFbGVtZW50W3Byb3BlcnR5XSB8fCB0aGlzLl9zY3JvbGxFbGVtZW50LmJvZHlbcHJvcGVydHldO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudD8uW3Byb3BlcnR5XSB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIGBzY3JvbGxUb3BgLCB0aGVuOlxuICAgKiAtIGFwcGx5IHRoZSBzaGFkb3cgaWYgdGhlIGVsZW1lbnQvZG9jdW1lbnQgaGFzIGJlZW4gc2Nyb2xsZWQgZG93bjtcbiAgICogLSBoaWRlcyB0aGUgaGVhZGVyLCByZW1vdmUgdGhlIHNoYWRvdyBhbmQgcG9zc2libHkgY2xvc2UgYW55IG9wZW4gbWVudSBvbiB0aGUgaGVhZGVyIGlmIGl0IGlzIG5vdCB2aXNpYmxlIGFueW1vcmU7XG4gICAqIC0gc2hvd3MgdGhlIGhlYWRlciBhbmQgcmUtYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCB1cC5cbiAgICovXG4gIHByaXZhdGUgX3Njcm9sbExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuXG4gICAgLy8gV2hldGhlciB0aGUgc2Nyb2xsIHZpZXcgaXMgYm91bmNpbmcgcGFzdCB0aGUgZWRnZSBvZiBjb250ZW50IGFuZCBiYWNrIGFnYWluLlxuICAgIGlmICh0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbEhlaWdodCcpIC0gd2luZG93LmlubmVySGVpZ2h0IC0gY3VycmVudFNjcm9sbCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2hhZG93JywgY3VycmVudFNjcm9sbCAhPT0gMCk7XG5cbiAgICAvLyBDbG9zZSBvcGVuIG92ZXJsYXlzIHdoZW4gc2Nyb2xsaW5nIGRvd24gaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQuXG4gICAgaWYgKFxuICAgICAgY3VycmVudFNjcm9sbCA+IHRoaXMub2Zmc2V0SGVpZ2h0ICYmXG4gICAgICBjdXJyZW50U2Nyb2xsID4gMCAmJlxuICAgICAgdGhpcy5fbGFzdFNjcm9sbCA8IGN1cnJlbnRTY3JvbGxcbiAgICApIHtcbiAgICAgIHRoaXMuX2Nsb3NlT3Blbk92ZXJsYXlzKCk7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIHRoZSBoZWFkZXIgaXMgc2Nyb2xsZWQgb3V0IG9mIHNpZ2h0LCBzY3JvbGwgcG9zaXRpb24gPiBoZWFkZXIgaGVpZ2h0ICogMi5cbiAgICBpZiAoY3VycmVudFNjcm9sbCA+IHRoaXMub2Zmc2V0SGVpZ2h0ICogMikge1xuICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSBmYWxzZTtcbiAgICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCAmJiB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbCkge1xuICAgICAgICAvLyBTY3JvbGxpbmcgZG93blxuICAgICAgICBbJ2RhdGEtc2hhZG93JywgJ2RhdGEtdmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyB1cFxuICAgICAgICBbJ2RhdGEtZml4ZWQnLCAnZGF0YS1zaGFkb3cnLCAnZGF0YS1hbmltYXRlZCcsICdkYXRhLXZpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKG5hbWUsIHRydWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGVjayBpZiBoZWFkZXIgaW4gaXRzIG9yaWdpbmFsIHBvc2l0aW9uLCBzY3JvbGwgcG9zaXRpb24gPCBoZWFkZXIgaGVpZ2h0LlxuICAgICAgLy8gUmVzZXQgaGVhZGVyIGJlaGF2aW91ciB3aGVuIHNjcm9sbCBoaXRzIHRvcCBvZiB0aGUgcGFnZSwgb24gc2Nyb2xsIHBvc2l0aW9uID0gMC5cbiAgICAgIGlmIChjdXJyZW50U2Nyb2xsID09PSAwKSB7XG4gICAgICAgIHRoaXMuX2hlYWRlck9uVG9wID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9oZWFkZXJPblRvcCkge1xuICAgICAgICBbJ2RhdGEtc2hhZG93JywgJ2RhdGEtYW5pbWF0ZWQnLCAnZGF0YS1maXhlZCcsICdkYXRhLXZpc2libGUnXS5mb3JFYWNoKChuYW1lKSA9PlxuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBgY3VycmVudFNjcm9sbGAgY2FuIGJlIG5lZ2F0aXZlLCBlLmcuIG9uIG1vYmlsZTsgdGhpcyBpcyBub3QgYWxsb3dlZC5cbiAgICB0aGlzLl9sYXN0U2Nyb2xsID0gY3VycmVudFNjcm9sbCA8PSAwID8gMCA6IGN1cnJlbnRTY3JvbGw7XG4gIH1cblxuICAvKiogQXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duLiAqL1xuICBwcml2YXRlIF9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zaGFkb3cnLCB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpICE9PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlT3Blbk92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0F0dHJpYnV0ZSgnZGF0YS1oYXMtdmlzaWJsZS1mb2N1cy13aXRoaW4nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvdmVybGF5VHJpZ2dlcnM6IEhUTUxFbGVtZW50W10gPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKElTX01FTlVfT1BFTkVEX1FVRVJZKSBhcyBOb2RlTGlzdE9mPEhUTUxFbGVtZW50PixcbiAgICApO1xuICAgIGZvciAoY29uc3Qgb3ZlcmxheVRyaWdnZXIgb2Ygb3ZlcmxheVRyaWdnZXJzKSB7XG4gICAgICBjb25zdCBvdmVybGF5SWQ6IHN0cmluZyA9IG92ZXJsYXlUcmlnZ2VyLmdldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpITtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdmVybGF5SWQpIGFzIEhUTUxFbGVtZW50ICYgeyBjbG9zZTogKCkgPT4gdm9pZCB9O1xuICAgICAgaWYgKHR5cGVvZiBvdmVybGF5Py5jbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvdmVybGF5LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8aGVhZGVyIGNsYXNzPVwic2JiLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWhlYWRlcl9fd3JhcHBlclwiPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItaGVhZGVyJzogU2JiSGVhZGVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIiwicHJvcGVydHkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxNQUFNLHVCQUF1QjtJQVd2QixvQkFBZ0IsTUFBQTs7MEJBRHJCLGNBQWMsWUFBWSxDQUFDOzs7O29CQUNHLGtCQUFrQixVQUFVOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXBDLEVBQUEsbUJBQVEsWUFBNkI7QUFBQSxJQW1DMUQsY0FBQTs7QUExQkE7QUFLQTtBQUtBO0FBTTZCO0FBRXBCO0FBbEJPLHlCQUFBLDRCQUFBLGtCQUFBLE1BQUEsd0JBQW9CLEtBQUs7QUFLdUIseUJBQUEsaUNBQUEsa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsNEJBQUEsQ0FBQyxXQUFXLFdBQVcsSUFBSztBQUs1RSx5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLCtCQUFBLEdBQUEsa0JBQUEsTUFBQSw0QkFBd0IsS0FBSztBQU1rQix5QkFBQSx5QkFBQSxrQkFBQSxNQUFBLCtCQUFBLEdB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
|
|
400
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2hlYWRlci9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgTGl0RWxlbWVudCxcbiAgdHlwZSBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2hlYWRlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5jb25zdCBJU19NRU5VX09QRU5FRF9RVUVSWSA9IFwiW2FyaWEtY29udHJvbHNdW2FyaWEtZXhwYW5kZWQ9J3RydWUnXVwiO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgaGVhZGVyIHNlY3Rpb24gZm9yIHRoZSBwYWdlLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGFjdGlvbnMsIGNvbnRlbnQgYW5kIGxvZ28gdG8gdGhlIGhlYWRlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1oZWFkZXItei1pbmRleD0xMF0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgdGhlIHotaW5kZXggb2YgdGhlIGhlYWRlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1oZWFkZXItaGVpZ2h0PXplcm8tc21hbGw6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMTR4KTttZWRpdW0tdWx0cmE6dmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMjR4KV0gLSBDYW4gYmUgdXNlZCB0byBtb2RpZnkgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1oZWFkZXInKVxuY2xhc3MgU2JiSGVhZGVyRWxlbWVudCBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIGhlYWRlciBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQncyBpZCBvciB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgc2Nyb2xsIGxpc3RlbmVyIGlzIGF0dGFjaGVkLlxuICAgKlxuICAgKiBGb3IgYXR0cmlidXRlIHVzYWdlLCBwcm92aWRlIGFuIGlkIHJlZmVyZW5jZS5cbiAgICovXG4gIEBpZFJlZmVyZW5jZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Njcm9sbC1vcmlnaW4nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzY3JvbGxPcmlnaW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGhlYWRlciBzaG91bGQgaGlkZSBhbmQgc2hvdyBvbiBzY3JvbGwuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoaWRlLW9uLXNjcm9sbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhpZGVPblNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBoZWFkZXIsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2hlYWRlck9uVG9wID0gdHJ1ZTtcblxuICBwcml2YXRlIF9zY3JvbGxFbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc2Nyb2xsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfc2Nyb2xsRnVuY3Rpb246ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfbGFzdFNjcm9sbCA9IDA7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKG5ldyBTYmJGb2N1c1Zpc2libGVXaXRoaW5Db250cm9sbGVyKHRoaXMpKTtcbiAgfVxuXG4gIC8qKiBJZiBgaGlkZU9uU2Nyb2xsYCBpcyBzZXQsIGNoZWNrcyB0aGUgZWxlbWVudCB0byBob29rIHRoZSBsaXN0ZW5lciBvbiwgYW5kIHBvc3NpYmx5IGFkZCBpdC4qL1xuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHRoZSBzY3JvbGwgbGlzdGVuZXIsIGlmIHByZXZpb3VzbHkgYXR0YWNoZWQuICovXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3Njcm9sbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICdzY3JvbGxPcmlnaW4nKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3VwZGF0ZVNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gdGhpcy5zY3JvbGxPcmlnaW4gPz8gZG9jdW1lbnQ7XG4gICAgaWYgKHNjcm9sbEVsZW1lbnQgPT09IHRoaXMuX3Njcm9sbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEVsZW1lbnQgPSBzY3JvbGxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fc2Nyb2xsRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX3Njcm9sbEZ1bmN0aW9uID0gdGhpcy5fZ2V0U2Nyb2xsRnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEZ1bmN0aW9uLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9zY3JvbGxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB0aGlzLl9nZXRDdXJyZW50U2Nyb2xsUHJvcGVydHkoJ3Njcm9sbFRvcCcpO1xuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIHRvIGF0dGFjaCBvbiBzY3JvbGwuICovXG4gIHByaXZhdGUgX2dldFNjcm9sbEZ1bmN0aW9uKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmhpZGVPblNjcm9sbCA/IHRoaXMuX3Njcm9sbExpc3RlbmVyKCkgOiB0aGlzLl9zY3JvbGxTaGFkb3dMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSBvZiB0aGUgc2Nyb2xsQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q3VycmVudFNjcm9sbFByb3BlcnR5KHByb3BlcnR5OiAnc2Nyb2xsVG9wJyB8ICdzY3JvbGxIZWlnaHQnKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudCBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRWxlbWVudC5kb2N1bWVudEVsZW1lbnRbcHJvcGVydHldIHx8IHRoaXMuX3Njcm9sbEVsZW1lbnQuYm9keVtwcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50Py5bcHJvcGVydHldIHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYHNjcm9sbFRvcGAsIHRoZW46XG4gICAqIC0gYXBwbHkgdGhlIHNoYWRvdyBpZiB0aGUgZWxlbWVudC9kb2N1bWVudCBoYXMgYmVlbiBzY3JvbGxlZCBkb3duO1xuICAgKiAtIGhpZGVzIHRoZSBoZWFkZXIsIHJlbW92ZSB0aGUgc2hhZG93IGFuZCBwb3NzaWJseSBjbG9zZSBhbnkgb3BlbiBtZW51IG9uIHRoZSBoZWFkZXIgaWYgaXQgaXMgbm90IHZpc2libGUgYW55bW9yZTtcbiAgICogLSBzaG93cyB0aGUgaGVhZGVyIGFuZCByZS1hcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIHVwLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNjcm9sbCA9IHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJyk7XG5cbiAgICAvLyBXaGV0aGVyIHRoZSBzY3JvbGwgdmlldyBpcyBib3VuY2luZyBwYXN0IHRoZSBlZGdlIG9mIGNvbnRlbnQgYW5kIGJhY2sgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsSGVpZ2h0JykgLSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBjdXJyZW50U2Nyb2xsIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zaGFkb3cnLCBjdXJyZW50U2Nyb2xsICE9PSAwKTtcblxuICAgIC8vIENsb3NlIG9wZW4gb3ZlcmxheXMgd2hlbiBzY3JvbGxpbmcgZG93biBpZiB0aGUgaGVhZGVyIGlzIHNjcm9sbGVkIG91dCBvZiBzaWdodC5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgJiZcbiAgICAgIGN1cnJlbnRTY3JvbGwgPiAwICYmXG4gICAgICB0aGlzLl9sYXN0U2Nyb2xsIDwgY3VycmVudFNjcm9sbFxuICAgICkge1xuICAgICAgdGhpcy5fY2xvc2VPcGVuT3ZlcmxheXMoKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGhlYWRlciBpcyBzY3JvbGxlZCBvdXQgb2Ygc2lnaHQsIHNjcm9sbCBwb3NpdGlvbiA+IGhlYWRlciBoZWlnaHQgKiAyLlxuICAgIGlmIChjdXJyZW50U2Nyb2xsID4gdGhpcy5vZmZzZXRIZWlnaHQgKiAyKSB7XG4gICAgICB0aGlzLl9oZWFkZXJPblRvcCA9IGZhbHNlO1xuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwICYmIHRoaXMuX2xhc3RTY3JvbGwgPCBjdXJyZW50U2Nyb2xsKSB7XG4gICAgICAgIC8vIFNjcm9sbGluZyBkb3duXG4gICAgICAgIFsnZGF0YS1zaGFkb3cnLCAnZGF0YS12aXNpYmxlJ10uZm9yRWFjaCgobmFtZSkgPT4gdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2Nyb2xsaW5nIHVwXG4gICAgICAgIFsnZGF0YS1maXhlZCcsICdkYXRhLXNoYWRvdycsICdkYXRhLWFuaW1hdGVkJywgJ2RhdGEtdmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUobmFtZSwgdHJ1ZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENoZWNrIGlmIGhlYWRlciBpbiBpdHMgb3JpZ2luYWwgcG9zaXRpb24sIHNjcm9sbCBwb3NpdGlvbiA8IGhlYWRlciBoZWlnaHQuXG4gICAgICAvLyBSZXNldCBoZWFkZXIgYmVoYXZpb3VyIHdoZW4gc2Nyb2xsIGhpdHMgdG9wIG9mIHRoZSBwYWdlLCBvbiBzY3JvbGwgcG9zaXRpb24gPSAwLlxuICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPT09IDApIHtcbiAgICAgICAgdGhpcy5faGVhZGVyT25Ub3AgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2hlYWRlck9uVG9wKSB7XG4gICAgICAgIFsnZGF0YS1zaGFkb3cnLCAnZGF0YS1hbmltYXRlZCcsICdkYXRhLWZpeGVkJywgJ2RhdGEtdmlzaWJsZSddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGBjdXJyZW50U2Nyb2xsYCBjYW4gYmUgbmVnYXRpdmUsIGUuZy4gb24gbW9iaWxlOyB0aGlzIGlzIG5vdCBhbGxvd2VkLlxuICAgIHRoaXMuX2xhc3RTY3JvbGwgPSBjdXJyZW50U2Nyb2xsIDw9IDAgPyAwIDogY3VycmVudFNjcm9sbDtcbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgc2hhZG93IGlmIHRoZSBlbGVtZW50L2RvY3VtZW50IGhhcyBiZWVuIHNjcm9sbGVkIGRvd24uICovXG4gIHByaXZhdGUgX3Njcm9sbFNoYWRvd0xpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNoYWRvdycsIHRoaXMuX2dldEN1cnJlbnRTY3JvbGxQcm9wZXJ0eSgnc2Nyb2xsVG9wJykgIT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VPcGVuT3ZlcmxheXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzQXR0cmlidXRlKCdkYXRhLWhhcy12aXNpYmxlLWZvY3VzLXdpdGhpbicpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG92ZXJsYXlUcmlnZ2VyczogSFRNTEVsZW1lbnRbXSA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoSVNfTUVOVV9PUEVORURfUVVFUlkpIGFzIE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+LFxuICAgICk7XG4gICAgZm9yIChjb25zdCBvdmVybGF5VHJpZ2dlciBvZiBvdmVybGF5VHJpZ2dlcnMpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXlJZDogc3RyaW5nID0gb3ZlcmxheVRyaWdnZXIuZ2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJykhO1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCkgYXMgSFRNTEVsZW1lbnQgJiB7IGNsb3NlOiAoKSA9PiB2b2lkIH07XG4gICAgICBpZiAodHlwZW9mIG92ZXJsYXk/LmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG92ZXJsYXkuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJzYmItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItaGVhZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1oZWFkZXInOiBTYmJIZWFkZXJFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiLCJwcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsTUFBTSx1QkFBdUI7SUFXdkIsb0JBQWdCLE1BQUE7OzBCQURyQixjQUFjLFlBQVksQ0FBQzs7OztvQkFDRyxrQkFBa0IsVUFBVTs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQyxFQUFBLG1CQUFRLFlBQTZCO0FBQUEsSUFzQzFELGNBQUE7O0FBN0JBO0FBU0E7QUFLQTtBQU02QjtBQUVwQjtBQXRCTyx5QkFBQSw0QkFBQSxrQkFBQSxNQUFBLHdCQUFvQixLQUFLO0FBU3pCLHlCQUFBLGlDQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLDRCQUFtQyxJQUFJO0FBS3ZDLHlCQUFBLGlDQUFBLGtCQUFBLE1BQUEsK0JBQUEsR0FBQSxrQkFBQSxNQUFBLDRCQUF3QixLQUFLO0FBTWtCLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsK0JBQUEsR0FBQSxrQkFBQSxNQUFBLG9CQUFBLE9BQUEsSUFBVyxNQUFNLEdBQUc7QUFFekQseUJBQUEsaUNBQUEsa0JBQUEsTUFBQSx1QkFBQSxHQUFBLGtCQUFBLE1BQUEsNEJBQWUsSUFBSTtBQUVy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
|
|
@@ -5,6 +5,7 @@ declare const SbbHeaderButtonElement_base: import('../../core/mixins.js').Abstra
|
|
|
5
5
|
*
|
|
6
6
|
* @slot icon - Slot used to render the button icon.
|
|
7
7
|
* @slot - Use the unnamed slot to add content to the `sbb-header-button`.
|
|
8
|
+
* @overrideType value - string
|
|
8
9
|
*/
|
|
9
10
|
export declare class SbbHeaderButtonElement extends SbbHeaderButtonElement_base {
|
|
10
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-button.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header-button/header-button.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;;AAGnE
|
|
1
|
+
{"version":3,"file":"header-button.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/header/header-button/header-button.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;;AAGnE;;;;;;GAMG;AACH,qBAEM,sBAAuB,SAAQ,2BAAuD;CAAG;AAE/F,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,mBAAmB,EAAE,sBAAsB,CAAC;KAC7C;CACF"}
|
|
@@ -22,4 +22,4 @@ let SbbHeaderButtonElement = (() => {
|
|
|
22
22
|
export {
|
|
23
23
|
SbbHeaderButtonElement
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9oZWFkZXIvaGVhZGVyLWJ1dHRvbi9oZWFkZXItYnV0dG9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJCdXR0b25CYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJIZWFkZXJBY3Rpb25Db21tb25FbGVtZW50TWl4aW4gfSBmcm9tICcuLi9jb21tb24uanMnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgYnV0dG9uIGVsZW1lbnQgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgYHNiYi1oZWFkZXJgIGNvbXBvbmVudC5cbiAqXG4gKiBAc2xvdCBpY29uIC0gU2xvdCB1c2VkIHRvIHJlbmRlciB0aGUgYnV0dG9uIGljb24uXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBgc2JiLWhlYWRlci1idXR0b25gLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIHN0cmluZ1xuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItaGVhZGVyLWJ1dHRvbicpXG5jbGFzcyBTYmJIZWFkZXJCdXR0b25FbGVtZW50IGV4dGVuZHMgU2JiSGVhZGVyQWN0aW9uQ29tbW9uRWxlbWVudE1peGluKFNiYkJ1dHRvbkJhc2VFbGVtZW50KSB7fVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWhlYWRlci1idXR0b24nOiBTYmJIZWFkZXJCdXR0b25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztJQWNNLDBCQUFzQixNQUFBOzswQkFEM0IsY0FBYyxtQkFBbUIsQ0FBQzs7OztvQkFDRSxrQ0FBa0Msb0JBQW9CO0FBQTlELEVBQUEsbUJBQVEsWUFBdUQ7QUFBQTs7QUFBNUYsaUJBQStGLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7QUFBekYsc0JBQXNCLFlBQUEsdUJBQUE7QUFBQSxFQUFBLE1BQUM7OzsifQ==
|
|
@@ -198,7 +198,7 @@ export declare class SbbImageElement extends LitElement {
|
|
|
198
198
|
/** Whether the image is finished loading or failed to load. */
|
|
199
199
|
get complete(): boolean;
|
|
200
200
|
protected updated(changedProperties: PropertyValues<this>): void;
|
|
201
|
-
protected firstUpdated(changedProperties: PropertyValues<this>):
|
|
201
|
+
protected firstUpdated(changedProperties: PropertyValues<this>): void;
|
|
202
202
|
private _logPerformanceMarks;
|
|
203
203
|
private _matchMediaQueryDesignToken;
|
|
204
204
|
private _addFocusAbilityToLinksInCaption;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.component.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,6CAA6C,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,6CAA6C;IAC5D,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,YAAY,EAAE,6CAA6C,EAAE,CAAC;CAC/D;AAED,MAAM,WAAW,6CAA6C;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iBAAiB,EAAE,KAAK,CAAC;CAC1B;AAgGD;;;;;;;;;;GAUG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,OAAO,CAAC,eAAe,CAAC,CAAc;IACtC,OAAO,CAAC,eAAe,CAAC,CAA8B;IACtD,OAAO,CAAC,OAAO,CAGb;IAEF;;;;;;OAMG;IACH,SAEgB,GAAG,EAAE,MAAM,CAAM;IAEjC;;;;;;OAMG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;;OAMG;IACH,SAA4B,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAU;IAEzE;;;OAGG;IACH,SAEgB,eAAe,EAAE,OAAO,CAAS;IAEjD;;OAEG;IACH,SAEgB,WAAW,EAAE,MAAM,CAAK;IAExC;;OAEG;IACH,SAEgB,WAAW,EAAE,MAAM,CAAK;IAExC;;;;;;;;;OASG;IACH,SAEgB,QAAQ,EAAE,MAAM,CAAM;IAEtC;;;;;;;;OAQG;IACH,SAA4B,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAU;IAEzE;;;;;;;;;OASG;IACH,SAA4B,OAAO,EAAE,OAAO,GAAG,MAAM,CAAW;IAEhE;;;;;;;;;;;;OAYG;IACH,SAEgB,eAAe,EAAE,MAAM,CAAM;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmEG;IACH,SAEgB,kBAAkB,EAAE,MAAM,CAAM;IAEhD,+DAA+D;IAC/D,IAAW,QAAQ,IAAI,OAAO,CAE7B;cAEkB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"image.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.component.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,6CAA6C,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,6CAA6C;IAC5D,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,YAAY,EAAE,6CAA6C,EAAE,CAAC;CAC/D;AAED,MAAM,WAAW,6CAA6C;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iBAAiB,EAAE,KAAK,CAAC;CAC1B;AAgGD;;;;;;;;;;GAUG;AACH,qBAEM,eAAgB,SAAQ,UAAU;IACtC,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,OAAO,CAAC,eAAe,CAAC,CAAc;IACtC,OAAO,CAAC,eAAe,CAAC,CAA8B;IACtD,OAAO,CAAC,OAAO,CAGb;IAEF;;;;;;OAMG;IACH,SAEgB,GAAG,EAAE,MAAM,CAAM;IAEjC;;;;;;OAMG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;;OAIG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;;;;OAMG;IACH,SAA4B,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAU;IAEzE;;;OAGG;IACH,SAEgB,eAAe,EAAE,OAAO,CAAS;IAEjD;;OAEG;IACH,SAEgB,WAAW,EAAE,MAAM,CAAK;IAExC;;OAEG;IACH,SAEgB,WAAW,EAAE,MAAM,CAAK;IAExC;;;;;;;;;OASG;IACH,SAEgB,QAAQ,EAAE,MAAM,CAAM;IAEtC;;;;;;;;OAQG;IACH,SAA4B,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAU;IAEzE;;;;;;;;;OASG;IACH,SAA4B,OAAO,EAAE,OAAO,GAAG,MAAM,CAAW;IAEhE;;;;;;;;;;;;OAYG;IACH,SAEgB,eAAe,EAAE,MAAM,CAAM;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmEG;IACH,SAEgB,kBAAkB,EAAE,MAAM,CAAM;IAEhD,+DAA+D;IAC/D,IAAW,QAAQ,IAAI,OAAO,CAE7B;cAEkB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAgBtD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAW9E,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,gCAAgC;IAMxC,OAAO,CAAC,gBAAgB;IA0CxB,OAAO,CAAC,0BAA0B;IAgElC,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,YAAY;cAMD,MAAM,IAAI,cAAc;CAiE5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,WAAW,EAAE,eAAe,CAAC;KAC9B;CACF"}
|
|
@@ -439,12 +439,13 @@ let SbbImageElement = (() => {
|
|
|
439
439
|
}
|
|
440
440
|
this._addFocusAbilityToLinksInCaption();
|
|
441
441
|
}
|
|
442
|
-
|
|
442
|
+
firstUpdated(changedProperties) {
|
|
443
443
|
super.firstUpdated(changedProperties);
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
444
|
+
this.updateComplete.then(() => {
|
|
445
|
+
if (this.complete) {
|
|
446
|
+
this.toggleAttribute("data-loaded", true);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
448
449
|
}
|
|
449
450
|
_logPerformanceMarks() {
|
|
450
451
|
if (this.performanceMark) {
|
|
@@ -680,4 +681,4 @@ let SbbImageElement = (() => {
|
|
|
680
681
|
export {
|
|
681
682
|
SbbImageElement
|
|
682
683
|
};
|
|
683
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRaZXJvTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01heCxcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWluLFxuICBTYmJCcmVha3BvaW50TWljcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFNtYWxsTWF4LFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWluLFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWF4LFxuICBTYmJCcmVha3BvaW50TGFyZ2VNaW4sXG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludFdpZGVNaW4sXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWF4LFxuICBTYmJCcmVha3BvaW50VWx0cmFNaW4sXG4gIFNiYkJyZWFrcG9pbnRVbHRyYU1heCxcbiAgU2JiVHlwb1NjYWxlRGVmYXVsdCxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgZXZlbnRPcHRpb25zLCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vaW1hZ2Uuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZyB7XG4gIGJyZWFrcG9pbnRzOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnQge1xuICBpbWFnZToge1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gIH07XG4gIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5IHtcbiAgY29uZGl0aW9uRmVhdHVyZTogc3RyaW5nO1xuICBjb25kaXRpb25GZWF0dXJlVmFsdWU6IHtcbiAgICBseW5lRGVzaWduVG9rZW46IGJvb2xlYW47XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcbiAgY29uZGl0aW9uT3BlcmF0b3I6IGZhbHNlO1xufVxuXG4vKipcbiAqIHdlIGNoZWNrIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgbWFudWFsbHksIHNvIGl0J3Mgc2FmZSB0byB1c2UgYGFueWAgYXMgcmV0dXJuIHR5cGVcbiAqL1xuY29uc3QgaW1hZ2VIZWxwZXJHZXRCcmVha3BvaW50cyA9IChcbiAganNvblN0cmluZzogc3RyaW5nLFxuKTogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W10gPT4ge1xuICBpZiAoIWpzb25TdHJpbmcgfHwganNvblN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGBicmVha3BvaW50c2Aga2V5IGluIG9iamVjdFxuICBjb25zdCBsb2dXYXJuaW5nID0gaW1wb3J0Lm1ldGEuZW52LkRFVlxuICAgID8gKCkgPT5cbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdzYmItaW1hZ2UgZXJyb3I6IGF0dHJpYnV0ZSBicmVha3BvaW50cyBoYXMgd3JvbmcgZGF0YSBmb3JtYXQuIFJlZmVyZW5jZSB0aGUgZG9jdW1lbnRhdGlvbiB0byBzZWUgaG93IHlvdSBzaG91bGQgZm9ybWF0IHRoZSBkYXRhIGZvciB0aGlzIGF0dHJpYnV0ZS4nLFxuICAgICAgICApXG4gICAgOiBudWxsO1xuICBsZXQganNvbk9iamVjdDogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWc7XG5cbiAgdHJ5IHtcbiAgICBqc29uT2JqZWN0ID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcbiAgfSBjYXRjaCB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaWYgKCFqc29uT2JqZWN0LmJyZWFrcG9pbnRzIHx8IGpzb25PYmplY3QuYnJlYWtwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIGdldCBhbiBhcnJheSBvZiBicmVha3BvaW50c1xuICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbk9iamVjdC5icmVha3BvaW50cykpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogMS4gbWFrZSBzdXJlIHRoYXQgZWFjaCBlbnRyeSB3aXRoaW4gdGhlIGJyZWFrcG9pbnRzIG9iamVjdCBjb250YWlucyBvbmx5IGFsbG93ZWQga2V5c1xuICAgKiAyLiBtYWtlIHN1cmUgdGhhdCBhbGwgbmVjZXNzYXJ5IGtleXMgYXJlIHByZXNlbnRcbiAgICovXG4gIGxldCB3cm9uZ0tleURldGVjdGVkID0gZmFsc2U7XG4gIGxldCBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBhbGxvd2VkS2V5cyA9IFsnaW1hZ2UnLCAnbWVkaWFRdWVyaWVzJ107XG5cbiAganNvbk9iamVjdC5icmVha3BvaW50cy5mb3JFYWNoKChicmVha3BvaW50KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludEtleXMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50KTtcblxuICAgIGJyZWFrcG9pbnRLZXlzLmZvckVhY2goKGJyZWFrcG9pbnRLZXkpID0+IHtcbiAgICAgIGlmICghYWxsb3dlZEtleXMuaW5jbHVkZXMoYnJlYWtwb2ludEtleSkpIHtcbiAgICAgICAgd3JvbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhbGxvd2VkS2V5cy5mb3JFYWNoKChhbGxvd2VkS2V5KSA9PiB7XG4gICAgICBpZiAoIWJyZWFrcG9pbnRLZXlzLmluY2x1ZGVzKGFsbG93ZWRLZXkpKSB7XG4gICAgICAgIG1pc3NpbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICh3cm9uZ0tleURldGVjdGVkIHx8IG1pc3NpbmdLZXlEZXRlY3RlZCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBqc29uT2JqZWN0LmJyZWFrcG9pbnRzO1xufTtcblxuY29uc3QgZXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG5jb25zdCBweFRvUmVtID0gKHB4OiBudW1iZXIpOiBudW1iZXIgPT4gcHggLyBTYmJUeXBvU2NhbGVEZWZhdWx0O1xuXG5jb25zdCBicmVha3BvaW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAnc2JiLWJyZWFrcG9pbnQtemVyby1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRaZXJvTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01heCksXG4gICdzYmItYnJlYWtwb2ludC1taWNyby1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNaWNyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC1taWNyby1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNaWNyb01heCksXG4gICdzYmItYnJlYWtwb2ludC1zbWFsbC1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRTbWFsbE1pbiksXG4gICdzYmItYnJlYWtwb2ludC1zbWFsbC1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRTbWFsbE1heCksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LW1lZGl1bS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TGFyZ2VNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TGFyZ2VNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtd2lkZS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRXaWRlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1heCksXG4gICdzYmItYnJlYWtwb2ludC11bHRyYS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRVbHRyYU1pbiksXG4gICdzYmItYnJlYWtwb2ludC11bHRyYS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRVbHRyYU1heCksXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGltYWdlLlxuICpcbiAqIEBldmVudCB7RXZlbnR9IGxvYWQgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQuXG4gKiBAZXZlbnQge0V2ZW50fSBlcnJvciAtIEVtaXRzIHdoZW4gdGhlIGltYWdlIGxvYWRpbmcgZW5kZWQgaW4gYW4gZXJyb3IuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2UtYXNwZWN0LXJhdGlvPWF1dG9dIC0gQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgYGFzcGVjdFJhdGlvYCBwcm9wZXJ0eS5cbiAqIFRoaXMgd2F5IHdlIGNhbiBoYXZlLCBmb3IgZXhhbXBsZSwgYW4gaW1hZ2UgY29tcG9uZW50IHdpdGggYW4gYXNwZWN0XG4gKiByYXRpbyBvZiA0LzMgaW4gc21hbGxlciB2aWV3cG9ydHMgYW5kIDE2LzkgaW4gbGFyZ2VyIHZpZXdwb3J0cy5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1vYmplY3QtcG9zaXRpb25dIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBvYmplY3QtcG9zaXRpb24gQ1NTIHByb3BlcnR5IG9mIHRoZSBpbWFnZSBpdHNlbGYgaWYgdGhlIGltYWdlIGl0c2VsZiBpcyBjcm9wcGVkLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLW9iamVjdC1maXQ9Y292ZXJdIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBvYmplY3QtZml0IENTUyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWltYWdlJylcbmNsYXNzIFNiYkltYWdlRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZXJyb3I6ICdlcnJvcicsXG4gICAgbG9hZDogJ2xvYWQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX2NhcHRpb25FbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2xpbmtzSW5DYXB0aW9uPzogTm9kZUxpc3RPZjxIVE1MTGlua0VsZW1lbnQ+O1xuICBwcml2YXRlIF9jb25maWcgPSB7XG4gICAgbm9uUmV0aW5hUXVhbGl0eTogJzQ1JyxcbiAgICByZXRpbmFRdWFsaXR5OiAnMjAnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbHQgdGV4dCBpcyBub3QgYWx3YXlzIG5lY2Vzc2FyeSAoZS5nLiBpbiB0ZWFzZXIgY2FyZHMgd2hlblxuICAgKiBhZGRpdGlvbmFsIGxpbmsgdGV4dCBpcyBwcm92aWRlZCkuIEluIHRoaXMgY2FzZSB3ZSBjYW4gbGVhdmVcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBhbHQgYXR0cmlidXRlIGJsYW5rLCBidXQgdGhlIGF0dHJpYnV0ZSBpdHNlbGZcbiAgICogc3RpbGwgbmVlZHMgdG8gYmUgcHJlc2VudC4gVGhhdCB3YXkgd2UgY2FuIHNpZ25hbCBhc3Npc3RpdmVcbiAgICogdGVjaG5vbG9neSwgdGhhdCB0aGV5IGNhbiBza2lwIHRoZSBpbWFnZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgYWx0OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGZhbHNlLCB3ZSBzaG93IGEgYmx1cnJlZCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBhc1xuICAgKiBwbGFjZWhvbGRlciBiZWZvcmUgdGhlIGFjdHVhbCBpbWFnZSBzaG93cyB1cC4gVGhpcyB3aWxsIGhlbHBcbiAgICogdG8gaW1wcm92ZSB0aGUgcGVyY2VpdmVkIGxvYWRpbmcgcGVyZm9ybWFuY2UuIFJlYWQgbW9yZSBhYm91dFxuICAgKiB0aGUgaWRlYSBvZiBscWlwIGhlcmU6XG4gICAqIGh0dHBzOi8vbWVkaXVtLmNvbS9AaW1naXgvbHFpcC15b3VyLWltYWdlcy1mb3ItZmFzdC1sb2FkaW5nLTI1MjNkOWVlNGE2MlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NraXAtbHFpcCcsIHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNraXBMcWlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjdXN0b20gZm9jYWwgcG9pbnRcbiAgICogZm9yIHRoZSBpbWFnZS4gU2VlIGZ1bGwgZG9jdW1lbnRhdGlvbiBoZXJlOlxuICAgKiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nL2ZvY2FscG9pbnQtY3JvcFxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2N1c3RvbS1mb2NhbC1wb2ludCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGN1c3RvbUZvY2FsUG9pbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSWYgdGhlIGxhenkgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUsIHRoZSBtb2R1bGUgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIGNoYW5nZSB0aGUgZGVjb2RpbmcgdG8gYXN5bmMsIG90aGVyd2lzZSB0aGUgZGVjb2RpbmcgaXMgc2V0IHRvIGF1dG9cbiAgICogd2hpY2ggbGVhdmVzIHRoZSBoYW5kbGluZyB1cCB0byB0aGUgYnJvd3Nlci4gUmVhZCBtb3JlIGFib3V0IHRoZVxuICAgKiBkZWNvZGluZyBhdHRyaWJ1dGUgaGVyZTpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJbWFnZUVsZW1lbnQvZGVjb2RpbmdcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBkZWNvZGluZzogJ3N5bmMnIHwgJ2FzeW5jJyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgdG8gcmVjZWl2ZSB2aXN1YWwgZ3VpZGFuY2Ugd2hlcmUgdGhlIGN1c3RvbSBmb2NhbFxuICAgKiBwb2ludCBpcyBjdXJyZW50bHkgc2V0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LWRlYnVnJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludERlYnVnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwIChsZWZ0KSBhbmQgMSAocmlnaHQpLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnRYOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAodG9wKSBhbmQgMSAoYm90dG9tKS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC15JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50WTogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogUmlnaHQgbm93IHRoZSBtb2R1bGUgaXMgaGVhdmlseSBjb3VwbGVkIHdpdGggdGhlIGltYWdlIGRlbGl2ZXJ5XG4gICAqIHNlcnZpY2UgaW1naXggYW5kIGRlcGVuZHMgb24gdGhlIG9yaWdpbmFsIGZpbGVzIGJlaW5nIHN0b3JlZFxuICAgKiBpbnNpZGUgQUVNLiBZb3UgY2FuIHBhc3MgaW4gYW55IGh0dHBzOi8vY2RuLmltZy5zYmIuY2ggaW1nXG4gICAqIHNyYyBhZGRyZXNzIHlvdSBmaW5kIG9uIHNiYi5jaCB0byBwbGF5IGFyb3VuZCB3aXRoIGl0LiBKdXN0XG4gICAqIHN0cmlwIHRoZSB1cmwgcGFyYW1ldGVycyBhbmQgcGFzdGUgaW4gdGhlIHBsYWluIGZpbGUgYWRkcmVzcy5cbiAgICogSWYgeW91IHdhbnQgdG8ga25vdyBob3cgdG8gYmVzdCB3b3JrIHdpdGggdGhpcyBtb2R1bGUgd2l0aFxuICAgKiBpbWFnZXMgY29taW5nIGZyb20gYSBkaWZmZXJlbnQgc291cmNlLCBwbGVhc2UgY29udGFjdCB0aGVcbiAgICogTFlORSBDb3JlIFRlYW0uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaW1hZ2Utc3JjJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW1hZ2VTcmM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wb3J0YW5jZSBhdHRyaWJ1dGUgaXMgZmFpcmx5IG5ldyBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkXG4gICAqIGhlbHAgdGhlIGJyb3dzZXIgZGVjaWRlIHdoaWNoIHJlc291cmNlcyBpdCBzaG91bGQgcHJpb3JpdGlzZVxuICAgKiBkdXJpbmcgcGFnZSBsb2FkLiBXZSB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIGJhc2VkIG9uIHRoZVxuICAgKiB2YWx1ZSwgd2UgcmVjZWl2ZSBpbiB0aGUgbG9hZGluZyBhdHRyaWJ1dGUuICdlYWdlcicsIHdoaWNoIHdlIHVzZVxuICAgKiBmb3IgdGhlIGxhcmdlc3QgaW1hZ2Ugd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LCB3aWxsIHNldCB0aGVcbiAgICogYXR0cmlidXRlIHZhbHVlIHRvICdoaWdoJy4gJ2xhenknLCB3aGljaCB3ZSB1c2UgZm9yIGltYWdlcyBiZWxvd1xuICAgKiB0aGUgZm9sZCwgd2lsbCBzZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0byAnbG93Jy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBpbXBvcnRhbmNlOiAnYXV0bycgfCAnaGlnaCcgfCAnbG93JyA9ICdoaWdoJztcblxuICAvKipcbiAgICogV2l0aCB0aGUgc3VwcG9ydCBvZiBuYXRpdmUgaW1hZ2UgbGF6eSBsb2FkaW5nLCB3ZSBjYW4gbm93XG4gICAqIGRlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gbG9hZCB0aGUgaW1hZ2UgaW1tZWRpYXRlbHkgb3Igb25seVxuICAgKiBvbmNlIGl0IGlzIGNsb3NlIHRvIHRoZSB2aXNpYmxlIHZpZXdwb3J0LiBUaGUgdmFsdWUgZWFnZXIgaXNcbiAgICogYmVzdCB1c2VkIGZvciBpbWFnZXMgd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LiBXZSB3YW50IHRvXG4gICAqIGxvYWQgdGhlc2UgaW1hZ2VzIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUgQ29yZSBXZWJcbiAgICogVml0YWxzIHZhbHVlcy4gbGF6eSBvbiB0aGUgb3RoZXIgaGFuZCB3b3JrcyBiZXN0IGZvciBpbWFnZXNcbiAgICogd2hpY2ggYXJlIGZ1cnRoZXIgZG93biB0aGUgcGFnZSBvciBpbnZpc2libGUgZHVyaW5nIHRoZSBsb2FkaW5nXG4gICAqIG9mIHRoZSBpbml0aWFsIHZpZXdwb3J0LlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGxvYWRpbmc6ICdlYWdlcicgfCAnbGF6eScgPSAnZWFnZXInO1xuXG4gIC8qKlxuICAgKiBXaXRoIHBlcmZvcm1hbmNlLm1hcmsgeW91IGNhbiBsb2cgYSB0aW1lc3RhbXAgYXNzb2NpYXRlZCB3aXRoXG4gICAqIHRoZSBuYW1lIHlvdSBkZWZpbmUgaW4gcGVyZm9ybWFuY2VNYXJrIHdoZW4gYSBjZXJ0YWluIGV2ZW50IGlzXG4gICAqIGhhcHBlbmluZy4gSW4gb3VyIGNhc2Ugd2Ugd2lsbCBsb2cgdGhlIHBlcmZvcm1hbmNlLm1hcmsgaW50b1xuICAgKiB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUEkgb25jZSB0aGUgaW1hZ2UgaXMgZnVsbHkgbG9hZGVkLlxuICAgKiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nIHRvb2xzIGxpa2UgU3BlZWRDdXJ2ZSBvciBMaWdodGhvdXNlIGFyZVxuICAgKiB0aGVuIGFibGUgdG8gZ3JhYiB0aGVzZSBlbnRyaWVzIGZyb20gdGhlIFBlcmZvcm1hbmNlRW50cnkgQVBJXG4gICAqIGFuZCBnaXZlIHVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYW5kIGluc2lnaHRzIGFib3V0IG91ciBwYWdlXG4gICAqIGxvYWRpbmcgYmVoYXZpb3VyLiBXZSBhcmUgdGhlbiBhbHNvIGFibGUgdG8gbW9uaXRvciB0aGVzZVxuICAgKiB2YWx1ZXMgb3ZlciBhIGxvbmcgcGVyaW9kIHRvIHNlZSBpZiBvdXIgcGVyZm9ybWFuY2VcbiAgICogaW5jcmVhc2VzIG9yIGRlY3JlYXNlcyBvdmVyIHRpbWUuIEJlc3QgdG8gdXNlIGxvd2VyY2FzZSBzdHJpbmdzXG4gICAqIGhlcmUsIHNlcGFyYXRlIHdvcmRzIHdpdGggdW5kZXJzY29yZXMgb3IgZGFzaGVzLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BlcmZvcm1hbmNlLW1hcmsnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwZXJmb3JtYW5jZU1hcms6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBwaWN0dXJlU2l6ZXNDb25maWcgb2JqZWN0LCB5b3UgY2FuIHBhc3MgaW4gaW5mb3JtYXRpb25cbiAgICogaW50byBpbWFnZSBhYm91dCB3aGF0IGtpbmQgb2Ygc291cmNlIGVsZW1lbnRzIHNob3VsZCBnZXRcbiAgICogcmVuZGVyZWQuIG1lZGlhUXVlcmllcyBhY2NlcHRzIG11bHRpcGxlIE1lZGlhIFF1ZXJ5IGVudHJpZXNcbiAgICogd2hpY2ggY2FuIGdldCBjb21iaW5lZCBieSBkZWZpbmluZyBhIGNvbmRpdGlvbk9wZXJhdG9yLlxuICAgKiBUeXBlIGlzOiBzdHJpbmdpZmllZCBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZy1PYmplY3RcbiAgICogQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICoge1xuICAgKiAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI2NzVcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjEyMDBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTQ5XCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCI5NzZcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtc21hbGwtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTgwXCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCIzMjBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4XCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogXCJhbmRcIlxuICAgKiAgICAgICAgICB9LFxuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwib3JpZW50YXRpb25cIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiBmYWxzZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJsYW5kc2NhcGVcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfVxuICAgKiAgICBdXG4gICAqICB9XG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGljdHVyZS1zaXplcy1jb25maWcnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwaWN0dXJlU2l6ZXNDb25maWc6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpbWFnZSBpcyBmaW5pc2hlZCBsb2FkaW5nIG9yIGZhaWxlZCB0byBsb2FkLiAqL1xuICBwdWJsaWMgZ2V0IGNvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJyk/LmNvbXBsZXRlID8/IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuX2NhcHRpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbGlua3NJbkNhcHRpb24gPSB0aGlzLl9jYXB0aW9uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxMaW5rRWxlbWVudD4oJ2EnKTtcblxuICAgIGlmICghdGhpcy5fbGlua3NJbkNhcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLlxuICAgIGF3YWl0IHRoaXMudXBkYXRlQ29tcGxldGU7XG4gICAgaWYgKHRoaXMuY29tcGxldGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ1BlcmZvcm1hbmNlTWFya3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVyZm9ybWFuY2VNYXJrKSB7XG4gICAgICBwZXJmb3JtYW5jZS5jbGVhck1hcmtzKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICAgIHBlcmZvcm1hbmNlLm1hcmsodGhpcy5wZXJmb3JtYW5jZU1hcmspO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKGJyZWFrcG9pbnRTaXplTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IGJyZWFrcG9pbnRNYXBbYnJlYWtwb2ludFNpemVOYW1lXTtcbiAgICByZXR1cm4gdmFsdWUgPyBgJHt2YWx1ZX1yZW1gIDogJyc7XG4gIH1cblxuICBwcml2YXRlIF9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uPy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICBsaW5rLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVJbWFnZVVybChiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsIGxxdWlwID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICghYmFzZVVybCB8fCBiYXNlVXJsID09PSAnJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIENyZWF0aW5nIGFuIFVSTCB3aXRob3V0IGEgc2NoZW1hIHdpbGwgZmFpbCwgYnV0IGlzIGEgdmFsaWQgaW5wdXQgZm9yIGJhc2VVcmwuXG4gICAgLy8gZS5nLiBpbWFnZS1zcmMgY2FuIGJlIGh0dHBzOi8vZXhhbXBsZS5jb20vbXktaW1hZ2UucG5nIG9yIC9teS1pbWFnZS5wbmdcbiAgICBjb25zdCBpc0Z1bGx5UXVhbGlmaWVkVXJsID0gISFiYXNlVXJsLm1hdGNoKC9eXFx3KzpcXC9cXC8vKTtcbiAgICBjb25zdCBpbWFnZVVybE9iaiA9IGlzRnVsbHlRdWFsaWZpZWRVcmwgPyBuZXcgVVJMKGJhc2VVcmwpIDogbmV3IFVSTChgaHR0cDovL25vb3AvJHtiYXNlVXJsfWApO1xuXG4gICAgaWYgKGxxdWlwKSB7XG4gICAgICAvLyBibHVyIGFuZCBzaXplOiA/Ymx1cj0xMDAmdz0xMDAmaD01NlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYmx1cicsICcxMDAnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3cnLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdoJywgJzU2Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENETiBJbmZvcm1hdGlvbjogaHR0cHM6Ly9kb2NzLmltZ2l4LmNvbS9hcGlzL3JlbmRlcmluZ1xuICAgICAgLy8gcGFyYW0uYXV0bzogP2F1dG89Zm9ybWF0LGNvbXByZXNzLGNzPXRpbnlzcmdiXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdhdXRvJywgJ2Zvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1c3RvbUZvY2FsUG9pbnQpIHtcbiAgICAgIC8vIGNyb3A6IGAmZml0PWNyb3AmY3JvcD1mb2NhbHBvaW50JmZwLXg9JHt0aGlzLmZvY2FsUG9pbnRYfSZmcC15PSR7dGhpcy5mb2NhbFBvaW50WX0mZnAtej0xYCxcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZpdCcsICdjcm9wJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdjcm9wJywgJ2ZvY2FscG9pbnQnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXgnLCB0aGlzLmZvY2FsUG9pbnRYLnRvU3RyaW5nKDEwKSk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC15JywgdGhpcy5mb2NhbFBvaW50WS50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteicsICcxJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9jYWxQb2ludERlYnVnKSB7XG4gICAgICAvLyBmb2NhbFBvaW50RGVidWc6ICcmZnAtZGVidWc9dHJ1ZSdcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLWRlYnVnJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIFwibm9vcFwiIGhvc3QsIHdlIGRvbid0IHJldHVybiB0aGUgaG9zdCBhbmQgbXVzdCByZW1vdmUgdGhlXG4gICAgLy8gc3RhcnRpbmcgYC9gIG9mIHRoZSBwYXRobmFtZS5cbiAgICByZXR1cm4gaXNGdWxseVF1YWxpZmllZFVybFxuICAgICAgPyBpbWFnZVVybE9iai5ocmVmXG4gICAgICA6IGltYWdlVXJsT2JqLnBhdGhuYW1lLnN1YnN0cmluZygxKSArIGltYWdlVXJsT2JqLnNlYXJjaDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W10ge1xuICAgIGxldCBwaWN0dXJlU2l6ZXNDb25maWc7XG5cbiAgICBpZiAodGhpcy5waWN0dXJlU2l6ZXNDb25maWcpIHtcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IHRoaXMucGljdHVyZVNpemVzQ29uZmlnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWZhdWx0IGNvbmZpZ1xuICAgICAgcGljdHVyZVNpemVzQ29uZmlnID0gYHtcbiAgICAgICAgXCJicmVha3BvaW50c1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDY3NSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogNTQ5LFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDk3NlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDE4MCxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAzMjBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtYXgtd2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LXplcm8tbWF4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMocGljdHVyZVNpemVzQ29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1lZGlhUXVlcnlTdHJpbmcoXG4gICAgbWVkaWFRdWVyaWVzOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ01lZGlhUXVlcnlbXSxcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbWVkaWFRdWVyeSA9ICcnO1xuXG4gICAgbWVkaWFRdWVyaWVzLmZvckVhY2goKG1xKSA9PiB7XG4gICAgICBjb25zdCBtcUNvbmRpdGlvbiA9IG1xLmNvbmRpdGlvbkZlYXR1cmU7XG4gICAgICBsZXQgbXFWYWx1ZTtcblxuICAgICAgaWYgKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS5seW5lRGVzaWduVG9rZW4pIHtcbiAgICAgICAgbXFWYWx1ZSA9IHRoaXMuX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtcVZhbHVlID0gbXEuY29uZGl0aW9uRmVhdHVyZVZhbHVlLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtcUNvbWJpbmVyID0gbXEuY29uZGl0aW9uT3BlcmF0b3IgPyBgICR7bXEuY29uZGl0aW9uT3BlcmF0b3J9IGAgOiAnJztcblxuICAgICAgbWVkaWFRdWVyeSArPSBgKCR7bXFDb25kaXRpb259OiAke21xVmFsdWV9KSR7bXFDb21iaW5lcn1gO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lZGlhUXVlcnk7XG4gIH1cblxuICBAZXZlbnRPcHRpb25zKGV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICBwcml2YXRlIF9pbWFnZUxvYWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dQZXJmb3JtYW5jZU1hcmtzKCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnbG9hZCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGltYWdlVXJsTFFJUCA9IHRoaXMuX3ByZXBhcmVJbWFnZVVybCh0aGlzLmltYWdlU3JjLCB0cnVlKTtcbiAgICBjb25zdCBpbWFnZVVybFdpdGhQYXJhbXMgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyA9PT0gJ2xhenknKSB7XG4gICAgICB0aGlzLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgIHRoaXMuaW1wb3J0YW5jZSA9ICdsb3cnO1xuICAgIH1cblxuICAgIGNvbnN0IHBpY3R1cmVTaXplQ29uZmlncyA9IHRoaXMuX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBhbHQgYXR0cmlidXRlIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBmb3IgdGhlIGltZyBlbGVtZW50LlxuICAgICAqIElmIGl0IGhhcyBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIHZhbHVlLCBpdCBpcyBzaW1wbHkgaWdub3JlZFxuICAgICAqIGJ5IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuIElmIHdlIGxlYXZlIGl0IG91dCBjb21wbGV0ZWx5LFxuICAgICAqIHRoZXkgbWlnaHQgdHJ5IHRvIGludGVycHJldCB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICovXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWltYWdlX193cmFwcGVyXCI+XG4gICAgICAgICR7IXRoaXMuc2tpcExxaXBcbiAgICAgICAgICA/IGh0bWxgPGltZ1xuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1pbWFnZV9fYmx1cnJlZFwiXG4gICAgICAgICAgICAgIHNyYz0ke2ltYWdlVXJsTFFJUH1cbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgIC8+YFxuICAgICAgICAgIDogbm90aGluZ31cblxuICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICA8IS0tIHJlbmRlciBwaWN0dXJlIGVsZW1lbnQgc291cmNlcyAtLT5cbiAgICAgICAgICAke3BpY3R1cmVTaXplQ29uZmlncy5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBjb25maWcuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IGNvbmZpZy5pbWFnZS53aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLl9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKGNvbmZpZy5tZWRpYVF1ZXJpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICBtZWRpYT0ke2Ake21lZGlhUXVlcnl9YH1cbiAgICAgICAgICAgICAgICBzaXplcz0ke2Ake2ltYWdlV2lkdGh9cHhgfVxuICAgICAgICAgICAgICAgIHNyY3NldD0ke1xuICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aH0maD0ke2ltYWdlSGVpZ2h0fSZxPSR7dGhpcy5fY29uZmlnLm5vblJldGluYVF1YWxpdHl9ICR7aW1hZ2VXaWR0aH13LCBgICtcbiAgICAgICAgICAgICAgICAgIGAke2ltYWdlVXJsV2l0aFBhcmFtc30mdz0ke2ltYWdlV2lkdGggKiAyfSZoPSR7aW1hZ2VIZWlnaHQgKiAyfSZxPSR7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5yZXRpbmFRdWFsaXR5XG4gICAgICAgICAgICAgICAgICB9ICR7aW1hZ2VXaWR0aCAqIDJ9d2BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID48L3NvdXJjZT5gO1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGFsdD0ke3RoaXMuYWx0IHx8ICcnfVxuICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLl9pbWFnZUxvYWRlZH1cbiAgICAgICAgICAgIEBlcnJvcj0keygpID0+IHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Vycm9yJykpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2ltZ1wiXG4gICAgICAgICAgICBzcmM9JHt0aGlzLmltYWdlU3JjIX1cbiAgICAgICAgICAgIHdpZHRoPVwiMTAwMFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgZGVjb2Rpbmc9JHt0aGlzLmRlY29kaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAuZmV0Y2hQcmlvcml0eT0ke3RoaXMuaW1wb3J0YW5jZSA/PyBub3RoaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvcGljdHVyZT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pbWFnZSc6IFNiYkltYWdlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVEQSxNQUFNLDRCQUE0QixDQUNoQyxlQUNtRDtBQUNuRCxNQUFJLENBQUMsY0FBYyxXQUFXLFdBQVcsR0FBRztBQUMxQyxXQUFPOztBQUlILFFBQUEsYUFDRixNQUNFLFFBQVEsS0FDTixxSkFBcUo7QUFHekosTUFBQTtBQUVBLE1BQUE7QUFDVyxpQkFBQSxLQUFLLE1BQU0sVUFBVTtBQUFBLEVBQUEsUUFDNUI7O0FBRU4sV0FBTzs7QUFHVCxNQUFJLENBQUMsV0FBVyxlQUFlLFdBQVcsWUFBWSxX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
|
|
684
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRaZXJvTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01heCxcbiAgU2JiQnJlYWtwb2ludE1pY3JvTWluLFxuICBTYmJCcmVha3BvaW50TWljcm9NYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFNtYWxsTWF4LFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWluLFxuICBTYmJCcmVha3BvaW50TWVkaXVtTWF4LFxuICBTYmJCcmVha3BvaW50TGFyZ2VNaW4sXG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludFdpZGVNaW4sXG4gIFNiYkJyZWFrcG9pbnRXaWRlTWF4LFxuICBTYmJCcmVha3BvaW50VWx0cmFNaW4sXG4gIFNiYkJyZWFrcG9pbnRVbHRyYU1heCxcbiAgU2JiVHlwb1NjYWxlRGVmYXVsdCxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBMaXRFbGVtZW50LFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCwgZXZlbnRPcHRpb25zLCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vaW1hZ2Uuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZyB7XG4gIGJyZWFrcG9pbnRzOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ0JyZWFrcG9pbnQge1xuICBpbWFnZToge1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gIH07XG4gIG1lZGlhUXVlcmllczogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdNZWRpYVF1ZXJ5IHtcbiAgY29uZGl0aW9uRmVhdHVyZTogc3RyaW5nO1xuICBjb25kaXRpb25GZWF0dXJlVmFsdWU6IHtcbiAgICBseW5lRGVzaWduVG9rZW46IGJvb2xlYW47XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcbiAgY29uZGl0aW9uT3BlcmF0b3I6IGZhbHNlO1xufVxuXG4vKipcbiAqIHdlIGNoZWNrIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgbWFudWFsbHksIHNvIGl0J3Mgc2FmZSB0byB1c2UgYGFueWAgYXMgcmV0dXJuIHR5cGVcbiAqL1xuY29uc3QgaW1hZ2VIZWxwZXJHZXRCcmVha3BvaW50cyA9IChcbiAganNvblN0cmluZzogc3RyaW5nLFxuKTogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W10gPT4ge1xuICBpZiAoIWpzb25TdHJpbmcgfHwganNvblN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGBicmVha3BvaW50c2Aga2V5IGluIG9iamVjdFxuICBjb25zdCBsb2dXYXJuaW5nID0gaW1wb3J0Lm1ldGEuZW52LkRFVlxuICAgID8gKCkgPT5cbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdzYmItaW1hZ2UgZXJyb3I6IGF0dHJpYnV0ZSBicmVha3BvaW50cyBoYXMgd3JvbmcgZGF0YSBmb3JtYXQuIFJlZmVyZW5jZSB0aGUgZG9jdW1lbnRhdGlvbiB0byBzZWUgaG93IHlvdSBzaG91bGQgZm9ybWF0IHRoZSBkYXRhIGZvciB0aGlzIGF0dHJpYnV0ZS4nLFxuICAgICAgICApXG4gICAgOiBudWxsO1xuICBsZXQganNvbk9iamVjdDogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWc7XG5cbiAgdHJ5IHtcbiAgICBqc29uT2JqZWN0ID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcbiAgfSBjYXRjaCB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaWYgKCFqc29uT2JqZWN0LmJyZWFrcG9pbnRzIHx8IGpzb25PYmplY3QuYnJlYWtwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nV2FybmluZz8uKCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIGdldCBhbiBhcnJheSBvZiBicmVha3BvaW50c1xuICBpZiAoIUFycmF5LmlzQXJyYXkoanNvbk9iamVjdC5icmVha3BvaW50cykpIHtcbiAgICBsb2dXYXJuaW5nPy4oKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogMS4gbWFrZSBzdXJlIHRoYXQgZWFjaCBlbnRyeSB3aXRoaW4gdGhlIGJyZWFrcG9pbnRzIG9iamVjdCBjb250YWlucyBvbmx5IGFsbG93ZWQga2V5c1xuICAgKiAyLiBtYWtlIHN1cmUgdGhhdCBhbGwgbmVjZXNzYXJ5IGtleXMgYXJlIHByZXNlbnRcbiAgICovXG4gIGxldCB3cm9uZ0tleURldGVjdGVkID0gZmFsc2U7XG4gIGxldCBtaXNzaW5nS2V5RGV0ZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBhbGxvd2VkS2V5cyA9IFsnaW1hZ2UnLCAnbWVkaWFRdWVyaWVzJ107XG5cbiAganNvbk9iamVjdC5icmVha3BvaW50cy5mb3JFYWNoKChicmVha3BvaW50KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludEtleXMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50KTtcblxuICAgIGJyZWFrcG9pbnRLZXlzLmZvckVhY2goKGJyZWFrcG9pbnRLZXkpID0+IHtcbiAgICAgIGlmICghYWxsb3dlZEtleXMuaW5jbHVkZXMoYnJlYWtwb2ludEtleSkpIHtcbiAgICAgICAgd3JvbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhbGxvd2VkS2V5cy5mb3JFYWNoKChhbGxvd2VkS2V5KSA9PiB7XG4gICAgICBpZiAoIWJyZWFrcG9pbnRLZXlzLmluY2x1ZGVzKGFsbG93ZWRLZXkpKSB7XG4gICAgICAgIG1pc3NpbmdLZXlEZXRlY3RlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICh3cm9uZ0tleURldGVjdGVkIHx8IG1pc3NpbmdLZXlEZXRlY3RlZCkge1xuICAgIGxvZ1dhcm5pbmc/LigpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBqc29uT2JqZWN0LmJyZWFrcG9pbnRzO1xufTtcblxuY29uc3QgZXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gIG9uY2U6IHRydWUsXG4gIHBhc3NpdmU6IHRydWUsXG59O1xuXG5jb25zdCBweFRvUmVtID0gKHB4OiBudW1iZXIpOiBudW1iZXIgPT4gcHggLyBTYmJUeXBvU2NhbGVEZWZhdWx0O1xuXG5jb25zdCBicmVha3BvaW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAnc2JiLWJyZWFrcG9pbnQtemVyby1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRaZXJvTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXplcm8tbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50WmVyb01heCksXG4gICdzYmItYnJlYWtwb2ludC1taWNyby1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNaWNyb01pbiksXG4gICdzYmItYnJlYWtwb2ludC1taWNyby1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNaWNyb01heCksXG4gICdzYmItYnJlYWtwb2ludC1zbWFsbC1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRTbWFsbE1pbiksXG4gICdzYmItYnJlYWtwb2ludC1zbWFsbC1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRTbWFsbE1heCksXG4gICdzYmItYnJlYWtwb2ludC1tZWRpdW0tbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LW1lZGl1bS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluJzogcHhUb1JlbShTYmJCcmVha3BvaW50TGFyZ2VNaW4pLFxuICAnc2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50TGFyZ2VNYXgpLFxuICAnc2JiLWJyZWFrcG9pbnQtd2lkZS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRXaWRlTWluKSxcbiAgJ3NiYi1icmVha3BvaW50LXdpZGUtbWF4JzogcHhUb1JlbShTYmJCcmVha3BvaW50V2lkZU1heCksXG4gICdzYmItYnJlYWtwb2ludC11bHRyYS1taW4nOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRVbHRyYU1pbiksXG4gICdzYmItYnJlYWtwb2ludC11bHRyYS1tYXgnOiBweFRvUmVtKFNiYkJyZWFrcG9pbnRVbHRyYU1heCksXG59O1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGltYWdlLlxuICpcbiAqIEBldmVudCB7RXZlbnR9IGxvYWQgLSBFbWl0cyB3aGVuIHRoZSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQuXG4gKiBAZXZlbnQge0V2ZW50fSBlcnJvciAtIEVtaXRzIHdoZW4gdGhlIGltYWdlIGxvYWRpbmcgZW5kZWQgaW4gYW4gZXJyb3IuXG4gKiBAY3NzcHJvcCBbLS1zYmItaW1hZ2UtYXNwZWN0LXJhdGlvPWF1dG9dIC0gQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgYGFzcGVjdFJhdGlvYCBwcm9wZXJ0eS5cbiAqIFRoaXMgd2F5IHdlIGNhbiBoYXZlLCBmb3IgZXhhbXBsZSwgYW4gaW1hZ2UgY29tcG9uZW50IHdpdGggYW4gYXNwZWN0XG4gKiByYXRpbyBvZiA0LzMgaW4gc21hbGxlciB2aWV3cG9ydHMgYW5kIDE2LzkgaW4gbGFyZ2VyIHZpZXdwb3J0cy5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pbWFnZS1vYmplY3QtcG9zaXRpb25dIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBvYmplY3QtcG9zaXRpb24gQ1NTIHByb3BlcnR5IG9mIHRoZSBpbWFnZSBpdHNlbGYgaWYgdGhlIGltYWdlIGl0c2VsZiBpcyBjcm9wcGVkLlxuICogQGNzc3Byb3AgWy0tc2JiLWltYWdlLW9iamVjdC1maXQ9Y292ZXJdIC0gQ2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBvYmplY3QtZml0IENTUyBwcm9wZXJ0eSBvZiB0aGUgaW1hZ2UgaXRzZWxmIGlmIHRoZSBpbWFnZSBpdHNlbGYgaXMgY3JvcHBlZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWltYWdlJylcbmNsYXNzIFNiYkltYWdlRWxlbWVudCBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZXJyb3I6ICdlcnJvcicsXG4gICAgbG9hZDogJ2xvYWQnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX2NhcHRpb25FbGVtZW50PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2xpbmtzSW5DYXB0aW9uPzogTm9kZUxpc3RPZjxIVE1MTGlua0VsZW1lbnQ+O1xuICBwcml2YXRlIF9jb25maWcgPSB7XG4gICAgbm9uUmV0aW5hUXVhbGl0eTogJzQ1JyxcbiAgICByZXRpbmFRdWFsaXR5OiAnMjAnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBBbiBhbHQgdGV4dCBpcyBub3QgYWx3YXlzIG5lY2Vzc2FyeSAoZS5nLiBpbiB0ZWFzZXIgY2FyZHMgd2hlblxuICAgKiBhZGRpdGlvbmFsIGxpbmsgdGV4dCBpcyBwcm92aWRlZCkuIEluIHRoaXMgY2FzZSB3ZSBjYW4gbGVhdmVcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBhbHQgYXR0cmlidXRlIGJsYW5rLCBidXQgdGhlIGF0dHJpYnV0ZSBpdHNlbGZcbiAgICogc3RpbGwgbmVlZHMgdG8gYmUgcHJlc2VudC4gVGhhdCB3YXkgd2UgY2FuIHNpZ25hbCBhc3Npc3RpdmVcbiAgICogdGVjaG5vbG9neSwgdGhhdCB0aGV5IGNhbiBza2lwIHRoZSBpbWFnZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgYWx0OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGZhbHNlLCB3ZSBzaG93IGEgYmx1cnJlZCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBhc1xuICAgKiBwbGFjZWhvbGRlciBiZWZvcmUgdGhlIGFjdHVhbCBpbWFnZSBzaG93cyB1cC4gVGhpcyB3aWxsIGhlbHBcbiAgICogdG8gaW1wcm92ZSB0aGUgcGVyY2VpdmVkIGxvYWRpbmcgcGVyZm9ybWFuY2UuIFJlYWQgbW9yZSBhYm91dFxuICAgKiB0aGUgaWRlYSBvZiBscWlwIGhlcmU6XG4gICAqIGh0dHBzOi8vbWVkaXVtLmNvbS9AaW1naXgvbHFpcC15b3VyLWltYWdlcy1mb3ItZmFzdC1sb2FkaW5nLTI1MjNkOWVlNGE2MlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NraXAtbHFpcCcsIHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIHNraXBMcWlwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUsIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjdXN0b20gZm9jYWwgcG9pbnRcbiAgICogZm9yIHRoZSBpbWFnZS4gU2VlIGZ1bGwgZG9jdW1lbnRhdGlvbiBoZXJlOlxuICAgKiBodHRwczovL2RvY3MuaW1naXguY29tL2FwaXMvcmVuZGVyaW5nL2ZvY2FscG9pbnQtY3JvcFxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2N1c3RvbS1mb2NhbC1wb2ludCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGN1c3RvbUZvY2FsUG9pbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSWYgdGhlIGxhenkgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUsIHRoZSBtb2R1bGUgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIGNoYW5nZSB0aGUgZGVjb2RpbmcgdG8gYXN5bmMsIG90aGVyd2lzZSB0aGUgZGVjb2RpbmcgaXMgc2V0IHRvIGF1dG9cbiAgICogd2hpY2ggbGVhdmVzIHRoZSBoYW5kbGluZyB1cCB0byB0aGUgYnJvd3Nlci4gUmVhZCBtb3JlIGFib3V0IHRoZVxuICAgKiBkZWNvZGluZyBhdHRyaWJ1dGUgaGVyZTpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxJbWFnZUVsZW1lbnQvZGVjb2RpbmdcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBkZWNvZGluZzogJ3N5bmMnIHwgJ2FzeW5jJyB8ICdhdXRvJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSwgdG8gcmVjZWl2ZSB2aXN1YWwgZ3VpZGFuY2Ugd2hlcmUgdGhlIGN1c3RvbSBmb2NhbFxuICAgKiBwb2ludCBpcyBjdXJyZW50bHkgc2V0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LWRlYnVnJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZm9jYWxQb2ludERlYnVnOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBhc3MgaW4gYSBmbG9hdGluZyBudW1iZXIgYmV0d2VlbiAwIChsZWZ0KSBhbmQgMSAocmlnaHQpLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZvY2FsLXBvaW50LXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY2FsUG9pbnRYOiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBQYXNzIGluIGEgZmxvYXRpbmcgbnVtYmVyIGJldHdlZW4gMCAodG9wKSBhbmQgMSAoYm90dG9tKS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmb2NhbC1wb2ludC15JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2NhbFBvaW50WTogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogUmlnaHQgbm93IHRoZSBtb2R1bGUgaXMgaGVhdmlseSBjb3VwbGVkIHdpdGggdGhlIGltYWdlIGRlbGl2ZXJ5XG4gICAqIHNlcnZpY2UgaW1naXggYW5kIGRlcGVuZHMgb24gdGhlIG9yaWdpbmFsIGZpbGVzIGJlaW5nIHN0b3JlZFxuICAgKiBpbnNpZGUgQUVNLiBZb3UgY2FuIHBhc3MgaW4gYW55IGh0dHBzOi8vY2RuLmltZy5zYmIuY2ggaW1nXG4gICAqIHNyYyBhZGRyZXNzIHlvdSBmaW5kIG9uIHNiYi5jaCB0byBwbGF5IGFyb3VuZCB3aXRoIGl0LiBKdXN0XG4gICAqIHN0cmlwIHRoZSB1cmwgcGFyYW1ldGVycyBhbmQgcGFzdGUgaW4gdGhlIHBsYWluIGZpbGUgYWRkcmVzcy5cbiAgICogSWYgeW91IHdhbnQgdG8ga25vdyBob3cgdG8gYmVzdCB3b3JrIHdpdGggdGhpcyBtb2R1bGUgd2l0aFxuICAgKiBpbWFnZXMgY29taW5nIGZyb20gYSBkaWZmZXJlbnQgc291cmNlLCBwbGVhc2UgY29udGFjdCB0aGVcbiAgICogTFlORSBDb3JlIFRlYW0uXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaW1hZ2Utc3JjJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW1hZ2VTcmM6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wb3J0YW5jZSBhdHRyaWJ1dGUgaXMgZmFpcmx5IG5ldyBhdHRyaWJ1dGUgd2hpY2ggc2hvdWxkXG4gICAqIGhlbHAgdGhlIGJyb3dzZXIgZGVjaWRlIHdoaWNoIHJlc291cmNlcyBpdCBzaG91bGQgcHJpb3JpdGlzZVxuICAgKiBkdXJpbmcgcGFnZSBsb2FkLiBXZSB3aWxsIHNldCB0aGUgYXR0cmlidXRlIHZhbHVlIGJhc2VkIG9uIHRoZVxuICAgKiB2YWx1ZSwgd2UgcmVjZWl2ZSBpbiB0aGUgbG9hZGluZyBhdHRyaWJ1dGUuICdlYWdlcicsIHdoaWNoIHdlIHVzZVxuICAgKiBmb3IgdGhlIGxhcmdlc3QgaW1hZ2Ugd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LCB3aWxsIHNldCB0aGVcbiAgICogYXR0cmlidXRlIHZhbHVlIHRvICdoaWdoJy4gJ2xhenknLCB3aGljaCB3ZSB1c2UgZm9yIGltYWdlcyBiZWxvd1xuICAgKiB0aGUgZm9sZCwgd2lsbCBzZXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSB0byAnbG93Jy5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBpbXBvcnRhbmNlOiAnYXV0bycgfCAnaGlnaCcgfCAnbG93JyA9ICdoaWdoJztcblxuICAvKipcbiAgICogV2l0aCB0aGUgc3VwcG9ydCBvZiBuYXRpdmUgaW1hZ2UgbGF6eSBsb2FkaW5nLCB3ZSBjYW4gbm93XG4gICAqIGRlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gbG9hZCB0aGUgaW1hZ2UgaW1tZWRpYXRlbHkgb3Igb25seVxuICAgKiBvbmNlIGl0IGlzIGNsb3NlIHRvIHRoZSB2aXNpYmxlIHZpZXdwb3J0LiBUaGUgdmFsdWUgZWFnZXIgaXNcbiAgICogYmVzdCB1c2VkIGZvciBpbWFnZXMgd2l0aGluIHRoZSBpbml0aWFsIHZpZXdwb3J0LiBXZSB3YW50IHRvXG4gICAqIGxvYWQgdGhlc2UgaW1hZ2VzIGFzIGZhc3QgYXMgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUgQ29yZSBXZWJcbiAgICogVml0YWxzIHZhbHVlcy4gbGF6eSBvbiB0aGUgb3RoZXIgaGFuZCB3b3JrcyBiZXN0IGZvciBpbWFnZXNcbiAgICogd2hpY2ggYXJlIGZ1cnRoZXIgZG93biB0aGUgcGFnZSBvciBpbnZpc2libGUgZHVyaW5nIHRoZSBsb2FkaW5nXG4gICAqIG9mIHRoZSBpbml0aWFsIHZpZXdwb3J0LlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIGxvYWRpbmc6ICdlYWdlcicgfCAnbGF6eScgPSAnZWFnZXInO1xuXG4gIC8qKlxuICAgKiBXaXRoIHBlcmZvcm1hbmNlLm1hcmsgeW91IGNhbiBsb2cgYSB0aW1lc3RhbXAgYXNzb2NpYXRlZCB3aXRoXG4gICAqIHRoZSBuYW1lIHlvdSBkZWZpbmUgaW4gcGVyZm9ybWFuY2VNYXJrIHdoZW4gYSBjZXJ0YWluIGV2ZW50IGlzXG4gICAqIGhhcHBlbmluZy4gSW4gb3VyIGNhc2Ugd2Ugd2lsbCBsb2cgdGhlIHBlcmZvcm1hbmNlLm1hcmsgaW50b1xuICAgKiB0aGUgUGVyZm9ybWFuY2VFbnRyeSBBUEkgb25jZSB0aGUgaW1hZ2UgaXMgZnVsbHkgbG9hZGVkLlxuICAgKiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nIHRvb2xzIGxpa2UgU3BlZWRDdXJ2ZSBvciBMaWdodGhvdXNlIGFyZVxuICAgKiB0aGVuIGFibGUgdG8gZ3JhYiB0aGVzZSBlbnRyaWVzIGZyb20gdGhlIFBlcmZvcm1hbmNlRW50cnkgQVBJXG4gICAqIGFuZCBnaXZlIHVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYW5kIGluc2lnaHRzIGFib3V0IG91ciBwYWdlXG4gICAqIGxvYWRpbmcgYmVoYXZpb3VyLiBXZSBhcmUgdGhlbiBhbHNvIGFibGUgdG8gbW9uaXRvciB0aGVzZVxuICAgKiB2YWx1ZXMgb3ZlciBhIGxvbmcgcGVyaW9kIHRvIHNlZSBpZiBvdXIgcGVyZm9ybWFuY2VcbiAgICogaW5jcmVhc2VzIG9yIGRlY3JlYXNlcyBvdmVyIHRpbWUuIEJlc3QgdG8gdXNlIGxvd2VyY2FzZSBzdHJpbmdzXG4gICAqIGhlcmUsIHNlcGFyYXRlIHdvcmRzIHdpdGggdW5kZXJzY29yZXMgb3IgZGFzaGVzLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3BlcmZvcm1hbmNlLW1hcmsnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwZXJmb3JtYW5jZU1hcms6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaXRoIHRoZSBwaWN0dXJlU2l6ZXNDb25maWcgb2JqZWN0LCB5b3UgY2FuIHBhc3MgaW4gaW5mb3JtYXRpb25cbiAgICogaW50byBpbWFnZSBhYm91dCB3aGF0IGtpbmQgb2Ygc291cmNlIGVsZW1lbnRzIHNob3VsZCBnZXRcbiAgICogcmVuZGVyZWQuIG1lZGlhUXVlcmllcyBhY2NlcHRzIG11bHRpcGxlIE1lZGlhIFF1ZXJ5IGVudHJpZXNcbiAgICogd2hpY2ggY2FuIGdldCBjb21iaW5lZCBieSBkZWZpbmluZyBhIGNvbmRpdGlvbk9wZXJhdG9yLlxuICAgKiBUeXBlIGlzOiBzdHJpbmdpZmllZCBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZy1PYmplY3RcbiAgICogQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2UgdGhpczpcbiAgICoge1xuICAgKiAgICBcImJyZWFrcG9pbnRzXCI6IFtcbiAgICogICAgICB7XG4gICAqICAgICAgICBcImltYWdlXCI6IHtcbiAgICogICAgICAgICAgXCJoZWlnaHRcIjogXCI2NzVcIixcbiAgICogICAgICAgICAgXCJ3aWR0aFwiOiBcIjEyMDBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbGFyZ2UtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNTQ5XCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCI5NzZcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtc21hbGwtbWluXCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICogICAgICAgICAgfVxuICAgKiAgICAgICAgXVxuICAgKiAgICAgIH0sXG4gICAqICAgICAge1xuICAgKiAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAqICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTgwXCIsXG4gICAqICAgICAgICAgIFwid2lkdGhcIjogXCIzMjBcIlxuICAgKiAgICAgICAgfSxcbiAgICogICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICogICAgICAgICAge1xuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1heC13aWR0aFwiLFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICogICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAqICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWF4XCJcbiAgICogICAgICAgICAgICB9LFxuICAgKiAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogXCJhbmRcIlxuICAgKiAgICAgICAgICB9LFxuICAgKiAgICAgICAgICB7XG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwib3JpZW50YXRpb25cIixcbiAgICogICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAqICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiBmYWxzZSxcbiAgICogICAgICAgICAgICAgIFwidmFsdWVcIjogXCJsYW5kc2NhcGVcIlxuICAgKiAgICAgICAgICAgIH0sXG4gICAqICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgKiAgICAgICAgICB9XG4gICAqICAgICAgICBdXG4gICAqICAgICAgfVxuICAgKiAgICBdXG4gICAqICB9XG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncGljdHVyZS1zaXplcy1jb25maWcnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwaWN0dXJlU2l6ZXNDb25maWc6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpbWFnZSBpcyBmaW5pc2hlZCBsb2FkaW5nIG9yIGZhaWxlZCB0byBsb2FkLiAqL1xuICBwdWJsaWMgZ2V0IGNvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LjxIVE1MSW1hZ2VFbGVtZW50PignLnNiYi1pbWFnZV9faW1nJyk/LmNvbXBsZXRlID8/IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuX2NhcHRpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbGlua3NJbkNhcHRpb24gPSB0aGlzLl9jYXB0aW9uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxMaW5rRWxlbWVudD4oJ2EnKTtcblxuICAgIGlmICghdGhpcy5fbGlua3NJbkNhcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlbHkgbG9hZGVkLlxuICAgIHRoaXMudXBkYXRlQ29tcGxldGUudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb21wbGV0ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvZ1BlcmZvcm1hbmNlTWFya3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGVyZm9ybWFuY2VNYXJrKSB7XG4gICAgICBwZXJmb3JtYW5jZS5jbGVhck1hcmtzKHRoaXMucGVyZm9ybWFuY2VNYXJrKTtcbiAgICAgIHBlcmZvcm1hbmNlLm1hcmsodGhpcy5wZXJmb3JtYW5jZU1hcmspO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKGJyZWFrcG9pbnRTaXplTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IGJyZWFrcG9pbnRNYXBbYnJlYWtwb2ludFNpemVOYW1lXTtcbiAgICByZXR1cm4gdmFsdWUgPyBgJHt2YWx1ZX1yZW1gIDogJyc7XG4gIH1cblxuICBwcml2YXRlIF9hZGRGb2N1c0FiaWxpdHlUb0xpbmtzSW5DYXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpbmtzSW5DYXB0aW9uPy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICBsaW5rLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVJbWFnZVVybChiYXNlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsIGxxdWlwID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICghYmFzZVVybCB8fCBiYXNlVXJsID09PSAnJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIENyZWF0aW5nIGFuIFVSTCB3aXRob3V0IGEgc2NoZW1hIHdpbGwgZmFpbCwgYnV0IGlzIGEgdmFsaWQgaW5wdXQgZm9yIGJhc2VVcmwuXG4gICAgLy8gZS5nLiBpbWFnZS1zcmMgY2FuIGJlIGh0dHBzOi8vZXhhbXBsZS5jb20vbXktaW1hZ2UucG5nIG9yIC9teS1pbWFnZS5wbmdcbiAgICBjb25zdCBpc0Z1bGx5UXVhbGlmaWVkVXJsID0gISFiYXNlVXJsLm1hdGNoKC9eXFx3KzpcXC9cXC8vKTtcbiAgICBjb25zdCBpbWFnZVVybE9iaiA9IGlzRnVsbHlRdWFsaWZpZWRVcmwgPyBuZXcgVVJMKGJhc2VVcmwpIDogbmV3IFVSTChgaHR0cDovL25vb3AvJHtiYXNlVXJsfWApO1xuXG4gICAgaWYgKGxxdWlwKSB7XG4gICAgICAvLyBibHVyIGFuZCBzaXplOiA/Ymx1cj0xMDAmdz0xMDAmaD01NlxuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnYmx1cicsICcxMDAnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ3cnLCAnMTAwJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdoJywgJzU2Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENETiBJbmZvcm1hdGlvbjogaHR0cHM6Ly9kb2NzLmltZ2l4LmNvbS9hcGlzL3JlbmRlcmluZ1xuICAgICAgLy8gcGFyYW0uYXV0bzogP2F1dG89Zm9ybWF0LGNvbXByZXNzLGNzPXRpbnlzcmdiXG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdhdXRvJywgJ2Zvcm1hdCxjb21wcmVzcyxjcz10aW55c3JnYicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1c3RvbUZvY2FsUG9pbnQpIHtcbiAgICAgIC8vIGNyb3A6IGAmZml0PWNyb3AmY3JvcD1mb2NhbHBvaW50JmZwLXg9JHt0aGlzLmZvY2FsUG9pbnRYfSZmcC15PSR7dGhpcy5mb2NhbFBvaW50WX0mZnAtej0xYCxcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZpdCcsICdjcm9wJyk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdjcm9wJywgJ2ZvY2FscG9pbnQnKTtcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLXgnLCB0aGlzLmZvY2FsUG9pbnRYLnRvU3RyaW5nKDEwKSk7XG4gICAgICBpbWFnZVVybE9iai5zZWFyY2hQYXJhbXMuYXBwZW5kKCdmcC15JywgdGhpcy5mb2NhbFBvaW50WS50b1N0cmluZygxMCkpO1xuICAgICAgaW1hZ2VVcmxPYmouc2VhcmNoUGFyYW1zLmFwcGVuZCgnZnAteicsICcxJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9jYWxQb2ludERlYnVnKSB7XG4gICAgICAvLyBmb2NhbFBvaW50RGVidWc6ICcmZnAtZGVidWc9dHJ1ZSdcbiAgICAgIGltYWdlVXJsT2JqLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2ZwLWRlYnVnJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIFwibm9vcFwiIGhvc3QsIHdlIGRvbid0IHJldHVybiB0aGUgaG9zdCBhbmQgbXVzdCByZW1vdmUgdGhlXG4gICAgLy8gc3RhcnRpbmcgYC9gIG9mIHRoZSBwYXRobmFtZS5cbiAgICByZXR1cm4gaXNGdWxseVF1YWxpZmllZFVybFxuICAgICAgPyBpbWFnZVVybE9iai5ocmVmXG4gICAgICA6IGltYWdlVXJsT2JqLnBhdGhuYW1lLnN1YnN0cmluZygxKSArIGltYWdlVXJsT2JqLnNlYXJjaDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTogSW50ZXJmYWNlSW1hZ2VBdHRyaWJ1dGVzU2l6ZXNDb25maWdCcmVha3BvaW50W10ge1xuICAgIGxldCBwaWN0dXJlU2l6ZXNDb25maWc7XG5cbiAgICBpZiAodGhpcy5waWN0dXJlU2l6ZXNDb25maWcpIHtcbiAgICAgIHBpY3R1cmVTaXplc0NvbmZpZyA9IHRoaXMucGljdHVyZVNpemVzQ29uZmlnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWZhdWx0IGNvbmZpZ1xuICAgICAgcGljdHVyZVNpemVzQ29uZmlnID0gYHtcbiAgICAgICAgXCJicmVha3BvaW50c1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDY3NSxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMjAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZWRpYVF1ZXJpZXNcIjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlXCI6IFwibWluLXdpZHRoXCIsXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25GZWF0dXJlVmFsdWVcIjoge1xuICAgICAgICAgICAgICAgICAgXCJseW5lRGVzaWduVG9rZW5cIjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogXCJzYmItYnJlYWtwb2ludC1sYXJnZS1taW5cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJjb25kaXRpb25PcGVyYXRvclwiOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogNTQ5LFxuICAgICAgICAgICAgICBcIndpZHRoXCI6IDk3NlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibWVkaWFRdWVyaWVzXCI6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVwiOiBcIm1pbi13aWR0aFwiLFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uRmVhdHVyZVZhbHVlXCI6IHtcbiAgICAgICAgICAgICAgICAgIFwibHluZURlc2lnblRva2VuXCI6IHRydWUsXG4gICAgICAgICAgICAgICAgICBcInZhbHVlXCI6IFwic2JiLWJyZWFrcG9pbnQtbWljcm8tbWluXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDE4MCxcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiAzMjBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lZGlhUXVlcmllc1wiOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVcIjogXCJtYXgtd2lkdGhcIixcbiAgICAgICAgICAgICAgICBcImNvbmRpdGlvbkZlYXR1cmVWYWx1ZVwiOiB7XG4gICAgICAgICAgICAgICAgICBcImx5bmVEZXNpZ25Ub2tlblwiOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiBcInNiYi1icmVha3BvaW50LXplcm8tbWF4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiY29uZGl0aW9uT3BlcmF0b3JcIjogZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltYWdlSGVscGVyR2V0QnJlYWtwb2ludHMocGljdHVyZVNpemVzQ29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU1lZGlhUXVlcnlTdHJpbmcoXG4gICAgbWVkaWFRdWVyaWVzOiBJbnRlcmZhY2VJbWFnZUF0dHJpYnV0ZXNTaXplc0NvbmZpZ01lZGlhUXVlcnlbXSxcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbWVkaWFRdWVyeSA9ICcnO1xuXG4gICAgbWVkaWFRdWVyaWVzLmZvckVhY2goKG1xKSA9PiB7XG4gICAgICBjb25zdCBtcUNvbmRpdGlvbiA9IG1xLmNvbmRpdGlvbkZlYXR1cmU7XG4gICAgICBsZXQgbXFWYWx1ZTtcblxuICAgICAgaWYgKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS5seW5lRGVzaWduVG9rZW4pIHtcbiAgICAgICAgbXFWYWx1ZSA9IHRoaXMuX21hdGNoTWVkaWFRdWVyeURlc2lnblRva2VuKG1xLmNvbmRpdGlvbkZlYXR1cmVWYWx1ZS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtcVZhbHVlID0gbXEuY29uZGl0aW9uRmVhdHVyZVZhbHVlLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtcUNvbWJpbmVyID0gbXEuY29uZGl0aW9uT3BlcmF0b3IgPyBgICR7bXEuY29uZGl0aW9uT3BlcmF0b3J9IGAgOiAnJztcblxuICAgICAgbWVkaWFRdWVyeSArPSBgKCR7bXFDb25kaXRpb259OiAke21xVmFsdWV9KSR7bXFDb21iaW5lcn1gO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lZGlhUXVlcnk7XG4gIH1cblxuICBAZXZlbnRPcHRpb25zKGV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICBwcml2YXRlIF9pbWFnZUxvYWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dQZXJmb3JtYW5jZU1hcmtzKCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnbG9hZCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGltYWdlVXJsTFFJUCA9IHRoaXMuX3ByZXBhcmVJbWFnZVVybCh0aGlzLmltYWdlU3JjLCB0cnVlKTtcbiAgICBjb25zdCBpbWFnZVVybFdpdGhQYXJhbXMgPSB0aGlzLl9wcmVwYXJlSW1hZ2VVcmwodGhpcy5pbWFnZVNyYywgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyA9PT0gJ2xhenknKSB7XG4gICAgICB0aGlzLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgIHRoaXMuaW1wb3J0YW5jZSA9ICdsb3cnO1xuICAgIH1cblxuICAgIGNvbnN0IHBpY3R1cmVTaXplQ29uZmlncyA9IHRoaXMuX3ByZXBhcmVQaWN0dXJlU2l6ZUNvbmZpZ3MoKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBhbHQgYXR0cmlidXRlIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCBmb3IgdGhlIGltZyBlbGVtZW50LlxuICAgICAqIElmIGl0IGhhcyBhbiBlbXB0eSBzdHJpbmcgYXMgaXRzIHZhbHVlLCBpdCBpcyBzaW1wbHkgaWdub3JlZFxuICAgICAqIGJ5IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuIElmIHdlIGxlYXZlIGl0IG91dCBjb21wbGV0ZWx5LFxuICAgICAqIHRoZXkgbWlnaHQgdHJ5IHRvIGludGVycHJldCB0aGUgaW1nIGVsZW1lbnQuXG4gICAgICovXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWltYWdlX193cmFwcGVyXCI+XG4gICAgICAgICR7IXRoaXMuc2tpcExxaXBcbiAgICAgICAgICA/IGh0bWxgPGltZ1xuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1pbWFnZV9fYmx1cnJlZFwiXG4gICAgICAgICAgICAgIHNyYz0ke2ltYWdlVXJsTFFJUH1cbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAwXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiNTYyXCJcbiAgICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBkZWNvZGluZz0ke3RoaXMuZGVjb2RpbmcgPz8gbm90aGluZ31cbiAgICAgICAgICAgIC8+YFxuICAgICAgICAgIDogbm90aGluZ31cblxuICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICA8IS0tIHJlbmRlciBwaWN0dXJlIGVsZW1lbnQgc291cmNlcyAtLT5cbiAgICAgICAgICAke3BpY3R1cmVTaXplQ29uZmlncy5tYXAoKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VIZWlnaHQgPSBjb25maWcuaW1hZ2UuaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VXaWR0aCA9IGNvbmZpZy5pbWFnZS53aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLl9jcmVhdGVNZWRpYVF1ZXJ5U3RyaW5nKGNvbmZpZy5tZWRpYVF1ZXJpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICBtZWRpYT0ke2Ake21lZGlhUXVlcnl9YH1cbiAgICAgICAgICAgICAgICBzaXplcz0ke2Ake2ltYWdlV2lkdGh9cHhgfVxuICAgICAgICAgICAgICAgIHNyY3NldD0ke1xuICAgICAgICAgICAgICAgICAgYCR7aW1hZ2VVcmxXaXRoUGFyYW1zfSZ3PSR7aW1hZ2VXaWR0aH0maD0ke2ltYWdlSGVpZ2h0fSZxPSR7dGhpcy5fY29uZmlnLm5vblJldGluYVF1YWxpdHl9ICR7aW1hZ2VXaWR0aH13LCBgICtcbiAgICAgICAgICAgICAgICAgIGAke2ltYWdlVXJsV2l0aFBhcmFtc30mdz0ke2ltYWdlV2lkdGggKiAyfSZoPSR7aW1hZ2VIZWlnaHQgKiAyfSZxPSR7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5yZXRpbmFRdWFsaXR5XG4gICAgICAgICAgICAgICAgICB9ICR7aW1hZ2VXaWR0aCAqIDJ9d2BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID48L3NvdXJjZT5gO1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGFsdD0ke3RoaXMuYWx0IHx8ICcnfVxuICAgICAgICAgICAgQGxvYWQ9JHt0aGlzLl9pbWFnZUxvYWRlZH1cbiAgICAgICAgICAgIEBlcnJvcj0keygpID0+IHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2Vycm9yJykpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItaW1hZ2VfX2ltZ1wiXG4gICAgICAgICAgICBzcmM9JHt0aGlzLmltYWdlU3JjIX1cbiAgICAgICAgICAgIHdpZHRoPVwiMTAwMFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCI1NjJcIlxuICAgICAgICAgICAgbG9hZGluZz0ke3RoaXMubG9hZGluZyA/PyBub3RoaW5nfVxuICAgICAgICAgICAgZGVjb2Rpbmc9JHt0aGlzLmRlY29kaW5nID8/IG5vdGhpbmd9XG4gICAgICAgICAgICAuZmV0Y2hQcmlvcml0eT0ke3RoaXMuaW1wb3J0YW5jZSA/PyBub3RoaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvcGljdHVyZT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pbWFnZSc6IFNiYkltYWdlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVEQSxNQUFNLDRCQUE0QixDQUNoQyxlQUNtRDtBQUNuRCxNQUFJLENBQUMsY0FBYyxXQUFXLFdBQVcsR0FBRztBQUMxQyxXQUFPOztBQUlILFFBQUEsYUFDRixNQUNFLFFBQVEsS0FDTixxSkFBcUo7QUFHekosTUFBQTtBQUVBLE1BQUE7QUFDVyxpQkFBQSxLQUFLLE1BQU0sVUFBVTtBQUFBLEVBQUEsUUFDNUI7O0FBRU4sV0FBTzs7QUFHVCxNQUFJLENBQUMsV0FBVyxlQUFlLFdBQVcs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
|